{
  "openapi": "3.0.0",
  "info": {
    "title": "SMS Beltelecom API",
    "description": "**API для передачи SMS-сообщений через сервис Beltelecom.**\n\nAPI позволяет передавать SMS-сообщения на белорусские номера телефонов. Максимальное количество номеров в одном запросе - 10.\n\n**Основные возможности:**\n* Передача SMS-сообщений на один или несколько номеров (до 10)\n* Получение статуса рассылки по идентификатору\n* Планирование передачи на определенное время\n* Получение уведомлений о статусе доставки через callback URL\n* Защита от CSRF атак через токены\n\n**Процесс работы с API:**\n1. Получите CSRF токен через GET /session/token\n2. Используйте токен в заголовке X-CSRF-Token при передаче SMS\n3. Передайте SMS через POST /webform_rest/submit\n4. Получите идентификатор рассылки (sid) в ответе\n5. При необходимости, получайте статус рассылки через GET /api/sms/status?sid=<ваш_sid>\n6. При необходимости, получайте уведомления о статусе на callback_url\n\n**Типы авторизации:**\n* **Basic Auth** - простая авторизация через логин и пароль (используется для всех операций передачи SMS)\n* **CSRF Token** - защита от межсайтовых запросов через токен в заголовке X-CSRF-Token\n\n**Формат номеров телефонов:**\nВсе номера должны быть в международном формате Беларуси **без знака '+'**: `375XXXXXXXXX` (375 + 9 цифр)\n\n**Типы SMS-сообщений:**\n* **Короткое сообщение (до 70 символов):** передается оператору ССПЭ и абоненту одним SMS-сообщением\n* **Длинное сообщение (от 71 до 670 символов):** передается несколькими отдельными SMS (до 10), каждое до 67 символов, с последующей «склейкой» на телефоне абонента. Оплата производится за фактически отправленное количество SMS\n\n**Примеры использования:**\n* Передача уведомлений пользователям\n* SMS-рассылки для маркетинга\n* Двухфакторная аутентификация (2FA)\n* Напоминания и уведомления",
    "version": "2.0.0",
    "contact": {
      "name": "Beltelecom Support",
      "email": "sms@irc.beltelecom.by"
    },
    "license": {
      "name": "Proprietary",
      "url": "https://beltelecom.by"
    }
  },
  "servers": [
    {
      "url": "https://sms.beltelecom.by",
      "description": "Производственный сервер SMS API от Белтелекома"
    }
  ],
  "tags": [
    {
      "name": "Authentication",
      "description": "**Эндпоинты для аутентификации и безопасности.**\n\nВключает получение CSRF токенов, необходимых для защиты от межсайтовых запросов (CSRF атак). Демонстрирует работу с токенами безопасности и заголовками HTTP.\n\n**Основные операции:**\n* Получение CSRF токена для защиты запросов\n* Использование токена в заголовке X-CSRF-Token",
      "externalDocs": {
        "description": "Узнать больше о CSRF защите",
        "url": "https://owasp.org/www-community/attacks/csrf"
      }
    },
    {
      "name": "SMS",
      "description": "**Операции с SMS-сообщениями.**\n\nВключает передачу SMS-сообщений через API и получение статуса рассылки. Демонстрирует работу с различными типами параметров, валидацией данных, обработкой ошибок и callback уведомлениями.\n\n**Основные операции:**\n* Передача SMS\n* Получение статуса рассылки по идентификатору\n* Планирование передачи на определенное время\n* Получение статуса доставки через callback URL",
      "externalDocs": {
        "description": "Документация по SMS API",
        "url": "https://beltelecom.by"
      }
    }
  ],
  "paths": {
    "/session/token": {
      "get": {
        "tags": ["Authentication"],
        "summary": "Получить CSRF токен",
        "description": "**Учебный пример:** Получение токена безопасности для защиты от CSRF атак.\n\nДемонстрирует:\n* Получение токена через GET запрос\n* Возврат простого текстового значения (text/plain)\n* Использование токена в последующих запросах\n* Защиту API от межсайтовых запросов\n\n**Процесс работы:**\n1. Выполните GET запрос к /session/token\n2. Получите токен в виде строки\n3. Используйте этот токен в заголовке `X-CSRF-Token` при передаче SMS\n\n**Пример запроса:**\n```\nGET /session/token\n```\n\n**Пример ответа:**\n```\noG5XZgA7MizMJsl25rmAA-lECLBoJjj_Qjj8O4UGfsQ\n```\n\n**Важно:**\n* Токен необходимо получать перед каждой передачей SMS\n* Токен действителен в течение ограниченного времени\n* Токен должен передаваться в заголовке X-CSRF-Token при POST запросах",
        "operationId": "getCsrfToken",
        "responses": {
          "200": {
            "description": "**Успешное получение токена.**\n\nВозвращает CSRF токен в виде простой текстовой строки. Этот токен необходимо использовать в заголовке X-CSRF-Token при передаче SMS-сообщений.\n\n**Пример использования токена:**\n```\nPOST /webform_rest/submit?_format=json\nAuthorization: Basic <base64_credentials>\nX-CSRF-Token: oG5XZgA7MizMJsl25rmAA-lECLBoJjj_Qjj8O4UGfsQ\nContent-Type: application/json\n\n{...данные SMS...}\n```",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string",
                  "example": "oG5XZgA7MizMJsl25rmAA-lECLBoJjj_Qjj8O4UGfsQ",
                  "description": "CSRF токен в виде строки. Длина токена может варьироваться. Используйте полученный токен в заголовке X-CSRF-Token при передаче SMS."
                }
              }
            }
          },
          "500": {
            "description": "**Внутренняя ошибка сервера.**\n\nПроизошла ошибка на стороне сервера при генерации токена. Повторите запрос через некоторое время."
          }
        }
      }
    },
    "/webform_rest/submit": {
      "post": {
        "tags": ["SMS"],
        "summary": "Отправить SMS",
        "description": "**Учебный пример:** Передача SMS через API с расширенными возможностями и примерами.\n\nДемонстрирует:\n* Использование POST метода для создания ресурса (SMS рассылки)\n* Комбинацию Basic Auth и CSRF токена для безопасности\n* Передачу сложного объекта в теле запроса (requestBody)\n* Использование query-параметра для указания формата ответа\n* Работу с различными сценариями передачи (один номер, несколько номеров, без callback)\n* Детальную обработку ошибок с примерами\n* Использование всех типов параметров и валидации\n* Best practices для работы с SMS API\n\n**Процесс передачи:**\n1. Получите CSRF токен через GET /session/token\n2. Выберите подходящий пример запроса\n3. Передайте POST запрос с Basic Auth и CSRF токеном\n4. Обработайте ответ и возможные ошибки\n\n**ВАЖНО:** CSRF токен обязателен для всех POST запросов! Без заголовка `X-CSRF-Token` запрос будет отклонен сервером. Получите токен перед каждым запросом через GET /session/token и добавьте его в заголовки запроса.\n\n**Полный рабочий процесс (шаг за шагом):**\n\n**Шаг 1: Получение CSRF токена**\n```bash\ncurl 'https://sms.beltelecom.by/session/token' \\\n  --header 'Authorization: Basic YWRtaW46cGFzc3dvcmQ='\n```\n\n**Шаг 2: Отправка SMS с использованием полученного токена**\n```bash\ncurl -X 'POST' \\\n  'https://sms.beltelecom.by/webform_rest/submit?_format=json' \\\n  --header 'Content-Type: application/json' \\\n  --header 'X-CSRF-Token: oG5XZgA7MizMJsl25rmAA-lECLBoJjj_Qjj8O4UGfsQ' \\\n  --header 'Authorization: Basic YWRtaW46cGFzc3dvcmQ=' \\\n  --data '{\"webform_id\":\"sms_rassylka\",\"name\":\"Заголовок SMS 6\",\"text\":\"Текст сообщения\",\"date_time\":\"2026-01-28T12:56:56\",\"callback_url\":\"http://sms.devhosting.datacenter.by\",\"ukazhite_nomera_telefonov_do_10_nomerov\":[\"375336627600\"]}'\n```\n\n**Полный рабочий пример curl запроса (проверен и работает):**\n```bash\ncurl -X 'POST' \\\n  'https://sms.beltelecom.by/webform_rest/submit?_format=json' \\\n  -H 'accept: application/json' \\\n  -H 'Content-Type: application/json' \\\n  -H 'X-CSRF-Token: oG5XZgA7MizMJsl25rmAA-lECLBoJjj_Qjj8O4UGfsQ' \\\n  -H 'Authorization: Basic YWRtaW46cGFzc3dvcmQ=' \\\n  -d '{\n  \"webform_id\": \"sms_rassylka\",\n  \"name\": \"Заголовок SMS 6\",\n  \"text\": \"Текст сообщения\",\n  \"date_time\": \"2026-01-28T12:56:56\",\n  \"callback_url\": \"http://sms.devhosting.datacenter.by\",\n  \"ukazhite_nomera_telefonov_do_10_nomerov\": [\n    \"375336627600\"\n  ]\n}'\n```\n\n**Важно:** Обратите внимание на обязательный заголовок `X-CSRF-Token`! Без него запрос не будет работать.\n\n**Пример запроса (рабочий пример):**\n```\nPOST /webform_rest/submit?_format=json\nAuthorization: Basic YWRtaW46cGFzc3dvcmQ=\nX-CSRF-Token: oG5XZgA7MizMJsl25rmAA-lECLBoJjj_Qjj8O4UGfsQ\nContent-Type: application/json\n\n{\n  \"webform_id\": \"sms_rassylka\",\n  \"name\": \"Заголовок SMS 6\",\n  \"text\": \"Текст сообщения\",\n  \"date_time\": \"2026-01-28T12:56:56\",\n  \"callback_url\": \"http://sms.devhosting.datacenter.by\",\n  \"ukazhite_nomera_telefonov_do_10_nomerov\": [\n    \"375336627600\"\n  ]\n}\n```\n\n**Пример запроса (несколько номеров):**\n```\nPOST /webform_rest/submit?_format=json\nAuthorization: Basic YWRtaW46cGFzc3dvcmQ=\nX-CSRF-Token: oG5XZgA7MizMJsl25rmAA-lECLBoJjj_Qjj8O4UGfsQ\nContent-Type: application/json\n\n{\n  \"webform_id\": \"sms_rassylka\",\n  \"name\": \"Заголовок SMS\",\n  \"text\": \"Текст сообщения\",\n  \"date_time\": \"2026-01-28T12:56:56\",\n  \"callback_url\": \"http://sms.devhosting.datacenter.by\",\n  \"ukazhite_nomera_telefonov_do_10_nomerov\": [\n    \"375291234567\",\n    \"375331234568\"\n  ]\n}\n```\n\n**Пример запроса (один номер, без callback):**\n```\nPOST /webform_rest/submit?_format=json\nAuthorization: Basic YWRtaW46cGFzc3dvcmQ=\nX-CSRF-Token: oG5XZgA7MizMJsl25rmAA-lECLBoJjj_Qjj8O4UGfsQ\nContent-Type: application/json\n\n{\n  \"webform_id\": \"sms_rassylka\",\n  \"name\": \"Уведомление\",\n  \"text\": \"Ваш код подтверждения: 1234\",\n  \"date_time\": \"2026-01-28T12:56:56\",\n  \"ukazhite_nomera_telefonov_do_10_nomerov\": [\n    \"375336627600\"\n  ]\n}\n```",
        "operationId": "sendSMS",
        "parameters": [
          {
            "name": "_format",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": ["json"],
              "default": "json"
            },
            "description": "**Параметр формата ответа.**\n\nУказывает формат, в котором должен быть возвращен ответ от сервера.\n\n**Возможные значения:**\n* `json` - ответ в формате JSON (единственный поддерживаемый формат)\n\n**Пример:**\n```\nPOST /webform_rest/submit?_format=json\n```\n\n**Важно:** Параметр обязателен и должен иметь значение 'json'."
          }
        ],
        "requestBody": {
          "required": true,
          "description": "**Объект запроса на передачу SMS.**\n\nСодержит все необходимые данные для передачи SMS-сообщения. Доступны расширенные примеры для различных сценариев использования.\n\n**Обязательные поля:**\n* `webform_id` - идентификатор формы (всегда 'sms_rassylka')\n* `name` - заголовок SMS\n* `text` - текст сообщения (до 670 символов)\n* `date_time` - дата и время передачи в формате ISO 8601\n* `ukazhite_nomera_telefonov_do_10_nomerov` - массив номеров (от 1 до 10)\n\n**Опциональные поля:**\n* `callback_url` - URL для получения уведомлений о статусе доставки\n\n**Сценарии использования:**\n* Передача на один номер\n* Массовая рассылка (до 10 номеров)\n* С callback уведомлениями\n* Без callback уведомлений",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SMSRequest"
              },
              "examples": {
                "working_example": {
                  "summary": "Рабочий пример: передача на один номер",
                  "description": "Проверенный рабочий пример передачи SMS на один номер с указанием callback URL. Этот пример был успешно протестирован и работает корректно.",
                  "value": {
                    "webform_id": "sms_rassylka",
                    "name": "Заголовок SMS 6",
                    "text": "Текст сообщения",
                    "date_time": "2026-01-28T12:56:56",
                    "callback_url": "http://sms.devhosting.datacenter.by",
                    "ukazhite_nomera_telefonov_do_10_nomerov": [
                      "375336627600"
                    ]
                  }
                },
                "multiple_phones": {
                  "summary": "Передача на несколько номеров",
                  "description": "Пример передачи SMS на несколько номеров с указанием callback URL для получения уведомлений о статусе доставки.",
                  "value": {
                    "webform_id": "sms_rassylka",
                    "name": "Заголовок SMS",
                    "text": "Текст сообщения",
                    "date_time": "2026-01-28T12:56:56",
                    "callback_url": "http://sms.devhosting.datacenter.by",
                    "ukazhite_nomera_telefonov_do_10_nomerov": [
                      "375291234567",
                      "375331234568"
                    ]
                  }
                },
                "single_phone": {
                  "summary": "Передача на один номер с кодом подтверждения",
                  "description": "Пример передачи SMS на один номер с кодом подтверждения. Подходит для двухфакторной аутентификации (2FA) или передачи кодов доступа.",
                  "value": {
                    "webform_id": "sms_rassylka",
                    "name": "Уведомление",
                    "text": "Ваш код подтверждения: 1234",
                    "date_time": "2026-01-28T12:56:56",
                    "callback_url": "http://sms.devhosting.datacenter.by",
                    "ukazhite_nomera_telefonov_do_10_nomerov": [
                      "375336627600"
                    ]
                  }
                },
                "without_callback": {
                  "summary": "Передача без callback URL",
                  "description": "Пример передачи SMS без указания callback URL. В этом случае вы не будете получать автоматические уведомления о статусе доставки. Используйте этот вариант, если отслеживание статуса не требуется.",
                  "value": {
                    "webform_id": "sms_rassylka",
                    "name": "Тестовое сообщение",
                    "text": "Привет! Это тестовое SMS.",
                    "date_time": "2026-01-28T15:30:00",
                    "ukazhite_nomera_telefonov_do_10_nomerov": [
                      "375336627600",
                      "375333345233"
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "**SMS успешно добавлена в очередь передачи.**\n\nЗапрос обработан успешно, SMS-сообщение добавлено в очередь на передачу. Возвращает объект с идентификатором рассылки (sid), который можно использовать для отслеживания статуса.\n\n**Пример ответа:**\n```json\n{\n  \"sid\": \"cfa49af7-5051-4e97-9101-d0017898aca7\"\n}\n```\n\n**Что дальше:**\n* Сохраните `sid` для отслеживания статуса рассылки\n* Если указан `callback_url`, вы получите POST запросы с уведомлениями о статусе\n* Типы уведомлений:\n  - Уведомления о статусе рассылки (`mailingListStatus` с `idStatus`)\n  - Уведомления о статусе переданных сообщений (`mailingStatus` с `phoneNumber` и `idStatus`)\n* Все возможные статусы и их ID описаны в схеме CallbackNotification",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SMSResponse"
                },
                "examples": {
                  "success": {
                    "summary": "Успешная передача",
                    "description": "Пример успешного ответа с идентификатором рассылки.",
                    "value": {
                      "sid": "cfa49af7-5051-4e97-9101-d0017898aca7"
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "basicAuth": []
          },
          {
            "csrfToken": []
          }
        ]
      }
    },
    "/api/sms/status": {
      "get": {
        "tags": ["SMS"],
        "summary": "Получить статус рассылки",
        "description": "**Учебный пример:** Получение статуса рассылки по идентификатору.\n\nДемонстрирует:\n* Использование GET метода для получения информации о ресурсе\n* Использование query-параметров для передачи идентификатора\n* Возврат сложного объекта с информацией о рассылке и статусах по каждому номеру\n* Использование Basic Auth для авторизации\n\n**Процесс работы:**\n1. Используйте идентификатор рассылки (sid), полученный при передаче SMS\n2. Отправьте GET запрос с параметром sid и Basic Auth\n3. Получите полную информацию о статусе рассылки и статусах по каждому номеру\n\n**Пример запроса:**\n```\nGET /api/sms/status?sid=f86ff31c-6fb9-457e-b632-8448ab75505c\nAuthorization: Basic YWRtaW46cGFzc3dvcmQ=\n```\n\n**Пример ответа:**\n```json\n{\n  \"sid\": \"f86ff31c-6fb9-457e-b632-8448ab75505c\",\n  \"name\": \"Заголовок SMS 6\",\n  \"textMessage\": \"Текст сообщения\",\n  \"dateTime\": \"2026-01-30T14:38:18\",\n  \"mailingListStatus\": \"Отправлено\",\n  \"idStatus\": \"1385\",\n  \"phoneList\": [\n    {\n      \"phoneNumber\": \"375336627600\",\n      \"status\": \"1386\",\n      \"statusName\": \"Доставлено успешно\"\n    }\n  ]\n}\n```",
        "operationId": "getSMSStatus",
        "parameters": [
          {
            "name": "sid",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "**Идентификатор рассылки (Submission ID).**\n\nУникальный идентификатор рассылки, который был возвращен при создании SMS через POST /webform_rest/submit.\n\n**Формат:** UUID v4\n\n**Пример:**\n```\nGET /api/sms/status?sid=f86ff31c-6fb9-457e-b632-8448ab75505c\n```"
          }
        ],
        "responses": {
          "200": {
            "description": "**Успешное получение статуса рассылки.**\n\nВозвращает полную информацию о статусе рассылки, включая общий статус рассылки и детальные статусы для каждого номера телефона.\n\n**Пример ответа:**\n```json\n{\n  \"sid\": \"f86ff31c-6fb9-457e-b632-8448ab75505c\",\n  \"name\": \"Заголовок SMS 6\",\n  \"textMessage\": \"Текст сообщения\",\n  \"dateTime\": \"2026-01-30T14:38:18\",\n  \"mailingListStatus\": \"Отправлено\",\n  \"idStatus\": \"1385\",\n  \"phoneList\": [\n    {\n      \"phoneNumber\": \"375336627600\",\n      \"status\": \"1386\",\n      \"statusName\": \"Доставлено успешно\"\n    }\n  ]\n}\n```",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SMSStatusResponse"
                },
                "examples": {
                  "success": {
                    "summary": "Успешное получение статуса",
                    "description": "Пример ответа с информацией о статусе рассылки и статусах по каждому номеру.",
                    "value": {
                      "sid": "f86ff31c-6fb9-457e-b632-8448ab75505c",
                      "name": "Заголовок SMS 6",
                      "textMessage": "Текст сообщения",
                      "dateTime": "2026-01-30T14:38:18",
                      "mailingListStatus": "Отправлено",
                      "idStatus": "1385",
                      "phoneList": [
                        {
                          "phoneNumber": "375336627600",
                          "status": "1386",
                          "statusName": "Доставлено успешно"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "**Ошибка валидации параметров запроса.**\n\nЗапрос содержит невалидные данные. Чаще всего возникает при неправильном формате UUID в параметре `sid`.\n\n**Пример ответа:**\n```json\n{\n  \"message\": \"Invalid UUID format. UUID must be in format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"\n}\n```\n\n**Возможные причины:**\n* Неправильный формат UUID в параметре `sid`\n* Отсутствует обязательный параметр `sid`\n* Невалидные символы в UUID",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "invalid_uuid": {
                    "summary": "Невалидный формат UUID",
                    "description": "Пример ошибки при неправильном формате UUID в параметре sid.",
                    "value": {
                      "message": "Invalid UUID format. UUID must be in format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "**Ошибка авторизации.**\n\nЗапрос не содержит учетных данных для авторизации или учетные данные неверны.\n\n**Пример ответа:**\n```json\n{\n  \"message\": \"No authentication credentials provided.\"\n}\n```\n\n**Возможные причины:**\n* Отсутствует заголовок `Authorization` с Basic Auth\n* Неверные учетные данные (логин или пароль)\n\n**Как исправить:**\n* Убедитесь, что заголовок `Authorization: Basic <base64_credentials>` присутствует в запросе\n* Проверьте правильность логина и пароля\n* Убедитесь, что учетные данные закодированы в Base64",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "no_auth": {
                    "summary": "Отсутствуют учетные данные",
                    "description": "Пример ошибки при отсутствии заголовка Authorization.",
                    "value": {
                      "message": "No authentication credentials provided."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ]
      }
    }
  },
  "components": {
    "securitySchemes": {
      "basicAuth": {
        "type": "http",
        "scheme": "basic",
        "description": "Basic HTTP Authentication. Provide username and password encoded in Base64 format."
      },
      "csrfToken": {
        "type": "apiKey",
        "in": "header",
        "name": "X-CSRF-Token",
        "description": "CSRF token for protection against cross-site request forgery attacks.\n\n**How to use:**\n1. Get token via GET /session/token\n2. Add token to X-CSRF-Token header\n3. Use token in each POST request\n\n**Example:**\n```\nX-CSRF-Token: oG5XZgA7MizMJsl25rmAA-lECLBoJjj_Qjj8O4UGfsQ\n```\n\n**Important:**\n* Token must be obtained before each request\n* Token has limited lifetime\n* Token must be passed in header, not in request body"
      }
    },
    "schemas": {
      "SMSRequest": {
        "type": "object",
        "description": "**Учебная схема:** Запрос на отправку SMS-сообщения.\n\nДемонстрирует:\n* Сложную схему с обязательными и опциональными полями\n* Использование массивов для списка номеров телефонов\n* Валидацию данных (паттерны, ограничения длины, количество элементов)\n* Форматы данных (date-time, uri)\n* Enum для ограничения значений\n\n**Обязательные поля:** webform_id, name, text, date_time, ukazhite_nomera_telefonov_do_10_nomerov\n\n**Пример запроса:**\n```json\n{\n  \"webform_id\": \"sms_rassylka\",\n  \"name\": \"Заголовок SMS 6\",\n  \"text\": \"Текст сообщения\",\n  \"date_time\": \"2026-01-28T12:56:56\",\n  \"callback_url\": \"http://sms.devhosting.datacenter.by\",\n  \"ukazhite_nomera_telefonov_do_10_nomerov\": [\n    \"375336627600\"\n  ]\n}\n```",
        "required": [
          "webform_id",
          "name",
          "text",
          "date_time",
          "ukazhite_nomera_telefonov_do_10_nomerov"
        ],
        "properties": {
          "webform_id": {
            "type": "string",
            "enum": ["sms_rassylka"],
            "description": "**Идентификатор веб-формы.**\n\nУникальный идентификатор формы для передачи SMS. В текущей версии API всегда должен быть 'sms_rassylka'.\n\n**Возможные значения:**\n* `sms_rassylka` - форма для SMS рассылки (единственное доступное значение)\n\n**Пример:**\n```json\n\"webform_id\": \"sms_rassylka\"\n```",
            "example": "sms_rassylka"
          },
          "name": {
            "type": "string",
            "description": "**Заголовок SMS-сообщения.**\n\nКраткое название или заголовок SMS-сообщения. Отображается в некоторых интерфейсах и используется для идентификации сообщения.\n\n**Ограничения:**\n* Может содержать любые символы\n\n**Примеры:**\n* \"Уведомление\"\n* \"Важное сообщение\"",
            "example": "Заголовок SMS 6"
          },
          "text": {
            "type": "string",
            "description": "**Текст SMS-сообщения.**\n\nОсновной текст SMS-сообщения, который будет передан получателям. Поддерживает кириллицу, латиницу и специальные символы.\n\n**Ограничения:**\n* Максимальная длина: 670 символов\n* Текст проверяется по регулярному выражению: `^[a-zA-Zа-яА-ЯёЁўЎ0-9\\s!\"#$%&'()*+,•\\-./:;<=>?@\\[\\]^_`{|}~№—–―»«]*$`\n* Рекомендуется использовать короткие сообщения для лучшей доставляемости\n\n**Разрешенные символы:**\n* Латинские буквы (a-z, A-Z)\n* Кириллические буквы (а-я, А-Я, ё, Ё, ў, Ў)\n* Цифры (0-9)\n* Пробелы\n* Специальные символы: ! \" # $ % & ' ( ) * + , • - . / : ; < = > ? @ [ ] ^ _ ` { | } ~ № — – ― » «\n\n**Типы сообщений:**\n\n**Короткое сообщение (до 70 символов включительно):**\nСообщение длиной до 70 символов включительно (латиницей или кириллицей), включая пробелы, считается коротким и передается оператору ССПЭ и абоненту одним SMS-сообщением.\n\n**Длинное сообщение (от 71 до 670 символов):**\nДлинное сообщение (от 71 до 670 символов) передается оператору ССПЭ и абоненту несколькими отдельными (до 10-ти), взаимосвязанными между собой SMS-сообщениями, длиной каждого до 67 символов, с их последующим объединением («склейкой») на терминале (сотовом телефоне) абонента ССПЭ и отображением в виде непрерывного длинного сообщения. Оплата Услуги в данном случае производится за фактически переданное оператору ССПЭ количество отдельных SMS-сообщений при передаче одного длинного сообщения.\n\n**Примеры:**\n* \"Текст сообщения\"\n* \"Ваш код подтверждения: 1234\"\n* \"Привет! Это тестовое SMS.\"",
            "example": "Текст сообщения",
            "maxLength": 670,
            "pattern": "^[a-zA-Zа-яА-ЯёЁўЎ0-9\\s!\"#$%&'()*+,•\\-./:;<=>?@\\[\\]^_`{|}~№—–―»«]*$"
          },
          "date_time": {
            "type": "string",
            "format": "date-time",
            "description": "**Дата и время передачи SMS.**\n\nДата и время, когда должно быть передано SMS-сообщение. Формат: ISO 8601 без указания часового пояса.\n\n**Формат:** `YYYY-MM-DDTHH:mm:ss`\n\n**Примеры:**\n* `2026-01-28T12:56:56` (28 января 2026, 12:56) - проверенный рабочий пример\n* `2026-01-20T15:30:00` (20 января 2026, 15:30)\n\n**Важно:**\n* Можно указать время в будущем для планирования передачи\n* Если указано прошедшее время, сообщение будет передано немедленно",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}$",
            "example": "2026-01-28T12:56:56"
          },
          "callback_url": {
            "type": "string",
            "format": "uri",
            "description": "**URL для получения callback уведомлений.**\n\nОпциональный URL, на который будут передаваться POST запросы с информацией о статусе доставки SMS. Если не указан, уведомления не будут передаваться.\n\n**Формат:** Валидный URI (http:// или https://)\n\n**Примеры:**\n* `http://sms.devhosting.datacenter.by`\n* `https://example.com/sms/callback`\n\n**Что будет передано на callback_url:**\nPOST запрос с объектом CallbackNotification. Уведомления передаются в 4 этапа:\n\n**Этап 1: Обработка рассылки**\nУведомление о начале обработки рассылки (содержит `mailingListStatus: \"Обрабатывается\"`, `idStatus: 1391`).\n\n**Этап 2: Получение статусов по каждому телефону (передача)**\nДля каждого номера телефона передается уведомление о том, что сообщение передано оператору (содержит `mailingStatus: \"Отправлено\"`, `idStatus: 1385`, `phoneNumber`).\n\n**Этап 3: Получение статуса что рассылка передана**\nОбщее уведомление о том, что вся рассылка передана оператору (содержит `mailingListStatus: \"Отправлено\"`, `idStatus: 1385`).\n\n**Этап 4: Получение статусов по каждому телефону (результат рассылки)**\nДля каждого номера телефона отправляется финальное уведомление о результате доставки (содержит `mailingStatus` с финальным статусом, например \"Доставлено успешно\", `idStatus: 1386`, `phoneNumber`).\n\n**Типы уведомлений:**\n1. **Уведомление о статусе рассылки** (этапы 1 и 3) - содержит `mailingListStatus`\n2. **Уведомление о статусе переданных сообщений** (этапы 2 и 4) - содержит `mailingStatus` и `phoneNumber`\n\n**Основные статусы:**\n* Успешные: \"Отправлено\", \"Доставлено успешно\", \"Доставлено\", \"Прочитано\", \"Выполнено\"\n* В процессе: \"Обрабатывается\", \"Ожидает модерации\", \"Не прочитано\"\n* Ошибки: \"Не доставлено\", \"Ошибка\", \"Нет маршрута\", \"Таймаут\", \"Время истекло\"\n* Валидационные ошибки: \"Невалидный номер получателя\", \"Текст сообщения пуст\", \"Слишком длинное значение\" и др. (idStatus: 1425-1438)\n\n**Подробное описание этапов и примеры см. в схеме CallbackNotification.**\n\n**Важно:**\n* URL должен быть доступен из интернета\n* Рекомендуется использовать HTTPS для безопасности\n* Сервер должен отвечать статусом 200 OK на callback запросы",
            "example": "http://sms.devhosting.datacenter.by"
          },
          "ukazhite_nomera_telefonov_do_10_nomerov": {
            "type": "array",
            "description": "**Массив номеров телефонов получателей.**\n\nСписок номеров телефонов, на которые будет передано SMS-сообщение. Все номера должны быть в международном формате Беларуси.\n\n**Формат номеров:**\n* Международный формат **без знака '+'**\n* Начинается с кода страны 375\n* За ним следует 9 цифр\n* Общая длина: 12 цифр\n* Формат: `375XXXXXXXXX`\n\n**Ограничения:**\n* Минимум: 1 номер\n* Максимум: 10 номеров\n* Все номера должны быть валидными\n\n**Примеры валидных номеров:**\n* `375291234567` (МТС)\n* `375331234568` (Velcom)\n* `375336627600` (A1)\n\n**Пример массива:**\n```json\n[\n  \"375291234567\",\n  \"375331234568\",\n  \"375336627600\"\n]\n```",
            "items": {
              "type": "string",
              "pattern": "^375\\d{9}$",
              "description": "Номер телефона в формате 375XXXXXXXXX (международный формат Беларуси). Должен начинаться с 375 и содержать ровно 12 цифр."
            },
            "minItems": 1,
            "maxItems": 10,
            "example": ["375291234567", "375331234568"]
          }
        }
      },
      "SMSResponse": {
        "type": "object",
        "description": "**Учебная схема:** Ответ при успешной передаче SMS.\n\nДемонстрирует:\n* Простую схему ответа с одним обязательным полем\n* Использование UUID для идентификаторов\n* Минималистичный формат ответа\n\n**Пример ответа:**\n```json\n{\n  \"sid\": \"cfa49af7-5051-4e97-9101-d0017898aca7\"\n}\n```\n\n**Использование sid:**\n* Сохраните sid для отслеживания статуса рассылки\n* Используйте sid при обращении в поддержку\n* Если указан callback_url, sid будет включен в уведомления о статусе",
        "required": ["sid"],
        "properties": {
          "sid": {
            "type": "string",
            "format": "uuid",
            "description": "**Идентификатор созданной рассылки (Submission ID).**\n\nУникальный идентификатор, присвоенный созданной SMS рассылке. Используется для отслеживания статуса доставки и идентификации рассылки в системе.\n\n**Формат:** UUID v4 (например: cfa49af7-5051-4e97-9101-d0017898aca7)\n\n**Пример:**\n```json\n\"sid\": \"cfa49af7-5051-4e97-9101-d0017898aca7\"\n```\n\n**Использование:**\n* Сохраните sid для последующего отслеживания\n* Используйте sid при обращении в службу поддержки\n* sid будет включен в callback уведомления (если указан callback_url)",
            "example": "cfa49af7-5051-4e97-9101-d0017898aca7"
          }
        }
      },
      "CallbackNotification": {
        "type": "object",
        "description": "**Учебная схема:** Уведомление о статусе доставки SMS.\n\nДемонстрирует:\n* Структуру callback уведомлений\n* Два типа уведомлений: о статусе рассылки и о статусе отдельных сообщений\n* Формат даты и времени в уведомлениях\n* Процесс передачи статусов в 4 этапа\n\n**Когда передается:**\nPOST запрос с этим объектом передается на указанный callback_url при изменении статуса доставки SMS.\n\n**Процесс передачи статусов (4 этапа):**\n\n**Этап 1: Обработка рассылки**\nУведомление о начале обработки рассылки. Содержит общий статус рассылки.\n```json\n{\n  \"sid\": \"3deade33-f704-4835-b31f-f22e79197b7f\",\n  \"name\": \"Заголовок SMS 6\",\n  \"textMessage\": \"Текст сообщения\",\n  \"dateTime\": \"2026-01-20 14:52:13.832676\",\n  \"mailingListStatus\": \"Обрабатывается\",\n  \"idStatus\": 1391\n}\n```\n\n**Этап 2: Получение статусов по каждому телефону (передача)**\nДля каждого номера телефона передается уведомление о том, что сообщение передано оператору.\n```json\n{\n  \"sid\": \"3deade33-f704-4835-b31f-f22e79197b7f\",\n  \"name\": \"Заголовок SMS 6\",\n  \"textMessage\": \"Текст сообщения\",\n  \"dateTime\": \"2026-01-20 14:52:13.839318\",\n  \"mailingStatus\": \"Отправлено\",\n  \"idStatus\": 1385,\n  \"phoneNumber\": \"375336627600\"\n}\n```\n\n**Этап 3: Получение статуса что рассылка передана**\nОбщее уведомление о том, что вся рассылка передана оператору.\n```json\n{\n  \"sid\": \"3deade33-f704-4835-b31f-f22e79197b7f\",\n  \"name\": \"Заголовок SMS 6\",\n  \"textMessage\": \"Текст сообщения\",\n  \"dateTime\": \"2026-01-20 14:52:13.843739\",\n  \"mailingListStatus\": \"Отправлено\",\n  \"idStatus\": 1385\n}\n```\n\n**Этап 4: Получение статусов по каждому телефону (результат рассылки)**\nДля каждого номера телефона передается финальное уведомление о результате доставки (доставлено успешно, не доставлено и т.д.).\n```json\n{\n  \"sid\": \"3deade33-f704-4835-b31f-f22e79197b7f\",\n  \"name\": \"Заголовок SMS 6\",\n  \"textMessage\": \"Текст сообщения\",\n  \"dateTime\": \"2026-01-20 15:00:04.495274\",\n  \"mailingStatus\": \"Доставлено успешно\",\n  \"idStatus\": 1386,\n  \"phoneNumber\": \"375336627600\"\n}\n```\n\n**Типы уведомлений:**\n1. **Уведомление о статусе рассылки** - содержит `mailingListStatus` (этапы 1 и 3)\n2. **Уведомление о статусе переданных сообщений** - содержит `mailingStatus` и `phoneNumber` (этапы 2 и 4)",
        "required": ["sid", "name", "textMessage", "dateTime", "idStatus"],
        "properties": {
          "sid": {
            "type": "string",
            "format": "uuid",
            "description": "**Идентификатор рассылки.**\n\nИдентификатор рассылки, который был возвращен при создании SMS. Используется для связи уведомления с исходной рассылкой.\n\n**Пример:**\n```json\n\"sid\": \"3deade33-f704-4835-b31f-f22e79197b7f\"\n```",
            "example": "3deade33-f704-4835-b31f-f22e79197b7f"
          },
          "name": {
            "type": "string",
            "description": "**Заголовок SMS-сообщения.**\n\nЗаголовок SMS, который был указан при создании рассылки.\n\n**Пример:**\n```json\n\"name\": \"Заголовок SMS 6\"\n```",
            "example": "Заголовок SMS 6"
          },
          "textMessage": {
            "type": "string",
            "description": "**Текст SMS-сообщения.**\n\nТекст сообщения, который был указан при создании рассылки.\n\n**Пример:**\n```json\n\"textMessage\": \"Текст сообщения\"\n```",
            "example": "Текст сообщения"
          },
          "dateTime": {
            "type": "string",
            "description": "**Дата и время изменения статуса.**\n\nДата и время, когда произошло изменение статуса. Формат: `YYYY-MM-DD HH:mm:ss.ffffff` (микросекунды).\n\n**Пример:**\n```json\n\"dateTime\": \"2026-01-20 14:52:13.832676\"\n```",
            "example": "2026-01-20 14:52:13.832676"
          },
          "mailingListStatus": {
            "type": "string",
            "description": "**Статус рассылки.**\n\nСтатус всей рассылки в целом. Присутствует в уведомлениях о статусе рассылки.\n\n**Возможные значения:**\n* `Не обрабатывалась` (idStatus: 1383)\n* `Отправлено` (idStatus: 1384, 1385, 1392)\n* `Доставлено успешно` (idStatus: 1386)\n* `Не доставлено` (idStatus: 1387, 1396)\n* `Выполнено` (idStatus: 1388)\n* `В процессе удаления` (idStatus: 1389)\n* `Ожидает модерации` (idStatus: 1390)\n* `Обрабатывается` (idStatus: 1391)\n* `Доставлено` (idStatus: 1393)\n* `Не прочитано` (idStatus: 1394)\n* `Прочитано` (idStatus: 1395)\n* `Ошибка` (idStatus: 1397)\n* `Остановлено` (idStatus: 1398)\n* `Нет маршрута` (idStatus: 1399)\n* `Двойник` (idStatus: 1400)\n* `Таймаут` (idStatus: 1401)\n* `Переход` (idStatus: 1402)\n* `Время истекло` (idStatus: 1403)\n* `Обязательный параметр отсутствует или имеет пустое значение` (idStatus: 1425)\n* `Слишком длинное значение` (idStatus: 1426)\n* `Невалидная дата/время. Ожидается формат \"yyyy-mm-dd hh:ii:ss\"` (idStatus: 1427)\n* `Неправильный URL` (idStatus: 1428)\n* `Значение выходит за границы допустимого диапазона` (idStatus: 1429)\n* `Дубликат сообщения` (idStatus: 1430)\n* `Невалидный номер получателя` (idStatus: 1431)\n* `Номер получателя в стоп-листе (пользовательский)` (idStatus: 1432)\n* `Номер получателя в стоп-листе (глобальный)` (idStatus: 1433)\n* `Номер получателя относится к запрещенному оператору` (idStatus: 1434)\n* `Имя отправителя недоступно` (idStatus: 1435)\n* `Текст сообщения пуст` (idStatus: 1436)\n* `Текст сообщения содержит стоп-слово` (idStatus: 1437)\n* `Невалидное время отправки. Ожидается формат \"yyyy-mm-dd hh:ii:00\"` (idStatus: 1438)\n\n**Пример:**\n```json\n\"mailingListStatus\": \"Обрабатывается\"\n```",
            "example": "Обрабатывается"
          },
          "mailingStatus": {
            "type": "string",
            "description": "**Статус состояния рассылки.**\n\nСтатус состояния рассылки для номера телефона. Присутствует в уведомлениях о статусе переданных сообщений.\n\n**Возможные значения:**\n* `Не обрабатывалась` (idStatus: 1383)\n* `Отправлено` (idStatus: 1384, 1385, 1392)\n* `Доставлено успешно` (idStatus: 1386)\n* `Не доставлено` (idStatus: 1387, 1396)\n* `Выполнено` (idStatus: 1388)\n* `В процессе удаления` (idStatus: 1389)\n* `Ожидает модерации` (idStatus: 1390)\n* `Обрабатывается` (idStatus: 1391)\n* `Доставлено` (idStatus: 1393)\n* `Не прочитано` (idStatus: 1394)\n* `Прочитано` (idStatus: 1395)\n* `Ошибка` (idStatus: 1397)\n* `Остановлено` (idStatus: 1398)\n* `Нет маршрута` (idStatus: 1399)\n* `Двойник` (idStatus: 1400)\n* `Таймаут` (idStatus: 1401)\n* `Переход` (idStatus: 1402)\n* `Время истекло` (idStatus: 1403)\n* `Обязательный параметр отсутствует или имеет пустое значение` (idStatus: 1425)\n* `Слишком длинное значение` (idStatus: 1426)\n* `Невалидная дата/время. Ожидается формат \"yyyy-mm-dd hh:ii:ss\"` (idStatus: 1427)\n* `Неправильный URL` (idStatus: 1428)\n* `Значение выходит за границы допустимого диапазона` (idStatus: 1429)\n* `Дубликат сообщения` (idStatus: 1430)\n* `Невалидный номер получателя` (idStatus: 1431)\n* `Номер получателя в стоп-листе (пользовательский)` (idStatus: 1432)\n* `Номер получателя в стоп-листе (глобальный)` (idStatus: 1433)\n* `Номер получателя относится к запрещенному оператору` (idStatus: 1434)\n* `Имя отправителя недоступно` (idStatus: 1435)\n* `Текст сообщения пуст` (idStatus: 1436)\n* `Текст сообщения содержит стоп-слово` (idStatus: 1437)\n* `Невалидное время отправки. Ожидается формат \"yyyy-mm-dd hh:ii:00\"` (idStatus: 1438)\n\n**Пример:**\n```json\n\"mailingStatus\": \"Отправлено\"\n```",
            "example": "Отправлено"
          },
          "idStatus": {
            "type": "integer",
            "format": "int32",
            "description": "**Идентификатор статуса.**\n\nЧисловой идентификатор статуса в системе. Используется для внутренней идентификации статусов.\n\n**Возможные значения:**\n* `1383` - Не обрабатывалась\n* `1384`, `1385`, `1392` - Отправлено\n* `1386` - Доставлено успешно\n* `1387`, `1396` - Не доставлено\n* `1388` - Выполнено\n* `1389` - В процессе удаления\n* `1390` - Ожидает модерации\n* `1391` - Обрабатывается\n* `1393` - Доставлено\n* `1394` - Не прочитано\n* `1395` - Прочитано\n* `1397` - Ошибка\n* `1398` - Остановлено\n* `1399` - Нет маршрута\n* `1400` - Двойник\n* `1401` - Таймаут\n* `1402` - Переход\n* `1403` - Время истекло\n* `1425` - Обязательный параметр отсутствует или имеет пустое значение\n* `1426` - Слишком длинное значение\n* `1427` - Невалидная дата/время. Ожидается формат \"yyyy-mm-dd hh:ii:ss\"\n* `1428` - Неправильный URL\n* `1429` - Значение выходит за границы допустимого диапазона\n* `1430` - Дубликат сообщения\n* `1431` - Невалидный номер получателя\n* `1432` - Номер получателя в стоп-листе (пользовательский)\n* `1433` - Номер получателя в стоп-листе (глобальный)\n* `1434` - Номер получателя относится к запрещенному оператору\n* `1435` - Имя отправителя недоступно\n* `1436` - Текст сообщения пуст\n* `1437` - Текст сообщения содержит стоп-слово\n* `1438` - Невалидное время отправки. Ожидается формат \"yyyy-mm-dd hh:ii:00\"\n\n**Пример:**\n```json\n\"idStatus\": 1391\n```",
            "example": 1391
          },
          "phoneNumber": {
            "type": "string",
            "description": "**Номер телефона получателя.**\n\nНомер телефона, для которого изменился статус передачи. Присутствует только в уведомлениях о статусе переданных сообщений. Формат: международный формат Беларуси (375XXXXXXXXX).\n\n**Пример:**\n```json\n\"phoneNumber\": \"375336627600\"\n```",
            "example": "375336627600"
          }
        }
      },
      "Error": {
        "type": "object",
        "description": "**Учебная схема:** Стандартная ошибка API.\n\nДемонстрирует:\n* Базовую структуру ответа об ошибке\n* Использование для различных типов ошибок (401, 403, 500)\n* Простой формат сообщений об ошибках\n\n**Пример ошибки:**\n```json\n{\n  \"message\": \"The 'restful post webform_rest_submit' permission is required.\"\n}\n```\n\n**Используется для:**\n* Ошибок авторизации (401)\n* Ошибок доступа (403)\n* Внутренних ошибок сервера (500)",
        "required": ["message"],
        "properties": {
          "message": {
            "type": "string",
            "description": "**Текстовое сообщение об ошибке.**\n\nЧеловекочитаемое описание причины ошибки. Помогает понять, что пошло не так и как исправить проблему.\n\n**Примеры сообщений:**\n* \"The 'restful post webform_rest_submit' permission is required.\" - отсутствуют права доступа\n* \"Invalid CSRF token\" - неверный CSRF токен\n* \"Internal server error\" - внутренняя ошибка сервера",
            "example": "The 'restful post webform_rest_submit' permission is required."
          }
        }
      },
      "SMSStatusResponse": {
        "type": "object",
        "description": "**Учебная схема:** Ответ с информацией о статусе рассылки.\n\nДемонстрирует:\n* Полную информацию о статусе рассылки\n* Массив статусов по каждому номеру телефона\n* Использование вложенных объектов в массиве\n* Комбинацию строковых и числовых идентификаторов статусов\n\n**Пример ответа:**\n```json\n{\n  \"sid\": \"f86ff31c-6fb9-457e-b632-8448ab75505c\",\n  \"name\": \"Заголовок SMS 6\",\n  \"textMessage\": \"Текст сообщения\",\n  \"dateTime\": \"2026-01-30T14:38:18\",\n  \"mailingListStatus\": \"Отправлено\",\n  \"idStatus\": \"1385\",\n  \"phoneList\": [\n    {\n      \"phoneNumber\": \"375336627600\",\n      \"status\": \"1386\",\n      \"statusName\": \"Доставлено успешно\"\n    }\n  ]\n}\n```",
        "required": ["sid", "name", "textMessage", "dateTime", "mailingListStatus", "idStatus", "phoneList"],
        "properties": {
          "sid": {
            "type": "string",
            "format": "uuid",
            "description": "**Идентификатор рассылки.**\n\nУникальный идентификатор рассылки, который был возвращен при создании SMS.\n\n**Пример:**\n```json\n\"sid\": \"3deade33-f704-4835-b31f-f22e79197b7f\"\n```",
            "example": "3deade33-f704-4835-b31f-f22e79197b7f"
          },
          "name": {
            "type": "string",
            "description": "**Заголовок SMS-сообщения.**\n\nЗаголовок SMS, который был указан при создании рассылки.\n\n**Пример:**\n```json\n\"name\": \"Заголовок SMS 6\"\n```",
            "example": "Заголовок SMS 6"
          },
          "textMessage": {
            "type": "string",
            "description": "**Текст SMS-сообщения.**\n\nТекст сообщения, который был указан при создании рассылки.\n\n**Пример:**\n```json\n\"textMessage\": \"Текст сообщения\"\n```",
            "example": "Текст сообщения"
          },
          "dateTime": {
            "type": "string",
            "format": "date-time",
            "description": "**Дата и время отправки рассылки.**\n\nДата и время, когда была отправлена рассылка. Формат: ISO 8601 без указания часового пояса.\n\n**Пример:**\n```json\n\"dateTime\": \"2026-01-30T14:38:18\"\n```",
            "example": "2026-01-30T14:38:18"
          },
          "mailingListStatus": {
            "type": "string",
            "description": "**Статус рассылки.**\n\nОбщий статус всей рассылки. Возможные значения описаны в схеме CallbackNotification.\n\n**Пример:**\n```json\n\"mailingListStatus\": \"Отправлено\"\n```",
            "example": "Отправлено"
          },
          "idStatus": {
            "type": "string",
            "description": "**Идентификатор статуса рассылки.**\n\nЧисловой идентификатор статуса рассылки в виде строки. Возможные значения описаны в схеме CallbackNotification.\n\n**Пример:**\n```json\n\"idStatus\": \"1385\"\n```",
            "example": "1385"
          },
          "phoneList": {
            "type": "array",
            "description": "**Массив статусов по каждому номеру телефона.**\n\nСписок объектов, содержащих информацию о статусе доставки для каждого номера телефона из рассылки.\n\n**Пример:**\n```json\n[\n  {\n    \"phoneNumber\": \"375336627600\",\n    \"status\": \"1386\",\n    \"statusName\": \"Доставлено успешно\"\n  }\n]\n```",
            "items": {
              "type": "object",
              "required": ["phoneNumber", "status", "statusName"],
              "properties": {
                "phoneNumber": {
                  "type": "string",
                  "description": "**Номер телефона получателя.**\n\nНомер телефона в международном формате Беларуси (375XXXXXXXXX).\n\n**Пример:**\n```json\n\"phoneNumber\": \"375336627600\"\n```",
                  "example": "375336627600",
                  "pattern": "^375\\d{9}$"
                },
                "status": {
                  "type": "string",
                  "description": "**Идентификатор статуса доставки.**\n\nЧисловой идентификатор статуса доставки для данного номера в виде строки. Возможные значения описаны в схеме CallbackNotification (idStatus: 1383-1403, 1425-1438).\n\n**Пример:**\n```json\n\"status\": \"1386\"\n```",
                  "example": "1386"
                },
                "statusName": {
                  "type": "string",
                  "description": "**Название статуса доставки.**\n\nЧеловекочитаемое название статуса доставки для данного номера. Соответствует статусу с идентификатором из поля `status`.\n\n**Возможные значения:**\n* \"Не обрабатывалась\", \"Отправлено\", \"Доставлено успешно\", \"Не доставлено\", \"Выполнено\", \"В процессе удаления\", \"Ожидает модерации\", \"Обрабатывается\", \"Доставлено\", \"Не прочитано\", \"Прочитано\", \"Ошибка\", \"Остановлено\", \"Нет маршрута\", \"Двойник\", \"Таймаут\", \"Переход\", \"Время истекло\" и другие (см. схему CallbackNotification)\n\n**Пример:**\n```json\n\"statusName\": \"Доставлено успешно\"\n```",
                  "example": "Доставлено успешно"
                }
              }
            }
          }
        }
      }
    }
  }
}
