API интерфейс для управления задачами экспорта Координатором (Export Farm Coordinator)
API интерфейс для управления задачами экспорта Координатором (Export Farm Coordinator)
Для управления очередью задач экспорта и мониторинга воркеров можно использовать указанные ниже методы API.
Документация для Swagger доступна по адресу https://export-coordinator.tangl.cloud/swagger, либо по стандартному пути /swagger
на инстансе сервера при он-премиз поставке.
Для обращения к точкам сервера необходимо получить Bearer токен доступа, подробнее в статье Organizing Access to the Tangl API.
Получение списка задач экспорта для компании
GET
https://export-farm.coordinator/api/export-job/{companyId}
- companyId (path, uuid) - идентификатор компании, для которой запрашиваются задачи
- pageNumber (query, int32) - номер страницы (по умолчанию 1)
- pageSize (query, int32) - размер страницы (по умолчанию 10)
Пример:
curl -X GET "https://export-farm.coordinator/api/export-job/478e78b2-78a1-485b-311b-3a0a1b503878?pageNumber=1&pageSize=20" \
-H Authorization:"Bearer ..."
Ответ:
{
"pageNumber": 1,
"pageSize": 20,
"totalItems": 45,
"totalPages": 3,
"jobs": [
{
"id": "a3ee8672-287e-45fb-bfe7-8e0de1bcef8b",
"modelUrl": "https://storage.models/example.rvt",
"modelName": "office_building.rvt",
"creationTime": "2023-10-05T12:34:56.789Z",
"software": {
"type": "Revit",
"version": "2023"
},
"status": {
"status": "Processing",
"progress": 65,
"changedTime": "2023-10-05T12:40:23.456Z",
"error": null
}
}
]
}
Создание новой задачи экспорта
POST
https://export-farm.coordinator/api/export-job
Тело запроса (application/json):
- modelName (string) - название модели
- companyId (uuid) - идентификатор компании
- modelUrl (string) - URL до файла модели
- softwareType (enum) - тип ПО (Revit)
- softwareVersion (string) - версия ПО
Пример:
curl -X POST https://export-farm.coordinator/api/export-job \
-H Authorization:"Bearer ..." \
-H Content-Type:"application/json" \
-d '{
"modelName": "office_building.rvt",
"companyId": "478e78b2-78a1-485b-311b-3a0a1b503878",
"modelUrl": "https://storage.models/example.rvt",
"softwareType": "Revit",
"softwareVersion": "2023"
}'
Ответ:
{
"id": "a3ee8672-287e-45fb-bfe7-8e0de1bcef8b",
"concurrencyStamp": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"companyId": "478e78b2-78a1-485b-311b-3a0a1b503878",
"modelUrl": "https://storage.models/example.rvt",
"modelName": "office_building.rvt",
"creationTime": "2023-10-05T12:34:56.789Z",
"software": {
"type": "Revit",
"version": "2023"
},
"status": {
"status": "Enqueued",
"workerConnectionId": null,
"progress": 0,
"changedTime": "2023-10-05T12:34:56.789Z",
"error": null
}
}
Получение информации о воркерах компании
GET
https://export-farm.coordinator/api/export-worker/{companyId}
- companyId (path, uuid) - идентификатор компании
Пример:
curl -X GET https://export-farm.coordinator/api/export-worker/478e78b2-78a1-485b-311b-3a0a1b503878 \
-H Authorization:"Bearer ..."
Ответ:
[
{
"companyId": "478e78b2-78a1-485b-311b-3a0a1b503878",
"software": {
"type": "Revit",
"version": "2023"
},
"job": {
"id": "a3ee8672-287e-45fb-bfe7-8e0de1bcef8b",
"modelUrl": "https://storage.models/example.rvt",
"modelName": "office_building.rvt",
"creationTime": "2023-10-05T12:34:56.789Z",
"software": {
"type": "Revit",
"version": "2023"
},
"status": {
"status": "Processing",
"progress": 65,
"changedTime": "2023-10-05T12:40:23.456Z",
"error": null
}
}
}
]
Получение информации о всех воркерах
GET
https://export-farm.coordinator/api/export-worker
Пример:
curl -X GET https://export-farm.coordinator/api/export-worker \
-H Authorization:"Bearer ..."
Ответ аналогичен предыдущему, но содержит информацию о всех воркерах системы.
Статусы задач экспорта
Статус | Описание |
---|---|
Enqueued | Задача поставлена в очередь, ожидает обработки |
Sent | Задача отправлена воркеру |
Processing | Воркeр начал обработку задачи |
Succeeded | Задача успешно выполнена |
Failed | Выполнение задачи завершилось ошибкой |
WorkerNotFound | Не найден подходящий воркер для задачи |
WorkerDisconnected | Воркер отключился во время выполнения задачи |