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

サイトAPIの基本

LiferayのREST APIは、Liferayサイト向けのサービスを提供します。 APIを使用してサイトを作成および編集できます。

Sites 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-w9v7.zip -O
    
    unzip liferay-w9v7.zip
    
  2. cURLスクリプトを使用して新しいサイトを追加します。 コマンドラインで、curlフォルダに移動します。 Sites_POST.sh スクリプトを実行します。

    ./Sites_POST.sh
    

    JSONレスポンスには、新しいサイトが追加されたことが示されています。

    {
       "active" : true,
       "analyticsConfiguration" : {
          "googleAnalyticsConfiguration" : { }
       },
       "assetAutoTaggingEnabled" : false,
       "contentSharingWithChildrenEnabled" : true,
       "defaultLanguageId" : "en_US",
       "description" : "",
       "description_i18n" : { },
       "descriptiveName" : "My Site",
       "descriptiveName_i18n" : {
          "fi-FI" : "My Site",
          "ar-SA" : "My Site",
          "hu-HU" : "My Site",
          "de-DE" : "My Site",
          "ca-ES" : "My Site",
          "en-US" : "My Site",
          "pt-BR" : "My Site",
          "es-ES" : "My Site",
          "zh-Hans-CN" : "My Site",
          "nl-NL" : "My Site",
          "sv-SE" : "My Site",
          "fr-FR" : "My Site",
          "ja-JP" : "My Site"
       },
       "directoryIndexingEnabled" : false,
       "externalReferenceCode" : "dff0dc09-4124-177d-4adc-cb4b43e7883a",
       "friendlyUrlPath" : "/my-site",
       "id" : 43179,
       "inheritLocales" : true,
       "key" : "My Site",
       "locales" : [ "en-US", "ar-SA", "ca-ES", "zh-CN", "nl-NL", "fi-FI", "fr-FR", "de-DE", "hu-HU", "ja-JP", "pt-BR", "es-ES", "sv-SE" ],
       "manualMembership" : true,
       "membershipRestriction" : 0,
       "membershipType" : "restricted",
       "mentionsEnabled" : false,
       "name" : "My Site",
       "name_i18n" : {
          "en-US" : "My Site"
       },
       "parentSiteExternalReferenceCode" : "",
       "ratingsTypes" : { },
       "sharingEnabled" : false,
       "trashEnabled" : false,
       "trashEntriesMaxAge" : 0
    }
    
  3. グローバルメニュー (Global Menu icon) を開き、右側のリストに新しいサイトが表示されていることを確認してください。

    グローバルメニューを使用して、新しいサイトが追加されていることを確認してください。

  4. Javaクライアントを使用してRESTサービスを呼び出すこともできます。 java フォルダに移動し、ソースファイルをコンパイルします。

    javac -classpath .:* *.java
    
  5. Sites_POST クラスを実行します。

    java --add-opens java.base/java.net=ALL-UNNAMED -classpath .:* Sites_POST
    
    ヒント

    Java 8 で古いバージョンの Liferay を使用している場合は、 --add-opens 引数を削除してください。

    java -classpath .:* Sites_POST
    

cURLコマンドの検証

Sites_POST.sh スクリプトは、cURL コマンドを使用して REST サービスを呼び出します。

curl \
	"http://localhost:8080/o/headless-admin-site/v1.0/sites" \
	--data-raw '
		{
			"name": "My Site"
		}' \
	--header "Content-Type: application/json" \
	--request "POST" \
	--user "test@liferay.com:learn"

ここでは、コマンドの引数を紹介します。

引数説明
"http://localhost:8080/o/headless-admin-site/v1.0/sites"RESTサービスのエンドポイント
--data-raw "{\"name\": \"My Site\"}"お客様が掲載を希望するデータ
--header "Content-Type: application/json"リクエストボディのフォーマットがJSONであることを示します。
--request POST指定されたエンドポイントで起動するHTTPメソッド
--user "test@liferay.com:learn"基本的な認証情報

ここでは、デモのために基本的な認証を使用しています。 本番環境では、 OAuth2 を介してユーザーを認証します。 OAuth2 を使用する React アプリケーションの例については、 OAuth2 を使用してユーザーを認証する を参照してください。

他のcURLコマンドも同様のJSON引数を使用しています。

Javaクラスを調べる

Sites_POST.java クラスは、 SiteResource サービスを呼び出すことでサイトを追加します。

