# PUSH-рассылки через API

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

Описание методов API хранится в Swagger по ссылке:\
[https://dashboard.fstrk.io/api/partners/docs/](https://dashboard.fstrk.io/api/partners/docs/#/4.%20%D0%9E%D1%82%D0%BF%D1%80%D0%B0%D0%B2%D0%BA%D0%B0%20%D0%BF%D0%B5%D1%80%D1%81%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85%20%D1%81%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D0%B9)

Для тестирования, необходимо авторизоваться в Fasttrack.

## OAuth-авторизация <a href="#authentication" id="authentication"></a>

Для использования Fasttrack API вам понадобится уникальный `access_token`, которым необходимо передавать заголовке каждого запроса.

Сообщите менеджеру Fasttrack о том, что планируете использовать Fasttrack API и вам необходимо получить access\_token для вашего проекта.

После этого проекту присваивается уникальный идентификатор `client_id` и секретный ключ `client_secret`, которые нужны для аутентификации при запросе `access_token`.

Для получения `access_token` используйте метод:

```
POST /api/partners/oauth/
```

Ознакомьтесь c докуметацией данного метода в Swagger по ссылке:\
<https://dashboard.fstrk.io/api/partners/docs/>

В ответе вам вернется access\_token, который вы можете использовать для подписи запросов к методам Fasttrack API.

## Отправить рассылку

API-метод для запуска персональной рассылки.

<mark style="color:green;">`POST`</mark> `/api/partners/push-messages/`

**Заголовки**

<table data-header-hidden><thead><tr><th width="205">Key</th><th>Descr</th></tr></thead><tbody><tr><td>Content-Type</td><td><code>application/json</code></td></tr><tr><td>Authorization</td><td><code>Bearer &#x3C;token></code></td></tr></tbody></table>

**Примеры сURL-запросов**

<details>

<summary>Отправить текстовое сообщение пользователю по UUID</summary>

```bash
curl -X POST \
  https://dashboard.fstrk.io/api/partners/push-message/ \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer <КЛЮЧ_ДОСТУПА>' \
  -d '{
    "chat": {
      "uuid": "00000000-0000-0000-0000-000000000000"
    },
    "content": {
      "type": "TEXT",
      "text": "Тест сообщения"
    }
}'
```

Структура JSON:

* `chat` – Информация о пользователе
  * `chat.uuid` – Идентификатор пользователя (UUID чата)
* `content` – Содержание рассылки
  * `content.type` – Тип контента (в данном случае TEXT)
  * `content.text` – Текст сообщения

</details>

<details>

<summary>Запустить узел (сценарий чат-бота) для пользователя по UUID</summary>

```bash
curl -X POST \
  https://dashboard.fstrk.io/api/partners/push-message/ \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer <КЛЮЧ_ДОСТУПА>' \
  -d '{
    "chat": {
      "uuid": "00000000-0000-0000-0000-000000000000"
    },
    "content": {
      "type": "NODE",
      "node": {
        "name": "Название узла"
      },
      "get_params": {
        "foo": "bar"
      }
    }
}'
```

Структура JSON:

* `chat` – Информация о пользователе
  * `chat.uuid` – Идентификатор пользователя (UUID чата)
* `content` – Содержание рассылки
  * `content.type` – Тип контента (в данном случае NODE)
  * `content.node` – Информация об узле
    * `content.node.name` – Название узла
  * `content.get_params` – список get-параметров для узла

</details>

<details>

<summary>Отправить текстовое сообщение клиенту по UUID</summary>

```bash
curl -X POST \
  https://dashboard.fstrk.io/api/partners/push-message/ \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer <КЛЮЧ_ДОСТУПА>' \
  -d '{
    "profile": {
      "uuid": "00000000-0000-0000-0000-000000000000"
    },
    "content": {
      "type": "TEXT",
      "text": "Тест сообщения"
    }
}'
```

Структура JSON:

* `profile` – Информация о клиенте
  * `uuid` – Идентификатор клиента (UUID профиля)
* `content` – Содержание рассылки
  * `content.type` – Тип контента (в данном случае TEXT)
  * `content.text` – Текст сообщения

</details>

<details>

<summary>Отправить текстовое сообщение клиенту по номеру телефона</summary>

```bash
curl -X POST \
  https://dashboard.fstrk.io/api/partners/push-message/ \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer <КЛЮЧ_ДОСТУПА>' \
  -d '{
    "profile": {
      "phone_number": "+79999999999"
    },
    "content": {
      "type": "TEXT",
      "text": "Тест сообщения"
    }
}'
```

Структура JSON:

* `profile` – Информация о клиенте
  * `profile.phone_number` – Номер телефона клиента
* `content` – Содержание рассылки
  * `content.type` – Тип контента (в данном случае TEXT)
  * `content.text` – Текст сообщения

</details>

<details>

<summary>Отправить WhatsApp-шаблон клиенту по номеру телефона</summary>

```bash
curl -X POST \
  https://dashboard.fstrk.io/api/partners/push-message/ \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer <КЛЮЧ_ДОСТУПА>' \
  -d '{
    "profile": {
      "phone_number": "+79999999999",
      "tags": [
        "some_tag",
        "another_tag"
      ],
      "attrs": {
        "profile_key": "some data",
        "profile_another": "some another data"
      }
    },
    "content": {
      "type": "WHATSAPP_TEMPLATE",
      "whatsapp_template": {
        "pid": "test"
      },
      "whatsapp_template_variables": {
        "v1": "Иван",
        "v2": "Иванов"
      }
    }
}'
```

Структура JSON:

* `profile` – Информация о клиенте
  * `profile.phone_number` – Номер телефона клиента
  * `profile.tags` – Список тегов, которые нужно добавить клиенту
  * `profile.attrs` – Список атрибутов, которые нужно добавить клиенту
* `content` – Содержание рассылки
  * `content.type` – Тип контента (в данном случае WHATSAPP\_TEMPLATE)
  * `content.whatsapp_template` – Информация о WhatsApp-шаблоне
    * `content.whatsapp_template.pid` – Идентификатор шаблона
  * `content.whatsapp_template_variables` – Переменные для шаблона

</details>

<details>

<summary>Отправить WhatsApp-шаблон клиенту по номеру телефона (используя узел)</summary>

```bash
curl -X POST \
  https://dashboard.fstrk.io/api/partners/push-message/ \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer <КЛЮЧ_ДОСТУПА>' \
  -d '{
    "profile": {
      "phone_number": "+79999999999"
    },
    "content": {
      "type": "WHATSAPP_TEMPLATE",
      "node": {
        "name": "Название узла"
      },
      "get_params": {
        "v1": "foo",
        "v2": "bar"
      }
    }
}'
```

Структура JSON:

* `profile` – Информация о клиенте
  * `profile.phone_number` – Номер телефона клиента
* `content` – Содержание рассылки
  * `content.type` – Тип контента (в данном случае WHATSAPP\_TEMPLATE)
  * `content.node` – Информация об узле
    * `content.node.name` – Название узла
  * `content.get_params` – список get-параметров для узла

</details>

## Отменить рассылку

API-метод для отмены запуска рассылки по UUID.

<mark style="color:green;">`POST`</mark> `/api/partners/push-messages/{ uuid }/cancel/`

**Заголовки**

<table data-header-hidden><thead><tr><th width="205">Key</th><th>Descr</th></tr></thead><tbody><tr><td>Authorization</td><td><code>Bearer &#x3C;token></code></td></tr></tbody></table>

**Path-параметры**

<table data-header-hidden><thead><tr><th width="129">Key</th><th>Descr</th></tr></thead><tbody><tr><td>uuid</td><td>Идентификатор рассылки (UUID рассылки)</td></tr></tbody></table>

{% hint style="danger" %}
Отменить можно только сообщение, которое еще небыло запущено.
{% endhint %}

## Информация о рассылке

API-метод для получения информации о рассылке по UUID.

<mark style="color:blue;">`GET`</mark> `/api/partners/push-messages/{ uuid }/`

**Заголовки**

<table data-header-hidden><thead><tr><th width="205">Key</th><th>Descr</th></tr></thead><tbody><tr><td>Authorization</td><td><code>Bearer &#x3C;token></code></td></tr></tbody></table>

**Path-параметры**

<table data-header-hidden><thead><tr><th width="129">Key</th><th>Descr</th></tr></thead><tbody><tr><td>uuid</td><td>Идентификатор рассылки (UUID рассылки)</td></tr></tbody></table>

## Список рассылок

API-метод для получения списка рассылок.

<mark style="color:blue;">`GET`</mark> `/api/partners/push-messages/`

**Заголовки**

<table data-header-hidden><thead><tr><th width="205">Key</th><th>Descr</th></tr></thead><tbody><tr><td>Authorization</td><td><code>Bearer &#x3C;token></code></td></tr></tbody></table>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.fstrk.io/knowledge_base/push-messages/api.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
