Postmanで使えるSalesforceのAPIの探索



+ [SalesforceのAPI連携11種！主要ツールとの連携も解説](https://www.cct-inc.co.jp/koto-online/archives/260)
+ [開発者ブログ : Postman コレクションを使用して Salesforce API を探索する](https://qiita.com/Keiji_otsubo/items/7f23dc49c55ceb7cccf1)
+ [どの API を使用するか?](https://help.salesforce.com/s/articleView?id=sf.integrate_what_is_api.htm&type=5)

上記開発者ブログでも Salesforce API のコレクションは紹介されていたのですが、もう少し具体的に見ていきたいと思います。各APIの機能も分かるように、解説がされているサイトの情報と併せて整理したいと思います。

# Async Query

[非同期 SOQL の廃止](https://help.salesforce.com/s/articleView?id=release-notes.rn_api_async_soql.htm&release=242&type=5)

非同期 SOQL は、Summer '23 にすべての Salesforce 組織で廃止される予定です。

対象: 非同期 SOQL は Big Object、項目監査履歴、Connect REST API に使用されています。

方法: Bulk API と一括処理 Apex を使用して非同期 SOQL クエリを置き換えます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/3c962347-15ef-bd98-ebef-586df9717008.png)


# Auth

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/833508c1-c82f-dbdd-07a1-83fb03cc4853.png)


# Bulk API
Bulk APIは、SOAP APIやREST APIと違い、非同期で処理できるAPIで、1000件〜100万件単位のレコードを処理する事ができます。Salesforceではデータローダで利用可能です。

Bulk API 2.0 を使用して、大量のレコードのクエリ、queryAll 操作、挿入、更新、更新/挿入、削除を非同期で実行できます。Bulk API 2.0 は Salesforce REST フレームワーク上に設計されています。

Bulk API 2.0 の候補として、2,000 件を超えるレコードを含むデータ操作をお勧めします。これにより、Bulk フレームワークを使用する非同期ワークフローの準備、実行、管理を正常に行うことができます。2,000 レコード以下のジョブでは、REST (Composite など) または SOAP による「一括」の同期呼び出しを行うことをお勧めします。

大量のデータを操作する場合、最も簡単な方法は、レコードの作成、参照、更新、削除 (CRUD) を大規模に行うことです。ジョブに 1 つの sObject 型のみが含まれているか、1 日あたり最大 1 TB のデータを抽出する場合は、Bulk API 2.0 が最適な Salesforce API になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/7455cab8-50df-9d1a-3a50-37a8b417d3b2.png)

# Composite API

一連の REST API 要求を 1 回の POST 要求で実行するか、他の複合リソースのリストを GET 要求で取得します。

+ [Composite](https://developer.salesforce.com/docs/atlas.ja-jp.api_rest.meta/api_rest/resources_composite_composite.htm)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/fe8e74f7-ae0f-c8f5-7bce-061fe8bc6c2a.png)

# Connect REST API 

Connect REST API では、B2B Commerce for Lightning、CMS 管理コンテンツ、Experience Cloud サイト、ファイル、通知、トピックなどにプログラムでアクセスできます。特にモバイルアプリケーションで、Chatter フィード、ユーザー、グループを表示するには、Connect REST API を使用します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/1d1d480d-830a-3bb5-50f7-09829df31728.png)


# CPQ API

+ [Salesforce CPQ Developer Guide](https://developer.salesforce.com/docs/atlas.en-us.cpq_dev_api.meta/cpq_dev_api/cpq_developer_guide_intro.htm)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/b50b7e34-5891-05b9-8131-d5a6caff55de.png)

# Einstein Prediction Service API

Einstein Discovery REST API を使用して、予測、モデル、ストーリーなどの Einstein Discovery 機能にプログラムでアクセスできます。

+ [Einstein Discovery REST API Developer Guide](https://developer.salesforce.com/docs/atlas.en-us.bi_dev_guide_rest_sdd.meta/bi_dev_guide_rest_sdd/bi_rest_sdd_overview.htm)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/e1e9df45-fbc0-de89-f3fc-519c5fd46916.png)


# プラットフォームイベント

事前定義されたスキーマを使用してカスタムイベントデータを公開および受信します。注文情報などのビジネスデータを含め、定義すればどのようなデータでも使用できます。プラットフォームイベントを定義して、送信するデータを指定します。通知を受信するには、プラットフォームイベントチャネルに登録します。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/c9123e21-095e-530f-f9df-81494918deb0.png)

# 従来のイベント: PushTopic および汎用イベント

PushTopic および汎用イベントは第一世代イベントです。これらのイベントはサポートが制限され、新機能で更新されなくなりました。PushTopic イベントの代わりに変更データキャプチャイベントを使用し、汎用イベントの代わりにプラットフォームイベントを使用することをお勧めします。

# GraphQL API 

クライアントが必要とするデータのみを 1 つの要求で返すことで、応答性と拡張性が高いアプリケーションを構築します。GraphQL API は、項目の選択、リソースの集計、およびスキーマイントロスペクションによって従来の REST API の課題を克服します。項目の選択では、ペイロードのサイズが小さくなり、クエリに含まれていた項目のみが返されます。集計により、クライアントとサーバー間の往復が減り、1 つの応答内で一連の関連リソースが返されます。スキーマイントロスペクションを使用すると、ユーザーはアクセスできる種別、項目、オブジェクトを表示できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/dd20790f-b9fc-d435-e844-a1d102317f5a.png)

# Metadata API

Metadata APIはSalesforceのメタデータを記述するためのAPIです。

メタデータ API を使用して、組織のカスタマイズを取得、リリース、作成、更新、または削除します。最も一般的な使い方は、Sandbox またはテスト組織から本番環境への変更の移行です。メタデータ API はカスタマイズを管理し、データ自体ではなくメタデータモデルを管理できるツールを構築するためのものです。

Visual Studio Code 向け Salesforce 拡張機能または Salesforce CLI を使用すると、最も簡単にメタデータ API の機能にアクセスできます。どちらのツールもメタデータ API の上位に構築され、メタデータ API を使用した作業を簡略化するために標準のツールが使用されます。

+ Visual Studio Code 向け Salesforce 拡張機能には、軽量で拡張可能な VS Code エディターを使用して Salesforce Platform 上で開発を行うためのツールが含まれています。これらのツールでは、開発組織 (スクラッチ組織、Sandbox、DE 組織)、Apex、Aura コンポーネント、Visualforce を操作する機能が提供されています。
+ Salesforce CLI は、スクリプトまたはコマンドラインを使用してローカルディレクトリと Salesforce 組織間でメタデータを移動する場合に最適です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/f6572098-4511-dde6-682a-a583b4bc6ef4.png)

