REST API | Visa Platform Connect

パッチ適用の考慮

TMS
内のパッチ適用は 変更が一連のアクションとして現れる JavaScript Object Notation (JSON) Patch (RFC6902) ではなく、JSON マージパッチ (RFC7396) に基づいており、POST リクエストとして修正される同じ構造に従います。
パッチリクエストは、変更する必要があるフィールドのみをリクエストで提供する必要がある PUT リクエストとは異なり、こうした変更は既存の記録と統合されます。
考慮すべき点は以下のとおりです。
  • フィールドが削除されるとき、
    null
    の値を入力してフィールドを削除できます。
  • フィールドが
    null
    に設定されており、現在の記録にはないとき、これは無視されます。
  • null
    に親コンテナを設定して、フィールドグループを削除できます。
IMPORTANT
配列値は全体としてパッチ適用されるため、パッチ適用のリクエストでは、パッチ適用の後に予測される最終値を提供します。

パッチ適用の例

以下は、パッチ適用の規則のユースケースの例です。
例: 有効期限月と年の値の更新
以下に表示されているように、GET リクエストをPayment Instrumentに送信して既存の値を入手できます。
GET /tms/v1/paymentinstrument/<id>
反応は以下に示されています。
{   "_links": {     "self": {       "href": "
https://api.cybersource.com
/tms/v1/paymentinstruments/9000000000000000002001"      }   },   "id": "9000000000000000002001",   "object": "paymentInstrument",   "state": "ACTIVE",   "card": {     "expirationMonth": "09",     "expirationYear": "2017",     "type": "visa",     "issueNumber": "01"   },   "_embedded": {     "instrumentIdentifier": {       "_links": {         "self": {           "href": "
https://api.cybersource.com
/tms/v1/instrumentidentifiers/9000000000000000001001"         }       },       "id": "9000000000000000001001",       "object": "instrumentIdentifier",       "state": "ACTIVE",       "card": {         "number": "411111XXXX11112"       }     }   } }
card.expirationMonth
(カードの有効期限月) と
card.expirationYear
(カードの有効期限年) フィールドだけを更新するには、以下のパッチリクエストを送信します。
PATCH /tms/v1/paymentinstrument/<id> {   "card": {     "expirationMonth": "10",     "expirationYear": "2020"   } }
/tms/v1/paymentinstrument/&lt;id&gt;
に他の GET リクエストを発行することで、新しい値を見ることができます。反応は以下に示されてれています。
{   "_links": {     "self": {       "href": "
https://api.cybersource.com
/tms/v1/paymentinstruments/9000000000000000002001"     }   },   "id": "9000000000000000002001",   "object": "paymentInstrument",   "state": "ACTIVE",   "card": {     "expirationMonth": "10",     "expirationYear": "2020",     "type": "visa",     "issueNumber": "01"   },  "_embedded": {     "instrumentIdentifier": {       "_links": {         "self": {           "href": "
https://api.cybersource.com
/tms/v1/instrumentidentifiers/9000000000000000001001"         }       },       "id": "9000000000000000001001",       "object": "instrumentIdentifier",       "state": "ACTIVE",       "card": {         "number": "411111XXXX11112"       }     }   } }
例: カード発行番号 (1 つのフィールド) とバイヤー情報 (コンテナ) を削除
最初に、現在の値を見るために
/tms/v1/paymentinstrument/&lt;id&gt;
に GET リクエストを送信します。
{   "_links": {     "self": {       "href": "
https://api.cybersource.com
/tms/v1/paymentinstruments/9000000000000000002001"     }   },   "id": "9000000000000000002001",   "object": "paymentInstrument",   "state": "ACTIVE",   "card": {     "expirationMonth": "09",     "expirationYear": "2017",     "type": "visa",     "issueNumber": "01"   },   "buyerInformation": {     "companyTaxID": "12345",     "currency": "USD"   },   "_embedded": {     "instrumentIdentifier": {       "_links": {         "self": {           "href": "
https://api.cybersource.com
/tms/v1/instrumentidentifiers/9000000000000000001001"         }       },       "id": "9000000000000000001001",       "object": "instrumentIdentifier",       "state": "ACTIVE",       "card": {         "number": "411111XXXX11112"       }     }   } }
/tms/v1/paymentinstrument/&lt;id&gt;
にパッチリクエストを送信し、以下のペイロードを含めます。
{   "card": {     "issueNumber": null   }, "buyerInformation": null }
結果は
/tms/v1/paymentinstrument/&lt;id&gt;
への GET リクエスト 内で見ることができます。
{   "_links": {     "self": {       "href": "
https://api.cybersource.com
/tms/v1/paymentinstruments/9000000000000000002001"     }   },   "id": "9000000000000000002001",   "object": "paymentInstrument",   "state": "ACTIVE",   "card": {     "expirationMonth": "09",     "expirationYear": "2017",     "type": "visa"   }   "_embedded": {     "instrumentIdentifier": {       "_links": {         "self": {           "href": "
https://api.cybersource.com
/tms/v1/instrumentidentifiers/9000000000000000001001"         }       },       "id": "9000000000000000001001",       "object": "instrumentIdentifier",       "state": "ACTIVE",       "card": {         "number": "411111XXXX11112"       }     }   } }
例: 配列のパッチ適用
元の値:
{   "a": [     {       "b": "c",       "d": "e"     }   ] }
パッチのペイロード:
{   "a": [     {       "z": "y"     }   ] }
最終値:
{   "a": [       {       "z": "y"     }   ] }