カテゴリーとボキャブラリAPIの基本
LiferayのREST APIは、Liferayのカテゴリーとボキャブラリ機能のためのサービスを提供します。 APIを使用してボキャブラリを作成および編集できます。 カテゴリーをAPIに関連付けて編集することもできます。 まずは、新しいボキャブラリを追加する例を見てみましょう。
Liferay DXP 2025.Q1+/Portal GA132+ カテゴリと語彙の API は、これらの要素を参照するために外部参照コード (ERC) を使用するようになりました。これにより、インスタンス間で一貫した識別が可能になり、コンテンツ管理と移植性を向上させるためのバッチエクスポート/インポートがサポートされます。
語彙を追加する
新しい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-f5w3.zip -Ounzip liferay-f5w3.zip -
サイトのIDを見つけてください。 以下の各種サービス呼び出しで、このIDを使用してください。
-
cURLスクリプトを使用して、サイトに新しい語彙を追加してください。 コマンドラインで、
curlフォルダに移動します。 サイトIDをパラメータとして指定して、TaxonomyVocabularies_POST_ToSites.shスクリプトを実行します。./TaxonomyVocabularies_POST_ToSites.sh 1234JSON応答では、新しいボキャブラリが追加されたことを示しています。
{ "availableLanguages" : [ "en-US" ], "creator" : { "additionalName" : "", "contentType" : "UserAccount", "familyName" : "Test", "givenName" : "Test", "id" : 20129, "name" : "Test Test", "profileURL" : "/web/test" }, "dateCreated" : "2021-09-09T21:03:15Z", "dateModified" : "2021-09-09T21:03:15Z", "description" : "Foo", "id" : 40126, "name" : "Able", "numberOfTaxonomyCategories" : 0, "siteId" : 20125 } -
カテゴリ アプリケーションに移動するには、 管理メニュー → 分類 → カテゴリ に移動します。 新しいボキャブラリが追加されたことを確認してください。

