クレーム連絡先の役割の変更
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 がエラーを返します。 |