Assets APIは、StudioでのRobloxへの公開と同様の機能を提供し、追加の権限管理と継続的リリースワークフローの自動化を実現します。このAPIを使用して、ゲームの既存のプレイスを新しいバージョンに更新することができるため、公開ワークフローの自動化に役立ちます。たとえば、GitHubアクションからこのAPIを呼び出し、統合テストが成功した後にバイナリプレイスファイルをRobloxに自動的にプッシュすることができます。
Assets APIはアップロードを非同期で処理するため、プレイスを公開すると操作IDが返され、即座にバージョン番号は返されません。その後、操作が完了するまでポーリングして、公開が成功したことを確認します。
制限事項
- このAPIはHTTPSリクエストのみをサポートしています。
- プレイス公開APIは特定のインスタンスタイプを更新しません。ゲームにEditableImage、EditableMesh、PartOperation、SurfaceAppearance、またはBaseWrapインスタンスが含まれている場合は、それらを修正した後にStudioから公開してください。
Robloxのプレイス
Robloxのゲームには複数のプレイスがあり、1つのスタートプレイスがゲームのユーザーエントリーポイントとなり、オプションで他のプレイス間でユーザーをテレポートすることができます。APIを使用して、スタートプレイスまたはゲームの他のプレイスをバージョン管理で公開できます。
ゲームの既存のプレイスを更新するには、そのプレイスのプレイスIDが必要です。Assets APIはプレイスをアセットとして扱うため、プレイスIDはプレイスのアセットIDでもあります。
プレイスを公開する
Update Assetエンドポイントを使用して、ゲームの既存のプレイスを公開するには:
Creator DashboardでAPIキーを作成します。次の設定を行ってください:
- アクセス権限にassetsを追加します。
- 選択したゲームに読み取りおよび書き込み操作を追加します。
更新したいプレイスのプレイスIDを取得します。
- Creator Dashboardに移動します。
- 更新したいプレイスを含むゲームを見つけ、そのサムネイルをクリックします。
- 左側のナビゲーションメニューでプレイスタブをクリックします。
- 更新したいプレイスを見つけ、そのサムネイルをクリックします。
- プレイスIDはリダイレクトされたURLにあります。たとえば、URL https://create.roblox.com/dashboard/creations/experiences/0000000/places/111111/configure, では、**プレイスID**は111111`です。
PATCHリクエストのエンドポイントのx-api-keyヘッダーにAPIキーを追加します。プレイスファイルをfileContentフォームフィールドに渡し、assetTypeをPlace、publishedをtrueに設定します。新しいコンテンツを公開するには、publishedをtrueに明示的に設定する必要があります。そうしないと、アップロードは新しい未公開アセットバージョンとして保存されます。以下の2つの例リクエストは、Roblox XMLプレイスファイル(.rbxlx)とバイナリプレイスファイル(.rbxl)を参照しています。
XMLプレイスファイルリクエスト$ curl --verbose --location --request PATCH 'https://apis.roblox.com/assets/v1/assets/{placeId}' \--header 'x-api-key: <your-api-key>' \--form 'request={"assetId": {placeId}, "assetType": "Place", "published": true}' \--form 'fileContent=@/home/placefiles/place1.rbxlx;type=application/xml'バイナリプレイスファイルリクエスト$ curl --verbose --location --request PATCH 'https://apis.roblox.com/assets/v1/assets/{placeId}' \--header 'x-api-key: <your-api-key>' \--form 'request={"assetId": {placeId}, "assetType": "Place", "published": true}' \--form 'fileContent=@/home/placefiles/place1.rbxl;type=application/octet-stream'コマンドを実行するには、{placeId}を公開したいプレイスの実際のプレイスIDに置き換え、fileContentパスをプレイスファイルを指すように更新します。
リクエストを正しく送信すると、次の形式の操作IDを含む成功レスポンスボディを受け取ります:
例のレスポンスボディ{ "path": "operations/{operationId}" }これは、Robloxがアップロードを受け入れ、非同期で処理していることを示しています。次のセクションに進んで結果を確認してください。
公開操作のステータスを確認する
Update Assetエンドポイントはプレイスのアップロードを非同期で処理するため、返された操作IDを使用して公開が成功裏に完了したことを確認します:
Get OperationエンドポイントへのGETリクエストのx-api-keyヘッダーにAPIキーを追加します:
Get Operationの例リクエスト$ curl --verbose --location 'https://apis.roblox.com/assets/v1/operations/{operationId}' \--header 'x-api-key: <your-api-key>'{operationId}を前のステップからの操作IDに置き換えます。
このエンドポイントをポーリングして、レスポンスのdoneフィールドがtrueになるまで待ちます。doneがfalseの間は、操作がまだ進行中です。
例のレスポンスボディ{"path": "operations/{operationId}","done": true,"response": {"path": "assets/{placeId}","revisionId": "{versionNumber}","isPublished": true}}- 操作が成功した場合、responseには更新されたプレイスが含まれます。revisionIdは新しいバージョン番号で、isPublishedはそのバージョンが公開されている場合にtrueになります。
- 操作が失敗した場合、responseの代わりにerrorフィールドが含まれます。errorフィールドは、公開が失敗した理由を説明するStatusオブジェクトです。
- オプションStudioまたはCreator Dashboardでアップロードを確認します。