こんにちは。CData Software Japanリードエンジニアの杉本です。
久しぶりに Dynamics 365 / CDS の APIリファレンスを見ていたら、以下のようなページが追加されているのを発見しました!
ベーシックなPostmanの使い方ですが、特筆すべきは専用のAzure ADアプリケーションが登録済みで、手軽に叩くことができる環境がそろっている! という点です。
GraphAPIだと専用のエクスプローラーが提供されていたりと、触りやすいんですが、Dynamics 365 の場合はちょっと検証するのが面倒でした。
どのくらい面倒かと言うと、以下のような感じです。
基本的には上記Docsの手順通りですが、もうちょっと細かな点を掘り下げつつ、この使い方を解説してみたいと思います。
Dynamics 365 / CDS Web API Endpoint を確認する
何はともあれ、まずはDynamics 365 / CDS API のエンドポイントURLを確認しておきましょう。
これが無いとはじまりません。
基本的に「https://{tenantid}.api.crm7.dynamics.com/api/data/v9.1/」の形式ですが、CDSの場合、tenantIdがわからないことも多いでしょう。
今回はちゃんとした確認方法もお伝えします。
まず、詳細設定画面へ移動します。Dynamics 365は設定画面へ、PowerApps CDSの場合は以下のように歯車アイコンから「詳細設定」に移動します。
設定メニューに移動したら、「カスタマイズ」をクリックし
「開発者リソース」を選択します。
すると、以下のように各種API用のURLが表示されているので、「インスタンの Web API」に表示されているURLを利用します。
今回私の環境のTenantIdは「sugimomoto36」なので、「https://sugimomoto36.api.crm7.dynamics.com/api/data/v9.1/」となります。バージョニングがついている点に気をつけましょう。
使い方
それでは、PostmanでこのAPIを実行します。
まず環境情報を入力します。Postmanを立ち上げて右上の歯車アイコンをクリック
環境情報の管理画面に移動するので「Add」をクリックします。
以下のように指定します。urlは皆さんの環境に合わせて置きかえてください。
- url:https://sugimomoto36.api.crm7.dynamics.com(リージョンに要注意。日本で取得した場合、crm7)
- clientid:51f81489-12ee-4a9e-aaae-a2591f45987d
- version:9.1(Docsには9.0で書かれていますが、最新環境が9.1なので、9.1を指定しました)
- webapiurl:{{url}}/api/data/v{{version}}/
- callback:https://callbackurl
- authurl:https://login.microsoftonline.com/common/oauth2/authorize?resource={{url}}
環境情報を作成したら、上のリストから作成した環境を選択します。
その後、新しいリクエストを作成し、「Authorization」タブから「OAuth 2.0」を選択、「Get New Access Token」をクリックします。
今度はOAuth 2.0 の設定画面が表示されるので、環境情報からそれぞれの値を取得するように設定します。
なお、GrantTypeは「Implicit」なので、注意しましょう。
入力後「RequestToken」をクリックすると、ログイン画面が立ち上がるので、対象のアカウントでログインします。
ログインが完了すると、以下のようにTokenが取得できます! 簡単でいいですね!
あとは、Use Tokenをクリックし、リクエストを組み立てます。
DocsではWhoAmIを実行していますが、それだと気持ちつまらないので、取引先企業エンティティ(accounts)を取得してみました。
GETリクエストで「{{webapiurl}}accounts」と入力し、「Send」ボタンをクリックします。
すると、レスポンス画面に取引先企業一覧のJSONが表示できました!
おわりに
Microsoft系APIは現在ほとんどがAzure ADのアプリ登録を必要としているので、ちょっと敷居が高く感じるかもしれないですが、このリファレンスの情報を使うことで、すごく手軽にAPIを試すことができます。
ちなみに、CDataではこのDynamics 365 / CDS Web APIをExcelアドイン形式やODBC・JDBCで利用できる製品も提供しています。こちらも手軽にAPIをリクエストできるので、よかったら試してみてください。