クレーム連絡先の役割の変更

ClaimContact リソースには、役割関連の 2 つの配列プロパティがあります。

  • roles - クレーム連絡先が保持するすべての役割の読み取り専用配列
  • editableRoles - クレーム連絡先が保持する未予約の役割の編集可能な配列

どちらのプロパティも ContactRole スキーマを使用します。

クレーム連絡先が持つ役割は変更可能ですが、roles 配列を変更しても変更されません。代わりに、関連オブジェクトのフィールドまたは配列を変更するか、editableRoles 配列を変更します。使用するアプローチは、役割が予約済みか未予約かによって決まります。

予約済みの役割の設定

予約済みの役割は、クレーム連絡先に明示的に設定できない役割です。代わりに、以下によって役割を設定する必要があります。

  • 別のオブジェクトのフィールドを設定する
  • 別のオブジェクトの配列を変更する
  • 別のオブジェクトでアクションを実行する

予約済みの役割は、integration/contactroles/v1 ディレクトリの ReservedContactRoles.yaml ファイルで定義します。

予約済みの役割をクレーム連絡先にアサインするには、その役割を暗黙的に設定するフィールド、配列、またはアクションを特定する必要があります。

フィールドから設定する予約済みの役割

例えば、報告者の役割はクレームの reporter フィールドから設定します。クレーム連絡先に報告者の役割を追加するには、クレームの reporter フィールドを変更して、クレーム連絡先を参照するようにします。

ID が cc:610 のクレームがあり、ID が cc:1306 のクレーム連絡先があるとします。次の例では、このクレーム連絡先に報告者の役割を追加しています。

PATCH http://localhost:8080/cc/rest/claim/v1/claims/cc:610

{
  "data": {
    "attributes": {
      "reporter": {
        "id": "cc:1306"
      }
    }
  }
}

配列から設定する予約済みの役割

別の例として、目撃者の役割はクレームの witnesses 配列から設定します。クレーム連絡先に目撃者の役割を追加するには、そのクレーム連絡先を witnesses 配列に追加します。

ID が cc:610 のクレームがあり、ID が cc:1306 のクレーム連絡先があるとします。このクレームには目撃者がいません。次の例では、クレーム連絡先 cc:1306 に目撃者の役割を追加しています。

PATCH http://localhost:8080/cc/rest/claim/v1/claims/cc:610

{
  "data": {
    "attributes": {
      "witnesses": [
        {
          "contact": {
            "id": "cc:1306"
          }
        }
      ]
    }
  }
}

システム API では、配列の PATCH を行っても、既存のメンバーに新しいメンバーが追加されないことに注意してください。既存のメンバーが新しいメンバーに置き換わってしまいます。配列にメンバーを追加する場合は、まず既存のメンバーを確認してから、これらのメンバーと追加したいメンバーを共に含めて、配列を指定する必要があります。詳細については、PATCHを参照してください。

アクションから設定する予約済みの役割

状況によっては、クレーム連絡先そのもの以外のリソースでアクションが実行されたときに、予約済みの役割が設定されることがあります。例えば、サービス要求が作成されると、ServiceRequestInstruction は CustomerContact(顧客連絡先)としてクレーム連絡先を指定できるようになります。このクレーム連絡先には、servicerequestparticipant という予約済みの役割が付与されます。

未予約の役割の設定

未予約の役割は、クレーム連絡先に明示的に設定できる役割です。ReservedContactRoles.yaml ファイルにリストされていない役割はすべて、未予約の役割です。

未予約の役割をクレーム連絡先にアサインするには、クレーム連絡先の editableRoles 配列を変更する必要があります。

editableRoles 配列の JSON 構文

クレーム連絡先の POST または PATCH を実行するときには、editableRoles 配列のすべてのメンバーに次の 3 つの情報を含める必要があります。

  • 役割のコード
  • クレーム連絡先がこの役割を持つオブジェクトのタイプ
  • クレーム連絡先がこの役割を持つオブジェクトの ID

これを指定するために使用する構文は次のとおりです。

"editableroles": [
  {
    "role": {
      "code": "<roleCode>"
    },
    "relatedTo": {
      "type": "<parentObjectType>",
      "id": "<parentObjectId>"
    }
  },
  ... <additionalRoles>

例えば、以下ではクレーム cc:610 に PATCH を実行して、クレーム連絡先 cc:777 がクレームそのもので代替連絡先の役割(コードは altcontact)を持つようにしています。

PATCH http://localhost:8080/cc/rest/claim/v1/claims/cc:610/contacts/cc:777

{
  "data": {
    "attributes": {
      "editableRoles": [
        {
          "role": {
            "code": "altcontact"
          },
          "relatedTo": {
            "type": "Claim",
            "id": "cc:610"
          }
        }
      ]
    }
  }
}

同様に次の例では、クレーム cc:610 に PATCH を実行して、クレーム連絡先 cc:208 が、ID が cc:102 の車両インシデントで所有者の役割(コードは incidentowner)を持つようにしています。(言い換えると、クレーム連絡先 cc:208 は、車両インシデント cc:102 で指定されている車両の所有者だということです。)

PATCH http://localhost:8080/cc/rest/claim/v1/claims/cc:610/contacts/cc:208

{
  "data": {
    "attributes": {
      "editableRoles": [
        {
          "role": {
            "code": "incidentowner"
          },
          "relatedTo": {
            "type": "vehicleIncident",
            "id": "cc:102"
          }
        }
      ]
    }
  }
}

editableRoles の PATCH のシナリオ

システム API では、配列の PATCH を行っても、既存のメンバーに新しいメンバーが追加されないことに注意してください。既存のメンバーが新しいメンバーに置き換わってしまいます。配列にメンバーを追加する場合は、まず既存のメンバーを確認してから、これらのメンバーと追加したいメンバーを共に含めて、配列を指定する必要があります。詳細については、PATCHを参照してください。

editableRoles に PATCH を実行したときに考えられる要求ペイロードとシステム API の応答方法の詳細を、以下の表にまとめています。

要求ペイロードに含まれるもの 対応する応答
editableRoles 配列なし クレーム連絡先の未予約の役割は変更されません。
1 つ以上の未予約の役割による editableRoles 配列 既存の未予約の役割が、ペイロードで指定された未予約の役割に置き換わります。
空の editableRoles 配列 既存の未予約の役割がすべて削除されます。(ただし、これによってクレーム連絡先が役割を持たなくなる場合、システム API がエラーを返します。)
1 つ以上の予約済みの役割による editableRoles 配列 システム API がエラーを返します。
roles 配列 システム API がエラーを返します。