# OmniStudio API

Omnistudio ビジネス API は、Apex クラスおよびメソッドとして利用できる RESTful API です。

+ [Omnistudio Business APIs](https://developer.salesforce.com/docs/atlas.en-us.industries_reference.meta/industries_reference/omnistudio_apis.htm)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/8566bcfa-8953-d19b-a9d1-9d5f2a5ead88.png)


# REST API
REST APIは、RESTful APIとも呼ばれるAPIです。

連携処理にURLが対応づかない特徴を持っているので、アプリケーション内部のリソースをURLで示す事ができます。その結果、操作しようとしているリソースを判断する事が可能となっています。

REST API では、Salesforce を操作するための、強力、便利、そしてシンプルな REST ベースの Web サービスインターフェースを提供します。インテグレーションや開発が容易になるという利点があり、モバイルアプリケーションや Web プロジェクトで使用するためのテクノロジーの選択としては最適です。特定のプロジェクトでは、REST API を他の Salesforce REST API と一緒に使用できます。リストビュー、アクション、および連動選択リストの UI の構築を含め、レコードの作成、参照、更新、削除用の UI を構築するには、ユーザーインターフェース API を使用します。Lightning の B2B Commerce、CMS 管理コンテンツ、Experience Cloud サイト、または Chatter で UI を構築するには、Connect REST API を使用します。処理するレコード件数が多い場合は、REST 規則に基づいて大規模データセットの処理用に最適化されている Bulk API を使用することを検討してください。

### Apex REST API
Apex REST APIは、Apexメソッドで公開されるREST APIの拡張機能です。Apex REST APIは、Apexクラス単位による実装となるので、ユーザーやプロファイルを指定した権限セットの作成も可能です。

Apex クラスと Apex メソッドを公開し、外部アプリケーションが REST アーキテクチャによってコードにアクセスできるようにする場合は、Apex REST API を使用します。Apex REST API は、認証のため OAuth 2.0 およびセッション ID の両方をサポートしています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/ab01de85-14a7-dfba-8813-39469ec4a2f0.png)

# Subscription Management　API

サブスクリプション管理 API では、Experience Cloud や見積もりなど、他の Salesforce 製品との互換性が強化されました。サブスクリプション管理は、プラスの数量修正もサポートしています。

+ [Subscription Management API](https://help.salesforce.com/s/articleView?id=release-notes.rn_api_subscription_management.htm&release=240&type=5)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/5d6b85eb-89e2-9b33-75eb-6b9e6ac28375.png)

# Tooling API
Tooling APIは、Salesforceアプリケーション用のカスタム開発ツールを作成するための開発者向けのAPIです。

Salesforce メタデータを他のシステムと統合するには、Tooling API を使用します。メタデータ型は sObject として公開されるため、複合型の 1 つのコンポーネントにアクセスできます。この項目レベルのアクセスにより、複合型のメタデータに対する操作時間を短縮できます。Force.com アプリケーション用のカスタム開発ツールを作成することもできます。たとえば、Tooling API を使用して、Apex クラスとトリガーや Visualforce ページとコンポーネントの作業コピーを管理およびリリースすることができます。また、チェックポイントまたはヒープダンプマーカーの設定、匿名 Apex の実行、ログ記録情報およびコードカバー率情報へのアクセスも可能です。

REST と SOAP は両方ともサポートされています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/d43cc4fb-8b38-28a0-0522-69d78a6ccc27.png)


