バージョン | 記事リンク |
---|---|
AEM 6.5 | ここをクリックしてください |
AEM as a Cloud Service | この記事 |
Assets HTTP API を使用すれば、デジタルアセット(メタデータ、レンディション、コメントのほか、Experience Manager コンテンツフラグメントを使用した構造化コンテンツも含む)に対して作成、読み取り、更新、削除(CRUD)操作を実行できます。この API は /api/assets
で公開されており、REST API として実装されています。コンテンツフラグメントをサポートしています。
API にアクセスするには、次の手順を実行します。
https://[hostname]:[port]/api.json
)を開きます。https://[hostname]:[server]/api/assets.json
への Assets サービスリンクをクリックします。API の応答は、一部の MIME タイプに対する JSON ファイル、およびすべての MIME タイプに対する応答コードです。JSON 応答はオプションで、PDFファイルなどでは使用できない場合があります。 詳細な分析やアクションを行う場合は、応答コードを利用します。
アセットやバイナリ一般(レンディションなど)のアップロードまたは更新に関連する API 呼び出しはすべて、Experience Manager as a Cloud Service デプロイメントでは廃止されています。バイナリをアップロードする場合は、代わりに、直接バイナリアップロード API を使用します。
コンテンツフラグメントは特殊なタイプのアセットです。テキスト、数値、日付などの構造化データにアクセスするために使用できます。standard
アセット(画像やドキュメントなど)とはいくつかの違いがあるので、コンテンツフラグメントの処理にはいくつかの追加ルールが適用されます。
詳しくは、 Experience Manager Assets HTTP API でのコンテンツフラグメントのサポートを参照してください。
Assets HTTP API は、フォルダーとアセット(標準アセット用)という 2 つの主要要素を公開します。さらに、コンテンツフラグメント内の構造化コンテンツを記述するカスタムデータモデルに対する詳細な要素が公開されます。詳しくは、コンテンツフラグメントのデータモデルを参照してください。
フォルダーは、従来のファイルシステムにおけるディレクトリに似ています。フォルダーには、アセット、フォルダーのみ、またはフォルダーとアセットを含めることができます。フォルダーには、以下のコンポーネントがあります。
エンティティ:フォルダーのエンティティはフォルダーの子要素で、フォルダーまたはアセットです。
プロパティ:
name
はフォルダーの名前です。これは、URL パスの最後のセグメント(拡張子を除く)と同じです。title
は名前の代わりに表示できるフォルダータイトル(オプション)です。フォルダーまたはアセットの一部のプロパティは、異なるプレフィックスにマップされます。jcr:title
、jcr:description
、jcr:language
の jcr
プレフィックスは dc
プレフィックスに置き換えられます。したがって、返された JSON コードで、dc:title
、dc:description
にはそれぞれ jcr:title
、jcr:description
の値が含まれています。
リンクフォルダーは、次の 3 つのリンクを公開します。
self
:自分自身へのリンク。parent
:親フォルダーへのリンク。thumbnail
:(オプション)フォルダーのサムネール画像へのリンク。Experience Manager では、アセットには次の要素が含まれています。
コンテンツフラグメントの要素については、AEM Assets HTTP API でのコンテンツフラグメントのサポートを参照してください。
Experience Manager では、フォルダーには次のコンポーネントが含まれています。
Assets HTTP API には、以下の機能が含まれます。
読みやすいように、以下の例では、完全な cURL 表記法を省略しています。この表記法は、cURL 用のスクリプトラッパーである Resty と関連があります。
既存のフォルダーとその子エンティティ(サブフォルダーまたはアセット)の Siren 表現を取得します。
リクエスト:GET /api/assets/myFolder.json
応答コード:応答コードは次のとおりです。
応答:返されるエンティティのクラスはアセットまたはフォルダーです。含まれるエンティティのプロパティは、各エンティティの完全なプロパティセットのサブセットです。エンティティのすべての表現を取得するために、クライアントはリンクで参照される URL のコンテンツを self
の rel
で取得する必要があります。
指定されたパスに 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"
応答コード:応答コードは次のとおりです。
アセットの作成方法については、アセットのアップロードを参照してください。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"}}'
応答コード:応答コードは次のとおりです。
アセットのレンディションを作成します。リクエストパラメーター名が指定されない場合、ファイル名がレンディション名として使用されます。
パラメーター:パラメーターは 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"
応答コード
アセットレンディションをそれぞれ新しいバイナリデータで置き換えて更新します。
リクエスト:PUT /api/assets/myfolder/myasset.png/renditions/myRendition.png -H"Content-Type: image/png" --data-binary @myRendition.png
応答コード:応答コードは次のとおりです。
パラメーター:パラメーターは message
(コメントのメッセージ本文)と annotationData
(JSON 形式の注釈データ)です。
リクエスト:POST /api/assets/myfolder/myasset.png/comments/* -F"message=Hello World." -F"annotationData={}"
応答コード:応答コードは次のとおりです。
指定されたパスに存在するフォルダーまたはアセットを新しい宛先にコピーします。
リクエストヘッダー:パラメーターは次のとおりです。
X-Destination
- API ソリューション範囲内の、リソースのコピー先となる新しい宛先 URIX-Depth
- infinity
か 0
のいずれか。0
を使用すると、リソースとそのプロパティのみがコピーされ、子はコピーされません。X-Overwrite
- 既存の宛先にあるアセットが上書きされないようにするには、F
を使用します。リクエスト:COPY /api/assets/myFolder -H"X-Destination: /api/assets/myFolder-copy"
応答コード:応答コードは次のとおりです。
指定されたパスのフォルダーまたはアセットを新しい宛先に移動します。
リクエストヘッダー:パラメーターは次のとおりです。
X-Destination
- API ソリューション範囲内の、リソースのコピー先となる新しい宛先 URIX-Depth
- infinity
か 0
のいずれか。0
を使用すると、リソースとそのプロパティのみがコピーされ、子はコピーされません。X-Overwrite
- 既存のリソースを強制的に削除する場合は T
を、既存リソースの上書きを防ぐ場合は F
を使用します。リクエスト:MOVE /api/assets/myFolder -H"X-Destination: /api/assets/myFolder-moved"
応答コード:応答コードは次のとおりです。
指定されたパスのリソース(ツリー)を削除します。
リクエスト
DELETE /api/assets/myFolder
DELETE /api/assets/myFolder/myAsset.png
DELETE /api/assets/myFolder/myAsset.png/renditions/original
応答コード:応答コードは次のとおりです。
オフタイムの経過後、アセットとそのレンディションは、Assets Web インターフェイスでも HTTP API でも使用できません。オンタイムが未来の場合、またはオフタイムが過去の場合、API は 404 エラーメッセージを返します。
Assets HTTP API は完全なメタデータを返しません。名前空間はハードコードされ、これらの名前空間のみが返されます。完全なメタデータについては、アセットパス /jcr_content/metadata.json
を参照してください。
API を使用して更新された場合、フォルダーまたはアセットの一部のプロパティは、異なるプレフィックスにマップされます。jcr:title
、jcr:description
、jcr:language
の jcr
プレフィックスは dc
プレフィックスに置き換えられます。したがって、返された JSON コードで、dc:title
、dc:description
にはそれぞれ jcr:title
、jcr:description
の値が含まれています。
関連情報