# Получение шаблонов

## Получение шаблона по id

<mark style="color:blue;">`GET`</mark> `https://direct.i-dgtl.ru/api/v1/templates/{template_id}`

Метод позволяет получить объект шаблона с указанным id.

#### Path Parameters

| Name                                           | Type    | Description                          |
| ---------------------------------------------- | ------- | ------------------------------------ |
| template\_id<mark style="color:red;">\*</mark> | integer | Идентификатор запрашиваемого шаблона |

#### Headers

| Name                                            | Type   | Description       |
| ----------------------------------------------- | ------ | ----------------- |
| Authorization<mark style="color:red;">\*</mark> | string | `Basic {TOKEN_2}` |

::::::{tab-set}

:::::{tab-item} 200 

```
{
  "id": 1234,
  "channelType": "SMS",
  "templateType": "SERVICE",
  "pattern": "привет, %w",
  "dateFrom": "2020-07-07T21:00:00Z",
  "dateTo": "2020-10-10T00:00:00Z",
  "senderNameId": 1234,
  "senderName": "testsend",
  "brand": "BEELINE",
  "managerComment": "комментарий менеджера",
  "status": "CLOSED",
  "createdAt": "2020-06-01T21:00:00Z",
  "rejectedAt": "2020-06-07T21:00:00Z"
}
```
:::::


:::::{tab-item} 401

Использование невалидного токена / отсутствие заголовка авторизации.

::::{tab-set}

:::{tab-item} 4012

```
{
    "error": {
        "code": 4012,
        "msg": "Bad credentials"
    }
}
```
:::


:::{tab-item} 4010

```
{
    "error": {
        "code": 4010,
        "msg": "Not Authenticated"
    }
}
```
:::

::::

:::::


:::::{tab-item} 403

Использование неподходящего токена.

```
{
    "error": {
        "code": 4030,
        "msg": "Access Denied"
    }
}
```
:::::


:::::{tab-item} 422

Несуществующий template\_id.

```
{
    "error": {
        "code": 4220,
        "msg": "Client 5 has not template 1"
    }
}
```
:::::

::::::


## Описание объекта шаблона <a href="#template-object" id="template-object"></a>

