# Создание шаблонов

## Отправка шаблона на регистрацию

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

Метод позволяет отправить на регистрацию шаблоны разных типов к разным зарегистрированным именам отправителей.

#### Headers

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

#### Request Body

<table><thead><tr><th>Name</th><th width="362">Type</th><th>Description</th></tr></thead><tbody><tr><td>toAdd<mark style="color:red;">*</mark></td><td>string</td><td><p>Способ отправки шаблонов. Варианты значений:</p><ul><li><code>ALL_OR_NOTHING</code> – будут созданы либо все шаблоны (при условии валидности каждого из них), либо ни одного</li><li><code>ALL_VALID</code> – будут созданы все валидные шаблоны</li></ul></td></tr><tr><td>dateFrom<mark style="color:red;">*</mark></td><td>string</td><td>Желаемая дата начала действия шаблона</td></tr><tr><td>templates<mark style="color:red;">*</mark></td><td>array</td><td>Массив объектов с описанием шаблонов</td></tr><tr><td>templates.pattern<mark style="color:red;">*</mark></td><td>string</td><td>Текст шаблона</td></tr><tr><td>templates.templatesByType<mark style="color:red;">*</mark></td><td>array</td><td>Массив объектов с типами шаблонов и именами отправителей</td></tr><tr><td>templates.templatesByType.templateType<mark style="color:red;">*</mark></td><td>string</td><td><a href="/pages/-MNhgBHC4WypBIlk2cAh#template-types">Тип шаблона</a></td></tr><tr><td>templates.templatesByType.senderNames<mark style="color:red;">*</mark></td><td>array</td><td>Массив объектов с идентификаторами имен отправителей, на которые нужно зарегистрировать шаблон.<br>Допускается регистрация на имена отправителей операторов Мегафон, Билайн, Теле2 и МТС в статусах, начиная с INTERNAL_REVIEW.</td></tr><tr><td>templates.templatesByType.senderNames.id<mark style="color:red;">*</mark></td><td>integer</td><td>Уникальный идентификатор имени отправителя в i-Digital Direct. Получить идентификатор можно методом <a href="/pages/-MNwzott23ONtHMhT_Uh">Получение имен отправителей</a></td></tr><tr><td>templates.templatesByType.senderNames.externalTemplateId</td><td>string</td><td>Идентификатор шаблона в вашей внешней системе</td></tr></tbody></table>

{% hint style="warning" %}

* Создание шаблонов типа SERVICE допускается только для имен отправителей операторов Билайн, Мегафон, МТС
* Создание шаблонов типа AUTHORIZE допускается только для имен отправителей операторов Мегафон, Теле2
  {% endhint %}

{% tabs %}
{% tab title="200" %}
При отсутствии ошибок в запросе (независимо от валидности шаблонов) вернется HTTP-код 200.

```json
{
    "toAdd": "ALL_VALID",
    "dateFrom": "2024-07-27T21:00:00Z",
    "total":4, 
    "added":2, 
    "notAdded":2,
    "templates": [
        {
            "pattern": "текст шаблона 1",
            "templatesByType": [
                {
                    "templateType": "SERVICE",
                    "patternState": "INVALID",
                    "correctExample": "исправленный текст шаблона",
                    "senderNames": [
                        {
                            "id": 1,
                            "senderName": "first",
                            "brand": "BEELINE",
                            "state": "ERROR"
                        }
                    ]
                },
                {
                    "templateType": "AUTHORIZE",
                    "patternState": "VALID",
                    "senderNames": [
                        {
                            "id": 2,
                            "senderName": "second",
                            "brand": "MEGAFON",
                            "state": "SUCCESS",
                            "templateId": 11
                        }
                    ]
                }
            ]
        },
        {
            "pattern": "текст шаблона 2",
            "templatesByType": [
                {
                    "templateType": "SERVICE",
                    "patternState": "VALID",
                    "senderNames": [
                        {
                            "id": 3,
                            "senderName": "third",
                            "brand": "BEELINE",
                            "state": "ERROR",
                            "error": {
                                "type": "COVERED_BY_EXISTING",
                                "templateId": 124
                            },
                            "externalTemplateId": "1a2b3c"
                        },
                        {
                            "id": 4,
                            "senderName": "fourth",
                            "brand": "TELE2",
                            "state": "SUCCESS",
                            "templateId": 11,
                            "externalTemplateId": "3d4e5f"
                        }
                    ]
                }
            ]
        }
    ]
}
```

{% endtab %}

{% tab title="401" %}
Использование невалидного токена / отсутствие заголовка авторизации.

{% tabs %}
{% tab title="4012" %}

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

{% endtab %}

{% tab title="4010" %}

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

{% endtab %}
{% endtabs %}
{% endtab %}

{% tab title="403" %}
Использование неподходящего токена.

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

{% endtab %}

{% tab title="422" %}
Несуществующее имя отправителя.

```json
{
    "error": {
        "code": 4220,
        "msg": "Client 5 has not sender name 734"
    }
}
```

{% endtab %}
{% endtabs %}

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

