Adobe Experience Manager の On-Demand Services API を使用すれば、サードパーティの開発者はオンデマンドサービスとの連携を実現できます。このサービスでは次のことが可能です。
- 記事の管理
- コレクションの管理
- 製品の管理
- プッシュ通知の管理
On-Demand Services API(旧称「Content Producer Service API」)は、オンデマンドポータル(https://aemmobile.adobe.com)で使用されているものと同じ API です。

次の編集ワークフローシステム、コンテンツ管理システム(CMS)および Web ベースのオーサリングソリューションでは、(アドビのパートナーが提供する)連携機能を利用できます。
CMS システム
Klaasjan Tukker と Mike Yang による、高度なワークフローの実現に関する MAX 2015 カンファレンスの次のプレゼンテーションをご覧ください。
Adobe API による高度なワークフローの実現(英語)(1:25:57)
注意:
下記のソフトウェアをダウンロードすると、AEM Mobile Services 用 API のライセンス、Adobe.com の利用条件、アドビのプライバシーポリシーの条件を読んで同意したものとみなされます。
この .zip ファイルには、次のアイテムが含まれています。
- API に関するドキュメント
- JSON スキーマ定義
- コードサンプル
- InDesign スクリプトサンプル
- API キーリクエストフォーム
(Swagger で作成された)API に関するドキュメントを表示するには、Web サーバー(MAMP など)のフォルダー内にあるファイルを解凍します。
Swagger ドキュメントへのホストされている URL が http://localhost:8888/aemmobile-swagger である場合は、次の手順をスキップできます。
「service.json」というファイルを開き、55 行目を変更して、basePath をドキュメントにアクセスできる「ホスト + パス」に設定します。以下に例を挙げます。
#53 "contact": "wwds@adobe.com"
#54 },
#55 "basePath": "http://localhost:8888/your-custom-path"
#56 }
Web ブラウザーを開き、ドキュメントを展開した場所を参照します。On-Demand Services API が表示されます。
プロジェクトの設定、ロールの作成、およびユーザーへのアクセス権の付与を行います。詳しくは、次のヘルプ記事を参照してください。
「マスターアカウント」または「すべてのプロジェクト」の管理者権限を持つ Adobe ID と同一の Adobe ID は使用しないことをお勧めします。On-Demand Services API による実行を許可する操作に対してのみアクセス権を持つ Adobe ID を作成してください。
注意:
下記のサンプルを実行するには、必ず新規プロジェクトで開始してください。
On-Demand Services API にアクセスするには、API キーをリクエストする必要があります。API キーをリクエストするには、PDF フォームに記入します。記入が完了したら、フォームをアドビデベロッパーサポート(wwds@adobe.com)に送信します。
ダウンロード
API キーが必要になる場合、または既存のキーをいつ使用するかについて詳しくは、AEM Mobile の API キーの使用を参照してください。
API キーを取得したら、device_id と device_token を生成できます。https://aex.aemmobile.adobe.com にアクセスし、次の操作を行います。
- API キーを指定する
- (リクエストフォームで)ホワイトリストにリクエストした Adobe ID でログインする
すべての条件が満たされると、device_id と device_token が生成されます。
サンプルを解凍し、標準の値を変更してアカウントと API キーを反映します。オンデマンドポータルで新しいプロジェクトを作成し、API サンプルとの通信に使用する Adobe ID にロールを割り当てていることを確認します。
変更:
- config/credentials.php
「client_id」(取得した API キー)、「client_secret」、「device_token」、「device_id」(AEX サービスで生成されたもの)の値を変更、追加します。
「client_version」の値を設定します。これにより、On-Demand Services API と通信する「system」が特定されます。例:「aemmobile-learn-api-doc-1.0」
実行:
- demo/01_get_access_token.php
正しく設定されると、応答で「access_token」が付与されます。この access_token は、フォローアップサービスの呼び出しで使用します。
変更:
- config/credentials.php
「access_token」の値を追加します。
実行:
- demo/02_get_user_permissions.php
正しく設定されると、応答で(device_id と device_token の生成に使用した)Adobe ID がアクセスできるプロジェクトのリストが表示されます。
操作するプロジェクトを選択します(最近作成された新しいプロジェクトである必要があります)。プロジェクトの ID は、「8dbeb5da-ca73-d0da-b0b0-885fb83e7ae8」などの GUID です。
変更:
- Config/parameters.php
上記で取得したプロジェクト ID を使用して「publication_id」を更新します。
実行:
- demo/03_update_home_collection.php
正しく設定されると、サムネールや背景の画像のアップロード、製品 ID の設定、デフォルトのレイアウトの関連付けなどが行われ、最上位コレクションが公開可能な状態になります。
変更:
- config/parameters.php
対象とするプロジェクトで 2 種類の最上位コレクションが使用されている場合、タブレット用では「collection_home_name」の値を「topLevelContent」から「topLevelTabletContent」(スマートフォン用では「topLevelPhoneContent」)に更新してください。
これで、残りのサンプルを実行する準備ができました。サンプルを実行する際は、ブラウザーのオンデマンドポータルでプロジェクトの「コンテンツとレイアウト」セクションを開いておきます。こうすれば、サンプルの実行中、現在行われている変更をブラウザーで確認できます。
HTML または InDesign で記事のコンテンツを作成できます。
HTML 記事
HTML で記事を作成する場合、CSS/JS を使用して、コンテンツにスタイルを視覚的に追加してレスポンシブにすることができます。すべての HTML コンテンツは同じフォルダー内にある必要があります(サブフォルダーも可)。HTML ファイルは、manifest.xml ファイルとともに「zip ファイル」にパッケージ化されます。マニフェストファイルには、記事のパッケージに含まれている記事のリストと、MD5 チェックサムが含まれます(AEM Mobile 用の HTML 記事の作成を参照してください)。
フォルダーから記事ファイルを生成する場合は、デスクトップユーティリティか、「class/manifest.php」のサンプルパッケージャーを使用できます。
InDesign 記事
Adobe InDesign CS6 以降を使用して、固定レイアウトの記事ファイルを作成できます。Digital Publishing プラグインを使用すると、InDesign コンテンツを記事ファイルに書き出すことができます(InDesign で AEM Mobile 記事を作成するを参照してください)。
書き出しプロセスをスクリプト化する場合は、'exportDpsArticle' 関数を使用できます。詳しくは、スクリプトを使用して InDesign ベースの記事を作成するを参照してください。
API/連携フォーラムで、この記事や On-Demand Services API の使用に関する質問を投稿できます。1 対 1 でのサポートをご希望の場合は、アドビデベロッパーサポート(wwds@adobe.com)にお問い合わせください。
2017 年 6 月 20 日
ドキュメントが更新されました。
- 説明のタイプミスが修正されました。
2017 年 2 月 7 日
ドキュメントが更新されました。
- Producer Servicesの動的共有コンテンツに対するサポートが追加されました。
JSON スキーマが更新されました。
- 動的共有コンテンツの新しい JSON スキーマが追加されました。
API の例:
- 動的共有コンテンツのサポートが追加されました。
2016 年 11 月 1 日
ドキュメントが更新されました。
- エンティティステータスのバッチの戻りが追加されました。
- Producer Services および Ingestion Services の動的バナーに対するサポートが追加されました。
- Notification Service API による Android のプッシュ通知のサポートが追加されました。
- 指定したインデックスでコレクションのコンテンツ要素リストを更新する機能が追加されました。
JSON スキーマが更新されました。
- 動的バナーの追加された新しい JSON スキーマ
API の例が更新されました。
- コレクションのコンテンツ要素リストにエンティティを追加する前に既に存在しているかどうかを確認する Collection::updateContentElements() が更新されました。
- 動的バナーのサポートが追加されました。
- デモスクリプト(#13–15)に動的バナーが追加されました。
2016 年 7 月 12 日
ドキュメントが更新されました。
- 製品と製品バンドルが更新されました。
2016 年 6 月 30 日
ドキュメントが更新されました。
- インジェストサービスの PDF アップロードに関する情報が追加されました。
JSON スキーマが更新されました:2016 年 7 月 12 日
ドキュメントが更新されました。
- その他のメタデータフィールドが追加されました。
- contentSize
- availabilityDate(製品および製品バンドルのみ)
- availabilityDateTimezone(製品および製品バンドルのみ)
API の例が更新されました。
- デモ:#05e により PDF ファイルを記事 1 に更新
- デモ:#05f により PDF ファイルを記事 1 に更新し、水平スワイプを設定
- デモ:#05g により記事 1 のインジェストステータスを確認
- PHP スクリプトごとに必要なクラスをロードするために、オートローダーを使用するように変更
2016 年 5 月 10 日
ドキュメントが更新されました。
- インジェストサービスでヘッダー : application/pdf を使用できるようになりました
- 既知の公開/非公開ジョブとプリフライトジョブのステータスを追跡します。
- POST /job は、このジョブのワークフローを返します。
- GET /status/{publicationID}/publication/00000000-0000-0000-0000-000000000000 は、現在のワークフローの ID(使用できる場合)を返します。
- 現在のワークフローの ID(使用できる場合)と前回の既知のワークフロー ID を比較します。
- 現在のワークフロー ID === 前回の既知のワークフロー ID の場合、前回のジョブはまだ進行中です。
- 現在のワークフロー ID !== 前回の既知のワークフロー ID の場合、前回のジョブは完了し、別のジョブが進行中です。
- 現在のワークフロー ID が空の場合、前回のジョブは完了済みで、現在進行中のジョブはありません。
API の例が更新されました。
- デモ:#05d は現在のアップロードされたコンテンツファイルサイズを確認します。
- デモ:#08c は前回の既知のワークフローのステータスを追跡します。