サイトAPIの基本
LiferayのREST APIは、Liferayサイト向けのサービスを提供します。 API を使用してサイトを作成・編集したり、エクスポート・インポート APIを使ってサイトを LAR ファイルにエクスポートしたり、LAR ファイルをインポートしたりすることができます。
Sites APIは、外部参照コード(ERC)を使用してサイトを参照することで、インスタンス間で一貫した識別を可能にし、コンテンツ管理と移植性を向上させるためのバッチエクスポートおよびインポートをサポートします。
まずは、新しいサイトを追加する例を見てみましょう。
サイトの追加
Liferay DXP の新しいインスタンスを起動するには、以下を実行します。
docker run -it -m 8g -p 8080:8080 liferay/dxp:2026.q1.9-lts
http://localhost:8080 に、メールアドレス test@liferay.com とパスワード test を使用して Liferay にサインインします。プロンプトが表示されたら、パスワードを learn に変更してください。
次に、以下の手順に従ってください。
-
サイトAPIの基本 をダウンロードして解凍します。
curl https://resources.learn.liferay.com/examples/liferay-w9v7.zip -Ounzip liferay-w9v7.zip -
cURLスクリプトを使用して新しいサイトを追加します。コマンドラインで、
curlフォルダーに移動します。Sites_POST.shスクリプトを実行します。./Sites_POST.shJSONレスポンスには、新しいサイトが追加されたことが示されています。
{ "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 } -
グローバルメニュー (
) を開き、新しいサイトが SITES セクションに表示されていることを確認します。
-
Javaクライアントを使用してRESTサービスを呼び出すこともできます。
javaフォルダに移動し、ソースファイルをコンパイルします。javac -classpath .:* *.java -
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 依存関係情報は、インストール先の API エクスプローラーの /o/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レスポンスまたはサイト設定で確認できます。
-
サイトにアクセスしてください。サイトメニュー (
を開き、 設定を展開し、 サイト設定 に移動します。 -
プラットフォームの下で、 サイト構成 をクリックします。 ERCは 詳細 タブに表示されます。

または、 Sites_GET.[java|sh] を使用してサイトを一覧表示し、その ERC を取得します。
- 以下のコマンドの
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_ByExternalReferenceCode.sh
コマンド:
./Sites_PUT_Activate_ByExternalReferenceCode.sh 1234
コード:
curl \
"http://localhost:8080/o/headless-admin-site/v1.0/sites/${1}/activate" \
--request "PUT" \
--user "test@liferay.com:learn"
Sites_PUT_Activate_ByExternalReferenceCode.java
コマンド:
java --add-opens java.base/java.net=ALL-UNNAMED -classpath .:* -DsiteExternalReferenceCode=1234 Sites_PUT_Activate_ByExternalReferenceCode
コード:
public static void main(String[] args) throws Exception {
SiteResource.Builder builder = SiteResource.builder();
SiteResource siteResource = builder.authentication(
"test@liferay.com", "learn"
).build();
siteResource.putSiteActivate(
System.getProperty("siteExternalReferenceCode"));
}
}
Sites_PUT_Deactivate_ByExternalReferenceCode.sh
コマンド:
./Sites_PUT_Deactivate_ByExternalReferenceCode.sh 1234
コード:
curl \
"http://localhost:8080/o/headless-admin-site/v1.0/sites/${1}/deactivate" \
--request "PUT" \
--user "test@liferay.com:learn"
Sites_PUT_Deactivate_ByExternalReferenceCode.java
コマンド:
java --add-opens java.base/java.net=ALL-UNNAMED -classpath .:* -DsiteExternalReferenceCode=1234 Sites_PUT_Deactivate_ByExternalReferenceCode
コード:
public static void main(String[] args) throws Exception {
SiteResource.Builder builder = SiteResource.builder();
SiteResource siteResource = builder.authentication(
"test@liferay.com", "learn"
).build();
siteResource.putSiteDeactivate(
System.getProperty("siteExternalReferenceCode"));
}
}
リクエストが成功すると、本文のない 204 レスポンスが返されます。変更を確認するには、 サイト を取得し、 アクティブな フィールドを確認します。
応答コード
| 状態 | 意味 |
|---|---|
204 | リクエストは成功しました。サイトの アクティブ フィールドは、要求された状態を反映しています。 |
403 | 対象サイトで UPDATE の権限がありません。 |
404 | 指定されたERCを持つサイトは存在しません。 |
405 | 無効化のみ。対象サイトはシステム必須(グローバルサイト、デフォルトゲストサイト、コントロールパネルサイトなど)であり、無効化することはできません。レスポンスボディには サイト [サイト ERC] はシステム必須サイト であるため無効化できません。 |
サイトを削除する
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 に置き換えてください。
-
権限付きサイトを作成する
エンドポイントに
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" -
サイト権限を取得する
サイトの応答には、権限情報は含まれません。これらを取得するには、
/v1.0/sites/{siteExternalReferenceCode}/permissionsエンドポイントを使用します。例:
curl \ "http://localhost:8080/o/headless-admin-site/v1.0/sites/{siteExternalReferenceCode}/permissions" \ --user "test@liferay.com:learn" -
サイト権限を更新する
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"
データをフィルタリングする
フィルターを使用すると、取得するサイトを絞り込むことができます。
-
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"
サイトをLARファイルとしてエクスポートおよびインポートする
Liferay DXP 2026.Q3+
バッチエンジンは、サイトを一度に1レコードずつ処理します。サイト全体を単一ファイルとしてインスタンス間で移動するには、 Export-Import APIを使用します。これは /o/export-import/v1.0 で提供されています。
エクスポート/インポート API は LAR ファイル を読み書きし、サイトの 公開 → エクスポート 画面と同じバックグラウンド プロセスを実行します。 LARファイルにはリクエストで選択されたものだけが含まれており、リクエストは2つの方法で選択します。そのブール型フィールドは、サイト自体の設定、ページセットの設定、およびウィジェットの設定を選択します。その requestPortletDataHandlers 配列は、ウィジェットが保持するコンテンツであるウィジェットデータを選択します。その配列を含まないリクエストでは、設定情報のみを含むLARファイルが生成され、ウィジェットデータは生成されません。 LARファイルはバージョンに依存します。LARファイルをインポートする際は、エクスポート元のLiferayインスタンスと同じバージョンを実行しているインスタンスにのみインポートしてください。
エクスポートを開始する
エクスポートを開始するには、サイトの ERC を使用して POST リクエストを送信します。 {siteExternalReferenceCode} をサイトの ERC に置き換えてください。 name フィールドは必須であり、LAR ファイルの名前になります。
curl \
"http://localhost:8080/o/export-import/v1.0/sites/{siteExternalReferenceCode}/export-processes" \
--data-raw '
{
"dateRangeType": "ALL",
"logo": true,
"name": "full-site-export",
"permissions": true,
"sitePagesSettings": true,
"themeSettings": true
}' \
--header "Content-Type: application/json" \
--request "POST" \
--user "test@liferay.com:learn"
dateRangeType フィールドは、エクスポートの対象となるエントリを選択します。
| 価値 | 説明 |
|---|---|
ALL | 日付に関係なく、すべてをエクスポートします。 |
DATE_RANGE | エクスポートエントリは、 開始日 から 終了日 の間で変更されました。 endDate が欠落している場合は、エクスポートが実行された時刻に解決されます。 |
LAST | エクスポートエントリは、 開始日時 からエクスポート実行時までの全時間で変更されました。 startDate は必須であり、これを省略するか未来に設定するリクエストは 400 を返します。 |
dateRangeType を省略すると、Liferay は指定した日付からそれを推測します。 ALL は日付なしの場合、 DATE_RANGE はどちらかの場合です。ブールフィールド (コメント、 削除、 ロゴ、 権限、 評価、 サイトページ設定、 siteTemplateSettings、および themeSettings) はすべて falseにデフォルト設定されているため、含めたいオプションをすべてリストしてください。
レスポンスには、エクスポートプロセスの ID と ステータス オブジェクトが含まれます。プロセスがいつ終了するかを確認するためにプロセスをポーリングし、 {exportProcessId} をその id に置き換えます。
curl \
"http://localhost:8080/o/export-import/v1.0/export-processes/{exportProcessId}" \
--user "test@liferay.com:learn"
status.label の Successful は、LAR が準備完了であることを意味します。エクスポートが失敗した場合、 errorMessage にその理由が表示されます。
ウィジェットデータを含める
サイトのウィジェットが保持するデータ(ドキュメントやブログエントリなど)を運ぶには、リクエストの requestPortletDataHandlers 配列にそれらのウィジェットをリストします。同じ配列はインポートリクエストでも利用可能です。
まずプレビューエンドポイントを呼び出し、サイトに含めることができる項目の一覧と、各項目の追加数および削除数を取得します。
curl \
"http://localhost:8080/o/export-import/v1.0/sites/{siteExternalReferenceCode}/export-preview" \
--user "test@liferay.com:learn"
レスポンスでは、ウィジェットが previewPortletDataHandlerSectionsの下にグループ化され、各ウィジェットのデータは PORTLET_DATA_ の後にポートレット ID が続く形で表示されます。これらの名前を requestPortletDataHandlersに返送してください。それぞれに、そのウィジェットの previewPortletDataHandlerControls から必要なコントロールが含まれています。デフォルト値を受け入れるには、 値 を指定せずにコントロールを送信します。このリクエストは、サイトのフォルダとドキュメント、およびその設定をエクスポートします。
{
"dateRangeType": "ALL",
"name": "full-site-export",
"requestPortletDataHandlers": [
{
"name": "PORTLET_DATA_com_liferay_document_library_web_portlet_DLAdminPortlet",
"requestPortletDataHandlerControls": [
{
"name": "_document_library_folders"
},
{
"name": "_document_library_documents"
}
]
}
]
}
ウィジェットの名前だけでなく、そのコントロールも一覧表示します。 requestPortletDataHandlerControls という名前が付けられていないウィジェットは何も貢献しません。エクスポートは依然として 成功と報告しますが、LAR ファイルにはそのウィジェットのデータの代わりにプレースホルダーが保持されます。
LARファイルには、サイトの設定、ウィジェット、リクエスト名の制御情報のみが含まれており、それ以外の情報は含まれていません。
ページは例外です。ページウィジェットを指定するリクエストは成功し、LARファイルのマニフェストにはそのウィジェットがリストされますが、ファイルにはサイトのページ設定のみが含まれ、ページ自体の代わりにプレースホルダーが保持されています。
LARファイルのダウンロード
処理が成功したら、 コンテンツ エンドポイントから LAR ファイルをダウンロードします。 --output フラグはダウンロードされたファイル名を指定します。
curl \
"http://localhost:8080/o/export-import/v1.0/export-processes/{exportProcessId}/content" \
--output "full-site-export.lar" \
--user "test@liferay.com:learn"
LARファイルのインポート
インポートには2回の呼び出しが必要です。まず、LARファイルをインポートプレビューエンドポイントにアップロードします。これにより、ファイルが検証され、現在のユーザー向けに準備されます。次にインポート処理を開始すると、準備済みのファイルが読み込まれます。
-
LARファイルをアップロードして検証してください。
fileという名前のフィールドに、マルチパートフォームデータとして送信します。curl \ "http://localhost:8080/o/export-import/v1.0/sites/{siteExternalReferenceCode}/import-preview" \ --form "file=@full-site-export.lar" \ --request "POST" \ --user "test@liferay.com:learn"応答には、LARファイルの作成者、エクスポート日時、ファイルサイズ、およびインポートによって適用される変更内容が報告されます。
-
インポート処理を開始します。ファイルは既に準備済みなので、JSONオプションのみを送信してください。
curl \ "http://localhost:8080/o/export-import/v1.0/sites/{siteExternalReferenceCode}/import-processes" \ --data-raw ' { "dataStrategy": "MIRROR", "name": "full-site-import", "permissions": true, "userIdStrategy": "CURRENT_USER_ID" }' \ --header "Content-Type: application/json" \ --request "POST" \ --user "test@liferay.com:learn"
ファイルを最初にアップロードせずにインポート処理エンドポイントを呼び出すと、説明のない 404 レスポンスが返されます。もしそのようなメッセージが表示された場合は、アップロードの手順をスキップしたか、以前のインポートで既にステージングされたファイルが消費されているかのどちらかです。インポートを行うたびにステージングされたファイルが削除されるため、再インポートは再アップロードを意味します。
dataStrategy フィールドは、インポートされたエントリがターゲットサイトに既に存在するエントリとどのように関連付けられるかを決定します。
| 価値 | 行動 |
|---|---|
MIRROR | MIRROR がデフォルトです。初回インポート時にLARファイルのエントリを新規に作成し、ソースへの参照を保持するため、同じソースからの以降のインポートでは、エントリが追加されるのではなく、既存のエントリが更新されます。 |
MIRROR_OVERWRITE | MIRROR_OVERWRITE は MIRRORと同様に動作しますが、一致する名前のドキュメントまたはイメージが上書きされます。 |
COPY_AS_NEW | COPY_AS_NEW はインポートのたびにすべてを新しいエントリとして作成します。これは非推奨です。API はまだこれを受け入れ、 インポート UI は、 LPD-44307 非推奨フラグが有効になっている間はこれを表示します。これはデフォルトです。 |
userIdStrategy フィールドは、インポートされたエントリの所有者を決定します。
| 価値 | 行動 |
|---|---|
CURRENT_USER_ID | CURRENT_USER_ID は、各エントリの元の作成者を保持します。ターゲットインスタンスで解決できない作成者については、インポート元のユーザーにフォールバックします。これは、LARファイルが別のインスタンスから取得された場合によく発生します。 |
ALWAYS_CURRENT_USER_ID | ALWAYS_CURRENT_USER_ID はインポートするユーザーをすべての作成者にします。 |
インポートの確認は、エクスポートの確認と同じ方法で行います。つまり、IDを指定してプロセスをリクエストします。
curl \
"http://localhost:8080/o/export-import/v1.0/import-processes/{importProcessId}" \
--user "test@liferay.com:learn"
インポートエラーの確認
インポート処理が問題を抱えたまま終了した場合、レポートエントリのエンドポイントには問題が個別に一覧表示されます。これは、UIの「レポートエントリの表示」に相当するAPIです。
curl \
"http://localhost:8080/o/export-import/v1.0/import-processes/{importProcessId}/report-entries" \
--user "test@liferay.com:learn"
items の配列が空の場合、インポートはエラーなく完了したことを意味します。