Dokumentacja API
Wszystkie API na tej stronie używają metody POST z treścią żądania w formacie JSON. Każde żądanie używa nagłówków z sekcji Wspólne nagłówki żądania, które nie są powtarzane przy poszczególnych API. Zewnętrzna struktura odpowiedzi jest opisana w sekcji Ujednolicona struktura odpowiedzi; sekcja „Odpowiedź” każdego API wymienia tylko pola biznesowe wewnątrz data.
Domeny
| Region | Domena |
|---|---|
| Chiny kontynentalne | https://open-api-gw.xgrids.cloud/ |
| Poza Chinami kontynentalnymi (w tym Hongkong, Makau i Tajwan) | https://open-api-gw.xgrids.com/ |
Wspólne nagłówki żądania
Każde API wymaga poniższych parametrów nagłówka.
| Parametr | Znaczenie | Reguła | Wymagany | Domyślnie |
|---|---|---|---|---|
| APP-ID | Identyfikator aplikacji | Otrzymywany przy składaniu wniosku o aplikację | Tak | Brak |
| X-Timestamp | Znacznik czasu żądania | Znacznik czasu w sekundach | Tak | Brak |
| X-Nonce | Losowy ciąg znaków | Tylko litery i cyfry, od 16 do 32 znaków. Wyrażenie regularne ^[A-Za-z0-9]{16,32}$. Zalecane jest UUID.randomUUID() z usuniętymi znakami - | Tak | Brak |
| X-Sign | Podpis żądania | Potwierdza, że żądanie nie zostało zmodyfikowane, i zapobiega ponownemu odtworzeniu. Zobacz Mechanizm podpisu | Tak | Brak |
| Content-Type | Typ zawartości | Zawsze application/json | Tak | Brak |
| language | Język komunikatów w odpowiedzi | zh-CN lub en-US | Nie | zh-CN |
Ujednolicona struktura odpowiedzi
Wszystkie API zwracają tę samą strukturę zewnętrzną. Zewnętrzne pole code odzwierciedla tylko wynik warstwy API; wynik biznesowy odczytuj z data.bizCode.
| Nazwa | Znaczenie | Reguła |
|---|---|---|
| code | Kod wyniku API | 0 sukces, 401 uwierzytelnianie nieudane, 429 zbyt wiele żądań |
| msg | Opis wyniku API | — |
| data | Dane biznesowe | — |
| data.bizCode | Kod wyniku biznesowego | 0 oznacza sukces; pozostałe wartości opisano w sekcji Kody błędów |
| data.bizMsg | Komunikat błędu biznesowego | — |
Uwaga: Wywołanie zakończyło się sukcesem tylko wtedy, gdy jednocześnie
code == 0idata.bizCode == 0.
Utworzenie zadania i pobranie poświadczeń przesyłania
Tworzy zadanie modelowania i wydaje tymczasowe poświadczenia magazynu w chmurze do przesłania danych wejściowych.
Punkt końcowy
POST /open-apis/spatial-model/v1/model/create
Limity
| Pozycja | Limit |
|---|---|
| Współbieżność | 10 żądań / sekundę |
| Ważność tymczasowych poświadczeń | 12 godzin |
| Region przechowywania danych | Przypisywany przy składaniu wniosku o aplikację; nie trzeba go przekazywać |
Parametry żądania
| Parametr | Znaczenie | Reguła | Wymagany | Domyślnie |
|---|---|---|---|---|
| modelName | Nazwa zadania modelowania | Mniej niż 50 znaków | Tak | Brak |
| modelDes | Opis zadania | Mniej niż 200 znaków | Nie | Puste |
| quality | Jakość modelowania | "1" szybka, "2" standardowa, "3" wolna | Nie | "2" |
| autoRebuild | Automatyczne rozpoczęcie modelowania po przesłaniu | 0 tylko przesyłanie, 1 automatyczne modelowanie po przesłaniu | Nie | 1 |
| tags | Tagi zadania | List<String>, mniej niż 20 elementów | Nie | Puste |
Odpowiedź
| Nazwa | Typ | Znaczenie |
|---|---|---|
| data.modelId | Long | Identyfikator zadania modelowania wygenerowany przez serwer |
| data.params | Object | Parametry tymczasowych poświadczeń do przesyłania danych |
| data.params.cloudService | String | Dostawca chmury, który przyjmuje przesyłane dane. OSS Alibaba Cloud, AWS Amazon, KS3 Kingsoft Cloud. Każdy integrator zwykle współpracuje z jednym stałym dostawcą, więc nie trzeba obsługiwać wszystkich |
| data.params.endpoint | String | Punkt końcowy przesyłania u dostawcy magazynu w chmurze |
| data.params.region | String | Region przechowywania u dostawcy magazynu w chmurze |
| data.params.bucket | String | Bucket do przesyłania u dostawcy magazynu w chmurze |
| data.params.savePath | String | Key katalogu docelowego dla przesyłanych plików. Jest to prefiks katalogu input; dołącz do niego ścieżkę względną każdego pliku, aby uzyskać jego rzeczywisty Key |
| data.params.accessKeyId | String | Tymczasowy AccessKeyId |
| data.params.accessKeySecret | String | Tymczasowy AccessKeySecret |
| data.params.securityToken | String | SecurityToken do przesyłania |
| data.params.requestId | String | Identyfikator tego żądania |
Przykład żądania
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"]
}
Przykład odpowiedzi
{
"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"
}
}
}
Uruchomienie zadania
Ręcznie rozpoczyna modelowanie.
Punkt końcowy
POST /open-apis/spatial-model/v1/model/start
Limity
| Pozycja | Limit |
|---|---|
| Kiedy używać | Tylko gdy zadanie utworzono z autoRebuild = 0:① Można uruchomić tylko zadania o statusie Przesyłanie zakończone (3); w przeciwnym razie zwracany jest 100041018;② Katalog input musi zawierać co najmniej jeden plik .lcc2 / .ply / .las; w przeciwnym razie zwracany jest 100041019;③ Uruchomienie zamraża punkty; jeśli saldo jest niewystarczające, zwracany jest kod błędu punktów |
| Limit częstotliwości | 3-sekundowy limit częstotliwości na modelId |
| Współbieżność | 10 żądań / sekundę |
Parametry żądania
| Parametr | Znaczenie | Reguła | Wymagany | Domyślnie |
|---|---|---|---|---|
| modelId | Identyfikator zadania modelowania | Zwracany przy tworzeniu zadania | Tak | Brak |
Odpowiedź
Zwraca tylko strukturę opisaną w sekcji Ujednolicona struktura odpowiedzi.
Przykład żądania
{
"modelId": 100231987
}
Ponowne pobranie poświadczeń przesyłania
Uzyskuje nowe tymczasowe poświadczenia przesyłania, gdy przesyłanie zostało przerwane lub tymczasowe poświadczenia wygasły.
Punkt końcowy
POST /open-apis/spatial-model/v1/model/sts
Limity
| Pozycja | Limit |
|---|---|
| Ważność tymczasowych poświadczeń | 12 godzin |
| Limit częstotliwości | 3-sekundowy limit częstotliwości na modelId; przy zbyt częstych wywołaniach zwracany jest 10000003 |
| Współbieżność | 10 żądań / sekundę |
Parametry żądania
| Parametr | Znaczenie | Reguła | Wymagany | Domyślnie |
|---|---|---|---|---|
| modelId | Identyfikator zadania modelowania | — | Tak | Brak |
Odpowiedź
Taka sama jak odpowiedź API Utworzenie zadania i pobranie poświadczeń przesyłania (data.modelId i data.params.*).
Przykład żądania
{
"modelId": 100231987
}
Aktualizacja statusu przesyłania
Zgłasza status przesyłania danych wejściowych. To API trzeba wywołać po zakończeniu przesyłania; w przeciwnym razie modelowanie się nie rozpocznie.
Punkt końcowy
POST /open-apis/spatial-model/v1/model/upload_status/update
Limity
| Pozycja | Limit |
|---|---|
| Współbieżność | 10 żądań / sekundę |
Parametry żądania
| Parametr | Znaczenie | Reguła | Wymagany | Domyślnie |
|---|---|---|---|---|
| modelId | Identyfikator zadania modelowania | — | Tak | Brak |
| status | Status przesyłania | 1 przesyłanie, 2 wstrzymane, 3 zakończone sukcesem, 4 nieudane | Tak | Brak |
| uploadTime | Czas trwania przesyłania | W milisekundach; zalecany, gdy przesyłanie się powiedzie | Nie | Puste |
| failedReason | Przyczyna niepowodzenia | Zalecana, gdy przesyłanie się nie powiedzie | Nie | Puste |
Odpowiedź
Zwraca tylko strukturę opisaną w sekcji Ujednolicona struktura odpowiedzi.
Przykład żądania
{
"modelId": 100231987,
"status": 3,
"uploadTime": 184620
}
Anulowanie modelowania
Można wywołać tylko dla zadań, które są w trakcie modelowania.
- Anulować można tylko zadania o statusie Modelowanie. Po anulowaniu status zadania zmienia się na Modelowanie nieudane.
- Anulowanie powoduje pobranie punktów za już wykorzystane zasoby; nadwyżka zamrożonych punktów wraca na saldo.
- Rozliczenie punktów następuje zwykle w ciągu kilku minut, maksymalnie po około 10 minutach.
Punkt końcowy
POST /open-apis/spatial-model/v1/model/cancel
Limity
| Pozycja | Limit |
|---|---|
| Ograniczenie statusu | Anulować można tylko zadania o statusie Modelowanie (7); dla pozostałych statusów zwracany jest 100041017 |
| Współbieżność | 10 żądań / sekundę; 3-sekundowy limit częstotliwości na modelId, przy zbyt częstych wywołaniach zwracany jest 10000003 |
Parametry żądania
| Parametr | Znaczenie | Reguła | Wymagany | Domyślnie |
|---|---|---|---|---|
| modelId | Identyfikator zadania modelowania | — | Tak | Brak |
Odpowiedź
Zwraca tylko strukturę opisaną w sekcji Ujednolicona struktura odpowiedzi.
Przykład żądania
{
"modelId": 100231987
}
Lista zadań ze stronicowaniem
Wyszukuje zadania modelowania strona po stronie z użyciem filtrów.
Punkt końcowy
POST /open-apis/spatial-model/v1/model/list
Limity
| Pozycja | Limit |
|---|---|
| Zakres danych | Zwraca tylko zadania konta powiązanego z bieżącym appId |
| Odpytywanie | Interwał nie krótszy niż 5 sekund |
| Współbieżność | 10 żądań / sekundę |
Parametry żądania
| Parametr | Znaczenie | Reguła | Wymagany | Domyślnie |
|---|---|---|---|---|
| modelName | Nazwa zadania | Mniej niż 50 znaków, dopasowanie częściowe | Nie | Dowolna |
| statusList | Statusy zadań | Wartości z sekcji Maszyna stanów zadania | Nie | Dowolne |
| startTime | Czas początkowy | Znacznik czasu w milisekundach; filtruje rekordy utworzone w chwili startTime lub później | Nie | Dowolny |
| endTime | Czas końcowy | Znacznik czasu w milisekundach; filtruje rekordy utworzone w chwili endTime lub wcześniej | Nie | Dowolny |
| page.page | Numer strony | — | Nie | 1 |
| page.limit | Rozmiar strony | — | Nie | Określany przez serwer |
| page.order | Kolejność sortowania | ASC rosnąco, DESC malejąco, według czasu utworzenia | Nie | DESC |
Odpowiedź
| Nazwa | Typ | Znaczenie |
|---|---|---|
| data.page | Integer | Numer strony |
| data.limit | Integer | Rozmiar strony |
| data.total | Long | Łączna liczba |
| data.data | List | Lista danych |
| data.data[].modelId | Long | Identyfikator zadania modelowania |
| data.data[].modelName | String | Nazwa zadania |
| data.data[].modelDes | String | Opis zadania |
| data.data[].cover | String | URL okładki; po zakończeniu modelowania jest to ogólny wyrenderowany podgląd modelu. Podpisany link tymczasowy, nie zapisuj go na stałe |
| data.data[].percent | Double | Postęp modelowania |
| data.data[].tags | List | Tagi |
| data.data[].status | Integer | Status zadania; wartości z sekcji Maszyna stanów zadania |
| data.data[].errorCode | String | Kod błędu |
| data.data[].failedReason | String | Przyczyna niepowodzenia |
| data.data[].createTime | Long | Czas utworzenia, znacznik czasu w milisekundach |
| data.data[].taskSuccessAt | Long | Czas zakończenia modelowania, znacznik czasu w milisekundach |
Przykład żądania
{
"modelName": "Design Commune",
"statusList": [7, 8],
"startTime": 1790899200000,
"endTime": 1791763200000,
"page": {
"page": 1,
"limit": 20,
"order": "DESC"
}
}
Szczegóły zadań
Zbiorczo wyszukuje szczegóły zadań modelowania, w tym statystyki takie jak czas trwania modelowania.
Punkt końcowy
POST /open-apis/spatial-model/v1/model/detail
Limity
| Pozycja | Limit |
|---|---|
| Zapytanie zbiorcze | Do 50 modelId w jednym żądaniu |
| Współbieżność | 10 żądań / sekundę |
Parametry żądania
| Parametr | Znaczenie | Reguła | Wymagany | Domyślnie |
|---|---|---|---|---|
| modelIdList | Identyfikatory zadań modelowania | List<Long>, do 50 naraz | Tak | Brak |
Odpowiedź
| Nazwa | Typ | Znaczenie |
|---|---|---|
| data.dataList | List | Szczegóły zadań |
| data.dataList[].modelId | Long | Identyfikator zadania modelowania |
| data.dataList[].modelName | String | Nazwa zadania |
| data.dataList[].modelDes | String | Opis zadania |
| data.dataList[].cover | String | URL okładki. Podpisany link tymczasowy, nie zapisuj go na stałe |
| data.dataList[].percent | Double | Postęp modelowania |
| data.dataList[].tags | List | Tagi |
| data.dataList[].status | Integer | Status zadania; wartości z sekcji Maszyna stanów zadania |
| data.dataList[].errorCode | String | Kod błędu |
| data.dataList[].failedReason | String | Przyczyna niepowodzenia |
| data.dataList[].createTime | Long | Czas utworzenia, znacznik czasu w milisekundach |
| data.dataList[].rebuildInfo | Object | Informacje o modelowaniu |
| data.dataList[].rebuildInfo.quality | String | Jakość modelowania. 1 szybka, 2 standardowa, 3 wolna |
| data.dataList[].rebuildInfo.autoRebuild | Integer | Flaga automatycznego modelowania. 0 tylko przesyłanie, 1 automatyczne modelowanie po przesłaniu |
| data.dataList[].rebuildInfo.inputTotalSize | Long | Rozmiar danych wejściowych w bajtach |
| data.dataList[].rebuildInfo.outputTotalSize | Long | Rozmiar wyników modelowania w bajtach |
| data.dataList[].rebuildInfo.uploadTime | Long | Czas trwania przesyłania w milisekundach |
| data.dataList[].rebuildInfo.buildTime | Long | Czas trwania modelowania w milisekundach |
| data.dataList[].rebuildInfo.taskStartAt | Long | Czas rozpoczęcia modelowania, znacznik czasu w milisekundach |
| data.dataList[].rebuildInfo.taskSuccessAt | Long | Czas pomyślnego zakończenia modelowania, znacznik czasu w milisekundach |
| data.dataList[].rebuildInfo.credit | Object | Informacje o rozliczeniu punktów (tylko do odczytu), służą do weryfikacji opłaty za ten przebieg modelowania. Obiekt jest zwracany zawsze; zanim pojawią się dane rozliczeniowe, jego pola mają wartość null |
| data.dataList[].rebuildInfo.credit.freezeNo | String | Numer zamrożenia punktów w formacie SPATIAL_MODELING_{modelId}_{attempt}. Ma wartość dopiero po pomyślnym zamrożeniu punktów przez Uruchomienie zadania; wcześniej null |
| data.dataList[].rebuildInfo.credit.frozenCredit | Long | Punkty zamrożone w tej rundzie. Przy rozpoczęciu modelowania zamrażana jest wartość szacunkowa; jeśli algorytm później oszacuje powierzchnię wymagającą większej liczby punktów, zamrażane są dodatkowe punkty, a to pole pokazuje sumę po zwiększeniu |
| data.dataList[].rebuildInfo.credit.actualCredit | Long | Faktycznie pobrane punkty. Przed rozliczeniem null; po pomyślnym zakończeniu lub anulowaniu modelowania zawiera opłatę wyliczoną według faktycznego zużycia; 0 po zwolnieniu punktów w wyniku niepowodzenia modelowania |
| data.dataList[].rebuildInfo.credit.settleStatus | String | Status rozliczenia. FROZEN zamrożone, oczekuje na rozliczenie; SETTLED rozliczone i pobrane (modelowanie zakończone sukcesem lub anulowane); RELEASED zwolnione, punkty zwrócone w całości (np. modelowanie nieudane). Null, gdy nic nie zamrożono |
| data.dataList[].rebuildInfo.credit.attempt | Integer | Runda modelowania, liczona od 1. Zwiększa się o 1 tylko przy ponownym wywołaniu Uruchomienie zadania; wewnętrzne ponowne przydzielenie przez platformę jej nie zmienia. Każda runda ma własny freezeNo |
| data.dataList[].rebuildInfo.credit.areaM2 | Double | Powierzchnia modelowania oszacowana przez algorytm, w metrach kwadratowych; podstawa dodatkowego zamrożenia. Null, dopóki algorytm jej nie zgłosi |
Przykład żądania
{
"modelIdList": [100231987, 100231988]
}
Punkty konta
Sprawdza saldo punktów konta powiązanego z appId.
Punkt końcowy
POST /open-apis/spatial-model/v1/credit/info
Limity
| Pozycja | Limit |
|---|---|
| Obiekt zapytania | Konto punktów konta powiązanego z appId; identyfikator użytkownika nie jest potrzebny |
| Konto nieaktywowane | Jeśli punkty nigdy nie zostały przyznane, wszystkie salda mają wartość 0; nie jest to traktowane jako błąd |
| Aktualność | Zwraca saldo w czasie rzeczywistym w chwili zapytania, bez pamięci podręcznej |
| Współbieżność | 10 żądań / sekundę |
Parametry żądania
Brak parametrów biznesowych. Przekaż pusty obiekt {}.
Odpowiedź
| Nazwa | Typ | Znaczenie |
|---|---|---|
| data.availableCredit | Long | Dostępne punkty, których można obecnie użyć |
| data.frozenCredit | Long | Zamrożone punkty, zarezerwowane, ale jeszcze nierozliczone |
| data.totalCredit | Long | Łączna liczba punktów, równa availableCredit plus frozenCredit |
Przykład odpowiedzi
{
"code": 0,
"msg": "success",
"data": {
"bizCode": 0,
"bizMsg": "",
"availableCredit": 8500,
"frozenCredit": 1500,
"totalCredit": 10000
}
}
Uwaga: To API służy wyłącznie do sprawdzania salda punktów konta. Zasady rozliczania punktów za zadania modelowania (moment pobrania i podstawa naliczania) zostaną określone i opisane w jednej z kolejnych wersji. W obecnej wersji wartości zwracane przez to API nie wpływają na wywołania API modelowania.
Pobieranie wyników modelowania
Uzyskuje tymczasowe linki do pobrania wyników modelowania. Ich zawartość opisano w sekcji Wyniki modelowania.
Punkt końcowy
POST /open-apis/spatial-model/v1/model/data/download
Limity
| Pozycja | Limit |
|---|---|
| Warunek wstępny | Zadanie musi mieć status Modelowanie zakończone (8) |
| Ważność linków | Podpisane linki tymczasowe; pobierz pliki wkrótce po ich uzyskaniu i nie zapisuj linków na stałe |
| Współbieżność | 10 żądań / sekundę |
Parametry żądania
| Parametr | Znaczenie | Reguła | Wymagany | Domyślnie |
|---|---|---|---|---|
| modelId | Identyfikator zadania modelowania | — | Tak | Brak |
| type | Typ wyniku | DXF, GLB, BLEND, RVT | Nie | Jeśli pominięty, zwracane są wszystkie wygenerowane wyniki: DXF / GLB / BLEND oraz RVT, jeśli jest dostępny |
Odpowiedź
| Nazwa | Typ | Znaczenie |
|---|---|---|
| data.dataList | List<String> | Linki do pobrania wyników modelowania. Podpisane linki tymczasowe, nie zapisuj ich na stałe |
Przykład żądania
{
"modelId": 100231987,
"type": "GLB"
}
Usunięcie zadania
Usuwa zadanie modelowania i powiązane z nim dane.
Punkt końcowy
POST /open-apis/spatial-model/v1/model/del
Limity
| Pozycja | Limit |
|---|---|
| Ograniczenie statusu | Nie można usuwać zadań o statusie Modelowanie (7) |
| Skutki | Usuwa również przesłane dane wejściowe i wyniki modelowania; operacji nie można cofnąć |
| Współbieżność | 10 żądań / sekundę |
Parametry żądania
| Parametr | Znaczenie | Reguła | Wymagany | Domyślnie |
|---|---|---|---|---|
| modelId | Identyfikator zadania modelowania | — | Tak | Brak |
Odpowiedź
Zwraca tylko strukturę opisaną w sekcji Ujednolicona struktura odpowiedzi.
Przykład żądania
{
"modelId": 100231987
}
Uwaga: Usunięcia nie można cofnąć; dane wejściowe i wyniki modelowania są usuwane razem. Dodaj po swojej stronie dodatkowe potwierdzenie.