アセットライブラリ API の基礎
Liferay の REST API は、アセット ライブラリを作成、取得、更新、削除するためのエンドポイントを提供します。
Liferay DXP 2025.Q4以降、これらの同じエンドポイントは コンテンツ管理システム(CMS)スペースも管理します。 詳細については、「 コンテンツ管理システム スペースを作成する 」を参照してください。
アセットライブラリを作成する
新しいLiferay DXPインスタンスを起動し、以下を実行します。
docker run -it -m 8g -p 8080:8080 liferay/dxp:2025.q1.6-lts
メールアドレス test@liferay.com とパスワード testを使用して、 http://localhost:8080 で Liferay にサインインします。 プロンプトが表示されたら、パスワードを learnに変更します。
次に、以下の手順に従います。
-
カテゴリと語彙 API の基礎をダウンロードして解凍します。
curl https://resources.learn.liferay.com/examples/liferay-z2u9.zip -Ounzip liferay-z2u9.zip -
コマンドラインで
curlフォルダに移動し、AssetLibraries_POST.shスクリプトを実行して新しいアセット ライブラリを作成します。./AssetLibraries_POST.shサンプル スクリプトには複数のパラメーターが含まれていますが、基本的な POST 要求に必要なのは、一意の
assetLibraryKey、name、およびsettingsオブジェクト (空でも可) だけです。curl \ "http://localhost:8080/o/headless-asset-library/v1.0/asset-libraries" \ --data-raw ' { "assetLibraryKey": "my-asset-library-key", "name": "My Asset Library", "settings": {} }' \ --header "Content-Type: application/json" \ --request "POST" \ --user "test@liferay.com:learn"JSON 応答により、アセット ライブラリが作成されたことが確認されます。
{ "actions" : { "pin" : { "method" : "PUT", "href" : "http://localhost:8080/o/headless-asset-library/v1.0/asset-libraries/35914/pins" }, "connect-sites" : { "method" : "GET", "href" : "http://localhost:8080/o/headless-asset-library/v1.0/asset-libraries/35914" }, "permissions" : { "method" : "PATCH", "href" : "http://localhost:8080/o/headless-asset-library/v1.0/asset-libraries/35914" }, "get" : { "method" : "GET", "href" : "http://localhost:8080/o/headless-asset-library/v1.0/asset-libraries/35914" }, "unpin" : { "method" : "DELETE", "href" : "http://localhost:8080/o/headless-asset-library/v1.0/asset-libraries/35914/pins" }, "update" : { "method" : "PATCH", "href" : "http://localhost:8080/o/headless-asset-library/v1.0/asset-libraries/35914" }, "assign-members" : { "method" : "GET", "href" : "http://localhost:8080/o/headless-asset-library/v1.0/asset-libraries/35914" }, "delete" : { "method" : "DELETE", "href" : "http://localhost:8080/o/headless-asset-library/v1.0/asset-libraries/35914" } }, "assetLibraryKey" : "My Asset Library", "creatorUserId" : 20132, "dateCreated" : "2025-10-03T14:00:00Z", "dateModified" : "2025-10-03T14:00:00Z", "description" : "A new asset library created through the Headless API", "externalReferenceCode" : "47143084-6150-16d8-0a65-907d5ed6d6d7", "id" : 35914, "name" : "My Asset Library", "settings" : { "autoTaggingEnabled" : true, "availableLanguageIds" : [ ], "defaultLanguageId" : "", "logoColor" : "outline-0", "mimeTypeLimits" : [ ], "sharingEnabled" : true, "trashEnabled" : true, "trashEntriesMaxAge" : 0, "useCustomLanguages" : false }, "siteId" : 35915, "type" : "AssetLibrary" }idとexternalReferenceCodeの値に注意してください。 アセット ライブラリを取得、更新、または削除するときに使用します。 -
作成を確認するには、 グローバル メニュー (
) → アプリケーション → アセット ライブラリでアセット ライブラリ アプリケーションを開きます。
-
Java の例を実行するには、
javaフォルダーに移動し、ソース ファイルをコンパイルします。javac -classpath .:* *.java -
次のコマンドで
AssetLibraries_POSTクラスを実行します。java --add-opens java.base/java.net=ALL-UNNAMED -classpath .:* AssetLibraries_POSTJava 8 を搭載した古いバージョンの Liferay では、
--add-opens引数を削除します。java -classpath .:* AssetLibraries_POST
cURLコマンドの検証
AssetLibraries_POST.sh スクリプトは、cURL を使用して REST サービスを呼び出します。
curl \
"http://localhost:8080/o/headless-asset-library/v1.0/asset-libraries" \
--data-raw '{
"assetLibraryKey": "my-asset-library-key",
"description": "This asset library was created by the headless API.",
"name": "My Asset Library",
"settings": {},
"type": "AssetLibrary"
}' \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--request "POST" \
--user "test@liferay.com:learn"
主な議論は
| 引数 | 説明 |
|---|---|
--header "Content-Type: application/json" | リクエストボディの形式として JSON を宣言します。 |
--request "POST" | 指定されたエンドポイントで起動するHTTPメソッド |
"http://localhost:8080/o/headless-asset-library/v1.0/asset-libraries" | アセットライブラリを作成するためのRESTサービスエンドポイント |
--data-raw '{...}' | 作成するアセットライブラリのプロパティを含むJSON本体 |
--user "test@liferay.com:learn" | 基本的な認証情報 |
--data-raw の JSON 本文には、次の最上位パラメータが含まれています。
| パラメーター | 説明 |
|---|---|
assetLibraryKey | ライブラリ内部で使用される一意のキー |
description | アセットライブラリのテキスト説明 |
name | アセットライブラリの表示名(必須) |
permissions | 役割と許可されたアクションを定義する権限オブジェクトの配列 |
settings | ライブラリの動作の構成オブジェクト |
type | リソースの種類。 可能な値: AssetLibrary または Liferay DXP 2025.Q4+ Space。 |
完全な AssetLibrary スキーマは、OpenAPI 定義の http://[host]:[port]/o/api?endpoint=http://[host]:[port]/o/headless-asset-library/v1.0/openapi.json で確認できます。
ここでは、デモのために基本的な認証を使用しています。 本番環境では、 OAuth2経由でユーザーを認証する必要があります。 OAuth2 を使用するサンプル React アプリケーションについては、 OAuth2 を使用してユーザーを承認する を参照してください。
Javaクラスを調べる
AssetLibraries_POST.java クラスは、 AssetLibraryResource サービスを使用してアセット ライブラリを追加します。
public class AssetLibraries_POST {
/**
* java --add-opens java.base/java.net=ALL-UNNAMED -classpath .:* AssetLibraries_POST
*/
public static void main(String[] args) throws Exception {
AssetLibraryResource.Builder builder = AssetLibraryResource.builder();
AssetLibraryResource assetLibraryResource = builder.authentication(
"test@liferay.com", "learn"
).build();
System.out.println(
assetLibraryResource.postAssetLibrary(_createAssetLibrary()));
}
private static AssetLibrary _createAssetLibrary() {
return new AssetLibrary() {
{
setAssetLibraryKey("my-asset-library-key");
setDescription(
"This asset library was created by the headless API.");
setName("My Asset Library");
setSettings(new Settings());
setType(AssetLibrary.Type.ASSET_LIBRARY);
}
};
}
このクラスは、わずか3行のコードでRESTサービスを呼び出します。
| 行(省略形) | 説明 |
|---|---|
AssetLibraryResource.Builder builder = AssetLibraryResource.builder(); | Builder を作成し、 AssetLibraryResource サービス インスタンスを生成します。 |
AssetLibraryResource assetLibraryResource = builder.authentication(...).build(); | 基本認証資格情報を設定し、 AssetLibraryResource サービス インスタンスを構築します。 |
AssetLibrary assetLibrary = new AssetLibrary(); | 投稿するデータを保持するための新しい AssetLibrary オブジェクトを作成します。 |
assetLibrary.setAssetLibraryKey(...);、 setDescription(...);、 setName(...); | アセット ライブラリのキー、説明、および名前を定義します。 |
assetLibrary.setSettings(new Settings()); | アセット ライブラリの空の 設定 オブジェクトを初期化します。 |
assetLibrary.setType(AssetLibrary.Type.ASSET_LIBRARY); | アセット ライブラリの種類を設定します。 |
assetLibraryResource.postAssetLibrary(assetLibrary); | 新しいアセット ライブラリを作成するために、 AssetLibrary データを含む POST リクエストを送信します。 |
プロジェクトには依存関係として com.liferay.headless.asset.library.client.jar が含まれています。 すべてのRESTアプリケーションのクライアントJAR依存関係情報は、/o/apiでインストール先のAPIエクスプローラーで確認できます。
他の Java クラスの例もこれに似ていますが、異なる AssetLibraryResource メソッドを呼び出します。
メイン メソッドのコメントは、クラスの実行を示しています。
サービスの詳細については、 AssetLibraryResource を参照してください。
以下は、cURL と Java を使用して他の AssetLibrary REST サービスを呼び出す例です。
コンテンツ管理システムスペースを作成する
ベータ機能 Liferay DXP 2025.Q4+
現在、この機能はベータ機能フラグ (LPD-17564) の背後にあり、リリース機能フラグ (LPD-32050 および LPD-34594) にも依存しています。 詳細については、 機能フラグ を参照してください。
同じ AssetLibrary エンドポイントを使用して、 コンテンツ管理システム (CMS) スペース を作成できます。 唯一の違いは、 type フィールドを "AssetLibrary"ではなく "Space" に設定する必要があることです。
-カール
タイプ フィールドを "スペース"に変更します。
curl \
"http://localhost:8080/o/headless-asset-library/v1.0/asset-libraries" \
--data-raw '
{
"assetLibraryKey": "my-space-key",
"description": "A new space created through the Headless API",
"name": "My Space",
"settings": {},
"type": "Space"
}' \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--request "POST" \
--user "test@liferay.com:learn"
JSON 応答により、CMS スペースが作成されたことが確認されます。
(...)
},
"assetLibraryKey" : "My Space",
"creatorUserId" : 20131,
"dateCreated" : "2025-10-09T11:54:31Z",
"dateModified" : "2025-10-09T11:54:31Z",
"description" : "A new space created through the Headless API",
"externalReferenceCode" : "2847d0b7-09ab-6e6a-ac55-4cc4cbb70b44",
"id" : 36582,
"name" : "My Space",
"settings" : {
"autoTaggingEnabled" : false,
"availableLanguageIds" : [ ],
"defaultLanguageId" : "",
"logoColor" : "outline-0",
"mimeTypeLimits" : [ ],
"sharingEnabled" : true,
"trashEnabled" : true,
"trashEntriesMaxAge" : 0,
"useCustomLanguages" : false
},
"siteId" : 36583,
"type" : "Space"
}
-
Java
Java クラスの
setTypeメソッドを更新して、リソースをアセット ライブラリではなく CMS スペースとして定義します。(...) public class AssetLibraries_POST { /** * java --add-opens java.base/java.net=ALL-UNNAMED -classpath .:* AssetLibraries_POST */ public static void main(String[] args) throws Exception { AssetLibraryResource.Builder builder = AssetLibraryResource.builder(); AssetLibraryResource assetLibraryResource = builder.authentication( "test@liferay.com", "learn" ).build(); System.out.println( assetLibraryResource.postAssetLibrary( _createAssetLibrary())); } private static AssetLibrary _createAssetLibrary() { return new AssetLibrary() { { setAssetLibraryKey("my-asset-library-key"); setDescription("A new asset library created through the Headless API"); setName("My Asset Library"); setSettings(new Settings()); setType(AssetLibrary.Type.SPACE); } }; } }新しいリソースをアセット ライブラリではなくスペースとして作成することを指定するには、Java クラスに
setType(AssetLibrary.Type.SPACE);ステートメントを含める必要があります。
その他のすべての方法は、アセット ライブラリとスペースで同じように機能します。 対応する ID または外部参照コードを使用して呼び出します。 応答には、リソースがアセット ライブラリであるかスペースであるかを示す type フィールドが含まれます。
アセットライブラリを取得する
cURL または Java コマンドを使用してアセット ライブラリを取得できます。
1234 をアセットライブラリ ID に置き換えます。 この値は、作成レスポンス内、または UI の アセット ライブラリ設定 → 詳細 で確認できます。