public static void main(String[] args) throws Exception {
	SiteResource.Builder builder = SiteResource.builder();

	SiteResource siteResource = builder.authentication(
		"test@liferay.com", "learn"
	).build();

	Site site = siteResource.postSite(
		new Site() {
			{
				name = "My Site";
			}
		});

	System.out.println(site);
}

}

このクラスは、わずか数行のコードでRESTサービスを呼び出します。

行(省略形)説明
SiteResource.Builder builder = ...ビルダー を取得して、 SiteResource サービス インスタンスを生成します。
SiteResource siteResource = builder.authentication(...).build();基本認証を指定し、 SiteResource サービス インスタンスを生成します。
Site site = siteResource.postSite(...);siteResource.postSite メソッドを呼び出し、データを post に渡します。

プロジェクトには、依存関係としてcom.liferay.headless.admin.site.client.jarファイルが含まれていることに注意してください。 すべてのRESTアプリケーションのクライアントJAR依存関係情報は、/o/apiでインストール先のAPIエクスプローラーで確認できます。

main メソッドのコメントは、クラスを実行する方法を示しています。

他の Java クラスも同じパターンに従いますが、異なる SiteResource メソッドを呼び出します。

重要

サービスの詳細については、 SiteResource を参照してください。

以下は、cURLとJavaを使用して他の サイト RESTサービスを呼び出す例です。

サイトを取得する

cURLまたはJavaを使用してサイトの一覧を表示できます。

Sites_GET.sh

コマンド:

./Sites_GET.sh

コード:

curl \
	"http://localhost:8080/o/headless-admin-site/v1.0/sites" \
	--header "Accept: application/json" \
	--request "GET" \
	--user "test@liferay.com:learn"

Sites_GET.java

コマンド:

java --add-opens java.base/java.net=ALL-UNNAMED -classpath .:* Sites_GET

コード:

public static void main(String[] args) throws Exception {
	SiteResource.Builder builder = SiteResource.builder();

	SiteResource siteResource = builder.authentication(
		"test@liferay.com", "learn"
	).build();

	System.out.println(
		siteResource.getSitesPage(null, null, null));
}

サイトの オブジェクトは JSON に現れます。

サイトを取得する

外部参照コード(ERC)を使用して特定のサイトを取得します。

ERCはPOSTレスポンスまたはサイト設定で確認できます。

  1. サイトにアクセスしてください。 サイトメニュー (Site Menu iconを開き、 設定を展開し、 サイト設定 に移動します。

  2. プラットフォームの下で、 サイト構成 をクリックします。 ERCは 詳細 タブに表示されます。

    ERCというサイトは「詳細」欄に表示されます。

ヒント

または、 Sites_GET.[java|sh] を使用してサイトを一覧表示し、その ERC を取得します。

  1. 以下のコマンドの 1234 をサイトの ERC に置き換えてください。

Sites_GET_ByExternalReferenceCode.sh

コマンド:

./Sites_GET_ByExternalReferenceCode.sh 1234

コード:

curl \
	"http://localhost:8080/o/headless-admin-site/v1.0/sites/${1}" \
	--header "Accept: application/json" \
	--request "GET" \
	--user "test@liferay.com:learn"

Sites_GET_ByExternalReferenceCode.java

コマンド:

java --add-opens java.base/java.net=ALL-UNNAMED -classpath .:* -DsiteExternalReferenceCode=1234 Sites_GET_ByExternalReferenceCode

コード:

public static void main(String[] args) throws Exception {
	SiteResource.Builder builder = SiteResource.builder();

	SiteResource siteResource = builder.authentication(
		"test@liferay.com", "learn"
	).build();

	System.out.println(
		siteResource.getSite(
			System.getProperty("siteExternalReferenceCode")));
}

}

サイト フィールドは JSON に表示されます。

サイトを設置する

既存のサイトを上書きします。 注: 1234 をサイトの ERC に置き換えてください。

サイトのアクティブ状態のみを切り替えるには、専用のactivateまたはdeactivateエンドポイントを使用します。 それらのエンドポイントとこのエンドポイントの両方は、システムに必要なサイトを無効化しようとすると、 405 レスポンスを返します。

Sites_PUT_ByExternalReferenceCode.sh

コマンド:

./Sites_PUT_ByExternalReferenceCode.sh 1234

コード:

curl \
	"http://localhost:8080/o/headless-admin-site/v1.0/sites/${1}" \
	--data-raw '
		{
			"name": "My Updated Site"
		}' \
	--header "Content-Type: application/json" \
	--request "PUT" \
	--user "test@liferay.com:learn"

Sites_PUT_ByExternalReferenceCode.java

コマンド:

