Шаблоны уведомлений

Каждая операция ниже сгенерирована из OpenAPI v2 и содержит параметры, поля запроса, поля ответа, ошибки и примеры.

Как устроены уведомления

Шаблон задаёт канал, тип документа, целевой статус, задержку, условие, текст и печатное вложение. Привязка связывает его с клиентским складом и получателями. Это два отдельных ресурса: создание шаблона не создаёт привязку и не является командой немедленной отправки. Для рабочего сценария нужны активный шаблон, активная привязка и подходящее событие/документ. Настройки доставки и работа фоновой обработки проверяются отдельно от успешного CRUD-ответа.

Права и область данных

viewadmin, warehouse_manager, warehouse_worker, clients
create / updateadmin, warehouse_manager, clients
delete templateadmin, warehouse_manager
ПривязкиСоздание, изменение и удаление привязки требуют update для модуля notifications.
Access V2Указанные роли — резервные правила; явные решения Access V2 проверяются первыми. Все шаблоны ограничены доменом пользователя. domain_id, owner_user_id и event назначаются сервером; передать другой домен в теле нельзя.

Не путайте два статуса

document_status_idСтатус приёмки или заказа, при котором должно сработать уведомление. Должен существовать в справочнике выбранного document_type. Например, приёмка 4 — закрыта.
status_idВключение самого шаблона или привязки: 0 — выключен, 1 — включен. По умолчанию при создании 1.
eventdocument.status_changed
delay_hours0–8760 часов; по умолчанию 0. Задержка не гарантирует точное время фактической доставки.
start_document_idНеобязательная нижняя граница ID документов, целое число ≥1; null снимает ограничение.
attachment_print_template_idПечатный шаблон текущего домена и соответствующего модуля order/acceptance. При смене типа документа проверьте вложение; null удаляет привязку вложения.
conditions.acceptance_has_discrepancyПрименяется только к закрытой приёмке (document_type=acceptance, document_status_id=4): true — есть расхождения, false — нет. {} или null убирает условие. Неизвестные и неприменимые ключи нормализуются и не сохраняются; всегда проверяйте возвращённый conditions.

Сценарий: письмо о закрытой приёмке

  1. Создайте шаблон POST /api/v2/notification-templates с телом ниже. Сохраните data.id из ответа 201.
{
  "data": {
    "name": "Приёмка закрыта с расхождениями",
    "channel": "email",
    "document_type": "acceptance",
    "document_status_id": 4,
    "delay_hours": 0,
    "conditions": {
      "acceptance_has_discrepancy": true
    },
    "subject": "Приёмка #{doc_id}: {doc_status_name}",
    "body_html": "<p>Склад: {wh_name}. Принято: {total_accepted_qty}. Расхождение: {total_difference_qty}.</p>",
    "status_id": 1
  }
}
  1. Для полученного ID вызовите POST /api/v2/notification-templates/{id}/bindings. warehouse_id замените ID доступного клиентского склада (тип 2); адрес — реальным согласованным получателем.
{
  "data": {
    "warehouse_id": 42,
    "recipients": [
      "warehouse@example.com"
    ],
    "status_id": 1
  }
}
  1. Прочитайте GET /api/v2/notification-templates/{id}; проверьте оба status_id, conditions, bindings_count и bindings. Сохранённый текст может отличаться от входного: HTML очищается.
  2. Проверьте обработку подходящего документа и фактическую доставку штатными средствами уведомлений. Ответ 201 подтверждает сохранение настроек, а не доставку письма.

Получатели и внутренние сообщения

recipientsДо 100 email-адресов, каждый до 255 символов; для email-канала нужен хотя бы один. Адреса приводятся к нижнему регистру и очищаются от повторов.
warehouse_usersПолучатели определяются по пользователям склада.
domain_usersПолучатели определяются по пользователям домена.
explicitДля internal-канала требуется непустой internal_user_ids: до 1000 ID пользователей текущего домена. Чужой ID приводит к 422.
warehouse_idОдин склад можно привязать к одному шаблону только один раз. Другой шаблон может иметь собственную привязку того же склада. Вложенный bindingId всегда проверяется в контексте родительского шаблона.
{
  "data": {
    "warehouse_id": 42,
    "internal_recipient_mode": "explicit",
    "internal_user_ids": [
      15,
      16
    ],
    "status_id": 1
  }
}

Этот пример привязки используйте для шаблона channel=internal. Если меняете канал существующего шаблона, отдельно проверьте и обновите его получателей: PATCH шаблона не перенастраивает привязки автоматически.

Частичное изменение, отключение и удаление

PUT и PATCH сохраняют пропущенные поля. Для временного отключения передайте {"data":{"status_id":0}} в шаблон или конкретную привязку. Для очистки массива пользователей передайте [], для nullable-поля — null. DELETE шаблона транзакционно удаляет шаблон и его привязки, но сохраняет историю сообщений. DELETE привязки удаляет только выбранную привязку; родитель остаётся.

{
  "data": null,
  "meta": {
    "api_version": "v2",
    "deleted": true
  }
}

Переменные приёмки

{doc_id}ID накладной
{doc_ext_id}Внешний ID накладной
{doc_barcode}Штрихкод документа
{doc_date}Дата документа
{doc_date_start}Дата начала приемки
{doc_date_finish}Дата закрытия приемки
{doc_status_id}ID статуса документа
{doc_status_name}Название статуса документа
{current_date}Текущая дата
{current_datetime}Текущие дата и время
{shop_id}ID магазина
{shop_name}Название магазина
{wh_id}ID склада
{wh_name}Название склада
{total_expected_qty}Ожидаемое количество
{total_accepted_qty}Принятое количество
{total_difference_qty}Расхождение по количеству
{executor_name}Название хранителя
{executor_phone}Телефон хранителя
{executor_email}Электронная почта хранителя
{executor_address}Адрес хранителя
{executor_contact_person}Контакт хранителя
{customer_name}Название клиента
{customer_phone}Телефон клиента
{customer_email}Электронная почта клиента
{customer_address}Адрес клиента
{customer_contact_person}Контакт клиента
{dog_id}Номер договора
{dog_date}Дата договора

Переменные заказа

