API リファレンス
このページの API はすべて POST メソッドで、リクエストボディは JSON です。すべてのリクエストで共通リクエストヘッダーを使用します。各 API の説明では繰り返し記載しません。レスポンスの外側の構造は統一レスポンス構造を参照してください。各 API の「レスポンス」には data 内の業務フィールドのみを記載しています。
ドメイン
| リージョン | ドメイン |
|---|---|
| 中国本土 | https://open-api-gw.xgrids.cloud/ |
| 中国本土以外(香港・マカオ・台湾を含む) | https://open-api-gw.xgrids.com/ |
共通リクエストヘッダー
すべての API で以下のヘッダーパラメータが必要です。
| パラメータ | 意味 | ルール | 必須 | デフォルト値 |
|---|---|---|---|---|
| APP-ID | アプリケーション ID | アプリケーション申請時に取得 | はい | なし |
| X-Timestamp | リクエストのタイムスタンプ | 秒単位のタイムスタンプ | はい | なし |
| X-Nonce | ランダム文字列 | 英数字のみ、16~32 文字。正規表現 ^[A-Za-z0-9]{16,32}$。UUID.randomUUID() から - を除いた値を推奨 | はい | なし |
| X-Sign | リクエスト署名 | リクエストの改ざんを検証し、リプレイ攻撃を防ぎます。署名メカニズムを参照 | はい | なし |
| Content-Type | コンテンツタイプ | 常に application/json | はい | なし |
| language | レスポンスメッセージの言語 | zh-CN または en-US | いいえ | zh-CN |
統一レスポンス構造
すべての API は同じ外側の構造を返します。外側の code は API 層の結果のみを表します。業務の結果は data.bizCode で確認してください。
| 名前 | 意味 | ルール |
|---|---|---|
| code | API の結果コード | 0 成功、401 認証失敗、429 リクエスト過多 |
| msg | API の結果の説明 | — |
| data | 業務データ | — |
| data.bizCode | 業務の結果コード | 0 は成功。その他の値はエラーコードを参照 |
| data.bizMsg | 業務エラーメッセージ | — |
注:
code == 0かつdata.bizCode == 0の場合にのみ、呼び出しは成功です。
タスクを作成してアップロード認証情報を取得
モデリングタスクを作成し、入力データのアップロードに使用するクラウドストレージの一時認証情報を発行します。
エンドポイント
POST /open-apis/spatial-model/v1/model/create
制限
| 項目 | 制限 |
|---|---|
| 同時実行数 | 10 リクエスト / 秒 |
| 一時認証情報の有効期間 | 12 時間 |
| データの保存リージョン | アプリケーション申請時に紐付け。指定不要 |
リクエストパラメータ
| パラメータ | 意味 | ルール | 必須 | デフォルト値 |
|---|---|---|---|---|
| modelName | モデリングタスク名 | 50 文字未満 | はい | なし |
| modelDes | タスクの説明 | 200 文字未満 | いいえ | 空 |
| quality | モデリング品質 | "1" 高速、"2" 標準、"3" 低速 | いいえ | "2" |
| autoRebuild | アップロード後に自動でモデリングを開始するか | 0 アップロードのみ、1 アップロード後に自動でモデリング | いいえ | 1 |
| tags | タスクのタグ | List<String>、要素数 20 未満 | いいえ | 空 |
レスポンス
| 名前 | 型 | 意味 |
|---|---|---|
| data.modelId | Long | サーバーが生成したモデリングタスク ID |
| data.params | Object | データアップロード用の一時認証情報パラメータ |
| data.params.cloudService | String | アップロード先のクラウドプロバイダー。OSS Alibaba Cloud、AWS Amazon、KS3 Kingsoft Cloud。通常、連携先ごとに 1 つのプロバイダーに固定されるため、すべてに対応する必要はありません |
| data.params.endpoint | String | クラウドストレージのアップロードエンドポイント |
| data.params.region | String | クラウドストレージの保存リージョン |
| data.params.bucket | String | クラウドストレージのアップロード先バケット |
| data.params.savePath | String | アップロードファイルの保存先ディレクトリの Key。input ディレクトリのプレフィックスで、各ファイルの相対パスを付加したものが実際の Key になります |
| data.params.accessKeyId | String | 一時 AccessKeyId |
| data.params.accessKeySecret | String | 一時 AccessKeySecret |
| data.params.securityToken | String | アップロード用 SecurityToken |
| data.params.requestId | String | 今回のリクエストの ID |
リクエスト例
POST /open-apis/spatial-model/v1/model/create HTTP/1.1
Host: open-api-gw.xgrids.com
APP-ID: your_app_id
X-Timestamp: 1791763200
X-Nonce: a3f91c2d8e7b4a6590fd12cb77ae40d1
X-Sign: 9mQk7xL2vTbR4pNw8sYcA1dHfZ3eJgU6oIyK0rVnBsM=
Content-Type: application/json
{
"modelName": "Design Commune C Facade",
"modelDes": "Nanshan, Shenzhen, LCC2 scene package",
"quality": "2",
"autoRebuild": 1,
"tags": ["facade", "nanshan"]
}
レスポンス例
{
"code": 0,
"msg": "success",
"data": {
"bizCode": 0,
"bizMsg": "",
"modelId": 100231987,
"params": {
"cloudService": "AWS",
"endpoint": "s3.ap-southeast-1.amazonaws.com",
"region": "ap-southeast-1",
"bucket": "your-bucket-name",
"savePath": "prd/spatial-model/{accountId}/{taskCode}/input/",
"accessKeyId": "ASIA****************",
"accessKeySecret": "wJalrXUtnFEMI/K7MDENG/bPxRfiCY****",
"securityToken": "IQoJb3JpZ2luX2VjE****",
"requestId": "b7f1e2a9-5c43-4d8e-9a10-6f2c3b84d517"
}
}
}
タスク開始
手動でモデリングを開始します。
エンドポイント
POST /open-apis/spatial-model/v1/model/start
制限
| 項目 | 制限 |
|---|---|
| 使用条件 | autoRebuild = 0 で作成したタスクにのみ使用します:① アップロード完了(3)ステータスのタスクのみ開始できます。それ以外は 100041018 を返します;② input ディレクトリに .lcc2 / .ply / .las ファイルが 1 つ以上必要です。ない場合は 100041019 を返します;③ 開始時にクレジットが凍結されます。残高が不足している場合はクレジット関連のエラーコードを返します |
| レート制限 | modelId 単位で 3 秒のレート制限 |
| 同時実行数 | 10 リクエスト / 秒 |
リクエストパラメータ
| パラメータ | 意味 | ルール | 必須 | デフォルト値 |
|---|---|---|---|---|
| modelId | モデリングタスク ID | タスク作成時に返される値 | はい | なし |
レスポンス
統一レスポンス構造のみを返します。
リクエスト例
{
"modelId": 100231987
}
アップロード認証情報の再取得
アップロードが中断された場合や一時認証情報の有効期限が切れた場合に、新しい一時アップロード認証情報を取得します。
エンドポイント
POST /open-apis/spatial-model/v1/model/sts
制限
| 項目 | 制限 |
|---|---|
| 一時認証情報の有効期間 | 12 時間 |
| レート制限 | modelId 単位で 3 秒のレート制限。呼び出しが多すぎる場合は 10000003 を返します |
| 同時実行数 | 10 リクエスト / 秒 |
リクエストパラメータ
| パラメータ | 意味 | ルール | 必須 | デフォルト値 |
|---|---|---|---|---|
| modelId | モデリングタスク ID | — | はい | なし |
レスポンス
タスクを作成してアップロード認証情報を取得のレスポンスと同じです(data.modelId と data.params.*)。
リクエスト例
{
"modelId": 100231987
}
アップロードステータスの更新
入力データのアップロードステータスを報告します。アップロード完了後に必ず呼び出してください。呼び出さないとモデリングは開始されません。
エンドポイント
POST /open-apis/spatial-model/v1/model/upload_status/update
制限
| 項目 | 制限 |
|---|---|
| 同時実行数 | 10 リクエスト / 秒 |
リクエストパラメータ
| パラメータ | 意味 | ルール | 必須 | デフォルト値 |
|---|---|---|---|---|
| modelId | モデリングタスク ID | — | はい | なし |
| status | アップロードステータス | 1 アップロード中、2 一時停止、3 成功、4 失敗 | はい | なし |
| uploadTime | アップロード所要時間 | ミリ秒単位。アップロード成功時の指定を推奨 | いいえ | 空 |
| failedReason | 失敗理由 | アップロード失敗時の指定を推奨 | いいえ | 空 |
レスポンス
統一レスポンス構造のみを返します。
リクエスト例
{
"modelId": 100231987,
"status": 3,
"uploadTime": 184620
}
モデリングのキャンセル
モデリング中のタスクに対してのみ呼び出せます。
- キャンセルできるのはモデリング中ステータスのタスクのみです。キャンセル後、タスクのステータスはモデリング失敗に変わります。
- キャンセル時は、すでに消費した分のクレジットが差し引かれ、凍結されていた残りのクレジットは残高に戻ります。
- クレジットの精算は通常数分以内、最長で約 10 分で完了します。
エンドポイント
POST /open-apis/spatial-model/v1/model/cancel
制限
| 項目 | 制限 |
|---|---|
| ステータスの制限 | モデリング中(7)ステータスのタスクのみキャンセルできます。その他のステータスでは 100041017 を返します |
| 同時実行数 | 10 リクエスト / 秒。modelId 単位で 3 秒のレート制限があり、呼び出しが多すぎる場合は 10000003 を返します |
リクエストパラメータ
| パラメータ | 意味 | ルール | 必須 | デフォルト値 |
|---|---|---|---|---|
| modelId | モデリングタスク ID | — | はい | なし |
レスポンス
統一レスポンス構造のみを返します。
リクエスト例
{
"modelId": 100231987
}
タスク一覧のページング取得
条件を指定して、モデリングタスクをページ単位で照会します。
エンドポイント
POST /open-apis/spatial-model/v1/model/list
制限
| 項目 | 制限 |
|---|---|
| データ範囲 | 現在の appId に紐付くアカウントのタスクのみを返します |
| ポーリング | 間隔は 5 秒以上 |
| 同時実行数 | 10 リクエスト / 秒 |
リクエストパラメータ
| パラメータ | 意味 | ルール | 必須 | デフォルト値 |
|---|---|---|---|---|
| modelName | タスク名 | 50 文字未満、部分一致 | いいえ | 指定なし |
| statusList | タスクのステータス | 値はタスクのステートマシンを参照 | いいえ | 指定なし |
| startTime | 開始時刻 | ミリ秒単位のタイムスタンプ。作成日時が startTime 以降のレコードを抽出 | いいえ | 指定なし |
| endTime | 終了時刻 | ミリ秒単位のタイムスタンプ。作成日時が endTime 以前のレコードを抽出 | いいえ | 指定なし |
| page.page | ページ番号 | — | いいえ | 1 |
| page.limit | 1 ページあたりの件数 | — | いいえ | サーバー側で定義 |
| page.order | 並び順 | 作成日時の ASC 昇順、DESC 降順 | いいえ | DESC |
レスポンス
| 名前 | 型 | 意味 |
|---|---|---|
| data.page | Integer | ページ番号 |
| data.limit | Integer | 1 ページあたりの件数 |
| data.total | Long | 総件数 |
| data.data | List | データ一覧 |
| data.data[].modelId | Long | モデリングタスク ID |
| data.data[].modelName | String | タスク名 |
| data.data[].modelDes | String | タスクの説明 |
| data.data[].cover | String | カバー画像の URL。モデリング完了後はモデル全体のレンダリングプレビューになります。署名付きの一時リンクのため、永続化しないでください |
| data.data[].percent | Double | モデリングの進捗 |
| data.data[].tags | List | タグ |
| data.data[].status | Integer | タスクのステータス。値はタスクのステートマシンを参照 |
| data.data[].errorCode | String | エラーコード |
| data.data[].failedReason | String | 失敗理由 |
| data.data[].createTime | Long | 作成日時、ミリ秒単位のタイムスタンプ |
| data.data[].taskSuccessAt | Long | モデリング完了日時、ミリ秒単位のタイムスタンプ |
リクエスト例
{
"modelName": "Design Commune",
"statusList": [7, 8],
"startTime": 1790899200000,
"endTime": 1791763200000,
"page": {
"page": 1,
"limit": 20,
"order": "DESC"
}
}
タスク詳細
モデリングタスクの詳細を一括で照会します。モデリング所要時間などの統計情報も含まれます。
エンドポイント
POST /open-apis/spatial-model/v1/model/detail
制限
| 項目 | 制限 |
|---|---|
| 一括照会 | 1 リクエストあたり最大 50 件の modelId |
| 同時実行数 | 10 リクエスト / 秒 |
リクエストパラメータ
| パラメータ | 意味 | ルール | 必須 | デフォルト値 |
|---|---|---|---|---|
| modelIdList | モデリングタスク ID の一覧 | List<Long>、1 回につき最大 50 件 | はい | なし |
レスポンス
| 名前 | 型 | 意味 |
|---|---|---|
| data.dataList | List | タスク詳細 |
| data.dataList[].modelId | Long | モデリングタスク ID |
| data.dataList[].modelName | String | タスク名 |
| data.dataList[].modelDes | String | タスクの説明 |
| data.dataList[].cover | String | カバー画像の URL。署名付きの一時リンクのため、永続化しないでください |
| data.dataList[].percent | Double | モデリングの進捗 |
| data.dataList[].tags | List | タグ |
| data.dataList[].status | Integer | タスクのステータス。値はタスクのステートマシンを参照 |
| data.dataList[].errorCode | String | エラーコード |
| data.dataList[].failedReason | String | 失敗理由 |
| data.dataList[].createTime | Long | 作成日時、ミリ秒単位のタイムスタンプ |
| data.dataList[].rebuildInfo | Object | モデリング情報 |
| data.dataList[].rebuildInfo.quality | String | モデリング品質。1 高速、2 標準、3 低速 |
| data.dataList[].rebuildInfo.autoRebuild | Integer | 自動モデリングのフラグ。0 アップロードのみ、1 アップロード後に自動でモデリング |
| data.dataList[].rebuildInfo.inputTotalSize | Long | 入力データのサイズ(バイト) |
| data.dataList[].rebuildInfo.outputTotalSize | Long | モデリング出力物のサイズ(バイト) |
| data.dataList[].rebuildInfo.uploadTime | Long | アップロード所要時間(ミリ秒) |
| data.dataList[].rebuildInfo.buildTime | Long | モデリング所要時間(ミリ秒) |
| data.dataList[].rebuildInfo.taskStartAt | Long | モデリング開始日時、ミリ秒単位のタイムスタンプ |
| data.dataList[].rebuildInfo.taskSuccessAt | Long | モデリング成功日時、ミリ秒単位のタイムスタンプ |
| data.dataList[].rebuildInfo.credit | Object | クレジット課金情報(読み取り専用)。今回のモデリングの課金額の確認に使用します。このオブジェクトは常に返されます。課金データが発生する前は各フィールドが null です |
| data.dataList[].rebuildInfo.credit.freezeNo | String | クレジット凍結番号。形式は SPATIAL_MODELING_{modelId}_{attempt}。タスク開始でクレジットの凍結に成功した後にのみ値が入り、それまでは null です |
| data.dataList[].rebuildInfo.credit.frozenCredit | Long | 今回のラウンドで凍結されたクレジット。モデリング開始時に見積もり額が凍結されます。その後アルゴリズムの面積推定により追加のクレジットが必要になった場合は追加で凍結され、このフィールドには追加後の合計が表示されます |
| data.dataList[].rebuildInfo.credit.actualCredit | Long | 実際に差し引かれたクレジット。精算前は null です。モデリング成功またはキャンセル後は実際の使用量に基づく課金額が入り、モデリング失敗で解放された場合は 0 になります |
| data.dataList[].rebuildInfo.credit.settleStatus | String | 精算ステータス。FROZEN 凍結中・精算待ち、SETTLED 精算済み・課金済み(モデリング成功またはキャンセル)、RELEASED 解放済み・クレジット全額返却(モデリング失敗など)。凍結されていない場合は null |
| data.dataList[].rebuildInfo.credit.attempt | Integer | モデリングのラウンド。1 から始まります。タスク開始を再度呼び出した場合にのみ 1 増え、プラットフォーム内部での再スケジュールでは変わりません。ラウンドごとに個別の freezeNo があります |
| data.dataList[].rebuildInfo.credit.areaM2 | Double | アルゴリズムが推定したモデリング面積(平方メートル)。追加凍結の根拠になります。アルゴリズムが報告するまでは null です |
リクエスト例
{
"modelIdList": [100231987, 100231988]
}
アカウントのクレジット
appId に紐付くアカウントのクレジット残高を照会します。
エンドポイント
POST /open-apis/spatial-model/v1/credit/info
制限
| 項目 | 制限 |
|---|---|
| 照会対象 | appId に紐付くアカウントのクレジットアカウント。ユーザー識別子は不要です |
| アカウント未開設 | クレジットが一度も発行されていない場合、残高はすべて 0 で返されます。エラーにはなりません |
| データの鮮度 | 照会時点のリアルタイム残高を返します。キャッシュはされません |
| 同時実行数 | 10 リクエスト / 秒 |
リクエストパラメータ
業務パラメータはありません。空オブジェクト {} を渡してください。
レスポンス
| 名前 | 型 | 意味 |
|---|---|---|
| data.availableCredit | Long | 現在使用できる利用可能クレジット |
| data.frozenCredit | Long | 凍結中のクレジット。確保済みで未精算の分 |
| data.totalCredit | Long | 総クレジット。availableCredit と frozenCredit の合計 |
レスポンス例
{
"code": 0,
"msg": "success",
"data": {
"bizCode": 0,
"bizMsg": "",
"availableCredit": 8500,
"frozenCredit": 1500,
"totalCredit": 10000
}
}
注:この API はアカウントのクレジット残高の照会のみを行います。モデリングタスクのクレジット課金ルール(差し引きのタイミングと課金基準)は今後のバージョンで定義・公開されます。現行バージョンでは、ここで返される値がモデリング API の呼び出しに影響することはありません。
モデリング結果のダウンロード
モデリング出力物の一時ダウンロードリンクを取得します。出力物の内容はモデリング出力物を参照してください。
エンドポイント
POST /open-apis/spatial-model/v1/model/data/download
制限
| 項目 | 制限 |
|---|---|
| 前提条件 | タスクのステータスがモデリング完了(8)であること |
| リンクの有効期間 | 署名付きの一時リンクです。取得後はすぐにダウンロードし、永続化しないでください |
| 同時実行数 | 10 リクエスト / 秒 |
リクエストパラメータ
| パラメータ | 意味 | ルール | 必須 | デフォルト値 |
|---|---|---|---|---|
| modelId | モデリングタスク ID | — | はい | なし |
| type | 出力物のタイプ | DXF、GLB、BLEND、RVT | いいえ | 省略した場合は生成済みの出力物をすべて返します:DXF / GLB / BLEND、RVT がある場合は RVT も含みます |
レスポンス
| 名前 | 型 | 意味 |
|---|---|---|
| data.dataList | List<String> | モデリング出力物のダウンロードリンク。署名付きの一時リンクのため、永続化しないでください |
リクエスト例
{
"modelId": 100231987,
"type": "GLB"
}
タスクの削除
モデリングタスクと関連データを削除します。
エンドポイント
POST /open-apis/spatial-model/v1/model/del
制限
| 項目 | 制限 |
|---|---|
| ステータスの制限 | モデリング中(7)ステータスのタスクは削除できません |
| 影響範囲 | アップロード済みの入力データとモデリング出力物も削除されます。元に戻せません |
| 同時実行数 | 10 リクエスト / 秒 |
リクエストパラメータ
| パラメータ | 意味 | ルール | 必須 | デフォルト値 |
|---|---|---|---|---|
| modelId | モデリングタスク ID | — | はい | なし |
レスポンス
統一レスポンス構造のみを返します。
リクエスト例
{
"modelId": 100231987
}
注:削除は元に戻せません。入力データとモデリング出力物もまとめて削除されます。連携側で二重確認を設けてください。