Content Management APIs
ご覧のページは、お客様の利便性のために一部機械翻訳されています。また、ドキュメントは頻繁に更新が加えられており、翻訳は未完成の部分が含まれることをご了承ください。最新情報は都度公開されておりますため、必ず英語版をご参照ください。翻訳に問題がある場合は、 こちら までご連絡ください。

カテゴリーとボキャブラリ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に変更します。

次に、以下の手順に従います。

  1. カテゴリと語彙 API の基本 をダウンロードして解凍します。

    curl https://resources.learn.liferay.com/examples/liferay-f5w3.zip -O
    
    unzip liferay-f5w3.zip
    
  2. サイトのIDを見つけてください。 以下の各種サービス呼び出しで、このIDを使用してください。

  3. cURLスクリプトを使用して、サイトに新しい語彙を追加してください。 コマンドラインで、curlフォルダに移動します。 サイトIDをパラメータとして指定して、 TaxonomyVocabularies_POST_ToSites.sh スクリプトを実行します。

    ./TaxonomyVocabularies_POST_ToSites.sh 1234
    

    JSON応答では、新しいボキャブラリが追加されたことを示しています。

    {
       "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
    }
    
  4. カテゴリ アプリケーションに移動するには、 管理メニュー分類カテゴリ に移動します。 新しいボキャブラリが追加されたことを確認してください。

    新しいボキャブラリが追加されました。

  5. RESTサービスは、Javaクライアントを使って呼び出すこともできます。 curl フォルダから、 java フォルダに移動します。 以下のコマンドでソースファイルをコンパイルします。

    javac -classpath .:* *.java
    
  6. 以下のコマンドで 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 に置き換えてください。

  1. 権限付き語彙を作成する:

    語彙の作成時に、 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"
    
  2. 語彙の許可を取得する:

    デフォルトでは、語彙の権限はレスポンスに含まれません。 これらを取得するには、クエリに nestedFields=permissions を追加します。

    例:

    curl \
       "http://localhost:8080/o/headless-admin-taxonomy/v1.0/sites/${1}/taxonomy-vocabularies?nestedFields=permissions" \
       --user "test@liferay.com:learn"
    
  3. パッチ語彙の権限:

    既存の語彙の権限は、作成時に権限を割り当てるのと同様に、 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 はエクスポートする語彙を指定します。 この例では、値 TechTech という名前の語彙に対応します。 この値を、エクスポートしたい語彙の名前に置き換えてください。

  • 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"