{doc_id}ID заказа
{order_id}ID заказа
{doc_ext_id}Внешний ID заказа
{order_ext_id}Внешний ID заказа
{doc_status_id}ID статуса заказа
{doc_status_name}Название статуса заказа
{order_status_id}ID статуса заказа
{order_status_name}Название статуса заказа
{doc_date}Дата заказа
{order_date}Дата заказа
{order_date_send}Плановая дата отправки
{current_date}Текущая дата
{current_datetime}Текущие дата и время
{shop_id}ID магазина
{shop_name}Название магазина
{wh_id}ID склада
{wh_name}Название склада
{order_count}Количество товаров в заказе
{order_sum}Сумма заказа
{order_cod_sum}Сумма наложенного платежа
{order_shipping_price}Стоимость доставки для клиента
{order_shipping_cost}Себестоимость доставки
{ds_name}Служба доставки
{track_number}Трек-номер
{buyer_first_name}Имя покупателя
{buyer_second_name}Отчество покупателя
{buyer_last_name}Фамилия покупателя
{buyer_phone}Телефон покупателя
{buyer_email}Электронная почта покупателя
{buyer_zip}Индекс покупателя
{buyer_address}Адрес покупателя
{executor_name}Название хранителя
{executor_phone}Телефон хранителя
{executor_email}Электронная почта хранителя
{executor_address}Адрес хранителя
{executor_contact_person}Контакт хранителя
{customer_name}Название клиента
{customer_phone}Телефон клиента
{customer_email}Электронная почта клиента
{customer_address}Адрес клиента
{customer_contact_person}Контакт клиента
{dog_id}Номер договора
{dog_date}Дата договора

Типовые причины 422

Статус относится к другому типу документа; склад недоступен или не клиентский; склад уже привязан; пустой recipients для email; пустой internal_user_ids при explicit; пользователь другого домена; печатный шаблон другого домена/модуля; превышены длина имени (150), темы (255), задержка (8760) или размеры массивов. Поля ответа ошибки находятся в errors; исправляйте указанные поля и перечитывайте сохранённый ресурс.

Шаблоны уведомлений

GET /api/v2/notification-templates

Получить список шаблонов уведомлений

operationIdlistNotificationTemplates
РазделШаблоны уведомлений
БезопасностьbearerAuth

Returns a tenant-scoped, paginated list of document-status notification templates.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/notification-templates" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
page query нет integer:int64 form true min: 1 Номер страницы. Этот фильтр также можно передать как filter[page], если это поддерживает Laravel query adapter. 1
per_page query нет integer:int64 form true min: 1
max: 250
Number of templates per page. Default 50; maximum 250. The same filter may also be sent as filter[per_page] where supported by the Laravel query adapter. 50
sort query нет string form false Comma-separated sort fields: id, name, channel, document_type, document_status_id, delay_hours, status_id, created_at, updated_at. The same filter may also be sent as filter[sort] where supported by the Laravel query adapter. "-id"
include query нет enum form false enum: bindings Set to bindings to include warehouse bindings in every list item. The same filter may also be sent as filter[include] where supported by the Laravel query adapter. "bindings"
filter[id] query нет integer:int64 min: 0 Exact template ID. 41
filter[name] query нет string Case-insensitive partial template name. "Acceptance closed"
filter[channel] query нет enum enum: email, internal Exact delivery channel. "email"
filter[document_type] query нет enum enum: acceptance, order Exact document type. "acceptance"
filter[document_status_id] query нет integer:int64 min: 0 Exact target document status ID. 4
filter[status_id] query нет integer:int64 min: 0 Exact template status: 0 or 1. 1
filter[owner_user_id] query нет integer:int64 min: 0 Exact owner user ID. 15
created_at_from query нет string:date-time form true Created-at lower boundary. The same filter may also be sent as filter[created_at_from] where supported by the Laravel query adapter. "2026-07-01T00:00:00Z"
created_at_to query нет string:date-time form true Created-at upper boundary. The same filter may also be sent as filter[created_at_to] where supported by the Laravel query adapter. "2026-07-31T23:59:59Z"
updated_at_from query нет string:date-time form true Updated-at lower boundary. The same filter may also be sent as filter[updated_at_from] where supported by the Laravel query adapter. "2026-07-01T00:00:00Z"
updated_at_to query нет string:date-time form true Updated-at upper boundary. The same filter may also be sent as filter[updated_at_to] where supported by the Laravel query adapter. "2026-07-31T23:59:59Z"

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да array<NotificationTemplate>
data[] нет NotificationTemplate Template used when an acceptance or order enters the configured status. The bindings field is returned by the item endpoint and by list requests with include=bindings.
data[].id да integer:int64 readOnly min: 1 1001
data[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].domain_id да integer:int64 min: 1 3
data[].owner_user_id да integer:int64 | null min: 1 15
data[].name да string "Acceptance closed"
data[].event да enum enum: document.status_changed "document.status_changed"
data[].channel да enum enum: email, internal "email"
data[].document_type да enum enum: acceptance, order "acceptance"
data[].document_status_id да integer:int64 min: 0 4
data[].delay_hours да integer:int64 min: 0
max: 8760
0
data[].start_document_id да integer:int64 | null min: 1 1000
data[].conditions да object {"acceptance_has_discrepancy":true}
data[].subject да string | null maxLength: 255 "Document \#{doc_id}: {doc_status_name}"
data[].body_html да string | null "<p>Document \#{doc_id} is closed.</p>"
data[].body_text да string | null "Document \#{doc_id} is closed."
data[].attachment_print_template_id да integer:int64 | null min: 1 12
data[].status_id да enum:int64 enum: 0, 1 1
data[].bindings_count да integer:int64 min: 0 1
data[].bindings нет array<NotificationTemplateBinding>
data[].bindings[] нет NotificationTemplateBinding Warehouse and recipient binding for one notification template.
data[].bindings[].id да integer:int64 readOnly min: 1 1001
data[].bindings[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].bindings[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].bindings[].template_id да integer:int64 min: 1 41
data[].bindings[].domain_id да integer:int64 min: 1 3
data[].bindings[].warehouse_id да integer:int64 min: 1 42
data[].bindings[].warehouse нет object | null
data[].bindings[].warehouse.id да integer:int64 min: 1 42
data[].bindings[].warehouse.name да string "Client Warehouse Sofia"
data[].bindings[].recipients да array<string:email> maxItems: 100
data[].bindings[].recipients[] нет string:email "client@example.com"
data[].bindings[].internal_recipient_mode да enum enum: warehouse_users, domain_users, explicit "warehouse_users"
data[].bindings[].internal_user_ids да array<integer:int64> maxItems: 1000
data[].bindings[].internal_user_ids[] нет integer:int64 min: 1 15
data[].bindings[].status_id да enum:int64 enum: 0, 1 1
links да PaginationLinks
links.first да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=1"
links.last да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
links.prev да string:uri | null
links.next да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
meta да PaginationMeta
meta.api_version да enum enum: v2 "v2"
meta.current_page да integer:int32 min: 1 1
meta.from да integer:int32 | null min: 1 1
meta.last_page да integer:int32 min: 1 2
meta.path да string:uri "https://betawms.ffcdek.ru/api/v2/orders"
meta.per_page да integer:int32 min: 1 50
meta.to да integer:int32 | null min: 1 50
meta.total да integer:int32 min: 0 73

