※ これから記載する事項は、私が所属する会社とは一切関係のない事柄です。
今回は Salesforce のオムニチャネル在庫(OCI)の API の使い方を紹介したいと思います。基本的には Salessforce Platform の REST API を利用するのと変わらないのですが、一部の API は少しわかりずらいところがあるのでその点を紹介したいと思います。
Salesforce OCI の API について
Salesforce OCI API は REST と Apex の関数として提供されています。REST を使用する際の認証などについては「Connect REST API Quick Start」をご覧ください。
今回は「OAuth 2.0 クライアントログイン情報フローの接続アプリケーションの設定」で接続アプリケーションを設定し、「Connect to Connect REST API Using OAuth」でトークンを取得しました。
今回は Salesforce Connect API のみ取り上げますが、B2C Commerce から OCI を利用する場合は独自の API がありますのでご注意ください。
OCI の API でできること
ざっくりとした説明ですが、下記の様なことができます。
- 在庫情報の更新・取得
- 予約の作成・開放・履行・移動
在庫のアップロード
基本的には普通の REST API と仕様は変わらないですが在庫の更新の部分は少し特殊なので、コードと共に紹介します。
在庫更新 API に関してはヘルプの「Availability Records, Upload」をご確認ください。
更新ファイルの準備
在庫の更新には JSON を1行づつ並べたファイルをアップロードする必要があります。その際には下記のようにフォーマットされた状態ではなく、一行にまとまった状態にする必要があります。ファイルの拡張子は .json
でも .jsonl
でもどっちでも良さそうです。
これはダメ❌
{
"location": "inventory_m_sample_tokyo",
"mode": "UPDATE"
}
{
"recordId": "0a87539d-f3dd-47bc-91c7-9c75abc123de",
"onHand": 10,
"sku": "C-300",
"effectiveDate": "2020-12-08T14:05:22.790896-07:00",
"futures": [
{
"quantity": 1,
"expectedDate": "2021-04-18T14:05:22.781-07:00"
}
],
"safetyStockCount": 0
}
これは良い⭕️
{"location":"inventory_m_sample_tokyo","mode":"UPDATE"}
{"recordId":"0a87539d-f3dd-47bc-91c7-9c75abc123de","onHand":10,"sku":"C-300","effectiveDate":"2020-12-08T14:05:22.790896-07:00","futures":[{"quantity":1,"expectedDate":"2021-04-18T14:05:22.781-07:00"}],"safetyStockCount":0}
アップロード
ファイルのアップロードは /commerce/oci/availability-records/uploads
に対して POST します。
Node.js のサンプル
Apex のサンプル
Postman のサンプル
Postman の場合はフォームデータのファイルに設定してアップロードします。
アップロードの状態
ファイルのアップロードは /commerce/oci/availability-records/uploads/{uploadId}
に対して GET します。
レスポンスに「COMPLETED」と入っていれば完了です。