開発者ブログ : Postman コレクションを使用して Salesforce API を探索する

ちょっと古いけど、よさそうな内容なので日本語訳してみようと思います。

+ [Explore the Salesforce APIs with a Postman Collection](https://developer.salesforce.com/blogs/2020/03/explore-the-salesforce-apis-with-a-postman-collection)

Salesforce は、さまざまなシナリオで組織をサードパーティシステムと統合できる豊富な API セットを公開しています。これらの API はすべて徹底的に文書化されていますが、特定の組織、あるいはできれば複数の組織でこれらの API をすぐに試すにはどうすればよいでしょうか?

この投稿では、Postman について紹介し、オープンソースのPostman コレクション(すでに組み立て済み) を使用して、複数の組織に対してさまざまな Salesforce API を簡単に探索およびテストする方法を説明します。この非公式コレクションには現在、10 個の Salesforce API (REST、Bulk、UI、Tooling、Metadata、Composite など) の 200 近くの API 呼び出しテンプレートが含まれています。

# Postman を使用した API の探索とテスト

テクニカル アーキテクトとして (そしてほとんどの開発者と同様に) 私は API 呼び出しの構成とトラブルシューティングを行うことがよくあります。私は複数の環境 (サンドボックス、本番組織など) でそれらの呼び出しを構成して比較し、結果を共有します。これを行うために、私はいくつかのツールを使用します。

API を探索して呼び出すことができる Salesforce およびサードパーティのツールがいくつかあります。ここですべてをリストするつもりはありませんが、開発者にとって古典的な頼りになるソリューションはWorkbenchです。Workbench を使用すると、ブラウザから直接、あらゆるタイプの組織に対して Salesforce API 呼び出しを実行できます。このツールはコミュニティによって作成され、現在 Salesforce によって運用されていますが、正式にはサポートされておらず、セキュリティ更新プログラムのみを受信します。**Workbench は、Salesforce API を探索し、ワンショット テストを実行するための優れたツールです。ただし、より広範囲に使用するにはいくつかの制限があります。設定を保存したり、複数の組織で再利用したり、共同作業したりすることはできません。**

Workbench では私のニーズをすべてカバーできなかったため、Postman を使用して API 呼び出しのトラブルシューティングを開始しました。Workbench とは異なり、Salesforce テクノロジーに関連付けられていませんが、いくつかの大きな利点があります。

+ これにより、HTTP リクエストを完全に制御できます。ファイルのアップロード制限はありません。ヘッダーとパラメーターを設定し、任意のコンテンツ タイプ (バイナリ、テキストなど) を使用できます。

+ 複数の環境を切り替えることができます。たとえば、実稼働用の環境とサンドボックス用の環境を別の環境に持つことができます。環境を切り替えると、すべての変数値が環境固有の値に更新されます。

+ Postman の無料バージョンを使用している場合は、ワークスペースをインポート/エクスポートすることでリクエストを共同作業できます。Postman とソース管理を組み合わせてライブ コラボレーションを実現する有料プランもあります。

+ JavaScript を使用して実行後スクリプトを作成することで、作業を自動化できます。これは環境変数の設定に使用できます。

+ リクエストからさまざまな言語のコード スニペットを生成できます。次に、JavaScript Fetch 関数を使用して REST API を呼び出して Salesforce API 制限を取得する方法の例を示します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/c37611c0-852f-51cb-c1d7-a38ce0f2fc08.png)

Postman は、プロジェクト間で API リクエストを迅速に設計して再利用するのに役立ちます。再利用可能なリクエストの数が増加したため、オープンソースの Salesforce API コレクションを作成することにしました。

# Salesforce API コレクションの紹介

## コレクションの概要

Salesforce APIs for Postman は、 Salesforce API のリクエストのコレクションです。このコレクションには、フォルダー (API ごとに 1 つ) にグループ化された数百のリクエスト テンプレート、変数とヘッダー プリセットを含むテンプレート環境が含まれています。

各 API のドキュメントを参照するのではなく、API リクエスト テンプレートから構築すると、時間を大幅に節約でき、エラーのリスクが大幅に軽減されます。ただし、Workbench と同様に、Salesforce API コレクションはドキュメントに代わるものではありません。Postman を API のドキュメントと組み合わせて使用​​する必要があります。

