ペイロード構造の標準化

呼び出し元アプリケーションとシステム API との通信の管理は、ペイロード内の情報が標準的な構造に従っている場合は比較的容易です。システム API には、要求ペイロードと応答ペイロードの両方に標準の構造があります。構造はデータエンベロープによって定義されますし、要求スキーマと応答スキーマによっても定義されます。

全エンドポイント共通の情報の標準化

データエンベロープは、JSON をラップするラッパーであり、システム API との間で送受信されます。標準のペイロード構造を維持するために、システム API では、DataEnvelopeDataListEnvelope の 2 つのデータエンベロープを使用します。

DataEnvelope を使用して、単一要素の情報の形式を標準化します。data プロパティを次のプロパティで指定します。対象プロパティは、checksumidlinks(単一要素)、methodrefidrelatedtype、および uri です。概要レベルでは、単一要素のペイロードの形式は以下のようになります。

{
    "data": {
        "checksum": ...,
        "id":       ...,
        "links":    ...,
        "method":   ...,
        "refid":    ...,
        "related":  ...,
        "type":     ...,
        "uri":      ...
        }
    }
}

DataListEnvelope を使用して、コレクション情報の形式を標準化します。データセクションと兄弟関係にある以下のプロパティを指定します。 countlinks(コレクション)、および total プロパティを指定します。概要レベルでは、単一要素のペイロードの形式は以下のようになります。

{
    "count"    ...,
    "data": [
        { properties_for_element_1 },
        { properties_for_element_2 },
        ...
    ],
    "links":   ...,
    "total":   ...
}

各プロパティが各ペイロードに表示されるとは限りません。プロパティが特定のペイロードに表示されない場合の理由はさまざまです。例:

  • refid などのプロパティは要求にのみ適用され、応答ペイロードには表示されません。
  • count などのプロパティは応答にのみ適用され、要求ペイロードには表示されません。
  • related などのプロパティはデフォルトでは表示されず、要求に特定のクエリパラメータが含まれる場合にのみ表示されます。

特定のエンドポイント固有情報の標準化

DataEnvelopeDataListEnvelope で用意している標準形式の情報は、すべての要求ペイロードと応答ペイロードに適用可能です。ただし、さまざまなエンドポイントがさまざまな種類のリソースとやりとりを行います。各エンドポイントで、ペイロードの一部が特定の種類のリソースについての情報を提供する必要があります。

これに対処するため、システム API では要求スキーマと応答スキーマも使用します。要求スキーマは、有効な構造の定義に使用されるスキーマであり、特定セットのエンドポイントの要求ペイロードで有効な構造です。同様に、応答スキーマは、有効な構造の定義に使用されるスキーマであり、特定セットのエンドポイントの応答ペイロードで有効な構造です。

要求スキーマと応答スキーマは階層化されています。例えば、応答の場合、GET /activity/{activityId} エンドポイントは ActivityResponse スキーマを使用します。このスキーマには、ActivityDataActivityResponseInclusions の 2 つの子スキーマがあります。

要求スキーマと応答スキーマで DataEnvelope または DataListEnvelope を拡張します。これにより、すべてのエンドポイントに関連する情報が、標準的な方法でペイロードに表示されます。

また、要求スキーマと応答スキーマは、ペイロードの attributes プロパティも定義します。ペイロードのリソース固有情報を含むスキーマにこのプロパティは関連付けられます。例えば、GET /activity/{activityId} エンドポイントで ActivityData 子スキーマの attributes プロパティを指定します。このプロパティは Activity スキーマに関連付けられ、このスキーマには activityPatternactivityType などのアクティビティ固有フィールドが含まれます。その結果、GET /activity/{activityId} エンドポイントの応答ペイロードの構造は以下のようになります。

{
    "data": {
        "checksum": ...,
        "attributes" : {
            "activityPattern": ... ,
            "activityType": ...,
            ...},
        "id":       ...,
        "links":    ...,
        "method":   ...,
        "refid":    ...,
        "related":  ...,
        "type":     ...,
        "uri":      ...
        }
    }
}

要求スキーマの表示

Swagger UI を使用して、特定エンドポイントで要求ペイロードの構造を確認できます。これには、スキーマの階層や各スキーマの情報の種類が含まれます。情報は、エンドポイントの[モデル]タブの本文パラメータの説明に表示されます。

Swagger UI での要求スキーマの表示

手順

  1. ClaimCenter を起動します。
  2. Web ブラウザで、対象となる API の Swagger UI に移動します。
  3. 対象となるエンドポイントの操作ボタンをクリックします。Swagger UI で、エンドポイント名の下に、そのエンドポイントの詳細が表示されます。
    • 例えば、POST /activities/{activityID}/notes の要求スキーマを表示するには、そのエンドポイントの[POST]ボタンをクリックします。
  4. 下にスクロールして、[パラメータ]セクションの[本文]エントリを表示します。[モデル]タブに、このエンドポイントのデータエンベロープの階層と、各データエンベロープの内容が表示されます。