java --add-opens java.base/java.net=ALL-UNNAMED -classpath .:* -DsiteExternalReferenceCode=1234 Sites_PUT_ByExternalReferenceCode

コード:

public static void main(String[] args) throws Exception {
	SiteResource.Builder builder = SiteResource.builder();

	SiteResource siteResource = builder.authentication(
		"test@liferay.com", "learn"
	).build();

	Site site = siteResource.putSite(
		System.getProperty("siteExternalReferenceCode"),
		new Site() {
			{
				name = "My Updated Site";
			}
		});

	System.out.println(site);
}

}

サイトを有効化または無効化する

ヘッドレス管理サイトのREST APIを使用すると、コントロールパネルからサイトにアクセスすることなく、ERCに基づいてサイトを有効化または無効化できます。 これにより、多数のサイトを管理する組織向けに、一括またはスケジュールされた状態変更をスクリプト化できます。 対象サイトで UPDATE の権限が必要です。

親サイトを有効化または無効化しても、子サイトには影響しません。 お子様一人につき、ERC(緊急対応費用)の申請を個別に送信してください。

1234 をサイトの ERC に置き換えてください。

Sites_PUT_Activate.sh

コマンド:

./Sites_PUT_Activate.sh 1234

コード:

Sites_PUT_Activate.java

コマンド:

java --add-opens java.base/java.net=ALL-UNNAMED -classpath .:* -DsiteExternalReferenceCode=1234 Sites_PUT_Activate

コード:

Sites_PUT_Deactivate.sh

コマンド:

./Sites_PUT_Deactivate.sh 1234

コード:

Sites_PUT_Deactivate.java

コマンド:

java --add-opens java.base/java.net=ALL-UNNAMED -classpath .:* -DsiteExternalReferenceCode=1234 Sites_PUT_Deactivate

コード:

リクエストが成功すると、本文のない 204 レスポンスが返されます。 変更を確認するには、 サイト を取得し、 アクティブな フィールドを確認します。

応答コード

ステータス意味
204リクエストは成功しました。 サイトの アクティブ フィールドは、要求された状態を反映しています。
403対象サイトで UPDATE の権限がありません。
404指定されたERCを持つサイトは存在しません。
405無効化のみ。 対象サイトはシステム必須(グローバルサイト、デフォルトゲストサイト、コントロールパネルサイトなど)であり、無効化することはできません。 レスポンスボディには サイト [サイト名] はシステム必須サイト であるため無効化できません。

サイトを削除する

ERCを使用して既存のサイトを削除します。 注: 1234 をサイトの ERC に置き換えてください。

Sites_DELETE_ByExternalReferenceCode.sh

コマンド:

./Sites_DELETE_ByExternalReferenceCode.sh 1234

コード:

curl \
	"http://localhost:8080/o/headless-admin-site/v1.0/sites/${1}" \
	--request "DELETE" \
	--user "test@liferay.com:learn"

Sites_DELETE_ByExternalReferenceCode.java

コマンド:

java --add-opens java.base/java.net=ALL-UNNAMED -classpath .:* -DsiteExternalReferenceCode=1234 Sites_DELETE_ByExternalReferenceCode

コード:

public static void main(String[] args) throws Exception {
	SiteResource.Builder builder = SiteResource.builder();

	SiteResource siteResource = builder.authentication(
		"test@liferay.com", "learn"
	).build();

	siteResource.deleteSite(
		System.getProperty("siteExternalReferenceCode"));
}

}

API Explorer には、すべての サイト サービスとスキーマが一覧表示され、各サービスを試すためのインターフェースがあります。

バッチエンジンによるサイト管理

Sites APIは、Liferayインスタンス間でサイトおよび関連エンティティを移行するためのバッチエクスポートおよびインポートをサポートしています。 関連する 権限を含め、 フィルタ を適用して結果を絞り込み、 作成者データ がインポートおよびエクスポート要求中にどのように処理されるかを設定できます。

バッチ エンジンの使用方法の詳細については、 バッチ エンジン API を使用したデータのエクスポート および バッチ エンジン API を使用したデータのインポート を参照してください。

サイト権限

