Adobe Experience Manager Assets HTTP API

概要

Assets HTTP APIを使用すると、メタデータ、レンディション、コメントなどのデジタルアセットに対して、Experience Managerコンテンツフラグメントを使用して構造化されたコンテンツと共に、create-read-update-delete(CRUD)操作を実行できます。 この API は /api/assets で公開されており、REST API として実装されています。コンテンツフラグメントをサポートしています。

この API にアクセスするには、次の手順を実行します。

  1. API サービスドキュメント(https://[hostname]:[port]/api.json)を開きます。
  2. https://[hostname]:[server]/api/assets.jsonに続くAssetsサービスのリンクに従います。

API の応答は、一部の MIME タイプに対する JSON ファイル、およびすべての MIME タイプに対する応答コードです。JSON 応答はオプションであり、PDF ファイルなどでは利用できない場合があります。詳細な分析やアクションをおこなう場合は、応答コードを利用します。

メモ

Experience ManagerのCloud Serviceデプロイメントでは、一般的なアセットやバイナリのアップロードまたは更新に関連するすべてのAPI呼び出し(レンディションなど)は非推奨です。 バイナリをアップロードする場合は、代わりに、直接バイナリアップロード API を使用します。

コンテンツフラグメント

コンテンツフラグメントは、特別なアセットタイプです。 テキスト、数字、日付などの構造化されたデータにアクセスするために使用できます。 standardアセット(画像やドキュメントなど)にはいくつかの違いがあるので、コンテンツフラグメントの処理には別のルールが適用されます。

詳しくは、HTTP APIで Experience Manager Assets コンテンツフラグメントがサポートされているを参照してください。

データモデル

Assets HTTP APIは、(標準アセット用の)フォルダーとアセットの2つの主要な要素を公開します。 また、コンテンツフラグメント内に構造化コンテンツを記述するカスタムデータモデルに対して、より詳細な要素を公開します。 詳しくは、コンテンツフラグメントデータモデルを参照してください。

フォルダー

フォルダは、従来のファイルシステムと同様、ディレクトリに似ています。 フォルダーには、アセット、フォルダー、フォルダーおよびアセットのみを含めることができます。 フォルダーには、以下のコンポーネントがあります。

エンティティ:フォルダーのエンティティはフォルダーの子要素で、フォルダーまたはアセットです。

プロパティ

  • name はフォルダーの名前です。これは、URL パスの最後のセグメント(拡張子を除く)と同じです。
  • title は名前の代わりに表示できるフォルダータイトル(オプション)です。
メモ

フォルダーまたはアセットの一部のプロパティは、異なるプレフィックスにマップされます。jcr:titlejcr:descriptionjcr:languagejcr プレフィックスは dc プレフィックスに置き換えられます。したがって、返された JSON コードで、dc:titledc:description にはそれぞれ jcr:titlejcr:description の値が含まれています。

リンク​フォルダーは、次の 3 つのリンクを公開します。

  • self:自分自身へのリンク。
  • parent:親フォルダーへのリンク。
  • thumbnail:(オプション)フォルダーのサムネール画像へのリンク。

Assets

Experience Manager では、アセットには次の要素が含まれています。

  • アセットのプロパティとメタデータ
  • アセットの元のアップロードバイナリファイル。
  • 複数のレンディションを設定済み。 画像のサイズ、エンコーディングの異なるビデオ、PDFまたはAdobe InDesignファイルから抽出したページなどが考えられます。
  • コメント(オプション)

コンテンツフラグメントの要素については、AEM Assets HTTP API でのコンテンツフラグメントのサポートを参照してください。

Experience Manager では、フォルダーには次のコンポーネントが含まれています。

  • エンティティ:アセットの子はアセットのレンディションです。
  • プロパティ
  • リンク

使用可能な機能

Assets HTTP APIには次の機能が含まれています。

メモ

次の例は読みやすくするため、cURLの表記を完全に省略します。 この表記は、cURLのスクリプトラッパーであるレスティに相当します。

フォルダーのリストの取得

既存のフォルダーとその子エンティティ(サブフォルダーまたはアセット)の Siren 表現を取得します。

リクエストGET /api/assets/myFolder.json

応答コード:応答コードは次のとおりです。

  • 200 - OK(成功)
  • 404 - NOT FOUND(フォルダーが存在しないかアクセスできない)
  • 500 - INTERNAL SERVER ERROR(他に問題がある場合)

応答:返されるエンティティのクラスはアセットまたはフォルダーです。含まれるエンティティのプロパティは、各エンティティの完全なプロパティセットのサブセットです。エンティティのすべての表現を取得するために、クライアントは relself となっているリンクで参照される URL のコンテンツを取得する必要があります。

フォルダーの作成

slingを作成します。OrderedFolderを指定されたパスに置きます。 ノード名の代わりに*を指定した場合、サーブレットはパラメータ名をノード名として使用します。 この要求は、次のいずれかを受け入れます。

  • 新しいフォルダーのサイレン表現
  • 名前と値のペアのセット。application/www-form-urlencodedまたはmultipart/ form- dataとしてエンコードされます。 これらは、HTMLフォームから直接フォルダーを作成する場合に便利です。

また、フォルダーのプロパティは、URLクエリーのパラメーターとして指定できます。

指定されたパスの親ノードが存在しない場合、API 呼び出しは失敗し、応答コード 500 が返されます。フォルダーが存在する場合、呼び出しは応答コード409を返します。

パラメーターname はフォルダー名です。

リクエスト

  • POST /api/assets/myFolder -H"Content-Type: application/json" -d '{"class":"assetFolder","properties":{"title":"My Folder"}}'
  • POST /api/assets/* -F"name=myfolder" -F"title=My Folder"

応答コード:応答コードは次のとおりです。

  • 201 - CREATED(作成が成功した場合)
  • 409 - CONFLICT — フォルダーが存在する場合。
  • 412 - PRECONDITION FAILED(ルートコレクションが見つからないかアクセスできない場合)
  • 500 - INTERNAL SERVER ERROR(他に問題がある場合)

アセットの作成

アセットの作成方法について詳しくは、アセットのアップロードを参照してください。 HTTP APIを使用してアセットを作成することはできません。

アセットバイナリの更新

アセットバイナリの更新方法については、アセットのアップロードを参照してください。 HTTP APIを使用してアセットバイナリを更新することはできません。

アセットのメタデータの更新

アセットメタデータのプロパティを更新します。dc: 名前空間内のプロパティを更新すると、API は jcr 名前空間内の同じプロパティをアップデートします。API は 2 つの名前空間内のプロパティを同期させません。

リクエストPUT /api/assets/myfolder/myAsset.png -H"Content-Type: application/json" -d '{"class":"asset", "properties":{"dc:title":"My Asset"}}'

応答コード:応答コードは次のとおりです。

  • 200 - OK(アセットが正常に更新された場合)
  • 404 - NOT FOUND(指定した URI でアセットが見つからなかったかアクセスできなかった場合)
  • 412 - PRECONDITION FAILED(ルートコレクションが見つからないかアクセスできない場合)
  • 500 - INTERNAL SERVER ERROR(他に問題がある場合)

アセットレンディションの作成

アセットのレンディションを作成します。 リクエストパラメーター名が指定されない場合、ファイル名がレンディション名として使用されます。

パラメーター:パラメーターは name(レンディションの名前)と file(ファイル参照)です。

リクエスト

  • POST /api/assets/myfolder/myasset.png/renditions/web-rendition -H"Content-Type: image/png" --data-binary "@myRendition.png"
  • POST /api/assets/myfolder/myasset.png/renditions/* -F"name=web-rendition" -F"file=@myRendition.png"

応答コード

  • 201 - CREATED(レンディションが正常に作成された場合)
  • 404 - NOT FOUND(指定した URI でアセットが見つからなかったかアクセスできなかった場合)
  • 412 - PRECONDITION FAILED(ルートコレクションが見つからないかアクセスできない場合)
  • 500 - INTERNAL SERVER ERROR(他に問題がある場合)

アセットレンディションの更新

更新により、アセットレンディションが新しいバイナリデータにそれぞれ置き換えられます。

リクエストPUT /api/assets/myfolder/myasset.png/renditions/myRendition.png -H"Content-Type: image/png" --data-binary @myRendition.png

応答コード:応答コードは次のとおりです。

  • 200 - OK(レンディションが正常に更新された場合)
  • 404 - NOT FOUND(指定した URI でアセットが見つからなかったかアクセスできなかった場合)
  • 412 - PRECONDITION FAILED(ルートコレクションが見つからないかアクセスできない場合)
  • 500 - INTERNAL SERVER ERROR(他に問題がある場合)

アセットへのコメントの追加

パラメータ:パラメーターは、コメント message のメッセージ本文およびJSON形式 annotationData のAnnotationデータ用です。

リクエストPOST /api/assets/myfolder/myasset.png/comments/* -F"message=Hello World." -F"annotationData={}"

応答コード:応答コードは次のとおりです。

  • 201 - CREATED(コメントが正常に作成された場合)
  • 404 - NOT FOUND(指定した URI でアセットが見つからなかったかアクセスできなかった場合)
  • 412 - PRECONDITION FAILED(ルートコレクションが見つからないかアクセスできない場合)
  • 500 - INTERNAL SERVER ERROR(他に問題がある場合)

フォルダーまたはアセットのコピー

指定されたパスに存在するフォルダーまたはアセットを新しい宛先にコピーします。

リクエストヘッダー:パラメーターは次のとおりです。

  • X-Destination - API ソリューション範囲内の、リソースのコピー先となる新しい宛先 URI
  • X-Depth - infinity0 のいずれか。0 を使用すると、リソースとそのプロパティのみがコピーされ、子はコピーされません。
  • X-Overwrite - 既存の宛先にあるアセットが上書きされないようにするには、F を使用します。

リクエストCOPY /api/assets/myFolder -H"X-Destination: /api/assets/myFolder-copy"

応答コード:応答コードは次のとおりです。

  • 201 - CREATED(フォルダーやアセットが既存でない宛先にコピーされた場合)
  • 204 - NO CONTENT(フォルダーまたはアセットが既存の宛先にコピーされた場合)
  • 412 - PRECONDITION FAILED(リクエストヘッダーが不明な場合)
  • 500 - INTERNAL SERVER ERROR(他に問題がある場合)

フォルダーまたはアセットの移動

指定されたパスのフォルダーまたはアセットを新しい宛先に移動します。

リクエストヘッダー:パラメーターは次のとおりです。

  • X-Destination - API ソリューション範囲内の、リソースのコピー先となる新しい宛先 URI
  • X-Depth - infinity0 のいずれか。0 を使用すると、リソースとそのプロパティのみがコピーされ、子はコピーされません。
  • X-Overwrite — 既存のリソース T を強制的に削除する場合、または既存のリソース F の上書きを防ぐ場合に使用します。

リクエストMOVE /api/assets/myFolder -H"X-Destination: /api/assets/myFolder-moved"

応答コード:応答コードは次のとおりです。

  • 201 - CREATED(フォルダーやアセットが既存でない宛先にコピーされた場合)
  • 204 - NO CONTENT(フォルダーまたはアセットが既存の宛先にコピーされた場合)
  • 412 - PRECONDITION FAILED(リクエストヘッダーが不明な場合)
  • 500 - INTERNAL SERVER ERROR(他に問題がある場合)

フォルダー、アセットまたはレンディションの削除

指定されたパスのリソース(ツリー)を削除します。

リクエスト

  • DELETE /api/assets/myFolder
  • DELETE /api/assets/myFolder/myAsset.png
  • DELETE /api/assets/myFolder/myAsset.png/renditions/original

応答コード:応答コードは次のとおりです。

  • 200 - OK(フォルダーが正常に削除された場合)
  • 412 - PRECONDITION FAILED(ルートコレクションが見つからないかアクセスできない場合)
  • 500 - INTERNAL SERVER ERROR(他に問題がある場合)

ヒント、ベストプラクティス、制限事項

  • オフタイムの経過後、アセットとそのレンディションは、Assets Web インターフェイスでも HTTP API でも使用できません。オンタイムが未来の場合、またはオフタイムが過去の場合、API は 404 エラーメッセージを返します。

  • アセットHTTP APIは、完全なメタデータを返しません。 名前空間はハードコードされ、これらの名前空間のみが返されます。 完全なメタデータについては、アセットのパス/jcr_content/metadata.jsonを参照してください。

  • APIを使用して更新した場合、フォルダーまたはアセットの一部のプロパティが別のプレフィックスにマップされます。 jcr:titlejcr:descriptionjcr:languagejcr プレフィックスは dc プレフィックスに置き換えられます。したがって、返された JSON コードで、dc:titledc:description にはそれぞれ jcr:titlejcr:description の値が含まれています。

このページ

Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now