-
RESTサービスは、Javaクライアントを使って呼び出すこともできます。
curlフォルダから、javaフォルダに移動します。 以下のコマンドでソースファイルをコンパイルします。javac -classpath .:* *.java -
以下のコマンドで
TaxonomyVocabularies_POST_ToSitesクラスを実行します。siteId値をサイトのIDに置き換えます。java -classpath .:* -DsiteId=1234 TaxonomyVocabularies_POST_ToSites
cURLコマンドの検証
TaxonomyVocabularies_POST_ToSites.sh スクリプトは、cURL コマンドを使用して REST サービスを呼び出します。
curl \
"http://localhost:8080/o/headless-admin-taxonomy/v1.0/sites/${1}/taxonomy-vocabularies" \
--data-raw '
{
"description": "Foo",
"name": "Able"
}' \
--header "Content-Type: application/json" \
--request "POST" \
--user "test@liferay.com:learn"
ここでは、コマンドの引数を紹介します。
| 引数 | 説明 |
|---|---|
-H "Content-Type: application/json" | リクエストボディのフォーマットがJSONであることを示します。 |
-X POST | 指定されたエンドポイントで起動するHTTPメソッド |
"http://localhost:8080/o/headless-admin-taxonomy/v1.0/sites/${1}/taxonomy-vocabularies" | RESTサービスのエンドポイント |
-d "{\"description\": \"Foo\", \"name\": \"Able\"}" | お客様が掲載を希望するデータ |
-u "test@liferay.com:learn" | 基本的な認証情報 |
ここでは、デモのために基本的な認証を使用しています。 本番環境では、 OAuth2 を介してユーザーを認証する必要があります。 OAuth2 を使用する React アプリケーションの例については、 OAuth2 を使用してユーザーを認証する を参照してください。
他のcURLコマンドも同様のJSON引数を使用しています。
Javaクラスを調べる
TaxonomyVocabularies_POST_ToSites.java クラスは、 TaxonomyVocabularyResource サービスを呼び出すことで語彙を追加します。
public static void main(String[] args) throws Exception {
TaxonomyVocabularyResource.Builder builder =
TaxonomyVocabularyResource.builder();
TaxonomyVocabularyResource taxonomyVocabularyResource =
builder.authentication(
"test@liferay.com", "learn"
).build();
TaxonomyVocabulary taxonomyVocabulary =
taxonomyVocabularyResource.postSiteTaxonomyVocabulary(
Long.valueOf(System.getProperty("siteId")),
new TaxonomyVocabulary() {
{
description = "Foo";
name = "Baker";
}
});
System.out.println(taxonomyVocabulary);
}
このクラスは、わずか3行のコードでRESTサービスを呼び出します。
| 行(省略形) | 説明 |
|---|---|
TaxonomyVocabularyResource.Builder builder = ... | Builderを取得し、TaxonomyVocabularyResourceサービスインスタンスを生成します。 |
TaxonomyVocabularyResource taxonomyVocabularyResource = builder.authentication(...).build(); | 基本認証を指定し、TaxonomyVocabularyResourceサービスインスタンスを生成します。 |
TaxonomyVocabulary taxonomyVocabulary = taxonomyVocabularyResource.postSiteTaxonomyVocabulary(...); | postSiteTaxonomyVocabularyメソッドを呼び出し、投稿するデータを渡します。 |
プロジェクトには、依存関係としてcom.liferay.headless.admin.taxonomy.client.jarファイルが含まれていることに注意してください。 すべてのRESTアプリケーションのクライアントJAR依存関係情報は、/o/apiでインストール先のAPIエクスプローラーで確認できます。
main メソッドのコメントは、クラスを実行する方法を示しています。
他の例のJavaクラスはこれと類似していますが、異なるTaxonomyVocabularyResourceメソッドを呼び出します。
サービスの詳細については、 TaxonomyVocabularyResource を参照してください。
以下は、cURLとJavaを使って、他のTaxonomyVocabulary RESTサービスを呼び出す例です。
サイトからボキャブラリを取得する
以下のcURLコマンドまたはJavaコマンドを実行することで、サイトの語彙一覧を表示できます。 上記のように、1234をサイトのIDに置き換えてください。
TaxonomyVocabularies_GET_FromSites.sh
コマンド:
./TaxonomyVocabularies_GET_FromSites.sh 1234
コード:
curl \
"http://localhost:8080/o/headless-admin-taxonomy/v1.0/sites/${1}/taxonomy-vocabularies" \
--user "test@liferay.com:learn"
TaxonomyVocabularies_GET_FromSites.java
コマンド:
java -classpath .:* -DsiteId=1234 TaxonomyVocabularies_GET_FromSites
コード:
public static void main(String[] args) throws Exception {
TaxonomyVocabularyResource.Builder builder =
TaxonomyVocabularyResource.builder();
TaxonomyVocabularyResource taxonomyVocabularyResource =
builder.authentication(
"test@liferay.com", "learn"
).build();
Page<TaxonomyVocabulary> page =
taxonomyVocabularyResource.getSiteTaxonomyVocabulariesPage(
Long.valueOf(System.getProperty("siteId")), null, null, null,
Pagination.of(1, 2), null);
System.out.println(page.getItems());
}
サイトの TaxonomyVocabulary オブジェクトは JSON で表示されます。
ボキャブラリの取得
次のcURLまたはJavaコマンドを使用して、特定のボキャブラリを取得します。 1234をボキャブラリのIDに置き換えてください。
TaxonomyVocabularies_GET_FromSites.[java|sh] を使用して、 ボキャブラリー ID を取得します。
TaxonomyVocabularies_GET_ById.sh
コマンド:
./TaxonomyVocabularies_GET_ById.sh 1234
コード:
curl \
"http://localhost:8080/o/headless-admin-taxonomy/v1.0/taxonomy-vocabularies/${1}" \
--user "test@liferay.com:learn"
TaxonomyVocabularies_GET_ById.java
コマンド:
java -classpath .:* -DtaxonomyVocabularyId=1234 TaxonomyVocabularies_GET_ById
コード:
public static void main(String[] args) throws Exception {
TaxonomyVocabularyResource.Builder builder =
TaxonomyVocabularyResource.builder();
TaxonomyVocabularyResource taxonomyVocabularyResource =
builder.authentication(
"test@liferay.com", "learn"
).build();
System.out.println(
taxonomyVocabularyResource.getTaxonomyVocabulary(
Long.valueOf(System.getProperty("taxonomyVocabularyId"))));
}
TaxonomyVocabulary フィールドは JSON に表示されます。
ボキャブラリにパッチを適用する
次のcURLおよびJavaコマンドを使用して、既存のボキャブラリを部分的に編集します。 注: 1234をボキャブラリのIDに置き換えてください。
TaxonomyVocabularies_PATCH_ById.sh
コマンド:
./TaxonomyVocabularies_PATCH_ById.sh 1234
コード:
curl \
"http://localhost:8080/o/headless-admin-taxonomy/v1.0/taxonomy-vocabularies/${1}" \
--data-raw '
{
"description": "Bar",
"name": "Able"
}' \
--header "Content-Type: application/json" \
--request "PATCH" \
--user "test@liferay.com:learn"
TaxonomyVocabularies_PATCH_ById.java
コマンド:
java -classpath .:* -DtaxonomyVocabularyId=1234 TaxonomyVocabularies_PATCH_ById
コード:
public static void main(String[] args) throws Exception {
TaxonomyVocabularyResource.Builder builder =
TaxonomyVocabularyResource.builder();
TaxonomyVocabularyResource taxonomyVocabularyResource =
builder.authentication(
"test@liferay.com", "learn"
).build();
TaxonomyVocabulary taxonomyVocabulary =
taxonomyVocabularyResource.patchTaxonomyVocabulary(
Long.valueOf(System.getProperty("taxonomyVocabularyId")),
new TaxonomyVocabulary() {
{
description = "Bar";
name = "Baker";
}
});
System.out.println(taxonomyVocabulary);
}
この例では、説明がFooからBarに変更されています。
ボキャブラリの配置
次のcURLおよびJavaコマンドを使用して、既存のボキャブラリを上書きします。 注: 1234をボキャブラリのIDに置き換えてください。
TaxonomyVocabularies_PUT_ById.sh
コマンド:
./TaxonomyVocabularies_PUT_ById.sh 1234
コード:
curl \
"http://localhost:8080/o/headless-admin-taxonomy/v1.0/taxonomy-vocabularies/${1}" \
--data-raw '
{
"description": "Goo",
"name": "Able"
}' \
--header "Content-Type: application/json" \
--request "PUT" \
--user "test@liferay.com:learn"
TaxonomyVocabularies_PUT_ById.java
コマンド:
java -classpath .:* -DtaxonomyVocabularyId=1234 TaxonomyVocabularies_PUT_ById
コード:
public static void main(String[] args) throws Exception {
TaxonomyVocabularyResource.Builder builder =
TaxonomyVocabularyResource.builder();
TaxonomyVocabularyResource taxonomyVocabularyResource =
builder.authentication(
"test@liferay.com", "learn"
).build();
TaxonomyVocabulary taxonomyVocabulary =
taxonomyVocabularyResource.putTaxonomyVocabulary(
Long.valueOf(System.getProperty("taxonomyVocabularyId")),
new TaxonomyVocabulary() {
{
description = "Goo";
name = "Baker";
}
});
System.out.println(taxonomyVocabulary);
}
ボキャブラリの削除
次のcURLおよびJavaコマンドを使用して、既存のボキャブラリを削除します。 注: 1234をボキャブラリのIDに置き換えてください。
TaxonomyVocabularies_DELETE_ById.sh
コマンド:
./TaxonomyVocabularies_DELETE_ById.sh 1234
コード:
curl \
"http://localhost:8080/o/headless-admin-taxonomy/v1.0/taxonomy-vocabularies/${1}" \
--request "DELETE" \
--user "test@liferay.com:learn"
TaxonomyVocabularies_DELETE_ById.java
コマンド
java -classpath .:* -DtaxonomyVocabularyId=1234 TaxonomyVocabularies_DELETE_ById
コード:
public static void main(String[] args) throws Exception {
TaxonomyVocabularyResource.Builder builder =
TaxonomyVocabularyResource.builder();
TaxonomyVocabularyResource taxonomyVocabularyResource =
builder.authentication(
"test@liferay.com", "learn"
).build();
taxonomyVocabularyResource.deleteTaxonomyVocabulary(
Long.valueOf(System.getProperty("taxonomyVocabularyId")));
}
タクソノミーカテゴリーサービス
タクソノミーカテゴリーのcURLコマンドとJavaクラスは、タクソノミーボキャブラリと同様に機能します。 一部のサービスではタクソノミーのボキャブラリIDが必要であることに注意してください。
| ファイル | 説明 |
|---|---|
TaxonomyCategories_GET_FromTaxonomyVocabularies.[java\|sh] | ボキャブラリからカテゴリーの一覧を取得します。 |
TaxonomyCategories_DELETE_ById.[java\|sh] | カテゴリーを削除します。 |
TaxonomyCategories_GET_ById[java\|sh] | IDで特定のカテゴリーを取得します。 |
TaxonomyCategories_PATCH_ById.[java\|sh] | カテゴリーにパッチを適用します。 |
TaxonomyCategories_POST_ToTaxonomyVocabularies.[java\|sh] | カテゴリーをボキャブラリに投稿します。 |
TaxonomyCategories_PUT_ById.[java\|sh] | カテゴリーを配置します。 |
API Explorer には、すべての TaxonomyVocabulary および TaxonomyCategory サービスとスキーマが一覧表示され、各サービスを試すためのインターフェースがあります。
バッチエンジンによる語彙管理の改善
Liferay DXP 2025.Q2+
カテゴリおよび語彙APIは、Liferayインスタンス間でカテゴリと語彙を移行するためのバッチエクスポートおよびインポートをサポートしています。 関連する 権限を含めたり、作成/変更日、名前、その他の属性に基づいて フィルタ を適用したり、インポート要求中に 作成者データ がどのように処理されるかを構成したりできます。
バッチ エンジンの使用方法の詳細については、 バッチ エンジン API を使用したデータのエクスポート および バッチ エンジン API を使用したデータのインポート を参照してください。
語彙の許可
これらのAPIエンドポイントを使用して、語彙のアクセス許可を管理します。 以下の例では、 ${1} をサイト ID に置き換えてください。
-
権限付き語彙を作成する:
語彙の作成時に、
POSTリクエストを語彙のエンドポイントに送信することで、語彙にカスタム権限を割り当てます。 指定された役割は、システムに既に存在している必要があります。 ロールが存在しない場合、APIは404エラーを返します。パーミッション配列を省略すると、デフォルトのパーミッションで語彙が作成されます。パーミッション配列を含めると、Liferay は作成時に指定されたロールとアクションを適用します。例:
curl \ "http://localhost:8080/o/headless-admin-taxonomy/v1.0/sites/${1}/taxonomy-vocabularies" \ --data-raw ' { "description": "Foo", "name": "Able", "permissions": [ { "roleName": "Role1", "actionIds": ["VIEW", "UPDATE"] }, { "roleName": "Role2", "actionIds": ["VIEW"] } ] }' \ --header "Content-Type: application/json" \ --request "POST" \ --user "test@liferay.com:learn" -
語彙の許可を取得する:
デフォルトでは、語彙の権限はレスポンスに含まれません。 これらを取得するには、クエリに
nestedFields=permissionsを追加します。例:
curl \ "http://localhost:8080/o/headless-admin-taxonomy/v1.0/sites/${1}/taxonomy-vocabularies?nestedFields=permissions" \ --user "test@liferay.com:learn" -
パッチ語彙の権限:
既存の語彙の権限は、作成時に権限を割り当てるのと同様に、
PATCHリクエストを使用して更新できます。例:
curl \ "http://localhost:8080/o/headless-admin-taxonomy/v1.0/taxonomy-vocabularies/${1}" \ --data-raw ' { "description": "Bar", "name": "Able", "permissions": [ { "roleName": "Role1", "actionIds": ["VIEW", "UPDATE", "DELETE"] }, { "roleName": "Role2", "actionIds": ["VIEW", "PERMISSIONS"] } ] }' \ --header "Content-Type: application/json" \ --request "PATCH" \ --user "test@liferay.com:learn"
データをフィルタリングする
クエリパラメータを使用して、エクスポートされたデータを絞り込みます。
curl \
"http://localhost:8080/o/headless-batch-engine/v1.0/export-task/com.liferay.headless.admin.taxonomy.client.dto.v1_0.TaxonomyVocabulary/JSON?taskItemDelegateName=Tech&filter=name%20eq%20%27Tech%27" \
--header "Content-Type: application/json" \
--request "POST" \
--user "test@liferay.com:learn"
以下に、例におけるクエリパラメータの仕組みを示します。
-
Batch Engine API を使用してエクスポート タスクを開始するには、
http://localhost:8080/o/headless-batch-engine/v1.0/export-task/を使用します。 -
com.liferay.headless.admin.taxonomy.client.dto.v1_0.TaxonomyVocabulary/JSONは、エクスポートするデータの種類を指定します (この場合は、JSON 形式の Taxonomy Vocabulary データ)。TaxonomyVocabularyは、API 内で語彙を表すクラスを指します。 -
taskItemDelegateName=Techはエクスポートする語彙を指定します。 この例では、値Techは Tech という名前の語彙に対応します。 この値を、エクスポートしたい語彙の名前に置き換えてください。 -
filter=name%20eq%20%27Tech%27エクスポートによって返されるデータを絞り込みます。 フィルタクエリパラメータは、ここで URL エンコードされています (name%20eq%20%27Tech%27)。 フィルタクエリの同等の人間が読めるバージョンはfilter=name eq 'Tech'です。 エンコードされたバージョンは、リクエストを行う際に適切なフォーマットを保証するためにURLで使用されます。
クリエイターデータの維持
語彙をインポートする際は、クエリ パラメータ importCreatorStrategy を使用して、作成者データの処理方法を定義します。 creatorStrategy パラメータは、ターゲットシステムにクリエーターが存在しない場合に何が起こるかを決定します。
以下のパラメータを使用できます。
-
creatorStrategy=INSERT指定された作成者が対象システムに存在しない場合、新しいユーザーを作成者として追加することを保証します。 これは、インポート中に不足している作成者が追加されるようにするために、
importCreatorStrategy=KEEP_CREATORを使用する場合に必要です。 -
importCreatorStrategy=KEEP_CREATORエクスポートされたデータに指定された元の作成者情報を保持します。 ターゲットシステムに作成者が存在しない場合、
creatorStrategy=INSERTも設定されていない限り、インポートは失敗します。 -
importCreatorStrategy=OVERWRITE_CREATOR元の作成者をインポートしたユーザーに置き換えます。 インポートされたすべての語彙は、元の作成者の情報に関係なく、インポートを実行したユーザーに割り当てられます。
importCreatorStrategy が省略された場合、システムはデフォルトで OVERWRITE_CREATOR を使用します。
以下に例を示します。
curl \
"http://localhost:8080/o/headless-batch-engine/v1.0/import-task/com.liferay.headless.admin.taxonomy.dto.v1_0.TaxonomyVocabulary?siteId=20110&creatorStrategy=INSERT&importCreatorStrategy=KEEP_CREATOR" \
--data-raw '
[
{
"name": "Example Vocabulary",
"description": "A sample vocabulary for testing."
}
]' \
--header "Content-Type: application/json" \
--request "POST" \
--user "test@liferay.com:learn"