Einstein Platform Services の Open API 3.0 Spec を試す

今回は Salesforce から提供されている Einstein Platform Services の Open API 3.0 Spec を使ってみます。Rest リソースの Open API Spec が提供されていると、対応しているツールからであれば簡単にリクエストが投げられるようになるのでありがたいですね。
Salesforce は今後、 Salesforce の Rest リソースに対し Open API ３.0 Spec を提供していくと発表しましたが、システム連携もノーコード化されていく日が来るんでしょうね。来る日に備えつつ、とりあえず OAS を Postman に取り込んでリクエストを投げてみるところまでやってみます。

## Einstein Platform Services の OAuth トークンを取得する
Rest API 経由で Einstein Platform Services の Rest API を呼び出すには、 OAuth トークンを必要になります。今回は Postman から投げるリクエストのヘッダーに追加できればいいので、 Einstein Platform Services のページで生成します。

そのためには、まず [Signup ページ](https://api.einstein.ai/signup) から Einstein Platform Services にサインアップします。事前に検証用の DE 環境を取得しておき、そのクレデンシャルでサインアップしましょう。

![スクリーンショット 2020-12-29 10.52.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26378/8461c05e-b971-efe9-e1e7-20ef0d927888.png)

サインアップすると `Private Key` が発行されるのでメモしておきます。

![スクリーンショット_2020-12-29_10_55_18-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26378/807f0fce-cfe2-969a-ef39-c31a5e4dfbac.png)

次に [Generate an OAuth Token](https://api.einstein.ai/token) ページを開き、サインアップしたユーザーの `E メールアドレス`と `Private Key` を貼り付けて、 `GET TOKEN` します。トークンの `Expiration in minutes` は 60 分くらいにしておくといろいろ実験できる時間が持てると思います。
発行された Token は Einstein Platform Services へのリクエストで利用するので、コピーしておきましょう。

![スクリーンショット_2020-12-29_15_12_37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26378/30f66950-d46c-2ce1-66b1-89441dee7c61.png)

## Postman で Open API 3.0 Spec を読み込む
Einstein Platform Services の OAS は [MetaMind のリポジトリ](https://github.com/MetaMind/openapi)で公開されているので、 [vision-language-api-openapi-2.0.1.yaml の RAW ファイル](https://raw.githubusercontent.com/MetaMind/openapi/master/vision-language-api-openapi-2.0.1.yaml) をローカル環境にダウンロードしておきます。

デスクトップ版の Postman を開き、　`サイドバーの APIs タブ > Create an API` で、必要な項目を入力した後、ダウンロードした OAS を読み込み `Create API` します。
![スクリーンショット_2020-12-29_15_24_33-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26378/c73c4e08-c2cf-1cf3-f59a-8aafe95dba03.png)

API が作成できたら、 `Generate Collection` します。 ここでは `Test the API` を選択しておきます。
![スクリーンショット_2020-12-29_15_30_51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26378/fa038c3d-7b1a-c4a1-ec15-e005d0785c82.png)

Collections タブを開くと、Einstein Platform Services のエンドポイントがリストされていますが、最後に `baseUrl` というコレクション変数を書き換える必要があります。 今作成した Einstein Platform Services API Collection を `Edit` すると編集モーダルが開くので Variables タブから `baseUrl` の値を `https://api.einstein.ai` に書き換えておきましょう。これで準備が完了です。
![スクリーンショット_2020-12-29_15_33_34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26378/a5803bd1-4c59-64e5-2b48-1bd75b21a448.png)

## Postman からリクエストを送信

####API の利用状況を確認
試しに Get API Usage のエンドポイントにリクエストを送信してみます。上で取得した  OAuth トークンを Authorization タブから入力して `Send` してみると、現在の API 利用状況が返ってきました。サクッと API の動きを確認できるのは良いですね。
![スクリーンショット_2020-12-29_15_47_17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26378/8188e224-cf42-8e31-3ff9-e7368dfbc600.png)
####画像内のテキストを検出
ちなみに Detect Text で OCR も試してみました。表テーブルの画像を送信してみると、正確にセルのインデックスまで検知できていますが、各セル内のラベルと値は区別されず一つのテキストとして判定されてしまうようですね。
![スクリーンショット 2020-12-29 16.11.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26378/dee4ca85-9958-62c9-942d-1652954057d7.png)

##参考
- [Einstein Platform Services Guide](https://metamind.readme.io/docs)
- [MetaMind/openapi | GitHub](https://github.com/MetaMind/openapi)