基本応答のペイロード構造

後続のセクションでは、基本応答の応答ペイロードについて説明します。この説明では、基本応答とは、特定の要素またはコレクションに関する情報を含んでいる応答ですが、包含リソースは含まない応答です。包含リソースについては、包含リソースが含まれる応答のペイロード構造で説明しています。

基本的な応答の構造

基本的な応答の高度な構造は、以下に示すとおりです。最初と最後のプロパティ(count とコレクションレベルの links)は、コレクションペイロードでのみ使用されます。その他すべてのプロパティは、要素ペイロードとコレクションペイロードの両方で使用されます。

(注意:JSON ではコメントをサポートしません。ただし、コードを明確化するため、擬似コメントが追加されています。各擬似コメントの前にはハッシュタグ(#)が付きます。)

{
      "count": N,                      # Number of resources in collection*
      "data": [                        # List of resources
          {                            # Resource 1 begins here
          "attributes": {              # Resource 1 name/value pairs
              "propertyName": "propertyValue",
              ... },
          "checksum": "val",           # Resource 1 checksum value
          "links": { ... }             # Resource 1 links 
          },                           # Resource 1 ends here
          {                            # Resource 2 begins here
          "attributes": {              # Resource 2 name/value pairs
              "propertyName": "propertyValue",
              ... },
          "checksum": "val",           # Resource 2 checksum value
          "links": { ... }             # Resource 2 links 
          },                           # Resource 2 ends here
      ... ],                           # Resources 3 to N
      "links": { ... }                 # Collection-level links*
}
                                       # *-used only for collection responses
Java

count プロパティ

count プロパティは、ペイロードで返される要素の数を特定します。コレクションを含む応答でのみ使用されます。

data セクション

data セクションには、エンドポイントが返すリソースについての情報が含まれます。各リソースについて、以下のサブセクションがデフォルトで表示されます。

  • attributes:各リソースのフィールドにおける名前/値ペアのセット
  • checksum:各リソースのチェックサム値
  • links:各応答でアクションの実行に使用できる HTTP リンク

エンドポイントが単一要素を返す場合、data セクションには attributeschecksum、および links の単一セットが含まれます。エンドポイントがコレクションを返す場合、data セクションには、各リソースの attributeschecksum、および links が 1 セットずつ含まれます。

attributes セクション

attributes サブセクションに一覧表示される内容は、リソースに返されるフィールドとそのフィールドの値です。例:

"attributes": {
    "activityPattern": "check_coverage",
    "activityType": {
        "code": "general",
        "name": "General"
    },
    ...
},
Java

各リソースには、返されるフィールドのデフォルトセットがあります。これは通常、返すことができるすべてのフィールドのサブセットです。fields クエリパラメータを使用して、返されるフィールドのデフォルトセットを上書きできます。詳細については、GET を行うフィールドの指定を参照してください。

単純な値

フィールドがスカラーの場合、その値がコロンの後に一覧表示されます。例:

"subject": "Verify which coverage is appropriate"
Java

ID プロパティ

各リソースには id フィールドがあります。この値は、ClaimCenter のオブジェクトのパブリック ID と同じになります。これは通常、デフォルトで返されるフィールドの 1 つです。例:

"id": "xc:20",
Java

この値は、例えば以下のように、特定の要素を命名するエンドポイントでも使用されます。

GET /activities/xc:20/notes
Java

日付と日時の値

日付と日時の値は、以下の形式で文字列としてペイロードに表示されます。
  • 日時: YYYY-MM-DDThh:mm:ss.fffZ
  • 日付: YYYY-MM-DD

上記の内容に関する説明を以下に示します。

  • YYYY は年
  • MM は月
  • DD は日
  • 日付の値については、以下のようになります。
    • T は日付部分と時間部分を分けるリテラル値
    • hh は時間
    • mm は分
    • ss は秒
    • fff は秒の小数
    • Z は「ゼロ時のオフセット」を示すリテラル値。「国際標準時」(UTC)とも呼ばれます。

例:

"dueDate": "2020-03-23T07:00:00.000Z",

インラインリソース

一部の応答ペイロードには、インラインリソースが含まれます。インラインリソースは、ルートリソースではないリソースですが、一部のフィールドがルートリソースからのフィールドと共に、attributes セクションにデフォルトで一覧表示されます。インラインリソースの形式は以下のとおりです。

"inlinedResourceName": {
    "inlinedResourceField1": value,
    "inlinedResourceField2": value,
    ...
},
Java

インラインリソースは応答スキーマで宣言されます。スカラー値と同様に、fields クエリパラメータを使用して、応答で返すインラインリソースとインラインリソースフィールドを制御できます。詳細については、GET を行うフィールドの指定を参照してください。

大まかに言うと、インラインリソースには、タイプリスト、金額値、単純参照、複合参照の 4 種類があります。

タイプリストには、code フィールドと name フィールドが一覧表示されます。いずれも TypeCodeReferences スキーマを使用します。例:

"priority": {
    "code": "urgent",
    "name": "Urgent"
},
Java

金額値は、通貨フィールドと金額フィールドを含む複合値です。 例:

"transactionAmount": {
    "amount": "500.00",
    "currency": "usd"
Java

(Cloud API でこのデータ型は MonetaryAmount と呼ばれます。ClaimCenter ではこれらの値は実際には CurrencyAmount データ型を使用して保存されることに注意してください。)

単純参照は関連オブジェクトへの参照であり、SimpleReferences スキーマを使用します。このスキーマには、 displayNameidrefIdtype、および uri の各フィールドのみが含まれます。デフォルトで、大多数のエンドポイントは displayNameid のみを返します。

例えば、以下のスニペットでは、assignedGroupassignedUser が単純参照です。

"assignedGroup": {
    "displayName": "Auto1 - TeamA",
    "id": "demo_sample:31"
},
"assignedUser": {
    "displayName": "Andy Applegate",
    "id": "demo_sample:1"
},
Java

複合参照は関連オブジェクトへの参照であり、SimpleReferences スキーマより複雑なスキーマを使用します。例えば、連絡先の主な住所が応答ペイロードに追加されると、Address スキーマが使用され、多数のフィールドが含まれます。

Null 値を含むフィールドの省略

応答ペイロードには、値が NULL でないフィールドのみが含まれます。NULL 値を含むフィールドは、応答ペイロードから省略されます。

あるフィールドが応答ペイロードにあると期待されているのに欠落している場合、その理由はたいてい、その値が NULL だったためです。

checksum フィールド

checksum フィールドには、リソースの「バージョン」を特定する値が一覧表示されます。リソースがデータベースレベルで変更される場合は必ず、新しいチェックサム値が割り当てられます。データ変更のプロセスでは、チェックサムを使用して、リソースで読み取りが行われた時刻と変更が行われた時刻との間に、他のプロセスによって変更が行われていないことを確認できます。

詳細については、ロストアップデートとチェックサムを参照してください。

links サブセクション(要素)

特定の要素に対して実行できるアクションを特定するパスのセットがあれば、data セクションの links サブセクションで、一覧表示します。各リンクには名前、href プロパティ、およびメソッドのリストがあります。呼び出し元アプリケーションはこれらのリンクを使用して、そのリソースに対して実行する追加アクションの HTTP 要求を作成できます。

Note: data セクションの links サブセクションは、Cloud API で Hypermedia as the Engine of Application State(HATEOAS)の制約を実施する方法の 1 つです。

例えば、ある呼び出し元アプリケーションがアクティビティ xc:20 を取得するとします。このアプリケーションに付与されている権限により、このアクティビティをアサインして、アクティビティに関連付けられた備考・経緯を表示できます。アクティビティ xc:20 の links セクションには以下の内容が表示されます。

"links": {
    "assign": {
        "href": "/common/v1/activities/xc:20/assign",
        "methods": [
            "post"
        ]

    },
    "notes": {
        "href": "/common/v1/activities/xc:20/notes",
        "methods": [
            "get",
            "post"
        ]
    },
    "self": {
        "href": "/common/v1/activities/xc:20",
        "methods": [
            "get"
        ]
    }
}
Java

self リンクは、リソースそのものへのリンクです。self リンクが有用な場合は、呼び出し元アプリケーションがリソースのリストを受信してリストで特定リソースへのナビゲーションを行う場合です。

特定のオブジェクトに対して、ビジネスアクションを実行するリンクが表示される場合は、一定のオブジェクト状態が前提となるアクションが適切な場合のみと、アクションの実行に十分な権限が呼び出し元にある場合のみです。例えば、アクティビティをクローズするリンクは、アクティビティがクローズされている場合に表示されません。同様に、アクティビティをアサインするリンクは、アクティビティのアサインに必要な権限が呼び出し元にない場合は表示されません。

コレクションレベルの links セクション

応答にコレクションが含まれる場合、ペイロードの末尾に links セクションが含まれます。このセクションは、data セクションと兄弟関係にあります。大規模なリソースセットでページをめくるように移動するために、prev リンクや next リンクなど、コレクション全体に関連するリンクが含まれます。

Note: コレクションレベルのペイロードの末尾にある links セクションは、Cloud API で Hypermedia as the Engine of Application State(HATEOAS)の制約を実施する方法の 1 つです。