| Параметр                                               | Тип     | Описание                                                                                                                                                                                                                                                                                                                                                                                                                               |
| ------------------------------------------------------ | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| toAdd                                                  | string  | Соответствует `toAdd` в запросе                                                                                                                                                                                                                                                                                                                                                                                                        |
| dateFrom                                               | string  | Соответствует `dateFrom` в запросе                                                                                                                                                                                                                                                                                                                                                                                                     |
| total                                                  | integer | Общее количество переданных шаблонов                                                                                                                                                                                                                                                                                                                                                                                                   |
| added                                                  | integer | Количество добавленных шаблонов                                                                                                                                                                                                                                                                                                                                                                                                        |
| notAdded                                               | integer | Количество не добавленных шаблонов                                                                                                                                                                                                                                                                                                                                                                                                     |
| templates                                              | array   | Массив объектов с описанием шаблонов                                                                                                                                                                                                                                                                                                                                                                                                   |
| templates.pattern                                      | string  | Текст шаблона                                                                                                                                                                                                                                                                                                                                                                                                                          |
| templates.templatesByType                              | array   | Массив объектов с типами шаблонов и именами отправителей                                                                                                                                                                                                                                                                                                                                                                               |
| templates.templatesByType.templateType                 | string  | Тип шаблона.  Соответствует `templateType` в запросе                                                                                                                                                                                                                                                                                                                                                                                   |
| templates.templatesByType.patternState                 | string  | <p>Статус валидности текста шаблона</p><ul><li><code>VALID –</code> текст валиден</li><li><code>INVALID –</code> текст не валиден</li></ul>                                                                                                                                                                                                                                                                                            |
| templates.templatesByType.correctExample               | string  | Пример текста шаблона с исправленными ошибками                                                                                                                                                                                                                                                                                                                                                                                         |
| templates.templatesByType.senderNames                  | array   | Массив объектов имен отправителей, на которые регистрировались шаблоны                                                                                                                                                                                                                                                                                                                                                                 |
| templates.templatesByType.senderNames.id               | integer | Идентификатор имени отправителя                                                                                                                                                                                                                                                                                                                                                                                                        |
| templates.templatesByType.senderNames.senderName       | string  | Имя отправителя                                                                                                                                                                                                                                                                                                                                                                                                                        |
| templates.templatesByType.senderNames.brand            | string  | Оператор имени отправителя                                                                                                                                                                                                                                                                                                                                                                                                             |
| templates.templatesByType.senderNames.state            | string  | <p>Статус отправки шаблона на данное имя отправителя:</p><ul><li><code>SUCCESS</code> – шаблон отправлен на регистрацию</li><li><code>ERROR</code> – произошла ошибка, шаблон не отправлен на регистрацию</li></ul>                                                                                                                                                                                                                    |
| templates.templatesByType.senderNames.templateId       | integer | Идентификатор созданного шаблона (передается при`state = SUCCESS`)                                                                                                                                                                                                                                                                                                                                                                     |
| templates.senderNames.error                            | object  | <p>Объект с описанием ошибки</p><p>(передается при<code>state = ERROR</code>)</p>                                                                                                                                                                                                                                                                                                                                                      |
| templates.templatesByType.senderNames.error.type       | string  | <p>Тип ошибки:</p><ul><li><code>DUPLICATE</code> – является дубликатом шаблона, который также присутствует в запросе</li><li><code>COVERED</code> – содержится в другом шаблоне, который также присутствует в запросе</li><li><code>DUPLICATES\_EXISTING</code> – является дубликатом существующего в системе шаблона</li><li><code>COVERED\_BY\_EXISTING</code> – содержится в другом шаблоне, который существует в системе</li></ul> |
| templates.templatesByType.senderNames.error.templateId | integer | Идентификатор шаблона в системе, из-за которого нельзя добавить данный (актуально для ошибок `..._EXISTING`)                                                                                                                                                                                                                                                                                                                           |

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

{% tabs %}
{% tab title="JSON" %}

```json
POST https://direct.i-dgtl.ru/v1/templates/sms
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Content-Type: application/json
{
    "toAdd": "ALL_VALID",
    "dateFrom": "2024-07-27T21:00:00Z",
    "templates": [
        {
            "pattern": "текст шаблона 1",
            "templatesByType": [
                {
                    "templateType": "SERVICE",
                    "senderNames": [
                        {
                            "id": 1
                        }
                    ]
                },
                {
                    "templateType": "AUTHORIZE",
                    "senderNames": [
                        {
                            "id": 2
                        }
                    ]
                }
            ]
        },
        {
            "pattern": "текст шаблона 2",
            "templatesByType": [
                {
                    "templateType": "SERVICE",
                    "senderNames": [
                        {
                            "id": 3,
                            "externalTemplateId": "1a2b3c"
                        },
                        {
                            "id": 4,
                            "externalTemplateId": "3d4e5f"
                        }
                    ]
                }
            ]
        }
    ]
}
```

{% endtab %}

{% tab title="cURL" %}

```bash
curl -X POST 'https://direct.i-dgtl.ru/api/v1/templates/sms' \
-H 'Content-Type: application/json' \
-H 'Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==' \
-d '{"toAdd":"ALL_VALID","dateFrom":"2024-07-27T21:00:00Z","templates":[{"pattern":"текст шаблона 1","templatesByType":[{"templateType":"SERVICE","senderNames":[{"id":1 }]},{"templateType":"AUTHORIZE","senderNames":[{"id":2 }]}]},{"pattern":"текст шаблона 2","templatesByType":[{"templateType":"SERVICE","senderNames":[{"id":3,"externalTemplateId":"1a2b3c"},{"id":4,"externalTemplateId":"3d4e5f"}]}]}]}'
```

{% endtab %}
{% endtabs %}


---

# 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://api.docs.direct.i-dgtl.ru/templates/post.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.