Примеры ответа

success

{
  "data": [
    {
      "id": 41,
      "domain_id": 3,
      "owner_user_id": 15,
      "name": "Acceptance closed",
      "event": "document.status_changed",
      "channel": "email",
      "document_type": "acceptance",
      "document_status_id": 4,
      "delay_hours": 0,
      "start_document_id": null,
      "conditions": {
        "acceptance_has_discrepancy": true
      },
      "subject": "Document #{doc_id}: {doc_status_name}",
      "body_html": "<p>Document #{doc_id} is closed.</p>",
      "body_text": null,
      "attachment_print_template_id": 12,
      "status_id": 1,
      "bindings_count": 1,
      "bindings": [
        {
          "id": 7,
          "template_id": 41,
          "domain_id": 3,
          "warehouse_id": 42,
          "warehouse": {
            "id": 42,
            "name": "Client Warehouse Sofia"
          },
          "recipients": [
            "client@example.com"
          ],
          "internal_recipient_mode": "warehouse_users",
          "internal_user_ids": [

          ],
          "status_id": 1,
          "created_at": "2026-09-17T09:00:00Z",
          "updated_at": "2026-09-17T09:00:00Z"
        }
      ],
      "created_at": "2026-09-17T09:00:00Z",
      "updated_at": "2026-09-17T09:00:00Z"
    }
  ],
  "links": {
    "first": "https://betawms.ffcdek.ru/api/v2/notification-templates?page=1",
    "last": "https://betawms.ffcdek.ru/api/v2/notification-templates?page=1",
    "prev": null,
    "next": null
  },
  "meta": {
    "api_version": "v2",
    "current_page": 1,
    "from": 1,
    "last_page": 1,
    "path": "https://betawms.ffcdek.ru/api/v2/notification-templates",
    "per_page": 50,
    "to": 1,
    "total": 1
  }
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
POST /api/v2/notification-templates

Создать шаблон уведомления

operationIdcreateNotificationTemplate
РазделШаблоны уведомлений
БезопасностьbearerAuth

Creates a notification template in the authenticated user domain. Domain, owner and event are assigned server-side.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request POST "${NWMS_BASE_URL}/api/v2/notification-templates" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

CreateNotificationTemplateRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да CreateNotificationTemplatePayload
data.name да string maxLength: 150 "Acceptance closed"
data.channel да enum enum: email, internal "email"
data.document_type да enum enum: acceptance, order "acceptance"
data.document_status_id да integer:int64 min: 0 4
data.delay_hours нет integer:int64 | null min: 0
max: 8760
0
data.start_document_id нет integer:int64 | null min: 1 1000
data.conditions нет object {"acceptance_has_discrepancy":true}
data.subject нет string | null maxLength: 255 "Document \#{doc_id}: {doc_status_name}"
data.body_html нет string | null "<p>Document \#{doc_id} is closed.</p>"
data.body_text нет string | null "Document \#{doc_id} is closed."
data.attachment_print_template_id нет integer:int64 | null min: 1 12
data.status_id нет enum:int64 enum: 0, 1 1

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

Пример

{
  "data": {
    "name": "Acceptance closed",
    "channel": "email",
    "document_type": "acceptance",
    "document_status_id": 4,
    "delay_hours": 0,
    "conditions": {
      "acceptance_has_discrepancy": true
    },
    "subject": "Document #{doc_id}: {doc_status_name}",
    "body_html": "<p>Document #{doc_id} is closed.</p>",
    "status_id": 1
  }
}

Ответы

201 Created.

Created.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да NotificationTemplate Template used when an acceptance or order enters the configured status. The bindings field is returned by the item endpoint and by list requests with include=bindings.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.domain_id да integer:int64 min: 1 3
data.owner_user_id да integer:int64 | null min: 1 15
data.name да string "Acceptance closed"
data.event да enum enum: document.status_changed "document.status_changed"
data.channel да enum enum: email, internal "email"
data.document_type да enum enum: acceptance, order "acceptance"
data.document_status_id да integer:int64 min: 0 4
data.delay_hours да integer:int64 min: 0
max: 8760
0
data.start_document_id да integer:int64 | null min: 1 1000
data.conditions да object {"acceptance_has_discrepancy":true}
data.subject да string | null maxLength: 255 "Document \#{doc_id}: {doc_status_name}"
data.body_html да string | null "<p>Document \#{doc_id} is closed.</p>"
data.body_text да string | null "Document \#{doc_id} is closed."
data.attachment_print_template_id да integer:int64 | null min: 1 12
data.status_id да enum:int64 enum: 0, 1 1
data.bindings_count да integer:int64 min: 0 1
data.bindings нет array<NotificationTemplateBinding>
data.bindings[] нет NotificationTemplateBinding Warehouse and recipient binding for one notification template.
data.bindings[].id да integer:int64 readOnly min: 1 1001
data.bindings[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.bindings[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.bindings[].template_id да integer:int64 min: 1 41
data.bindings[].domain_id да integer:int64 min: 1 3
data.bindings[].warehouse_id да integer:int64 min: 1 42
data.bindings[].warehouse нет object | null
data.bindings[].warehouse.id да integer:int64 min: 1 42
data.bindings[].warehouse.name да string "Client Warehouse Sofia"
data.bindings[].recipients да array<string:email> maxItems: 100
data.bindings[].recipients[] нет string:email "client@example.com"
data.bindings[].internal_recipient_mode да enum enum: warehouse_users, domain_users, explicit "warehouse_users"
data.bindings[].internal_user_ids да array<integer:int64> maxItems: 1000
data.bindings[].internal_user_ids[] нет integer:int64 min: 1 15
data.bindings[].status_id да enum:int64 enum: 0, 1 1
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 41,
    "domain_id": 3,
    "owner_user_id": 15,
    "name": "Acceptance closed",
    "event": "document.status_changed",
    "channel": "email",
    "document_type": "acceptance",
    "document_status_id": 4,
    "delay_hours": 0,
    "start_document_id": null,
    "conditions": {
      "acceptance_has_discrepancy": true
    },
    "subject": "Document #{doc_id}: {doc_status_name}",
    "body_html": "<p>Document #{doc_id} is closed.</p>",
    "body_text": null,
    "attachment_print_template_id": 12,
    "status_id": 1,
    "bindings_count": 1,
    "bindings": [
      {
        "id": 7,
        "template_id": 41,
        "domain_id": 3,
        "warehouse_id": 42,
        "warehouse": {
          "id": 42,
          "name": "Client Warehouse Sofia"
        },
        "recipients": [
          "client@example.com"
        ],
        "internal_recipient_mode": "warehouse_users",
        "internal_user_ids": [

        ],
        "status_id": 1,
        "created_at": "2026-09-17T09:00:00Z",
        "updated_at": "2026-09-17T09:00:00Z"
      }
    ],
    "created_at": "2026-09-17T09:00:00Z",
    "updated_at": "2026-09-17T09:00:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
GET /api/v2/notification-templates/{id}

Получить шаблон с привязками

operationIdgetNotificationTemplate
РазделШаблоны уведомлений
БезопасностьbearerAuth

Returns one visible template with its current warehouse bindings.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/notification-templates/41" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 Notification template ID. 41

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да NotificationTemplate Template used when an acceptance or order enters the configured status. The bindings field is returned by the item endpoint and by list requests with include=bindings.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.domain_id да integer:int64 min: 1 3
data.owner_user_id да integer:int64 | null min: 1 15
data.name да string "Acceptance closed"
data.event да enum enum: document.status_changed "document.status_changed"
data.channel да enum enum: email, internal "email"
data.document_type да enum enum: acceptance, order "acceptance"
data.document_status_id да integer:int64 min: 0 4
data.delay_hours да integer:int64 min: 0
max: 8760
0
data.start_document_id да integer:int64 | null min: 1 1000
data.conditions да object {"acceptance_has_discrepancy":true}
data.subject да string | null maxLength: 255 "Document \#{doc_id}: {doc_status_name}"
data.body_html да string | null "<p>Document \#{doc_id} is closed.</p>"
data.body_text да string | null "Document \#{doc_id} is closed."
data.attachment_print_template_id да integer:int64 | null min: 1 12
data.status_id да enum:int64 enum: 0, 1 1
data.bindings_count да integer:int64 min: 0 1
data.bindings нет array<NotificationTemplateBinding>
data.bindings[] нет NotificationTemplateBinding Warehouse and recipient binding for one notification template.
data.bindings[].id да integer:int64 readOnly min: 1 1001
data.bindings[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.bindings[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.bindings[].template_id да integer:int64 min: 1 41
data.bindings[].domain_id да integer:int64 min: 1 3
data.bindings[].warehouse_id да integer:int64 min: 1 42
data.bindings[].warehouse нет object | null
data.bindings[].warehouse.id да integer:int64 min: 1 42
data.bindings[].warehouse.name да string "Client Warehouse Sofia"
data.bindings[].recipients да array<string:email> maxItems: 100
data.bindings[].recipients[] нет string:email "client@example.com"
data.bindings[].internal_recipient_mode да enum enum: warehouse_users, domain_users, explicit "warehouse_users"
data.bindings[].internal_user_ids да array<integer:int64> maxItems: 1000
data.bindings[].internal_user_ids[] нет integer:int64 min: 1 15
data.bindings[].status_id да enum:int64 enum: 0, 1 1
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 41,
    "domain_id": 3,
    "owner_user_id": 15,
    "name": "Acceptance closed",
    "event": "document.status_changed",
    "channel": "email",
    "document_type": "acceptance",
    "document_status_id": 4,
    "delay_hours": 0,
    "start_document_id": null,
    "conditions": {
      "acceptance_has_discrepancy": true
    },
    "subject": "Document #{doc_id}: {doc_status_name}",
    "body_html": "<p>Document #{doc_id} is closed.</p>",
    "body_text": null,
    "attachment_print_template_id": 12,
    "status_id": 1,
    "bindings_count": 1,
    "bindings": [
      {
        "id": 7,
        "template_id": 41,
        "domain_id": 3,
        "warehouse_id": 42,
        "warehouse": {
          "id": 42,
          "name": "Client Warehouse Sofia"
        },
        "recipients": [
          "client@example.com"
        ],
        "internal_recipient_mode": "warehouse_users",
        "internal_user_ids": [

        ],
        "status_id": 1,
        "created_at": "2026-09-17T09:00:00Z",
        "updated_at": "2026-09-17T09:00:00Z"
      }
    ],
    "created_at": "2026-09-17T09:00:00Z",
    "updated_at": "2026-09-17T09:00:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
PUT /api/v2/notification-templates/{id}

Изменить шаблон уведомления

operationIdreplaceNotificationTemplate
РазделШаблоны уведомлений
БезопасностьbearerAuth

Updates the supplied template fields. Omitted fields remain unchanged.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request PUT "${NWMS_BASE_URL}/api/v2/notification-templates/41" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 Notification template ID. 41
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

UpdateNotificationTemplateRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да UpdateNotificationTemplatePayload
data.name нет string maxLength: 150 "Acceptance closed"
data.channel нет enum enum: email, internal "email"
data.document_type нет enum enum: acceptance, order "acceptance"
data.document_status_id нет integer:int64 min: 0 4
data.delay_hours нет integer:int64 | null min: 0
max: 8760
0
data.start_document_id нет integer:int64 | null min: 1 1000
data.conditions нет object {"acceptance_has_discrepancy":true}
data.subject нет string | null maxLength: 255 "Document \#{doc_id}: {doc_status_name}"
data.body_html нет string | null "<p>Document \#{doc_id} is closed.</p>"
data.body_text нет string | null "Document \#{doc_id} is closed."
data.attachment_print_template_id нет integer:int64 | null min: 1 12
data.status_id нет enum:int64 enum: 0, 1 1

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

Пример

{
  "data": {
    "name": "Acceptance closed",
    "channel": "email",
    "document_type": "acceptance",
    "document_status_id": 4,
    "delay_hours": 0,
    "conditions": {
      "acceptance_has_discrepancy": true
    },
    "subject": "Document #{doc_id}: {doc_status_name}",
    "body_html": "<p>Document #{doc_id} is closed.</p>",
    "status_id": 1
  }
}

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да NotificationTemplate Template used when an acceptance or order enters the configured status. The bindings field is returned by the item endpoint and by list requests with include=bindings.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.domain_id да integer:int64 min: 1 3
data.owner_user_id да integer:int64 | null min: 1 15
data.name да string "Acceptance closed"
data.event да enum enum: document.status_changed "document.status_changed"
data.channel да enum enum: email, internal "email"
data.document_type да enum enum: acceptance, order "acceptance"
data.document_status_id да integer:int64 min: 0 4
data.delay_hours да integer:int64 min: 0
max: 8760
0
data.start_document_id да integer:int64 | null min: 1 1000
data.conditions да object {"acceptance_has_discrepancy":true}
data.subject да string | null maxLength: 255 "Document \#{doc_id}: {doc_status_name}"
data.body_html да string | null "<p>Document \#{doc_id} is closed.</p>"
data.body_text да string | null "Document \#{doc_id} is closed."
data.attachment_print_template_id да integer:int64 | null min: 1 12
data.status_id да enum:int64 enum: 0, 1 1
data.bindings_count да integer:int64 min: 0 1
data.bindings нет array<NotificationTemplateBinding>
data.bindings[] нет NotificationTemplateBinding Warehouse and recipient binding for one notification template.
data.bindings[].id да integer:int64 readOnly min: 1 1001
data.bindings[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.bindings[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.bindings[].template_id да integer:int64 min: 1 41
data.bindings[].domain_id да integer:int64 min: 1 3
data.bindings[].warehouse_id да integer:int64 min: 1 42
data.bindings[].warehouse нет object | null
data.bindings[].warehouse.id да integer:int64 min: 1 42
data.bindings[].warehouse.name да string "Client Warehouse Sofia"
data.bindings[].recipients да array<string:email> maxItems: 100
data.bindings[].recipients[] нет string:email "client@example.com"
data.bindings[].internal_recipient_mode да enum enum: warehouse_users, domain_users, explicit "warehouse_users"
data.bindings[].internal_user_ids да array<integer:int64> maxItems: 1000
data.bindings[].internal_user_ids[] нет integer:int64 min: 1 15
data.bindings[].status_id да enum:int64 enum: 0, 1 1
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 41,
    "domain_id": 3,
    "owner_user_id": 15,
    "name": "Acceptance closed",
    "event": "document.status_changed",
    "channel": "email",
    "document_type": "acceptance",
    "document_status_id": 4,
    "delay_hours": 0,
    "start_document_id": null,
    "conditions": {
      "acceptance_has_discrepancy": true
    },
    "subject": "Document #{doc_id}: {doc_status_name}",
    "body_html": "<p>Document #{doc_id} is closed.</p>",
    "body_text": null,
    "attachment_print_template_id": 12,
    "status_id": 1,
    "bindings_count": 1,
    "bindings": [
      {
        "id": 7,
        "template_id": 41,
        "domain_id": 3,
        "warehouse_id": 42,
        "warehouse": {
          "id": 42,
          "name": "Client Warehouse Sofia"
        },
        "recipients": [
          "client@example.com"
        ],
        "internal_recipient_mode": "warehouse_users",
        "internal_user_ids": [

        ],
        "status_id": 1,
        "created_at": "2026-09-17T09:00:00Z",
        "updated_at": "2026-09-17T09:00:00Z"
      }
    ],
    "created_at": "2026-09-17T09:00:00Z",
    "updated_at": "2026-09-17T09:00:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
PATCH /api/v2/notification-templates/{id}

Изменить шаблон уведомления

operationIdpatchNotificationTemplate
РазделШаблоны уведомлений
БезопасностьbearerAuth

Updates the supplied template fields. Omitted fields remain unchanged.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request PATCH "${NWMS_BASE_URL}/api/v2/notification-templates/41" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 Notification template ID. 41
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

UpdateNotificationTemplateRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да UpdateNotificationTemplatePayload
data.name нет string maxLength: 150 "Acceptance closed"
data.channel нет enum enum: email, internal "email"
data.document_type нет enum enum: acceptance, order "acceptance"
data.document_status_id нет integer:int64 min: 0 4
data.delay_hours нет integer:int64 | null min: 0
max: 8760
0
data.start_document_id нет integer:int64 | null min: 1 1000
data.conditions нет object {"acceptance_has_discrepancy":true}
data.subject нет string | null maxLength: 255 "Document \#{doc_id}: {doc_status_name}"
data.body_html нет string | null "<p>Document \#{doc_id} is closed.</p>"
data.body_text нет string | null "Document \#{doc_id} is closed."
data.attachment_print_template_id нет integer:int64 | null min: 1 12
data.status_id нет enum:int64 enum: 0, 1 1

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

Пример

{
  "data": {
    "name": "Acceptance closed",
    "channel": "email",
    "document_type": "acceptance",
    "document_status_id": 4,
    "delay_hours": 0,
    "conditions": {
      "acceptance_has_discrepancy": true
    },
    "subject": "Document #{doc_id}: {doc_status_name}",
    "body_html": "<p>Document #{doc_id} is closed.</p>",
    "status_id": 1
  }
}

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да NotificationTemplate Template used when an acceptance or order enters the configured status. The bindings field is returned by the item endpoint and by list requests with include=bindings.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.domain_id да integer:int64 min: 1 3
data.owner_user_id да integer:int64 | null min: 1 15
data.name да string "Acceptance closed"
data.event да enum enum: document.status_changed "document.status_changed"
data.channel да enum enum: email, internal "email"
data.document_type да enum enum: acceptance, order "acceptance"
data.document_status_id да integer:int64 min: 0 4
data.delay_hours да integer:int64 min: 0
max: 8760
0
data.start_document_id да integer:int64 | null min: 1 1000
data.conditions да object {"acceptance_has_discrepancy":true}
data.subject да string | null maxLength: 255 "Document \#{doc_id}: {doc_status_name}"
data.body_html да string | null "<p>Document \#{doc_id} is closed.</p>"
data.body_text да string | null "Document \#{doc_id} is closed."
data.attachment_print_template_id да integer:int64 | null min: 1 12
data.status_id да enum:int64 enum: 0, 1 1
data.bindings_count да integer:int64 min: 0 1
data.bindings нет array<NotificationTemplateBinding>
data.bindings[] нет NotificationTemplateBinding Warehouse and recipient binding for one notification template.
data.bindings[].id да integer:int64 readOnly min: 1 1001
data.bindings[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.bindings[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.bindings[].template_id да integer:int64 min: 1 41
data.bindings[].domain_id да integer:int64 min: 1 3
data.bindings[].warehouse_id да integer:int64 min: 1 42
data.bindings[].warehouse нет object | null
data.bindings[].warehouse.id да integer:int64 min: 1 42
data.bindings[].warehouse.name да string "Client Warehouse Sofia"
data.bindings[].recipients да array<string:email> maxItems: 100
data.bindings[].recipients[] нет string:email "client@example.com"
data.bindings[].internal_recipient_mode да enum enum: warehouse_users, domain_users, explicit "warehouse_users"
data.bindings[].internal_user_ids да array<integer:int64> maxItems: 1000
data.bindings[].internal_user_ids[] нет integer:int64 min: 1 15
data.bindings[].status_id да enum:int64 enum: 0, 1 1
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 41,
    "domain_id": 3,
    "owner_user_id": 15,
    "name": "Acceptance closed",
    "event": "document.status_changed",
    "channel": "email",
    "document_type": "acceptance",
    "document_status_id": 4,
    "delay_hours": 0,
    "start_document_id": null,
    "conditions": {
      "acceptance_has_discrepancy": true
    },
    "subject": "Document #{doc_id}: {doc_status_name}",
    "body_html": "<p>Document #{doc_id} is closed.</p>",
    "body_text": null,
    "attachment_print_template_id": 12,
    "status_id": 1,
    "bindings_count": 1,
    "bindings": [
      {
        "id": 7,
        "template_id": 41,
        "domain_id": 3,
        "warehouse_id": 42,
        "warehouse": {
          "id": 42,
          "name": "Client Warehouse Sofia"
        },
        "recipients": [
          "client@example.com"
        ],
        "internal_recipient_mode": "warehouse_users",
        "internal_user_ids": [

        ],
        "status_id": 1,
        "created_at": "2026-09-17T09:00:00Z",
        "updated_at": "2026-09-17T09:00:00Z"
      }
    ],
    "created_at": "2026-09-17T09:00:00Z",
    "updated_at": "2026-09-17T09:00:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
DELETE /api/v2/notification-templates/{id}

Удалить шаблон уведомления

operationIddeleteNotificationTemplate
РазделШаблоны уведомлений
БезопасностьbearerAuth

Deletes the template and its warehouse bindings in one transaction. Existing notification-message history is preserved.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request DELETE "${NWMS_BASE_URL}/api/v2/notification-templates/41" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 Notification template ID. 41
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да object | null
meta да object
meta.api_version да enum enum: v2 "v2"
meta.deleted да boolean true

Примеры ответа

success

{
  "data": null,
  "meta": {
    "api_version": "v2",
    "deleted": true
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
GET /api/v2/notification-templates/{id}/bindings

Получить список складских привязок

operationIdlistNotificationTemplateBindings
РазделШаблоны уведомлений
БезопасностьbearerAuth

Returns the paginated warehouse and recipient bindings of one visible template.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/notification-templates/41/bindings" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 Notification template ID. 41
page query нет integer:int64 form true min: 1 Номер страницы. Этот фильтр также можно передать как filter[page], если это поддерживает Laravel query adapter. 1
per_page query нет integer:int64 form true min: 1
max: 250
Number of bindings per page. Default 50; maximum 250. The same filter may also be sent as filter[per_page] where supported by the Laravel query adapter. 50
sort query нет string form false Comma-separated sort fields: id, warehouse_id, status_id, created_at, updated_at. The same filter may also be sent as filter[sort] where supported by the Laravel query adapter. "id"
filter[id] query нет integer:int64 min: 0 Exact binding ID. 7
filter[warehouse_id] query нет integer:int64 min: 0 Exact warehouse ID. 42
filter[status_id] query нет integer:int64 min: 0 Exact binding status: 0 or 1. 1
filter[internal_recipient_mode] query нет enum enum: warehouse_users, domain_users, explicit Exact internal recipient mode. "warehouse_users"

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да array<NotificationTemplateBinding>
data[] нет NotificationTemplateBinding Warehouse and recipient binding for one notification template.
data[].id да integer:int64 readOnly min: 1 1001
data[].created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data[].template_id да integer:int64 min: 1 41
data[].domain_id да integer:int64 min: 1 3
data[].warehouse_id да integer:int64 min: 1 42
data[].warehouse нет object | null
data[].warehouse.id да integer:int64 min: 1 42
data[].warehouse.name да string "Client Warehouse Sofia"
data[].recipients да array<string:email> maxItems: 100
data[].recipients[] нет string:email "client@example.com"
data[].internal_recipient_mode да enum enum: warehouse_users, domain_users, explicit "warehouse_users"
data[].internal_user_ids да array<integer:int64> maxItems: 1000
data[].internal_user_ids[] нет integer:int64 min: 1 15
data[].status_id да enum:int64 enum: 0, 1 1
links да PaginationLinks
links.first да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=1"
links.last да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
links.prev да string:uri | null
links.next да string:uri | null "https://betawms.ffcdek.ru/api/v2/orders?page=2"
meta да PaginationMeta
meta.api_version да enum enum: v2 "v2"
meta.current_page да integer:int32 min: 1 1
meta.from да integer:int32 | null min: 1 1
meta.last_page да integer:int32 min: 1 2
meta.path да string:uri "https://betawms.ffcdek.ru/api/v2/orders"
meta.per_page да integer:int32 min: 1 50
meta.to да integer:int32 | null min: 1 50
meta.total да integer:int32 min: 0 73

Примеры ответа

success

{
  "data": [
    {
      "id": 7,
      "template_id": 41,
      "domain_id": 3,
      "warehouse_id": 42,
      "warehouse": {
        "id": 42,
        "name": "Client Warehouse Sofia"
      },
      "recipients": [
        "client@example.com"
      ],
      "internal_recipient_mode": "warehouse_users",
      "internal_user_ids": [

      ],
      "status_id": 1,
      "created_at": "2026-09-17T09:00:00Z",
      "updated_at": "2026-09-17T09:00:00Z"
    }
  ],
  "links": {
    "first": "https://betawms.ffcdek.ru/api/v2/notification-templates/41/bindings?page=1",
    "last": "https://betawms.ffcdek.ru/api/v2/notification-templates/41/bindings?page=1",
    "prev": null,
    "next": null
  },
  "meta": {
    "api_version": "v2",
    "current_page": 1,
    "from": 1,
    "last_page": 1,
    "path": "https://betawms.ffcdek.ru/api/v2/notification-templates/41/bindings",
    "per_page": 50,
    "to": 1,
    "total": 1
  }
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
POST /api/v2/notification-templates/{id}/bindings

Создать складскую привязку

operationIdcreateNotificationTemplateBinding
РазделШаблоны уведомлений
БезопасностьbearerAuth

Binds one visible client warehouse to the template. A warehouse can be bound only once per template.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request POST "${NWMS_BASE_URL}/api/v2/notification-templates/41/bindings" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 Notification template ID. 41
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

CreateNotificationTemplateBindingRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да CreateNotificationTemplateBindingPayload
data.warehouse_id да integer:int64 min: 1 42
data.recipients нет array<string:email> maxItems: 100
data.recipients[] нет string:email "client@example.com"
data.internal_recipient_mode нет enum enum: warehouse_users, domain_users, explicit "warehouse_users"
data.internal_user_ids нет array<integer:int64> maxItems: 1000
data.internal_user_ids[] нет integer:int64 min: 1 15
data.status_id нет enum:int64 enum: 0, 1 1

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

Пример

{
  "data": {
    "warehouse_id": 42,
    "recipients": [
      "client@example.com"
    ],
    "internal_recipient_mode": "warehouse_users",
    "internal_user_ids": [

    ],
    "status_id": 1
  }
}

Ответы

201 Created.

Created.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да NotificationTemplateBinding Warehouse and recipient binding for one notification template.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.template_id да integer:int64 min: 1 41
data.domain_id да integer:int64 min: 1 3
data.warehouse_id да integer:int64 min: 1 42
data.warehouse нет object | null
data.warehouse.id да integer:int64 min: 1 42
data.warehouse.name да string "Client Warehouse Sofia"
data.recipients да array<string:email> maxItems: 100
data.recipients[] нет string:email "client@example.com"
data.internal_recipient_mode да enum enum: warehouse_users, domain_users, explicit "warehouse_users"
data.internal_user_ids да array<integer:int64> maxItems: 1000
data.internal_user_ids[] нет integer:int64 min: 1 15
data.status_id да enum:int64 enum: 0, 1 1
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 7,
    "template_id": 41,
    "domain_id": 3,
    "warehouse_id": 42,
    "warehouse": {
      "id": 42,
      "name": "Client Warehouse Sofia"
    },
    "recipients": [
      "client@example.com"
    ],
    "internal_recipient_mode": "warehouse_users",
    "internal_user_ids": [

    ],
    "status_id": 1,
    "created_at": "2026-09-17T09:00:00Z",
    "updated_at": "2026-09-17T09:00:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
GET /api/v2/notification-templates/{id}/bindings/{bindingId}

Получить складскую привязку

operationIdgetNotificationTemplateBinding
РазделШаблоны уведомлений
БезопасностьbearerAuth

Returns one warehouse and recipient binding of a visible template.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/notification-templates/41/bindings/7" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 Notification template ID. 41
bindingId path да integer:int64 min: 1 Notification template binding ID. 7

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да NotificationTemplateBinding Warehouse and recipient binding for one notification template.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.template_id да integer:int64 min: 1 41
data.domain_id да integer:int64 min: 1 3
data.warehouse_id да integer:int64 min: 1 42
data.warehouse нет object | null
data.warehouse.id да integer:int64 min: 1 42
data.warehouse.name да string "Client Warehouse Sofia"
data.recipients да array<string:email> maxItems: 100
data.recipients[] нет string:email "client@example.com"
data.internal_recipient_mode да enum enum: warehouse_users, domain_users, explicit "warehouse_users"
data.internal_user_ids да array<integer:int64> maxItems: 1000
data.internal_user_ids[] нет integer:int64 min: 1 15
data.status_id да enum:int64 enum: 0, 1 1
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 7,
    "template_id": 41,
    "domain_id": 3,
    "warehouse_id": 42,
    "warehouse": {
      "id": 42,
      "name": "Client Warehouse Sofia"
    },
    "recipients": [
      "client@example.com"
    ],
    "internal_recipient_mode": "warehouse_users",
    "internal_user_ids": [

    ],
    "status_id": 1,
    "created_at": "2026-09-17T09:00:00Z",
    "updated_at": "2026-09-17T09:00:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
PUT /api/v2/notification-templates/{id}/bindings/{bindingId}

Изменить складскую привязку

operationIdreplaceNotificationTemplateBinding
РазделШаблоны уведомлений
БезопасностьbearerAuth

Updates the supplied warehouse-binding fields. Omitted fields remain unchanged.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request PUT "${NWMS_BASE_URL}/api/v2/notification-templates/41/bindings/7" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 Notification template ID. 41
bindingId path да integer:int64 min: 1 Notification template binding ID. 7
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

UpdateNotificationTemplateBindingRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да UpdateNotificationTemplateBindingPayload
data.warehouse_id нет integer:int64 min: 1 42
data.recipients нет array<string:email> maxItems: 100
data.recipients[] нет string:email "client@example.com"
data.internal_recipient_mode нет enum enum: warehouse_users, domain_users, explicit "warehouse_users"
data.internal_user_ids нет array<integer:int64> maxItems: 1000
data.internal_user_ids[] нет integer:int64 min: 1 15
data.status_id нет enum:int64 enum: 0, 1 1

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

Пример

{
  "data": {
    "warehouse_id": 42,
    "recipients": [
      "client@example.com"
    ],
    "internal_recipient_mode": "warehouse_users",
    "internal_user_ids": [

    ],
    "status_id": 1
  }
}

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да NotificationTemplateBinding Warehouse and recipient binding for one notification template.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.template_id да integer:int64 min: 1 41
data.domain_id да integer:int64 min: 1 3
data.warehouse_id да integer:int64 min: 1 42
data.warehouse нет object | null
data.warehouse.id да integer:int64 min: 1 42
data.warehouse.name да string "Client Warehouse Sofia"
data.recipients да array<string:email> maxItems: 100
data.recipients[] нет string:email "client@example.com"
data.internal_recipient_mode да enum enum: warehouse_users, domain_users, explicit "warehouse_users"
data.internal_user_ids да array<integer:int64> maxItems: 1000
data.internal_user_ids[] нет integer:int64 min: 1 15
data.status_id да enum:int64 enum: 0, 1 1
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 7,
    "template_id": 41,
    "domain_id": 3,
    "warehouse_id": 42,
    "warehouse": {
      "id": 42,
      "name": "Client Warehouse Sofia"
    },
    "recipients": [
      "client@example.com"
    ],
    "internal_recipient_mode": "warehouse_users",
    "internal_user_ids": [

    ],
    "status_id": 1,
    "created_at": "2026-09-17T09:00:00Z",
    "updated_at": "2026-09-17T09:00:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
PATCH /api/v2/notification-templates/{id}/bindings/{bindingId}

Изменить складскую привязку

operationIdpatchNotificationTemplateBinding
РазделШаблоны уведомлений
БезопасностьbearerAuth

Updates the supplied warehouse-binding fields. Omitted fields remain unchanged.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request PATCH "${NWMS_BASE_URL}/api/v2/notification-templates/41/bindings/7" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 Notification template ID. 41
bindingId path да integer:int64 min: 1 Notification template binding ID. 7
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

UpdateNotificationTemplateBindingRequest обязательно

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да UpdateNotificationTemplateBindingPayload
data.warehouse_id нет integer:int64 min: 1 42
data.recipients нет array<string:email> maxItems: 100
data.recipients[] нет string:email "client@example.com"
data.internal_recipient_mode нет enum enum: warehouse_users, domain_users, explicit "warehouse_users"
data.internal_user_ids нет array<integer:int64> maxItems: 1000
data.internal_user_ids[] нет integer:int64 min: 1 15
data.status_id нет enum:int64 enum: 0, 1 1

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

Пример

{
  "data": {
    "warehouse_id": 42,
    "recipients": [
      "client@example.com"
    ],
    "internal_recipient_mode": "warehouse_users",
    "internal_user_ids": [

    ],
    "status_id": 1
  }
}

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да NotificationTemplateBinding Warehouse and recipient binding for one notification template.
data.id да integer:int64 readOnly min: 1 1001
data.created_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.updated_at нет string:date-time | null "2026-07-14T10:30:00Z"
data.template_id да integer:int64 min: 1 41
data.domain_id да integer:int64 min: 1 3
data.warehouse_id да integer:int64 min: 1 42
data.warehouse нет object | null
data.warehouse.id да integer:int64 min: 1 42
data.warehouse.name да string "Client Warehouse Sofia"
data.recipients да array<string:email> maxItems: 100
data.recipients[] нет string:email "client@example.com"
data.internal_recipient_mode да enum enum: warehouse_users, domain_users, explicit "warehouse_users"
data.internal_user_ids да array<integer:int64> maxItems: 1000
data.internal_user_ids[] нет integer:int64 min: 1 15
data.status_id да enum:int64 enum: 0, 1 1
meta да ResponseMeta
meta.api_version да enum enum: v2 "v2"
meta.deleted нет boolean true
meta.id нет integer:int64 | null min: 1 1001
meta.command_replayed нет boolean True when an idempotent cross-dock command returned the original successful result. false
meta.crossdock_configuration нет object | null
meta.crossdock_configuration.physical_warehouse_id да integer:int64 min: 1 42
meta.crossdock_configuration.enabled да boolean true
meta.crossdock_configuration.process_version да string "direct_order_v1"

Примеры ответа

success

{
  "data": {
    "id": 7,
    "template_id": 41,
    "domain_id": 3,
    "warehouse_id": 42,
    "warehouse": {
      "id": 42,
      "name": "Client Warehouse Sofia"
    },
    "recipients": [
      "client@example.com"
    ],
    "internal_recipient_mode": "warehouse_users",
    "internal_user_ids": [

    ],
    "status_id": 1,
    "created_at": "2026-09-17T09:00:00Z",
    "updated_at": "2026-09-17T09:00:00Z"
  },
  "meta": {
    "api_version": "v2"
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}
DELETE /api/v2/notification-templates/{id}/bindings/{bindingId}

Удалить складскую привязку

operationIddeleteNotificationTemplateBinding
РазделШаблоны уведомлений
БезопасностьbearerAuth

Removes one warehouse and recipient binding from the template.

Пример HTTP-запроса (cURL)

Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.

curl --globoff --request DELETE "${NWMS_BASE_URL}/api/v2/notification-templates/41/bindings/7" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${NWMS_TOKEN}" \
  --header "Idempotency-Key: ${NWMS_REQUEST_KEY}"

Параметры

Имя Где Обязательное Тип Style Explode Ограничения Описание Пример
id path да integer:int64 min: 1 Notification template ID. 41
bindingId path да integer:int64 min: 1 Notification template binding ID. 7
Idempotency-Key header нет string maxLength: 191 Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. "ord-create-20260714-001"

Тело запроса

Тело запроса отсутствует.

Ответы

200 Successful response.

Successful response.

Поле Обязательное Тип Флаги Ограничения Описание Пример
data да object | null
meta да object
meta.api_version да enum enum: v2 "v2"
meta.deleted да boolean true

Примеры ответа

success

{
  "data": null,
  "meta": {
    "api_version": "v2",
    "deleted": true
  }
}

400 Некорректный запрос

BadRequest

Некорректный запрос.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

BAD_REQUEST

{
  "message": "Bad request.",
  "error": "BAD_REQUEST"
}

401 Требуется аутентификация

Unauthorized

Требуется аутентификация.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

AUTH_REQUIRED

{
  "message": "Authentication is required.",
  "error": "AUTH_REQUIRED"
}

403 Доступ запрещен

Forbidden

Аутентифицированному аккаунту запрещено выполнять это действие.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

FORBIDDEN

{
  "message": "The authenticated account is not allowed to perform this action.",
  "error": "FORBIDDEN"
}

404 Не найдено

NotFound

Запрошенный ресурс не найден или находится вне области доступа аккаунта.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

NOT_FOUND

{
  "message": "The requested resource was not found or is outside the authenticated account scope.",
  "error": "NOT_FOUND"
}

409 Конфликт

Conflict

Запрос конфликтует с текущим состоянием ресурса или ключа идемпотентности.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

idempotencyConflict

{
  "message": "The idempotency key is already used with a different payload.",
  "error": "IDEMPOTENCY_KEY_CONFLICT"
}

422 Ошибка валидации

ValidationError

Ошибка валидации.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The given data was invalid."
error нет string "VALIDATION_ERROR"
errors да object {"warehouse_id":["The selected warehouse is invalid."]}

Примеры ответа

validationError

{
  "message": "The given data was invalid.",
  "error": "VALIDATION_ERROR",
  "errors": {
    "warehouse_id": [
      "The selected warehouse is invalid."
    ]
  }
}

429 Превышен лимит запросов

TooManyRequests

Превышен лимит запросов.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "Too Many Attempts."
error да string "RATE_LIMITED"

500 Внутренняя ошибка сервера

InternalServerError

Произошла непредвиденная ошибка сервера.

Поле Обязательное Тип Флаги Ограничения Описание Пример
message да string "The request could not be processed."
error да string "BAD_REQUEST"

Примеры ответа

INTERNAL_SERVER_ERROR

{
  "message": "An unexpected server error occurred.",
  "error": "INTERNAL_SERVER_ERROR"
}