カスタムオブジェクトAPI
Liferay DXP 7.4+
カスタムオブジェクト定義を公開すると、Liferay はオブジェクトとそのデータと対話するためのデフォルトの REST API を生成します。 これらのAPIは、オブジェクトのスコープ(会社やサイトなど)に応じて異なります。 定義にリレーションシップやスタンドアロンアクションが含まれている場合、Liferayはそれらを呼び出すためのエンドポイントも生成します。
これらのヘッドレスサービスのパスは、 c/[pluralobjectlabel] の命名パターン(例: /o/c/timeoffrequests)に従います。 利用可能なオブジェクトのAPIは、LiferayAPIエクスプローラーを介して[server]:[port]/o/api(例:localhost:8080/o/api)で表示およびテストできます。 [REST Applications]をクリックすると、APIのドロップダウンリストが表示されます。
![各オブジェクトは[REST Applications]の下に表示されます。](https://resources.learn.liferay.com/images/dxp/latest/en/integration/headless-apis/object-apis/custom-object-apis/images/01.png)
オブジェクトがアクティブな間、これらの API を使用して基本的な CRUD 操作を実行したり、 集計用語 と ネストされたフィールドを使用して複雑なクエリを実行したり、スタンドアロン アクションをトリガーしたり、エントリ関係を管理したりすることができます。
デフォルトの会社スコープのREST API
デフォルトのREST APIは、すべての会社に範囲指定されているオブジェクトで使用できます。
| HTTP メソッド | HTTPエンドポイント | 説明 |
|---|---|---|
| DELETE | /by-external-reference-code/{erc} | 指定されたエントリーを削除し、操作が成功した場合は204を返します |
| GET | /by-external-reference-code/{erc} | 指定されたエントリーの詳細を返します |
| PATCH | /by-external-reference-code/{erc} | 指定されたエントリーを更新します。API呼び出しに含まれるフィールドのみが変更されます |
| PUT | /by-external-reference-code/{erc} | 指定されたエントリーの詳細をAPI呼び出しで提供されたものに置き換えます |
| GET | / | Liferayインスタンスのエントリーの完全なリストを返します。結果は、ページ分割、絞り込み、検索、およびソートが可能です |
| POST | / | API呼び出しで提供された詳細を使用して、新しいエントリーを作成します |
| DELETE | /batch | 複数のエントリーを削除し、操作が成功した場合は204を返します |
| POST | /batch | API呼び出しで提供された詳細を使用して複数のエントリーを作成します |
| PUT | /batch | API呼び出しで提供された詳細を使用して複数のエントリーを置き換えます |
| DELETE | /{entryId} | 指定されたエントリーを削除し、操作が成功した場合は204を返します |
| GET | /{entryId} | 指定されたエントリーの詳細を返します |
| PATCH | /{entryId} | 指定されたエントリーを更新します。API呼び出しに含まれるフィールドのみが変更されます |
| PUT | /{entryId} | 指定されたエントリーの詳細をAPI呼び出しで提供されたものに置き換えます |
バッチ操作は、会社スコープのオブジェクトに対してのみ利用可能です。
デフォルトのサイトスコープのREST API
デフォルトのREST APIは、すべてのサイトに範囲指定されているオブジェクトで使用できます。
| HTTP メソッド | HTTPエンドポイント | 説明 |
|---|---|---|
| DELETE | /scopes/{scopeKey}/by-external-reference-code/{erc} | 指定されたエントリーを削除し、操作が成功した場合は204を返します |
| GET | /scopes/{scopeKey}/by-external-reference-code/{erc} | 指定されたエントリーの詳細を返します |
| PATCH | /scopes/{scopeKey}/by-external-reference-code/{erc} | 指定されたエントリーを更新します。API呼び出しに含まれるフィールドのみが変更されます |
| PUT | /scopes/{scopeKey}/by-external-reference-code/{erc} | 指定されたエントリーの詳細をAPI呼び出しで提供されたものに置き換えます |
| GET | /scopes/{scopeKey} | 指定されたスコープのエントリーの完全なリストを返します。結果は、ページ分割、絞り込み、検索、およびソートが可能です |
| POST | /scopes/{scopeKey} | API呼び出しで提供された詳細を使用して、指定された範囲に新しいエントリーを作成します |
| DELETE | /{entryId} | 指定されたエントリーを削除し、操作が成功した場合は204を返します |
| GET | /{entryId} | 指定されたエントリーの詳細を返します |
| PATCH | /{entryId} | 指定されたエントリーを更新します。API呼び出しに含まれるフィールドのみが変更されます |
| PUT | /{entryId} | 指定されたエントリーの詳細をAPI呼び出しで提供されたものに置き換えます |
スコープキー はサイト識別子です。 2025年第3四半期以降は外部参照コード(ERC)が推奨されます。 サイト ID とサイト名もサポートされています。
リレーションシップREST API
ライフレイ 7.4 U70+/GA70+
オブジェクト間に1対多、多対多のリレーションシップを定義すると、Liferayはエントリーリレーションシップを照会、管理するためのエンドポイントを生成します。 これには、関連するオブジェクトのエントリーを返すためのGETエンドポイント、エントリーを関連付けるためのPUTエンドポイント、関連するエントリーの関連付けを解除するためのDELETEエンドポイントが含まれます。 詳細については、 リレーションシップ API の使用 を参照してください。
HTTPエンドポイントでは、 relationshipName をリレーションシップの名前(例: userToTicket)に置き換えます。
| HTTP メソッド | HTTPエンドポイント | 説明 |
|---|---|---|
| GET | /{entryId}/relationshipName | 指定されたエントリーに関連するすべてのエントリーを、リレーションシップを通じて返します。 |
| PUT | /{entryId}/relationshipName/{relatedEntryId} | 指定されたオブジェクトエントリーを関連付けるために、リレーションシップを使用します。 |
| PUT | /by-external-reference-code/{erc}/relationshipName/{relatedERC} | 指定されたオブジェクトエントリーを関連付けるために、リレーションシップを使用します。 |
| DELETE | /{entryId}/relationshipName/{relatedEntryId} | 指定されたオブジェクトエントリーの関連付けを解除します |
サイトに範囲指定されたオブジェクトの場合、ERC エンドポイントには /scope/{scopeKey} のプレフィックス(例: /scope/{scopeKey}/by-external-reference-code/{erc}/relationshipName/{relatedERC})が含まれます。 システムオブジェクトでは、外部参照コードのエンドポイントは利用できません。
nestedFields を使用して関係を照会する
専用のリレーションシップ API に加えて、オブジェクトの他の GET API と共に nestedFields クエリ パラメータを使用して、エントリとその関連エントリを返すことができます。
このパラメータを使用する場合は、次の例のように、出力に含める関係の名前を指定する必要があります (例: nestedFields=ticketAssignee)。
curl \
"http://localhost:8080/o/c/ables/by-external-reference-code/${1}?nestedFields=charlieToAble" \
--user "test@liferay.com:learn"
また、POST、PUT、または PATCH エンドポイントのオブジェクト JSON で nestedFields フィールド (フィールド名としてリレーションシップ名を使用) を使用して、オブジェクトの新しいリレーションシップを定義することもできます。
たとえば、次の POST コマンドは、ID 1234の 学生 との 1 対多の関係 ( rUniversityStudentsと呼ばれる) を持つ新しい 大学 オブジェクトを作成します。
{
"name": "New University",
"universityStudents": [
{
"name": "Carlos",
"id": "12345"
}
]
}

詳しい情報と nestedFieldsの入門チュートリアルについては、 nestedFields を使用して関連エントリを照会する を参照してください。
クエリ内の関連オブジェクトの識別
Liferay DXP 2025.Q1+/ポータル GA132+
Liferay DXP 2025.Q1/Portal GA132より前では、関連オブジェクトがこれらのエンドポイントを使用するには、 すべての 識別子(必須の関係を含む)を含める必要があります。
親オブジェクトの PUT、POST、または PATCH API を呼び出して、2 つのオブジェクト間の新しい必須関係を定義する場合、次の優先順位に従って、関連付ける子オブジェクトを次のいずれかの識別子で指定できます。
-
関連オブジェクトの ID を指定する
nestedFieldsJSON オブジェクト ("id")。 -
関連オブジェクトの外部参照コードを指定する
nestedFieldsJSON オブジェクト ("externalReferenceCode")。 -
関連オブジェクトの ID。
-
関連オブジェクトの外部参照コード (ERC)。
複数の識別子を定義した場合、関係を作成するときに最も優先度の高い識別子のみが使用されます。 たとえば、ID と外部参照コードを指定した場合、ID のみが使用され、外部参照コードは無視されます。
スタンドアロンアクションREST API
ライフレイ 7.4 U60+/GA60+
公開オブジェクトにスタンドアロンアクションを定義すると、Liferayはエントリーでアクションをトリガーするための2つのエンドポイントを生成します。 一つはエントリーのIDを使用し、もう一つはエントリーの外部参照コード(ERC)を使用します。 詳細については、 手動アクションの使用 を参照してください。
| HTTP メソッド | HTTPエンドポイント |
|---|---|
| PUT | /by-external-reference-code/{erc}/object-actions/actionName |
| PUT | /{entryId}/object-actions/actionName |
サイトに範囲指定されたオブジェクトの場合、ERC エンドポイントには /scope/{scopeKey} のプレフィックス(例: /scopes/{scopeKey}/by-external-reference-code/{erc}/object-actions/actionName)が含まれます。
GraphQL API
GraphQL API を使用すると、オブジェクト データのクエリと変更の両方を行うことができます。 カスタム オブジェクトのすべての API は、Liferay の GraphQL スキーマの c の下にリストされています。 Liferay の統合された GraphiQL IDE を使用して、オブジェクト スキーマの検索、クエリの下書き、リクエストの実行などを行うことができます。 アクセスするには、[server]:[port]/o/api (例: localhost:8080/o/api) にある LiferayのAPIエクスプローラーにアクセスし、GraphQLをクリックします。

詳細については、 GraphQL API の使用 を参照してください。
オブジェクトのエクスポートとインポート
データ移行センター またはバッチ フレームワークの エクスポート および インポート エンドポイントを使用して、オブジェクト データをエクスポートおよびインポートできます。
添付ファイルフィールド は、ドキュメントライブラリにファイルを保存します。 Liferay DXP 2024.Q4 以降、添付ファイルとオブジェクトエントリ間のリンクは ERC を使用して作成されるため、エクスポート/インポート時にリンクが保持されます。 添付ファイル付きのオブジェクトのエクスポートとインポートは次のように動作します。
- オブジェクト エントリをエクスポートすると、添付フィールド データ (ファイル) の ERC がエクスポート データに含まれます。
- 添付ファイルのスコープがオブジェクトと異なる場合は、そのスコープも含まれます。
- ユーザーが直接アップロードし、ドキュメント ライブラリから非表示になっている添付ファイルについては、 ファイルの内容が base64 でエンコードされたデータとしてエクスポートされたオブジェクトに直接含まれていない限り、添付することはできません。
- エントリをインポートすると、ERC を使用してファイルが再添付されます。
- 添付ファイルがすでにシステム内に存在する場合は、即座にオブジェクト エントリに追加されます。
- 添付ファイルがシステム内にない場合は、ダミー ファイル (シェルなど) が作成され、後でインポート時にファイル リンクを復元できるようになります。