# Запуск через API

## Описание API-метода

**Endpoint:** `https://cascades.fstrk.io/api/v1/transactions/async/`

**HTTP-метод:** `POST`

**Заголовки запроса:**

* `api-key`: Ключ доступа для аутентификации;
* `Content-Type`: Формат тела запроса.

Пример тела запроса (JSON):

```json
{
  "phone_number": "<НОМЕР ТЕЛЕФОНА>",
  "routing": [
    "BOT",
    "WHATSAPP"
  ],
  "bot_node_id": <ID СЦЕНАРИЯ (УЗЛА)>,
  "variables": {
    "<KEY>": "<VALUE>"
  },
  "whatsapp_template_name": "<TEMPLATE NAME>",
  "whatsapp_template_variables": {
    "<KEY>": "<VALUE>"
  },
    "waiting_time_route": <КОЛ-ВО СЕКУНД>
    "validity_period_seconds": <КОЛ-ВО СЕКУНД>,
    "tag": "<TAG>",
    "context": {
      "<KEY>": "<VALUE>",
      "<KEY>": "<VALUE>"
  }
}
```

**Параметры запроса:**

* `phone_number`: Номер телефона, на который будет отправлена транзакция;
* `routing`: Массив опций маршрутизации;
* `bot_node_id`: Идентификатор сценария (узла) чат-бота для бесплатного канала в транзакции;
* `variables`: Набор переменных для сценария (узла) чат-бота;
* `whatsapp_template_name`: Идентификатор WhatsApp-шаблона;
* `whatsapp_template_variables`: Переменные для WhatsApp-шаблона;
* `waiting_time_route`: Срок ожидания ответа по отправке до перехода к след. маршруту (сек.)
* `validity_period_seconds`: Срок действия транзакции (сек.).
* `tag`: Тег транзакции
* `context`: Контекст транзакции

{% hint style="info" %}
**Заметка:** маршруты транзакции будут выполняться в той последовательности, в которой они перечислены в массиве параметра routing.
{% endhint %}

Синхронные ответы:

<table><thead><tr><th width="101">Код</th><th>Описание</th></tr></thead><tbody><tr><td><mark style="color:green;"><strong>201</strong></mark></td><td>Задача на отправку транзакции успешно поставлена в очередь. В ответе вернется UUID задачи на запуск транзакции.</td></tr><tr><td><mark style="color:red;"><strong>429</strong></mark></td><td>Слишком много повторяющихся запросов в секунду.</td></tr></tbody></table>

Ассинхронные события:

<table><thead><tr><th width="228">Тип события</th><th>Описание</th></tr></thead><tbody><tr><td><code>transaction.done</code></td><td>Обновление по успешно созданной транзакции</td></tr><tr><td><code>transaction.error</code></td><td>Ошибка в процессе обработки транзакции</td></tr></tbody></table>

## Пример запроса

Пример запроса на каскад BOT → WHATSAPP → VK NOTIFY:

```shell
curl -i -X POST \
  https://cascades.fstrk.io/api/v1/transactions/async/ \
  -H 'api-key: <КЛЮЧ ДОСТУПА>' \
  -H 'Content-Type: application/json' \
  -d '{
    "phone_number": "<НОМЕР ТЕЛЕФОНА>",
    "routing": [
      "BOT",
      "WHATSAPP",
      "VK_NOTIFY"
    ],
    "bot_node_id": 00001,
    "variables": {
      "first_name": "Иван"
    },
    "whatsapp_template_name": "meet_presentation",
    "whatsapp_template_variables": {
      "v1": "Иван"
    },
    "vk_notify_template_name": "meet_presentation",
    "vk_notify_template_variables": {
      "v1": "Иван"
    },
    "waiting_time_route": 60
    "validity_period_seconds": 600,
    "tag": "nedozvon",
    "context": {
      "cascade": "nedozvon",
      "deal_id": "18547661"
    }
  }'
```

## Документация в Swager

Описание методов API хранится в Swagger по адресу:\
<https://cascades.fstrk.io/api/docs/>

{% hint style="info" %}
**Заметка:** для тестирования транзакций используйте второй метод для отправки сообщений по каскаду. Он выполняется без очереди и синхронно возвращает результат запроса на запуск транзакции.
{% endhint %}