Workbench などのツールに対する Postman の利点は、さまざまな Salesforce 認証フローを探索できることです。Salesforce API コレクションでは、SOAP ログイン フロー、OAuth ユーザー名/パスワード フロー、JWT Bearer Token フロー、その他のフローなど、さまざまなフローを試すことができます。これは、統合に取り組んでいる場合に特に興味深いことです。

プロジェクトに取り組んでいるとき、私は通常、組織ごとに Postman 環境を維持します。まず、テンプレート環境の複製を作成し、各組織の最初の 5 つの変数 (URL、バージョン、ユーザー名、パスワード、シークレット トークン) を入力します。これにより、SOAP ログイン フローをすばやく使用し、Salesforce API コレクションを使用して API を構築して呼び出すことができます。その後、別の環境に簡単に切り替えて、同じリクエストを使用できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/f9e8b9c7-7698-6c6d-354b-f7df49ab5346.png)

例を使用してコレクションを使用するのがいかに簡単かを見てみましょう。

## 使用例: ケースへの添付ファイルの挿入

例に移る前に、必ず次の事前作業を完了してください。

1. Postmanをインストールします。
2. Salesforce API コレクションをインポートし、プロジェクトの Readme の手順に従ってください。
3. テンプレート環境のクローンを作成し、組織の認証情報を使用して設定します。
4. 設定を検証するには、SOAP ログインフローを使用して組織にログインします。

このサンプル使用例では、Salesforce プラットフォームを使用して商品を販売し、その運営を管理する架空の会社である Acme Inc. で働く開発者の立場になります。Acme Inc. は、受け取った製品に関するケースを作成できるモバイル アプリケーションを顧客に提供しています。このアプリケーションを使用すると、顧客は受け取ったパッケージの写真をアップロードし、それをケースに添付できます。目標は、画像をケースの添付ファイルとしてアップロードするために使用される Salesforce REST API 呼び出しの設定を提供することです。

いつものように、リクエストの使用法と必須フィールド (このリクエストの 、 、および)について学ぶために、API ドキュメントにアクセスするのが良いスタートです。NameParentIdBody

API リクエストについて詳しく理解したので、Postman で API リクエストを作成しましょう。

1. コレクションを作成してAcmeカスタム リクエストを再グループ化します。
2. REST > SObject CreateSalesforce API コレクションからリクエストを選択し、複製します。
3. 新しいリクエストの名前を に変更しCreate Attachment on Case、コレクションに保存しますAcme。
4. エンドポイント URL<SOBJECT_NAME>を に置き換えて更新しますAttachment。
5. Name本文の JSON を変更して、ParentIdおよびパラメータを含めますBody(ドキュメントで必要なとおり)。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/38a64513-330c-6153-21a0-97bcb31e1dcd.png)


定型文リクエストの準備が完了しました。実際のデータを使って試してみましょう。

1. 添付ファイルの名前とName値を指定します。
2. ケース ID を取得し、それをParentId値として設定します。
3. 写真を見つけてください。このようなサービスを使用してBase64 に変換し、結果の文字列をBodyパラメーターの値として貼り付けます。
4. 送信ボタンを押すと出来上がりです。ケース記録を更新すると、添付ファイルに画像が表示されるはずです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/2f03c39f-405f-da69-904a-09a73a2576c4.png)

いまなら可能です：

+ 新しいエンドポイントをチームと共有します。
+ 開発環境またはテスト環境でリクエストを自由に再生し、潜在的な問題のトラブルシューティングに役立ちます。
+ いくつかのプログラミング言語でこの呼び出しを行うコードを生成して共有します。

# 考察

+ もしかしたら、ちょっとしたレコードの一括変更などにも使えるかもしれない。
+ META DATAを操作できれば、Salesforceの画面からでは一括で取得できない設定情報を簡単に確認できるかもしれない。--> [連動選択リスト(Dependent Picklist)](https://qiita.com/Keiji_otsubo/items/6087fb9ccce16e62a17b)