# Запустить автоматизацию вручную

export default function Layout(props) {
  const { OpenAPIPage } = props.components ?? {};
  return (
    <>
      {props.children}
      ## Запустить автоматизацию вручную

`POST /api/v1/automations/{id}/run`

**Авторизация:** dpop или oauth2: `automation:write`

**Параметры**

| Имя | Где | Обязательный | Тип | Описание |
| --- | --- | --- | --- | --- |
| `id` | path | да | string | Идентификатор автоматизации |

**Тело запроса** (`application/json`): AutomationRunRequest
- `mode`: "live" | "test" — test — чтения выполняются, записи и отправки симулируются по схеме выхода; без triggerData берётся образец данных триггера
- `triggerData`: object — Данные триггера для передачи в граф

**Ответы**

- `200` — Прогон запущен (`application/json`, AutomationRun)
  - `automationId`: string — Автоматизация
  - `bottlenecks`: массив object
    - `durationMs`: number, обязательное
    - `nodeId`: string, обязательное
    - `nodeKind`: string, nullable, обязательное
    - `nodeType`: string, обязательное
    - `status`: string, обязательное
  - `completedSteps`: number — Число завершённых шагов
  - `currentStep`: object
    - `nodeId`: string, обязательное
    - `nodeKind`: string, nullable, обязательное
    - `nodeType`: string, nullable, обязательное
    - `processed`: number, nullable, обязательное
    - `startedAt`: string, nullable, обязательное
    - `total`: number, nullable, обязательное
  - `durationMs`: number — Длительность прогона, мс
  - `error`: string, nullable — Ошибка прогона
  - `finishedAt`: string, nullable — Завершение, ISO 8601
  - `id`: string, обязательное — Идентификатор прогона
  - `isStuck`: boolean — Прогон давно не сообщал о прогрессе
  - `lastHeartbeatAt`: string — Последний прогресс, ISO 8601
  - `mode`: "live" | "test" — live — обычный прогон, test — тест-прогон с симуляцией
  - `progressPercent`: number — Прогресс, проценты
  - `startedAt`: string — Начало, ISO 8601
  - `status`: string, обязательное — Статус прогона
  - `steps`: массив AutomationRunStep — Журнал шагов; вход и выход шагов отдаются только тем, кто может редактировать автоматизацию
    - `durationMs`: number — Длительность шага, мс
    - `error`: string — Ошибка или причина исхода
    - `finishedAt`: string — Завершение шага, ISO 8601
    - `input`: any — Данные на входе шага (усечённые)
    - `nodeId`: string, обязательное — Шаг
    - `nodeKind`: string — Вид шага
    - `nodeType`: string, обязательное — Тип шага
    - `output`: any — Данные на выходе шага (усечённые)
    - `simulated`: boolean — В тест-прогоне шаг не выполнялся, данные подставлены по схеме
    - `startedAt`: string — Начало шага, ISO 8601
    - `status`: string, обязательное — Статус: success, failed, skipped, rejected, timeout
    - `truncated`: boolean — Вход или выход усечены из-за размера
  - `totalSteps`: number — Число шагов графа
  - `waiting`: boolean — Прогон штатно ожидает таймер или внешнее событие
- `400` — Некорректный запрос: не прошла валидация параметров или тела (`application/problem+json`, ProblemDetails)
- `401` — Токен отсутствует, недействителен или истёк (`application/problem+json`, ProblemDetails)
- `403` — Недостаточно прав или scope (`application/problem+json`, ProblemDetails)

    </>
  );
}
