4. 共通定義¶
4.1. JSON¶
REST API は、多くの場面で JSON を使用する。
JSON の記法については JSON を参照のこと。
JSON の value には、JSON の仕様通り、以下のものが指定できる。
- string
- number
- object
- array
- true
- false
- null
4.1.1. MongoDB Extended JSON¶
オブジェクトストレージの利用時には、MongoDB の Extended JSONを利用できる。 MongoDB拡張JSONの仕様については Extended JSON を参照のこと。
Extended JSON には Canonical, Relaxed の2種類のフォーマットがある。投入時にはいずれのフォーマットも受け付けるが、BaaSサーバが返却するフォーマットは常に Relaxed となる。
なお、"_id" プロパティの値については、自動的に ObjectId への変換が行われる。具体的には、投入時に ObjectId 型へ変換され、返却時には文字列型に変換される。
4.2. JSONプロパティ名¶
JSONのプロパティ名は、原則としてすべて camelCase とする(先頭文字を小文字、単語区切りを大文字。アンダースコアは使用しない)。なお、以下のプロパティ名は予約語とし、別の目的では使用できないものとする。
- "_id" : オブジェクトのID
- "ACL" : アクセス制御リスト
- "contentACL" : バケットコンテンツACL
- "createdAt" : オブジェクトの生成時刻
- "updatedAt" : オブジェクトの更新時刻
- "etag": ETag 値
- "_protected": 暗号化対象フィールド
- 先頭がアンダースコア ("_") 、およびハイフン("-") で始まる文字列
4.3. 日付の表記¶
日付は ISO 8601日付形式の文字列として、以下のフォーマットで表現する。:
YYYY-MM-DDThh:mm:ss.sssZ
タイムゾーンは UTC 固定とする。秒は小数点以下3桁に固定する。
以下に例を示す。:
2018-08-07T09:12:53.789Z
上記日付表記は、作成日時(createdAt)や更新日時(updatedAt)などで使用される。
なお、オブジェクトストレージにおいて、これ以外のフォーマットでユーザ定義の日時文字列をユーザ定義フィールドに格納することは自由であり、特に制限はない。
4.4. エラー通知¶
4.4.1. ステータスコード¶
エラー時に返却するステータスコードは、各 API の「レスポンスコード」に記載しているが、これ以外に以下のステータスコードが返る場合がある。
- 429 Too Many Requests: APIレートリミット制限を超過した場合に発生
- 503 Service Unavailable: データベースやMQに対するアクセスエラーが発生した場合、有効なライセンスキーが設定されていない場合などに発生
- 504 Gateway Timeout: データベースやMQ接続がタイムアウトした場合などに発生
- 500 Internal Server Error: その他の内部エラー
4.4.2. レスポンスボディ(エラー発生時)¶
レスポンスが JSON 形式である REST API においてエラーが発生した場合は、以下の JSON フォーマットでエラーが通知される。
{
"error": "error messages..."
}
ただし、各 API の説明において別のエラーレスポンスが定義されている場合はこの限りではない。
4.5. HTTP ヘッダ¶
4.5.1. アプリケーションID/アプリケーションキー¶
ほぼすべての API 呼び出しにおいて、以下2つのヘッダは必須である。
- X-Application-Id : アプリケーションID
- X-Application-Key: アプリケーションキー
4.5.2. セッショントークン¶
以下ヘッダは、セッショントークンを送信するために使用する。
- X-Session-Token : セッショントークン
セッショントークンは、ログインAPI発行時にサーバからクライアントに発行され、ログアウト時に破棄される。 API 発行時の X-Session-Token の送信ルールは以下の通りである。
- クライアントがセッショントークンを保持している場合、X-Session-Token を常時送信する。
- クライアントがセッショントークンを保持していない場合、X-Session-Token は送信しない。
なお、各 API の説明で X-Session-Token が「必須」となっている場合、セッショントークンを送信せずに API を呼び出すとエラーを返却する (X-Session-Token を付けずに API を呼び出してはならない、という意味ではない)。
また、X-Session-Token が記載されていない場合、サーバは X-Session-Token を参照しない (送信してはならない、という意味ではない)
なお、Basic認証またはクライアント証明書認証を使用する場合は、X-Session-Token を省略することができる。
4.6. クエリパラメータ¶
各APIに記載している「Query Parameters」は、クエリパラメータとして URL の query 部に指定すること。 クエリパラメータは特に指定されていない限り、オプションであり必須ではない。
また、各APIでは特に明記していないが、クエリパラメータはすべて適切に URLエンコードすること。