これらのAPIエンドポイントを使用して、サイトの権限を管理します。 {siteExternalReferenceCode} をサイトの ERC に置き換えてください。

  1. 権限付きサイトを作成する

    エンドポイントに POST リクエストを送信して、作成時にカスタム権限を割り当てます。 指定された役割は既に存在している必要があります。 指定されたロールが存在しない場合、APIは404エラーを返します。

    パーミッション 配列を省略すると、サイトはデフォルトのパーミッションで作成されます。

    パーミッション 配列を含めると、Liferay はサイト作成時に指定されたロールとアクションを適用します。

    例:

    curl \
    "http://localhost:8080/o/headless-admin-site/v1.0/sites" \
    --data-binary '
       {
          "name": "My Site",
          "permissions": [
             {
                "roleName": "Owner",
                "actionIds": ["VIEW", "UPDATE"]
             }
          ]
       }' \
    --header "Content-Type: application/json" \
    --request "POST" \
    --user "test@liferay.com:learn"
    
  2. サイト権限を取得する

    サイトの応答には、権限情報は含まれません。 これらを取得するには、 /v1.0/sites/{siteExternalReferenceCode}/permissions エンドポイントを使用します。

    例:

    curl \
       "http://localhost:8080/o/headless-admin-site/v1.0/sites/{siteExternalReferenceCode}/permissions" \
       --user "test@liferay.com:learn"
    
  3. サイト権限を更新する

    PUT リクエストを使用して、既存のサイトの権限を更新します。 {siteExternalReferenceCode} をサイトの ERC に置き換えてください。

    この操作により、既存のサイト権限がすべて置き換えられます。 更新後も残るのは、リクエストに含まれていた役割とアクションのみです。

    ヒント

    ERCというサイトは、サイト取得中に見つけることができる。

    例:

    curl \
    "http://localhost:8080/o/headless-admin-site/v1.0/sites/{siteExternalReferenceCode}/permissions" \
    --data-binary '
       [
          {
             "actionIds": ["VIEW", "UPDATE", "DELETE", "PERMISSIONS"],
             "roleName": "Owner"
          }
       ]' \
    --header "Content-Type: application/json" \
    --request "PUT" \
    --user "test@liferay.com:learn"
    

データをフィルタリングする

フィルターを使用すると、取得するサイトを絞り込むことができます。

  1. getSitesPage エンドポイントを使用して、フィルタリングされたサイトを取得します。 フィルター パラメーターを使用して、必要なサイトのみを取得します。

    curl \
       "http://localhost:8080/o/headless-admin-site/v1.0/sites?filter=dateCreated%20le%202025-07-18T14%3A25%3A00Z&sort=dateCreated%3Adesc" \
       --header "Content-Type: application/json" \
       --request "GET" \
       --user "test@liferay.com:learn"
    

    クエリパラメータの仕組みは以下のとおりです。

    パラメーター説明
    /o/headless-admin-site/v1.0/sitesヘッドレス管理サイトAPIを使用してサイトを取得するためのエンドポイント。
    filter=dateCreated%20le%202025-07-18T14%3A25%3A00ZURLエンコードされています。 検索結果を絞り込み、2025年7月18日14時25分(UTC)以前に作成されたサイトのみを含めるようにします。
    sort=dateCreated%3AdescURLエンコードされています。 結果を dateCreated の降順 (最新順) で並べ替えます。
    ヒント

    特定のサイトを名前で取得するには、 search= パラメータを追加します。 例:

    /o/headless-admin-site/v1.0/sites?filter=dateCreated%20le%202025-07-18T14%3A25%3A00Z&search=Main&sort=dateModified:desc

    これは、名前に Main が含まれるサイトのみを取得します。

クリエイターデータの維持

サイトをインポートする際には、 importCreatorStrategy および creatorStrategy クエリ パラメータを使用して、作成者情報の処理方法を制御できます。

パラメーター説明
creatorStrategy=INSERT対象システムに指定された作成者が存在しない場合、新しいユーザーを作成者として追加します。 importCreatorStrategy=KEEP_CREATOR を使用する場合に必要です。
importCreatorStrategy=KEEP_CREATORエクスポートされたデータから元の作成者情報を削除します。 creatorStrategy=INSERT も設定されていない限り、作成者が存在しない場合、インポートは失敗します。
importCreatorStrategy=OVERWRITE_CREATOR元の作成者をインポートしたユーザーに置き換えます。 インポートされたすべてのサイトは、インポートを実行したユーザーに割り当てられます。 省略した場合、デフォルトでこの値が使用されます。

例:

curl \
   "http://localhost:8080/o/headless-batch-engine/v1.0/import-task/com.liferay.headless.admin.site.dto.v1_0.Site?creatorStrategy=INSERT&importCreatorStrategy=KEEP_CREATOR" \
   --data-raw '
   [
      {
         "name": "My Imported Site",
         "externalReferenceCode": "my-site-001"
      }
   ]' \
   --header "Content-Type: application/json" \
   --request "POST" \
   --user "test@liferay.com:learn"