LoginSignup
2
1

More than 1 year has passed since last update.

FileMaker Data API

Last updated at Posted at 2022-07-13


FileMaker Data API の使い方など。

ドキュメントは一応ある。

が、API 仕様書的なものは FileMaker Server にアクセスしないと見れない。

処理の流れ

認証なしに使えるエンドポイント以外はログイン用の API を叩いて取得したアクセストークンを使ってリクエスト。

  1. Login API を叩いてアクセストークンを取得
  2. 取得したアクセストークンを使って API リクエストを投げる

アクセストークンの取得

Login API を叩く

https://<fms.host>/fmi/data/{version}/databases/{database}/sessions

POST リクエストで Authorization, Content-Type ヘッダーが必須。
さらに、ボディも指定しないとエラーになる。

なので curl で叩くとすると下記のような感じ。

% curl -k -XPOST -H 'Authorization: Basic <Base64 エンコード文字列>' -H 'Content-Type:application/json' -d '{ }' https://<fms.host>/fmi/data/vLatest/databases/dataapi/sessions

<Base64 エンコード文字列> にはデータベースの ユーザー名:パスワード を base64 でエンコードしたものを入れる。

例えば、ユーザー名が dbuser で パスワードが dbuserpassword の場合、mac なら下記のような感じで取得した値 ZGJ1c2VyOmRidXNlcnBhc3N3b3Jk を使う。

% echo -n 'dbuser:dbuserpassword' | base64
ZGJ1c2VyOmRidXNlcnBhc3N3b3Jk

アクセストークンを使ったリクエスト

ログインAPIで取得したトークンを使って下記のような感じでリクエスト

% curl -k -H 'Authorization: Bearer <アクセストークン>' https://<fms.host>/fmi/data/vLatest/databases/dataapi/layouts

フィールドの値

null値

渡せない

{
    "fieldData": {
        "フィールド1": null,
        "フィールド2": "フィールド2の値"
    }
}

などをレコード作成時の渡すと下記のようなエラーになる。

{"messages":[{"code":"1708","message":"Parameter value is invalid"}],"response":{}}

日付

米国式に の順で指定する必要があるので、2022/7/13 のように指定するとエラーになる。

7/13
7/13/2022
7/13/22

ちなみに、区切り文字は - も使えるので、7-13 などでも OK。

この辺りの書式について明記されたものはなさそうだが、Product info API の結果を見ると下記の感じ。

https://fms.host/fmi/data/vLatest/productInfo
{
    "response": {
        "productInfo": {
            "name": "FileMaker Data API Engine",
            "buildDate": "06/30/2022",
            "version": "19.5.2.201",
            "dateFormat": "MM/dd/yyyy",
            "timeFormat": "HH:mm:ss",
            "timeStampFormat": "MM/dd/yyyy HH:mm:ss"
        }
    },
    "messages": [
        {
            "code": "0",
            "message": "OK"
        }
    ]
}

"dateFormat": "MM/dd/yyyy" となっているので、これが書式ということなのかも。。。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1