ポータル Web API の概要

ポータル Web API は、Power Pages サイト内でより豊かなユーザー エクスペリエンスを可能にします。 Web API を使用して、自分の Web ページからすべての Microsoft Dataverse テーブルを作成、読み取り、更新、および削除することができます。 たとえば、ポータル Web API を使用して、 フォーム または 複数のステップのフォーム を使用せずに、新しいアカウントを作成したり、連絡先を更新したりできます。

Web API は、 /_api ルート ( https://yoursite.powerappsportals.com/_api/accounts など) を使用し、Dataverse Web API と同様の RESTful パターンに従います。

重要

  • ポータル ページ内で豊かなユーザー体験を作成するためにポータル WebAPI を構築できます。 サード パーティのサービスやアプリケーションの統合に対しては最適化されていません。 ポータル Web API を使用して他のPower Pages サイトと統合することはサポートされていません。
  • ポータルの Web API 操作は、取引先企業、取引先担当者、またはカスタム テーブルなど、データに関連するテーブルに限定されています。 adx_contentsnippet、adx_entityform、adx_entitylistなどのポータル テーブルの構成など、テーブル メタデータまたはポータル構成テーブル データの構成は、ポータル Web API を使用してサポートされていません。 完全な一覧については、この記事の後半にあるサポートされていない構成テーブルを参照してください。
  • ポータル Web API は、サーバー側のキャッシュ を活用するため、今後の Web API への呼び出しは、最初の呼び出しよりも速くなります。 ポータルのサーバー側のキャッシュをクリアすると、一時的にパフォーマンスが低下します。
  • ポータル Web API 操作には、Power Pages ライセンスが必要です。 たとえば、匿名ユーザーによって行われた Web API 呼び出しは、匿名ユーザー キャパシティにカウントされます。 認証されたユーザー (内部または外部) によって行われた Web API 呼び出しは、ページ ビューにはカウントされませんが、適用可能な認証済みユーザー容量ライセンスが必要です。 詳細については、Power Pagesライセンスに関する FAQ を参照してください。
  • ポータル Web API を使用した アクション と 関数 の呼び出しはサポートされていません。

Web API の操作

ポータル WebAPI は、Dataverse API を使用して実行できる Dataverse 操作のサブセット機能を提供します。 API 形式は、学習コストを下げるために可能な限り類似した形式です。

注意

Web API の操作では大文字と小文字が区別されます。

Power Pages で利用可能な Web API 操作

WebAPI のサイト設定

重要

Webapi/<table-name>/fields サイト設定でのワイルドカード値 (*) のサポートは非推奨となりました。

サイトに必要な列のコンマ区切りのリストで*を置き換えます。 明示的な列名を構成するまで、* で構成されたテーブルに対する Power Pages Web API 要求は失敗します。

サイトで portals Web API を有効にするには、公開する各テーブルのサイト設定を構成します。 Web API で使用できる列は、サイト設定に一覧表示するか、Dataverse システム ビューを使用するか、両方のメソッドを組み合わせることによって定義できます。

注意

これらの設定には、テーブル 論理名 ( アカウントなど) を使用します。

サイト設定の名前 説明
Webapi/<table-name>/enabled <テーブル名> の WebAPI を有効または無効にします。
既定:False
有効な値:True、False
Webapi/<table-name>/fields Web API で使用できる列論理名のコンマ区切りリストを定義します。 たとえば、「 name,accountnumber,telephone1 」のように入力します。 この設定は、 Webapi/<table-name>/UseFieldsFromView が True に設定されていて、構成されたシステム ビューに少なくとも 1 つの有効な列が含まれている場合を除き、必須です。 ワイルドカード値 (*) は非推奨です。
Webapi/<table-name>/UseFieldsFromView Trueに設定すると、Power Pages Web API Columns 列という名前の Dataverse システム ビューの列が Web API 経由で利用可能になります。 既定値:False。 有効な値:True、 False。 Webapi/<table-name>/fieldsも設定されている場合、両方のソースの列が結合されます。
Webapi/error/innererror InnerError を有効または無効にします。
既定:False
有効な値:True、False

たとえば、認証されたユーザーがこのエンティティのレコードを作成、更新、削除できる Case テーブルの Web API を公開するには、次の表に示すサイト設定を使用します。

サイト設定の名前 サイト設定値
Webapi/incident/enabled 正
Webapi/incident/fields attr1、attr2、attr3

システム ビューを使用して Web API 列を構成する

システム ビューを使用すると、作成者はサイト設定でコンマ区切りのリストを維持することなく、ポータルの Web API で使用できる列を管理できます。

  1. Power Pages デザイン スタジオで、データ ワークスペースを開きます。
  2. テーブルを選択し、[ ビュー ] タブを選択し、パブリック システム ビューを作成または編集します。
  3. ビューに Power Pages Web API Columns という名前を付けます。
  4. サイトで必要な列をビューに追加し、ビューを保存して発行します。
  5. ポータル管理アプリで、Web サイトの Webapi/<table-name>/UseFieldsFromView サイト設定を作成し、その値を True に設定します。
  6. Webapi/<table-name>/enabled が True に設定されていることを確認します。

注意

  • ビューに表示されるプライマリ テーブルの列のみが含まれます。 関連テーブルの列は含まれません。 フィルター処理または並べ替えにのみ使用される列は、ビューにも表示されない限り含まれません。
  • 参照列の場合は、Web API 要求で対応する OData 参照プロパティを使用します。 プロパティ名は、 _<column-logical-name>_value形式を使用します。 たとえば、 primarycontactid 参照列は _primarycontactid_valueとして返されます。
  • システム ビューの変更は、Web API で使用できるようになるまで最大 5 分かかる場合があります。

Webapi/<table-name>/fieldsとWebapi/<table-name>/UseFieldsFromViewの両方が構成されている場合、Web API は、Webapi/<table-name>/fieldsに一覧表示されている列を、そのテーブルの Power Pages Web API 列システム ビューの有効な列と結合します。

重要

  • Webapi/<table-name>/UseFieldsFromView サイト設定は、Power Pages サイト バージョン 9.8.8.x 以降で使用できます。
  • *でのワイルドカード値 (Webapi/<table-name>/fields) のサポートは非推奨となりました。 明示的な列名、Power Pages Web API 列システム ビュー、またはその両方を使用します。

ポータル Web API のセキュリティ

テーブル権限を使用して、ポータルで個々のレコードのレコード ベースのセキュリティを構成できます。 ポータル Web API は、テーブル (エンティティ) レコードにアクセスし、関連付けられている Web ロールを通じてユーザーに付与されるテーブルのアクセス許可に従います。

ポータル Web API を使用しているときに、テーブル内の個々の列に対する権限をさらに定義するように列 のアクセス許可 を構成できます。

ポータル Web API 要求の認証

アプリケーションのセッションが認証と認可を管理するため、認証コードを含める必要はありません。 すべての Web API 呼び出しには、クロスサイト リクエスト フォージェリ (CSRF) トークンが含まれている必要があります。

EntitySetName の使用

コードでポータル Web API を使用して Dataverse テーブルを参照する場合は、 EntitySetName を使用します。 たとえば、アカウント テーブルにアクセスするには、コード構文で EntitySetName の accounts を使用します; /_api/accounts()

注意

サイト設定には、テーブルの論理名 (たとえば、account) を使用します。

特定のテーブルの EntitySetName を確認するには、次の手順に従います。

  1. https://make.powerapps.com に移動

  2. サイドパネルから Dataverse タブを選択し、テーブルを選択します。

  3. [...] ([コマンド] オプション) を選択し、[詳細設定]、[ツール]、[セット名をコピー] の順に選択して、テーブルの EntitySetName をクリップボードにコピーします。

    Dataverse テーブルの EntitySetName を見つける方法。

プライバシーに関する法律および規制

すべての要求ヘッダーは、監査目的で連絡先 ID を使用します。 匿名ユーザーの場合、値は null。

監査ログが有効になっている場合、ユーザーはすべての監査イベントを Office 365監査ログ で見ることができます。

Office 365 監査ログのスクリーンショット。

詳細情報:
活動のログを有効化して使用する
監査ログ レコードのエクスポート、構成、および表示

サポートされていない構成テーブル

次の構成テーブルにポータル Web API を使用することはできません。

adx_contentaccesslevel

adx_contentsnippet

adx_entityform

adx_entityformmetadata

adx_entitylist

adx_entitypermission

adx_entitypermission_webrole

adx_externalidentity

adx_pagealert

adx_pagenotification

adx_pagetag

adx_pagetag_webpage

adx_pagetemplate

adx_portallanguage

adx_publishingstate

adx_publishingstatetransitionrule

adx_publishingstatetransitionrule_webrole

adx_redirect

adx_setting

adx_shortcut

adx_sitemarker

adx_sitesetting

adx_urlhistory

adx_webfile

adx_webfilelog

adx_webform

adx_webformmetadata

adx_webformsession

adx_webformstep

adx_weblink

adx_weblinkset

adx_webnotificationentity

adx_webnotificationurl

adx_webpage

adx_webpage_tag

adx_webpageaccesscontrolrule

adx_webpageaccesscontrolrule_webrole

adx_webpagehistory

adx_webpagelog

adx_webrole_systemuser

adx_website

adx_website_list

adx_website_sponsor

adx_websiteaccess

adx_websiteaccess_webrole

adx_websitebinding

adx_websitelanguage

adx_webtemplate

Limitations

カスタム アクティビティ テーブルは、createdon テーブルから基本列(activitypointer、subject、description、activityid など)を継承します。 Webapi/<table-name>/fieldsを使用してカスタム アクティビティ テーブルの Web API 列を構成する場合、Power Pages Web API 列システム ビュー ($select) には、継承された列だけでなく、そのテーブルに直接定義された少なくとも 1 つの列が含まれます。

継承された activitypointer 列のみを構成した場合、Web API はテーブル固有の列の選択を検出できません。 その結果、要求はワイルドカード (*) として扱われ、フィールドを明示的に構成した場合でも、次のエラーが返されます。 Attribute All Columns is not enabled for Web Api。

推奨事項: カスタム アクティビティ テーブルに直接定義されている少なくとも 1 つの列 ( ポータル コメント/adx_portalcommentなど) と、継承された列を含めます。

既知の問題

ユーザーは、Parental、Contact、または GET スコープがクエリにさらに条件を追加するときに、複数レベルの一対多または多対多テーブル権限を持つテーブルに対して Web API 要求を呼び出すと、CDS エラーを受け取ります。

この問題を解決するには、OData クエリで FetchXML を使用してください。

次のステップ

Web API ポータルを使用したクエリ データ