Перейти к содержимому

Create Deployment

POST
/v1/deployments
curl --request POST \
--url https://api.cloud.agentums.ru/v1/deployments \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: example' \
--data '{ "agent_slug": "example", "expected_price_rub": 1, "plan": "", "use_context": true }'

Поднять машину под агента с витрины.

Заголовок Idempotency-Key обязателен. Маршрут создаёт оплачиваемый ресурс, а у провайдера собственной идемпотентности нет: без ключа повтор запроса из-за таймаута или ретрая клиента завёл бы вторую машину и второй счёт. С ключом повтор возвращает то же развёртывание и отвечает 200 вместо 201.

Развёртывание создаётся в состоянии queued и поднимается фоном — ответ приходит сразу, за ходом следят через GET /v1/deployments/{id}.

Idempotency-Key
required
Idempotency-Key

Свой ключ запроса. Повтор с тем же ключом возвращает то же развёртывание.

string
>= 8 characters <= 120 characters

Свой ключ запроса. Повтор с тем же ключом возвращает то же развёртывание.

Media typeapplication/json
DeploymentCreate

Заявка на развёртывание. Ключ идемпотентности приходит ЗАГОЛОВКОМ, а не полем.

Заголовком — потому что он про доставку запроса, а не про предмет: тело описывает, какого агента поднять, и повтор того же тела с другим ключом это законный второй агент.

object
agent_slug
required
Agent Slug
string
>= 1 characters <= 64 characters
expected_price_rub
Any of:
number
<= 1000000
plan
Plan
string
"" <= 32 characters
use_context
Use Context
boolean
default: true

Successful Response

Media typeapplication/json
DeploymentOut
object
agent_slug
required
Agent Slug
string
attempts
Attempts
integer
0
bot_username
Bot Username
string
""
channels
Channels
object
key
additional properties
string
created_at
Any of:
string format: date-time
degraded
Degraded
Array<object>
DegradedOut

Одна отключённая интеграция агента.

name нужен поддержке — по нему ищут в журнале; человеку показывают title и hint. Держать их врозь важнее, чем кажется: без имени разбор обращения превращается в угадывание по тексту, а тексты правят.

object
hint
required
Hint
string
name
required
Name
string
title
required
Title
string
error_action
Error Action
string
""
error_code
Error Code
string
""
error_detail
Any of:
string
error_hint
Error Hint
string
""
error_title
Error Title
string
""
id
required
Id
string format: uuid
last_health_at
Any of:
string format: date-time
latest_version
Latest Version
string
""
previous_version
Previous Version
string
""
ready_at
Any of:
string format: date-time
reconverging
Reconverging
boolean
resources
Resources
object
key
additional properties
number
rollback_available
Rollback Available
boolean
skills
Skills
object
key
additional properties
any
status
required
Status
string
step
Step
integer
0
steps
Steps
integer
0
update_available
Update Available
boolean
update_error
Update Error
string
""
update_preparing
Update Preparing
boolean
version
Version
string
""
Example
{
"attempts": 0,
"bot_username": "",
"error_action": "",
"error_code": "",
"error_hint": "",
"error_title": "",
"latest_version": "",
"previous_version": "",
"reconverging": false,
"rollback_available": false,
"step": 0,
"steps": 0,
"update_available": false,
"update_error": "",
"update_preparing": false,
"version": ""
}

Validation Error

Media typeapplication/json
HTTPValidationError
object
detail
Detail
Array<object>
ValidationError
object
ctx
Context
object
input
Input
loc
required
Location
Array
msg
required
Message
string
type
required
Error Type
string
Examplegenerated
{
"detail": [
{
"ctx": {},
"input": "example",
"loc": [
"example"
],
"msg": "example",
"type": "example"
}
]
}