| Параметр       | Тип     | Описание                                                                      |
| -------------- | ------- | ----------------------------------------------------------------------------- |
| id             | integer | Идентификатор шаблона                                                         |
| channelType    | string  | [Канал трафика](../extra/references/#channel-types)                           |
| templateType   | string  | [Тип шаблона](../extra/references/#template-types)                            |
| pattern        | string  | Текст шаблона                                                                 |
| dateFrom       | string  | Дата начала действия                                                          |
| dateTo         | string  | Дата окончания действия                                                       |
| senderNameId   | integer | Идентификатор имени отправителя, на которое зарегистрирован шаблон            |
| senderName     | string  | Имя отправителя                                                               |
| brand          | string  | [Оператор](../extra/references/#sender-name-brands) (только для SMS-шаблонов) |
| countryCode    | string  | Код страны (только для VIBER-шаблонов)                                        |
| managerComment | string  | Комментарий менеджера                                                         |
| status         | string  | [Статус шаблона](../extra/references/#templates-states)                       |
| createdAt      | string  | Дата создания шаблона                                                         |
| rejectedAt     | string  | Дата отклонения шаблона                                                       |
| content        | object  | Контент шаблона (только для WHATSAPP-шаблонов, описан ниже)                   |

### Контент WHATSAPP-шаблона <a href="#whatsapp_template_content" id="whatsapp_template_content"></a>

::::::{tab-set}

:::::{tab-item} Текстовый заголовок и кнопки

```
{
  "header": {
    "type": "text",
    "text": "Текст заголовка {{1}}"
  },
  "text": "Текст сообщения {{2}}",
  "footer": "Текст подписи",
  "buttons": [
    {
      "text": "Текст кнопки 1"
    },
    {
      "text": "Текст кнопки 2"
    },
    {
      "text": "Текст кнопки 3"
    }
  }
}
```
:::::


:::::{tab-item} Интерактивный заголовок и кнопки

```
{
  "header": {
    "type": "image"
  },
  "text": "Текст сообщения {{1}}",
  "footer": "Подпись сообщения",
  "buttons": [
    {
      "text": "Кнопка-ссылка",
      "url": "https://i-dgtl.ru"
    },
    {
      "text": "Кнопка-вызов",
      "phone": "78000000000"
    }
  ]
}
```
:::::

::::::


| Параметр              | Тип    | Описание                                                                                                               |
| --------------------- | ------ | ---------------------------------------------------------------------------------------------------------------------- |
| content.header        | object | Объект с информацией о заголовке сообщения                                                                             |
| content.header.type   | string | <p>Тип заголовка; принимает значения:</p><p><code>text</code></p><p><code>image</code></p><p><code>document</code></p> |
| content.header.text   | string | Текст заголовка; присутствует только при `header.type = text`                                                          |
| content.text          | string | Текст сообщения                                                                                                        |
| content.footer        | string | Подпись сообщения                                                                                                      |
| content.buttons       | array  | Массив объектов с кнопками                                                                                             |
| content.buttons.text  | string | Текст кнопки                                                                                                           |
| content.buttons.url   | string | Ссылка, на которую произойдет переход при нажатии на кнопку                                                            |
| content.buttons.phone | string | Телефонный номер, на который произойдет вызов при нажатии на кнопку                                                    |

### Формирование WHATSAPP-сообщения

Для того, чтобы сформировать из WHATSAPP-шаблона [контент WHATSAPP-сообщения](../messages/whatsapp-sending.md#text), необходимо:

1. Добавить параметр `content.contentType` со значением `"text"`
2. Заполнить подстановки: параметры `content.header.text` и `content.text` могут содержать переменные вида \{{1\}}, \{{2\}}, которые необходимо заменить на строки
3. Удалить параметр `content.header.type` из заголовка
4. Добавить интерактивное содержимое в заголовок:
   1. если `content.header.type = document`, то нужно добавить
      1. `content.header.documentUrl` — ссылка на документ
      2. `content.header.documentName` — название документа, которое будет отображено абоненту
   2. если `content.header.type = image`, то нужно добавить
      1. `content.header.imageUrl` — ссылка на изображение
5. Преобразовать строку `content.footer` в строку `content.footer.text`, добавив вложенный объект `content.footer`
6. Для кнопок, у которых отсутствует `content.buttons.url` / `content.buttons.phone`, необходимо добавить строку `content.buttons.payload`

## Получение массива шаблонов

<mark style="color:blue;">`GET`</mark> `https://direct.i-dgtl.ru/api/v1/templates`

Метод позволяет получить массив объектов шаблонов, подходящих под условия фильтрации.

#### Query Parameters

| Name             | Type   | Description                                                                                      |
| ---------------- | ------ | ------------------------------------------------------------------------------------------------ |
| page             | string | <p>Номер запрашиваемой страницы<br>По умолчанию 1</p>                                            |
| per\_page        | string | <p>Количество записей на странице<br>По умолчанию 2000</p>                                       |
| template\_id     | string | <p>Идентификатор шаблона<br>Множественный параметр</p>                                           |
| sender\_name\_id | string | <p>Фильтрация по идентификатору имени отправителя<br>Множественный параметр</p>                  |
| sender\_name     | string | <p>Фильтрация по имени отправителя (поиск по полному соответствию)<br>Множественный параметр</p> |
| channel\_type    | string | Фильтрация по каналу                                                                             |
| brand            | string | <p>Фильтрация по оператору<br>Множественный параметр</p>                                         |
| country\_code    | string | <p>Фильтрация по коду страны<br>Множественный параметр</p>                                       |
| status           | string | <p>Фильтрация по статусу<br>Множественный параметр</p>                                           |
| template\_type   | string | <p>Фильтрация по типу<br>Множественный параметр</p>                                              |
| pattern          | string | Фильтрация по тексту шаблона (по наличию подстроки в тексте)                                     |
| min\_date\_from  | string | Фильтрация по нижнему значению даты начала действия                                              |
| min\_date\_to    | string | Фильтрация по нижнему значению даты окончания действия                                           |
| max\_date\_from  | string | Фильтрация по верхнему значению даты начала действия                                             |
| max\_date\_to    | string | Фильтрация по верхнему значению даты окончания действия                                          |

#### Headers

| Name          | Type   | Description       |
| ------------- | ------ | ----------------- |
| Authorization | string | `Basic {TOKEN_2}` |

::::::{tab-set}

:::::{tab-item} 200 

```
{
  "page": 1,
  "perPage": 2000,
  "total": 1,
  "items": [
    {
      "id": 1234,
      "channelType": "SMS",
      "templateType": "SERVICE",
      "pattern": "привет, %w",
      "dateFrom": "2020-07-07T21:00:00Z",
      "dateTo": "2020-10-10T00:00:00Z",
      "senderNameId": 1234,
      "senderName": "testsend",
      "brand": "BEELINE",
      "managerComment": "комментарий менеджера",
      "status": "CLOSED",
      "createdAt": "2020-06-01T21:00:00Z",
      "rejectedAt": "2020-06-07T21:00:00Z"
    }
  ]
```
:::::

::::::


Возможные варианты перечислений:

| Параметр       | Варианты                                                               |
| -------------- | ---------------------------------------------------------------------- |
| channel\_type  | [Каналы имен отправителей](../extra/references/#sender-name-channels)  |
| country\_code  | [Страны имен отправителей](../extra/references/#sender-name-countries) |
| brand          | [Операторы имен отправителей](../extra/references/#sender-name-brands) |
| status         | [Статусы шаблонов](../extra/references/#templates-states)              |
| template\_type | [Типы шаблонов](../extra/references/#template-types)                   |

## Примеры запроса <a href="#example" id="example"></a>

Получение сервисных шаблонов, зарегистрированных на операторов Теле2 и Билайн в статусах "Одобрено" и "Закрыто"

::::::{tab-set}

:::::{tab-item} JSON

```
GET https://direct.i-dgtl.ru/api/v1/templates?template_type=SERVICE&brand=TELE2&brand=BEELINE&status=APPROVED&status=CLOSED
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
```
:::::


:::::{tab-item} cURL

```
curl -X GET 'https://direct.i-dgtl.ru/api/v1/templates?template_type=SERVICE&brand=TELE2&brand=BEELINE&status=APPROVED&status=CLOSED' \
-H 'Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ=='
```
:::::

::::::


Получение VIBER-шаблонов, действующих в РФ, в статусе "Одобрено"

::::::{tab-set}

:::::{tab-item} JSON

```
GET https://direct.i-dgtl.ru/api/v1/templates?channel_type=VIBER&country_code=ru&status=APPROVED
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
```
:::::


:::::{tab-item} cURL

```
curl -X GET 'https://direct.i-dgtl.ru/api/v1/templates?channel_type=VIBER&country_code=ru&status=APPROVED' \
-H 'Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ=='
```
:::::

::::::

