Agent Task Status
const url = 'https://api.cloud.agentums.ru/v1/agent/task/example';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://api.cloud.agentums.ru/v1/agent/task/example \ --header 'Authorization: Bearer <token>'Чем кончилась фоновая задача, task_id которой уехал в кадре tool_end.
require_key, а не rate_limit(): эндпоинт опросный (клиент дёргает его раз в
секунду до готовности), и лимитер выключил бы ровно тот сценарий, ради которого он есть.
Разбор состояния — общий с /objects/pdf-status и /objects/content-status
(services.task_status), третьей копии правил «что считать завершённым» не заводим.
БЕЗОПАСНОСТЬ. task_id не несёт владельца: любой аутентифицированный пользователь может
подставить сюда чужой id (и подобрать — это uuid4 задачи Celery). Поэтому наружу уходит
ровно два вида сведений:
ok— булев исход. По нему злоумышленник узнаёт только то, что какая-то задача с таким id завершилась успешно; ни файла, ни владельца, ни операции в этом нет;note— человеческая подпись. Имя файла в неё попадает ТОЛЬКО если объект из результата задачи принадлежит спрашивающему (_resolve_filenameскоупит запрос по tenant+owner). Чужой файл даёт нейтральное «Готово» — то есть по чужому task_id нельзя достать ни имя файла, ни его id. Соседние/pdf-status//content-statusотдаютobject_idиfilenameлюбому аутентифицированному по task_id и оправдываются тем, что открытие файла всё равно проверяет владельца; имя файла — уже само по себе содержимое, и повторять это здесь незачем: агентному клиенту хватаетokи подписи.
Authorizations
Заголовок раздела «Authorizations»Parameters
Заголовок раздела «Parameters»Path Parameters
Заголовок раздела «Path Parameters»Responses
Заголовок раздела «Responses»Successful Response
Ответ GET /agent/task/{task_id} в форме события task_done из SSE-контракта:
клиент кладёт его в тот же обработчик, что и кадр из стрима.
done — единственное поле сверх контракта, и оно обязательно: без него «ещё выполняется»
и «выполнилось с ошибкой» неотличимы (оба ok=false), и клиент либо покажет ошибку раньше
времени, либо будет опрашивать вечно.
object
Example
{ "done": false, "filename": "", "note": "", "object_id": "", "ok": false, "stage": "", "step": 0, "steps": 0, "type": "task_done"}Validation Error
object
object
object
Examplegenerated
{ "detail": [ { "ctx": {}, "input": "example", "loc": [ "example" ], "msg": "example", "type": "example" } ]}