1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Salesforce OCI の API 利用してみる

Posted at

※ これから記載する事項は、私が所属する会社とは一切関係のない事柄です。

今回は Salesforce のオムニチャネル在庫(OCI)の API の使い方を紹介したいと思います。基本的には Salessforce Platform の REST API を利用するのと変わらないのですが、一部の API は少しわかりずらいところがあるのでその点を紹介したいと思います。

Salesforce OCI の API について

Salesforce OCI API は RESTApex の関数として提供されています。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 でもどっちでも良さそうです。

これはダメ❌

sample.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
}

これは良い⭕️

sample.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}

アップロード

ファイルのアップロードは /commerce/oci/availability-records/uploads に対して POST します。

Node.js のサンプル

Apex のサンプル

Postman のサンプル

Postman の場合はフォームデータのファイルに設定してアップロードします。
スクリーンショット 2023-12-06 15.45.24.png

アップロードの状態

ファイルのアップロードは /commerce/oci/availability-records/uploads/{uploadId} に対して GET します。
レスポンスに「COMPLETED」と入っていれば完了です。

スクリーンショット 2023-12-06 15.56.49.png

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?