-
カール
コマンド:
./AssetLibraries_GET_ById.sh 1234コード:
curl \
"http://localhost:8080/o/headless-asset-library/v1.0/asset-libraries/${1}" \
--header "Accept: application/json" \
--user "test@liferay.com:learn"
-
Java
コマンド:
java --add-opens java.base/java.net=ALL-UNNAMED -classpath .:* -DassetLibraryId=1234 AssetLibraries_GET_ByIdJava 8 を搭載した古いバージョンの Liferay では、
--add-opens引数を削除します。java -classpath .:* -DassetLibraryId=1234 AssetLibraries_GET_ByIdコード:
public class AssetLibraries_GET_ById {
/**
* java --add-opens java.base/java.net=ALL-UNNAMED -classpath .:* -DassetLibraryId=1234 AssetLibraries_GET_ById
*/
public static void main(String[] args) throws Exception {
AssetLibraryResource.Builder builder = AssetLibraryResource.builder();
AssetLibraryResource assetLibraryResource = builder.authentication(
"test@liferay.com", "learn"
).build();
System.out.println(
assetLibraryResource.getAssetLibrary(
Long.valueOf(System.getProperty("assetLibraryId"))));
}
}
応答は、JSON 形式で AssetLibrary オブジェクトを返します。
外部参照コード(ERC)
ExternalReferenceCode を、作成時に自動的に割り当てられたアセット ライブラリの外部参照コードに置き換えます (この例では、 47143084-6150-16d8-0a65-907d5ed6d6d7)。 後で アセット ライブラリを編集 して、ERC をより読みやすい値に変更できます。
-
カール
コマンド:
./AssetLibraries_GET_ByExternalReferenceCode.sh ExternalReferenceCodeコード:
curl \
"http://localhost:8080/o/headless-asset-library/v1.0/asset-libraries/by-external-reference-code/${1}" \
--header "Accept: application/json" \
--user "test@liferay.com:learn"
-
Java
コマンド:
java --add-opens java.base/java.net=ALL-UNNAMED -classpath .:* -DassetLibraryExternalReferenceCode=ExternalReferenceCode AssetLibraries_GET_ByExternalReferenceCodeJava 8 を搭載した古いバージョンの Liferay では、
--add-opens引数を削除します。java -classpath .:* -ExternalReferenceCode=ExternalReferenceCode AssetLibraries_GET_ByExternalReferenceCodeコード:
public class AssetLibraries_GET_ByExternalReferenceCode {
/**
* java --add-opens java.base/java.net=ALL-UNNAMED -classpath .:* -DassetLibraryExternalReferenceCode=ExternalReferenceCode AssetLibraries_GET_ByExternalReferenceCode
*/
public static void main(String[] args) throws Exception {
AssetLibraryResource.Builder builder = AssetLibraryResource.builder();
AssetLibraryResource assetLibraryResource = builder.authentication(
"test@liferay.com", "learn"
).build();
System.out.println(
assetLibraryResource.getAssetLibraryByExternalReferenceCode(
System.getProperty("assetLibraryExternalReferenceCode")));
}
}
応答は、JSON 形式で AssetLibrary オブジェクトを返します。
パッチアセットライブラリ
既存のアセット ライブラリの特定のフィールドを更新します。 1234 をアセットライブラリの ID に置き換えます。
-
カール
コマンド:
./AssetLibraries_PATCH_ById.sh 1234コード:
curl \
"http://localhost:8080/o/headless-asset-library/v1.0/asset-libraries/${1}" \
--data-raw '{
"description": "This asset library was patched by the headless API.",
"externalReferenceCode": "my-asset-library-001"
}' \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--request "PATCH" \
--user "test@liferay.com:learn"
-
Java
コマンド:
java --add-opens java.base/java.net=ALL-UNNAMED -classpath .:* -DassetLibraryId=1234 AssetLibraries_PATCH_ByIdJava 8 を搭載した古いバージョンの Liferay では、
--add-opens引数を削除します。java -classpath .:* -DassetLibraryId=1234 AssetLibraries_PATCH_ByIdコード:
public class AssetLibraries_PATCH_ById {
/**
* java --add-opens java.base/java.net=ALL-UNNAMED -classpath .:* -DassetLibraryId=1234 AssetLibraries_PATCH_ById
*/
public static void main(String[] args) throws Exception {
AssetLibraryResource.Builder builder = AssetLibraryResource.builder();
AssetLibraryResource assetLibraryResource = builder.authentication(
"test@liferay.com", "learn"
).build();
System.out.println(
assetLibraryResource.patchAssetLibrary(
Long.valueOf(System.getProperty("assetLibraryId")),
_createAssetLibrary()));
}
private static AssetLibrary _createAssetLibrary() {
return new AssetLibrary() {
{
setDescription(
"This asset library was patched by the headless API.");
setExternalReferenceCode("my-asset-library-001");
}
};
}
この例では、説明が Headless API を通じて作成された新しいアセット ライブラリ から Headless API を通じて編集された新しいアセット ライブラリの説明に更新されます。
外部参照コード (ERC) もシステム生成値から my-asset-library-001に変更されます。
アセットライブラリを配置する
外部参照コード (ERC) を使用して既存のアセット ライブラリを上書きします。 この例では、前の手順で更新された ERC である my-asset-library-001を使用します。
-
カール
コマンド:
./AssetLibraries_PUT_ByExternalReferenceCode.sh ExternalReferenceCodeコード:
curl \
"http://localhost:8080/o/headless-asset-library/v1.0/asset-libraries/by-external-reference-code/${1}" \
--data-raw '{
"assetLibraryKey": "updated-asset-library-key",
"description": "This asset library was updated by the headless API.",
"externalReferenceCode": "updated-asset-library-001",
"name": "Updated Asset Library",
}' \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--request "PUT" \
--user "test@liferay.com:learn"
-
Java
コマンド:
java --add-opens java.base/java.net=ALL-UNNAMED -classpath .:* -DassetLibraryExternalReferenceCode=ExternalReferenceCode AssetLibraries_PUT_ByExternalReferenceCodeJava 8 を搭載した古いバージョンの Liferay では、
--add-opens引数を削除します。java -classpath .:* -DassetLibraryExternalReferenceCode=ExternalReferenceCode AssetLibraries_PUT_ByExternalReferenceCodeコード:
public class AssetLibraries_PUT_ByExternalReferenceCode {
/**
* java --add-opens java.base/java.net=ALL-UNNAMED -classpath .:* -DassetLibraryExternalReferenceCode=ExternalReferenceCode AssetLibraries_PUT_ByExternalReferenceCode
*/
public static void main(String[] args) throws Exception {
AssetLibraryResource.Builder builder = AssetLibraryResource.builder();
AssetLibraryResource assetLibraryResource = builder.authentication(
"test@liferay.com", "learn"
).build();
System.out.println(
assetLibraryResource.putAssetLibraryByExternalReferenceCode(
System.getProperty("assetLibraryExternalReferenceCode"),
_createAssetLibrary()));
}
private static AssetLibrary _createAssetLibrary() {
return new AssetLibrary() {
{
setAssetLibraryKey("updated-asset-library-key");
setDescription(
"This asset library was updated by the headless API.");
setExternalReferenceCode("updated-asset-library-001");
setName("Updated Asset Library");
}
};
}
指定されたアセット ライブラリが存在しない場合は、この PUT 要求によって新しいライブラリが作成されます。
アセットライブラリを削除する
既存のアセット ライブラリを削除します。 1234 をアセットライブラリの ID に置き換えます。
-
カール
コマンド:
./AssetLibraries_DELETE_ById.sh 1234コード:
curl \
"http://localhost:8080/o/headless-asset-library/v1.0/asset-libraries/${1}" \
--header "Accept: application/json" \
--request "DELETE" \
--user "test@liferay.com:learn"
-
Java
コマンド
java --add-opens java.base/java.net=ALL-UNNAMED -classpath .:* -DassetLibraryId=1234 AssetLibraries_DELETE_ByIdJava 8 を搭載した古いバージョンの Liferay では、
--add-opens引数を削除します。java -classpath .:* -DassetLibraryId=1234 AssetLibraries_DELETE_ByIdコード:
public class AssetLibraries_DELETE_ById {
/**
* java --add-opens java.base/java.net=ALL-UNNAMED -classpath .:* -DassetLibraryId=1234 AssetLibraries_DELETE_ById
*/
public static void main(String[] args) throws Exception {
AssetLibraryResource.Builder builder = AssetLibraryResource.builder();
AssetLibraryResource assetLibraryResource = builder.authentication(
"test@liferay.com", "learn"
).build();
assetLibraryResource.deleteAssetLibrary(
Long.valueOf(System.getProperty("assetLibraryId")));
}
}