アセットライブラリ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
http://localhost:8080 に、メールアドレス test@liferay.com とパスワード test を使用して 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 スキーマの全文は、http://[host]:[port]/o/api?endpoint=http://[host]:[port]/o/headless-asset-library/v1.0/openapi.json の OpenAPI 定義で確認できます。
ここでは、デモのために基本的な認証を使用しています。 本番環境では、 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()); | アセットライブラリの空の 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 メソッドを呼び出します。
main メソッドのコメントは、クラスを実行する方法を示しています。
サービスの詳細については、 AssetLibraryResource を参照してください。
以下は、cURLとJavaを使用して他の AssetLibrary RESTサービスを呼び出す例です。
コンテンツ管理システムスペースを作成する
ベータ版機能 Liferay DXP 2025.Q4+
現在、この機能はリリース機能フラグ(LPD-17564)によって制御されており、またリリース機能フラグ(LPD-32050およびLPD-34594)にも依存しています。 詳細については、 機能フラグ を参照してください。
同じ AssetLibrary エンドポイントを使用して、 コンテンツ管理システム (CMS) スペース を作成できます。 唯一の違いは、 type フィールドを "Space" に設定する必要があることです。 "AssetLibrary" の代わりに。
-カール
タイプの フィールドを "スペース" に変更します。
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または外部参照コードを使用してください。 レスポンスには、リソースがアセットライブラリかスペースかを示す タイプ フィールドが含まれます。
アセットライブラリを取得する
アセットライブラリは、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")));
}
}