Referencia de la API
Todas las API de esta página usan POST con un cuerpo de solicitud JSON. Cada solicitud usa las Cabeceras de solicitud comunes, que no se repiten en cada API. La estructura externa de la respuesta se describe en Estructura de respuesta unificada; la sección «Respuesta» de cada API solo enumera los campos de negocio dentro de data.
Dominios
| Región | Dominio |
|---|---|
| China continental | https://open-api-gw.xgrids.cloud/ |
| Fuera de China continental (incluidos Hong Kong, Macao y Taiwán) | https://open-api-gw.xgrids.com/ |
Cabeceras de solicitud comunes
Todas las API requieren los siguientes parámetros de cabecera.
| Parámetro | Significado | Regla | Obligatorio | Valor predeterminado |
|---|---|---|---|---|
| APP-ID | ID de la aplicación | Se obtiene al solicitar la aplicación | Sí | Ninguno |
| X-Timestamp | Marca de tiempo de la solicitud | Marca de tiempo en segundos | Sí | Ninguno |
| X-Nonce | Cadena aleatoria | Solo letras y dígitos, de 16 a 32 caracteres. Expresión regular ^[A-Za-z0-9]{16,32}$. Se recomienda UUID.randomUUID() sin los - | Sí | Ninguno |
| X-Sign | Firma de la solicitud | Verifica que la solicitud no se ha manipulado y evita la repetición. Consulta Mecanismo de firma | Sí | Ninguno |
| Content-Type | Tipo de contenido | Siempre application/json | Sí | Ninguno |
| language | Idioma de los mensajes de respuesta | zh-CN o en-US | No | zh-CN |
Estructura de respuesta unificada
Todas las API devuelven la misma estructura externa. El code externo solo refleja el resultado de la capa de API; consulta data.bizCode para conocer el resultado de negocio.
| Nombre | Significado | Regla |
|---|---|---|
| code | Código de resultado de la API | 0 éxito, 401 autenticación fallida, 429 demasiadas solicitudes |
| msg | Descripción del resultado de la API | — |
| data | Datos de negocio | — |
| data.bizCode | Código de resultado de negocio | 0 significa éxito; para otros valores, consulta Códigos de error |
| data.bizMsg | Mensaje de error de negocio | — |
Nota: Una llamada solo es correcta cuando se cumplen
code == 0ydata.bizCode == 0.
Crear tarea y obtener las credenciales de carga
Crea una tarea de modelado y emite credenciales temporales de almacenamiento en la nube para subir los datos de entrada.
Endpoint
POST /open-apis/spatial-model/v1/model/create
Límites
| Elemento | Límite |
|---|---|
| Concurrencia | 10 solicitudes / segundo |
| Validez de las credenciales temporales | 12 horas |
| Región de almacenamiento de datos | Vinculada al solicitar la aplicación; no es necesario pasarla |
Parámetros de la solicitud
| Parámetro | Significado | Regla | Obligatorio | Valor predeterminado |
|---|---|---|---|---|
| modelName | Nombre de la tarea de modelado | Menos de 50 caracteres | Sí | Ninguno |
| modelDes | Descripción de la tarea | Menos de 200 caracteres | No | Vacío |
| quality | Calidad del modelado | "1" rápida, "2" estándar, "3" lenta | No | "2" |
| autoRebuild | Iniciar el modelado automáticamente tras la carga | 0 solo carga, 1 modelado automático tras la carga | No | 1 |
| tags | Etiquetas de la tarea | List<String>, menos de 20 elementos | No | Vacío |
Respuesta
| Nombre | Tipo | Significado |
|---|---|---|
| data.modelId | Long | ID de la tarea de modelado generado por el servidor |
| data.params | Object | Parámetros de las credenciales temporales para la carga de datos |
| data.params.cloudService | String | Proveedor de nube que recibe la carga. OSS Alibaba Cloud, AWS Amazon, KS3 Kingsoft Cloud. Normalmente cada integrador trabaja con un único proveedor fijo, por lo que no necesitas admitirlos todos |
| data.params.endpoint | String | Endpoint de carga del proveedor de almacenamiento en la nube |
| data.params.region | String | Región de almacenamiento del proveedor de almacenamiento en la nube |
| data.params.bucket | String | Bucket de carga del proveedor de almacenamiento en la nube |
| data.params.savePath | String | Key del directorio de destino de los archivos subidos. Es el prefijo del directorio input; añade la ruta relativa de cada archivo para formar su Key real |
| data.params.accessKeyId | String | AccessKeyId temporal |
| data.params.accessKeySecret | String | AccessKeySecret temporal |
| data.params.securityToken | String | SecurityToken de carga |
| data.params.requestId | String | ID de esta solicitud |
Ejemplo de solicitud
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"]
}
Ejemplo de respuesta
{
"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"
}
}
}
Iniciar tarea
Inicia el modelado manualmente.
Endpoint
POST /open-apis/spatial-model/v1/model/start
Límites
| Elemento | Límite |
|---|---|
| Cuándo usarla | Solo cuando la tarea se creó con autoRebuild = 0:① Solo se pueden iniciar las tareas en estado Carga completada (3); en caso contrario se devuelve 100041018;② El directorio input debe contener al menos un archivo .lcc2 / .ply / .las; en caso contrario se devuelve 100041019;③ Al iniciar se congelan créditos; si el saldo es insuficiente, se devuelve un código de error de créditos |
| Límite de frecuencia | Límite de frecuencia de 3 segundos por modelId |
| Concurrencia | 10 solicitudes / segundo |
Parámetros de la solicitud
| Parámetro | Significado | Regla | Obligatorio | Valor predeterminado |
|---|---|---|---|---|
| modelId | ID de la tarea de modelado | Se devuelve al crear la tarea | Sí | Ninguno |
Respuesta
Solo devuelve la Estructura de respuesta unificada.
Ejemplo de solicitud
{
"modelId": 100231987
}
Obtener de nuevo las credenciales de carga
Obtiene nuevas credenciales temporales de carga cuando una carga se interrumpe o las credenciales temporales han caducado.
Endpoint
POST /open-apis/spatial-model/v1/model/sts
Límites
| Elemento | Límite |
|---|---|
| Validez de las credenciales temporales | 12 horas |
| Límite de frecuencia | Límite de frecuencia de 3 segundos por modelId; si se llama con demasiada frecuencia se devuelve 10000003 |
| Concurrencia | 10 solicitudes / segundo |
Parámetros de la solicitud
| Parámetro | Significado | Regla | Obligatorio | Valor predeterminado |
|---|---|---|---|---|
| modelId | ID de la tarea de modelado | — | Sí | Ninguno |
Respuesta
Igual que la respuesta de Crear tarea y obtener las credenciales de carga (data.modelId y data.params.*).
Ejemplo de solicitud
{
"modelId": 100231987
}
Actualizar el estado de carga
Notifica el estado de carga de los datos de entrada. Debes llamar a esta API cuando termine la carga; de lo contrario, el modelado no se iniciará.
Endpoint
POST /open-apis/spatial-model/v1/model/upload_status/update
Límites
| Elemento | Límite |
|---|---|
| Concurrencia | 10 solicitudes / segundo |
Parámetros de la solicitud
| Parámetro | Significado | Regla | Obligatorio | Valor predeterminado |
|---|---|---|---|---|
| modelId | ID de la tarea de modelado | — | Sí | Ninguno |
| status | Estado de la carga | 1 cargando, 2 en pausa, 3 correcta, 4 fallida | Sí | Ninguno |
| uploadTime | Duración de la carga | En milisegundos; se recomienda cuando la carga es correcta | No | Vacío |
| failedReason | Motivo del fallo | Se recomienda cuando la carga falla | No | Vacío |
Respuesta
Solo devuelve la Estructura de respuesta unificada.
Ejemplo de solicitud
{
"modelId": 100231987,
"status": 3,
"uploadTime": 184620
}
Cancelar el modelado
Solo se puede llamar para tareas que se están modelando.
- Solo se pueden cancelar las tareas en estado Modelando. Tras la cancelación, el estado de la tarea pasa a Modelado fallido.
- La cancelación descuenta los créditos del uso ya consumido; los créditos congelados sobrantes se devuelven al saldo.
- Los créditos suelen liquidarse en pocos minutos, como máximo en unos 10 minutos.
Endpoint
POST /open-apis/spatial-model/v1/model/cancel
Límites
| Elemento | Límite |
|---|---|
| Restricción de estado | Solo se pueden cancelar las tareas en estado Modelando (7); otros estados devuelven 100041017 |
| Concurrencia | 10 solicitudes / segundo; límite de frecuencia de 3 segundos por modelId, si se llama con demasiada frecuencia se devuelve 10000003 |
Parámetros de la solicitud
| Parámetro | Significado | Regla | Obligatorio | Valor predeterminado |
|---|---|---|---|---|
| modelId | ID de la tarea de modelado | — | Sí | Ninguno |
Respuesta
Solo devuelve la Estructura de respuesta unificada.
Ejemplo de solicitud
{
"modelId": 100231987
}
Lista paginada de tareas
Consulta las tareas de modelado página a página con filtros.
Endpoint
POST /open-apis/spatial-model/v1/model/list
Límites
| Elemento | Límite |
|---|---|
| Alcance de los datos | Solo devuelve las tareas de la cuenta asociada al appId actual |
| Sondeo | Intervalo no inferior a 5 segundos |
| Concurrencia | 10 solicitudes / segundo |
Parámetros de la solicitud
| Parámetro | Significado | Regla | Obligatorio | Valor predeterminado |
|---|---|---|---|---|
| modelName | Nombre de la tarea | Menos de 50 caracteres, coincidencia parcial | No | Cualquiera |
| statusList | Estados de la tarea | Valores de Máquina de estados de la tarea | No | Cualquiera |
| startTime | Hora de inicio | Marca de tiempo en milisegundos; filtra los registros creados en startTime o después | No | Cualquiera |
| endTime | Hora de fin | Marca de tiempo en milisegundos; filtra los registros creados en endTime o antes | No | Cualquiera |
| page.page | Número de página | — | No | 1 |
| page.limit | Tamaño de página | — | No | Definido por el servidor |
| page.order | Orden | ASC ascendente, DESC descendente, por fecha de creación | No | DESC |
Respuesta
| Nombre | Tipo | Significado |
|---|---|---|
| data.page | Integer | Número de página |
| data.limit | Integer | Tamaño de página |
| data.total | Long | Recuento total |
| data.data | List | Lista de datos |
| data.data[].modelId | Long | ID de la tarea de modelado |
| data.data[].modelName | String | Nombre de la tarea |
| data.data[].modelDes | String | Descripción de la tarea |
| data.data[].cover | String | URL de la portada; cuando termina el modelado, es la previsualización renderizada general del modelo. Enlace temporal firmado, no lo guardes de forma persistente |
| data.data[].percent | Double | Progreso del modelado |
| data.data[].tags | List | Etiquetas |
| data.data[].status | Integer | Estado de la tarea; valores de Máquina de estados de la tarea |
| data.data[].errorCode | String | Código de error |
| data.data[].failedReason | String | Motivo del fallo |
| data.data[].createTime | Long | Fecha de creación, marca de tiempo en milisegundos |
| data.data[].taskSuccessAt | Long | Fecha de finalización del modelado, marca de tiempo en milisegundos |
Ejemplo de solicitud
{
"modelName": "Design Commune",
"statusList": [7, 8],
"startTime": 1790899200000,
"endTime": 1791763200000,
"page": {
"page": 1,
"limit": 20,
"order": "DESC"
}
}
Detalles de tareas
Consulta por lotes los detalles de las tareas de modelado, incluidas estadísticas como la duración del modelado.
Endpoint
POST /open-apis/spatial-model/v1/model/detail
Límites
| Elemento | Límite |
|---|---|
| Consulta por lotes | Hasta 50 modelIds por solicitud |
| Concurrencia | 10 solicitudes / segundo |
Parámetros de la solicitud
| Parámetro | Significado | Regla | Obligatorio | Valor predeterminado |
|---|---|---|---|---|
| modelIdList | IDs de las tareas de modelado | List<Long>, hasta 50 a la vez | Sí | Ninguno |
Respuesta
| Nombre | Tipo | Significado |
|---|---|---|
| data.dataList | List | Detalles de las tareas |
| data.dataList[].modelId | Long | ID de la tarea de modelado |
| data.dataList[].modelName | String | Nombre de la tarea |
| data.dataList[].modelDes | String | Descripción de la tarea |
| data.dataList[].cover | String | URL de la portada. Enlace temporal firmado, no lo guardes de forma persistente |
| data.dataList[].percent | Double | Progreso del modelado |
| data.dataList[].tags | List | Etiquetas |
| data.dataList[].status | Integer | Estado de la tarea; valores de Máquina de estados de la tarea |
| data.dataList[].errorCode | String | Código de error |
| data.dataList[].failedReason | String | Motivo del fallo |
| data.dataList[].createTime | Long | Fecha de creación, marca de tiempo en milisegundos |
| data.dataList[].rebuildInfo | Object | Información del modelado |
| data.dataList[].rebuildInfo.quality | String | Calidad del modelado. 1 rápida, 2 estándar, 3 lenta |
| data.dataList[].rebuildInfo.autoRebuild | Integer | Indicador de modelado automático. 0 solo carga, 1 modelado automático tras la carga |
| data.dataList[].rebuildInfo.inputTotalSize | Long | Tamaño de los datos de entrada, en bytes |
| data.dataList[].rebuildInfo.outputTotalSize | Long | Tamaño de los resultados del modelado, en bytes |
| data.dataList[].rebuildInfo.uploadTime | Long | Duración de la carga, en milisegundos |
| data.dataList[].rebuildInfo.buildTime | Long | Duración del modelado, en milisegundos |
| data.dataList[].rebuildInfo.taskStartAt | Long | Hora de inicio del modelado, marca de tiempo en milisegundos |
| data.dataList[].rebuildInfo.taskSuccessAt | Long | Hora de finalización correcta del modelado, marca de tiempo en milisegundos |
| data.dataList[].rebuildInfo.credit | Object | Información de facturación de créditos (solo lectura), sirve para verificar el cargo de esta ejecución de modelado. Este objeto se devuelve siempre; sus campos son null mientras no existan datos de facturación |
| data.dataList[].rebuildInfo.credit.freezeNo | String | Número de congelación de créditos, con formato SPATIAL_MODELING_{modelId}_{attempt}. Solo tiene valor después de que Iniciar tarea congele los créditos correctamente; antes es null |
| data.dataList[].rebuildInfo.credit.frozenCredit | Long | Créditos congelados en esta ronda. Al iniciar el modelado se congela una estimación; si después el algoritmo estima una superficie que requiere más créditos, se congelan créditos adicionales y este campo muestra el total tras el aumento |
| data.dataList[].rebuildInfo.credit.actualCredit | Long | Créditos descontados realmente. Null antes de la liquidación; cuando el modelado finaliza correctamente o se cancela, contiene el cargo según el uso real; 0 cuando se liberan tras un modelado fallido |
| data.dataList[].rebuildInfo.credit.settleStatus | String | Estado de la liquidación. FROZEN congelados, pendientes de liquidación; SETTLED liquidados y cobrados (modelado correcto o cancelado); RELEASED liberados, créditos reembolsados por completo (modelado fallido, etc.). Null si no hay créditos congelados |
| data.dataList[].rebuildInfo.credit.attempt | Integer | Ronda de modelado, empieza en 1. Solo aumenta en 1 cuando se vuelve a llamar a Iniciar tarea; las reasignaciones internas de la plataforma no la modifican. Cada ronda tiene su propio freezeNo |
| data.dataList[].rebuildInfo.credit.areaM2 | Double | Superficie de modelado estimada por el algoritmo, en metros cuadrados; es la base de la congelación adicional. Null hasta que el algoritmo la notifique |
Ejemplo de solicitud
{
"modelIdList": [100231987, 100231988]
}
Créditos de la cuenta
Consulta el saldo de créditos de la cuenta asociada al appId.
Endpoint
POST /open-apis/spatial-model/v1/credit/info
Límites
| Elemento | Límite |
|---|---|
| Objeto de la consulta | La cuenta de créditos de la cuenta asociada al appId; no se necesita ningún identificador de usuario |
| Cuenta no abierta | Si nunca se han emitido créditos, todos los saldos devuelven 0; no se considera un error |
| Actualidad | Devuelve el saldo en tiempo real en el momento de la consulta, sin caché |
| Concurrencia | 10 solicitudes / segundo |
Parámetros de la solicitud
Sin parámetros de negocio. Pasa un objeto vacío {}.
Respuesta
| Nombre | Tipo | Significado |
|---|---|---|
| data.availableCredit | Long | Créditos disponibles que se pueden usar actualmente |
| data.frozenCredit | Long | Créditos congelados, reservados pero aún no liquidados |
| data.totalCredit | Long | Créditos totales, igual a availableCredit más frozenCredit |
Ejemplo de respuesta
{
"code": 0,
"msg": "success",
"data": {
"bizCode": 0,
"bizMsg": "",
"availableCredit": 8500,
"frozenCredit": 1500,
"totalCredit": 10000
}
}
Nota: Esta API solo consulta el saldo de créditos de la cuenta. Las reglas de facturación de créditos de las tareas de modelado (momento del descuento y base de facturación) se definirán y documentarán en una versión posterior. En la versión actual, los valores devueltos aquí no afectan a las llamadas a las API de modelado.
Descargar los resultados del modelado
Obtiene enlaces de descarga temporales para los resultados del modelado. Consulta Resultados del modelado para saber qué contienen.
Endpoint
POST /open-apis/spatial-model/v1/model/data/download
Límites
| Elemento | Límite |
|---|---|
| Condición previa | El estado de la tarea debe ser Modelado completado (8) |
| Validez de los enlaces | Enlaces temporales firmados; descárgalos poco después de obtenerlos y no los guardes de forma persistente |
| Concurrencia | 10 solicitudes / segundo |
Parámetros de la solicitud
| Parámetro | Significado | Regla | Obligatorio | Valor predeterminado |
|---|---|---|---|---|
| modelId | ID de la tarea de modelado | — | Sí | Ninguno |
| type | Tipo de resultado | DXF, GLB, BLEND, RVT | No | Si se omite, se devuelven todos los resultados generados: DXF / GLB / BLEND, más RVT si está disponible |
Respuesta
| Nombre | Tipo | Significado |
|---|---|---|
| data.dataList | List<String> | Enlaces de descarga de los resultados del modelado. Enlaces temporales firmados, no los guardes de forma persistente |
Ejemplo de solicitud
{
"modelId": 100231987,
"type": "GLB"
}
Eliminar tarea
Elimina una tarea de modelado y sus datos asociados.
Endpoint
POST /open-apis/spatial-model/v1/model/del
Límites
| Elemento | Límite |
|---|---|
| Restricción de estado | No se pueden eliminar las tareas en estado Modelando (7) |
| Impacto | También elimina los datos de entrada subidos y los resultados del modelado; no se puede deshacer |
| Concurrencia | 10 solicitudes / segundo |
Parámetros de la solicitud
| Parámetro | Significado | Regla | Obligatorio | Valor predeterminado |
|---|---|---|---|---|
| modelId | ID de la tarea de modelado | — | Sí | Ninguno |
Respuesta
Solo devuelve la Estructura de respuesta unificada.
Ejemplo de solicitud
{
"modelId": 100231987
}
Nota: La eliminación no se puede deshacer; los datos de entrada y los resultados del modelado se eliminan a la vez. Añade una segunda confirmación en tu sistema.