# ユーザインターフェース API
ユーザインターフェース APIは、カスタムSalesforceアプリケーションのユーザインターフェース作成APIのことです。ユーザや顧客のSalesforceの操作性を高めるために利用されます。

Salesforce が Lightning Experience、Salesforce for Android、Salesforce for iOS、Salesforce モバイル Web を構築するときに使用するのと同じ API を使用して、ネイティブモバイルアプリケーションおよびカスタム Web アプリケーションの Salesforce UI を構築できます。レコード、リストビュー、アクション、お気に入りなどをユーザーが操作できるユーザーインターフェースを構築します。1 回の応答でデータとメタデータを取得できるだけでなく、その応答は、Salesforce システム管理者によって組織に加えられたメタデータの変更と一致します。レイアウト、選択リスト、項目レベルセキュリティ、共有について心配する必要はありません。必要なのは、ユーザーが気に入るアプリケーションを作成することだけです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/2168ca82-f109-de5f-fe80-e627918a310c.png)


--------------------------
# SOAP API

SOAP APIは、Simple Object Access Protocolの略称です。マイクロソフト社が考案して開発されたアクセスプロトコルで、Salesforceが提供するAPIの中でも、標準型のAPIとなります。

SOAP API では、Salesforce を操作するための強力かつ便利で、シンプルな SOAP ベースの Web サービスインターフェースを提供します。SOAP API を使用して、レコードを作成、取得、更新、または削除できます。また、SOAP API を使用して、検索の実行などを行うことができます。SOAP API は、Web サービスをサポートしている言語で使用できます。

たとえば、SOAP API を使用して、Salesforce を組織の ERP や会計システムと統合できます。また、リアルタイムの販売情報やサポート情報を会社のポータルに配信し、重要なビジネスシステムに顧客情報を入力することもできます。

### Apex SOAP API
Apex SOAP APIはApexクラスメソッドで公開されるSOAP APIです。Apex言語はSalesforce内で利用されるプログラミング言語で、Salesforceの拡張に利用されます。GUI以外で開発するときに利用されるAPIです。

Apex メソッドを SOAP Web サービス API として公開し、外部アプリケーションが SOAP によってコードにアクセスできるようにする場合は、Apex SOAP API を使用します。

Apex SOAP API は、認証のため OAuth 2.0 およびセッション ID の両方をサポートしています。


# Streaming API

Streaming APIは、サーバからクライアントPCに向けてデータ更新を通知するためのAPIになります。しかし、通知の保証が確立されているわけではないので、コアデータ以外の連携で使用されるのが一般的です。

通知可能なイベントは、レコードの作成、レコードの更新、レコードの削除、レコードの復元となります。


# Chatter API
Chatter APIは、Salesforceのコミュニケーション機能であるChatterへアクセスを実行するAPIのことです。

# Analytics REST API

Analytics REST APIは、Salesforceの解析機能とプログラミングを繋ぐAPIのことです。データセットのバージョン管理や、ダッシュボードの作成など分析に必要なことを実行する事ができます。

CRM Analytics アセット (データセット、レンズ、ダッシュボードなど) には、プログラムで Analytics REST API を使用してアクセスできます。クエリを送信し、Analytics プラットフォームにインポートされたデータセットにアクセスします。レンズを作成および取得します。XMD 情報にアクセスします。データセットバージョンのリストを取得する。CRM Analytics アプリケーションを作成および取得する。ダッシュボードを作成、更新、および取得します。アプリケーションの連動関係のリストを取得します。ユーザーが使用可能な機能を決定します。スナップショットを操作します。複製データセットを操作します。





# Pub/Sub API 

Pub Sub API を使用して、外部システムをイベントと統合できます。イベントストリームは、プラットフォームイベントを介したカスタムペイロードまたは変更データキャプチャを介した Salesforce レコードへの変更に基づきます。Salesforce では、Apex トリガー、プロセスビルダー、Flow Builder を使用してイベントの公開と登録を行うことができます。

Pub/Sub API は、Salesforce との拡張性の高い双方向のイベント統合を目的として作成されています。Pub/Sub API を使用して、バイナリイベントメッセージを Apache Avro 形式で効率的に公開および登録します。Pub/Sub API は gRPC および HTTP/2 に基づいており、取り込みベースのモデルを使用しているため、ユーザーは登録フローを制御できます。Pub/Sub API では、gRPC でサポートされる 11 個のプログラミング言語のいずれかを使用できます。

ニーズに合ったストリーミングイベント種別を使用してください。


# 変更データ取得イベント

変更された項目すべてと共に Salesforce レコードへの変更を受信します。変更データ取得には、PushTopic イベントよりもサポートされる標準オブジェクトが多く、変更に関する情報が含まれるヘッダー項目など、追加の機能が提供されます。