Склады и магазины
Каждая операция ниже сгенерирована из OpenAPI v2 и содержит параметры, поля запроса, поля ответа, ошибки и примеры.
Магазины
Получить список магазинов
| operationId | listShops |
|---|---|
| Раздел | Магазины |
| Безопасность | bearerAuth |
Возвращает магазины, видимые аутентифицированному аккаунту. Используйте описанные query parameters для фильтрации, сортировки и пагинации.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Пример HTTP-запроса (cURL)
Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.
curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/shops" \
--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 |
Количество записей на странице. По умолчанию 50; максимум 250. Этот фильтр также можно передать как filter[per_page], если это поддерживает Laravel query adapter. |
50 |
sort |
query | нет | string |
form | false | pattern: ^-?[A-Za-z0-9_]+(,-?[A-Za-z0-9_]+)*$ | Поля сортировки через запятую. Префикс - означает сортировку по убыванию. Допустимые поля: id, name, status_id, owner_user_id, created_at, updated_at. По умолчанию: -id. Этот фильтр также можно передать как filter[sort], если это поддерживает Laravel query adapter. |
"-id" |
id |
query | нет | integer:int64 |
form | true | min: 1 | Фильтр по id с точным совпадением. Этот фильтр также можно передать как filter[id], если это поддерживает Laravel query adapter. |
1001 |
status_id |
query | нет | integer:int64 |
form | true | min: 1 | Фильтр по status_id с точным совпадением. Этот фильтр также можно передать как filter[status_id], если это поддерживает Laravel query adapter. |
1 |
domain_id |
query | нет | integer:int64 |
form | true | min: 1 | Фильтр по domain_id с точным совпадением. Этот фильтр также можно передать как filter[domain_id], если это поддерживает Laravel query adapter. |
3 |
owner_user_id |
query | нет | integer:int64 |
form | true | min: 1 | Фильтр по owner_user_id с точным совпадением. Этот фильтр также можно передать как filter[owner_user_id], если это поддерживает Laravel query adapter. |
15 |
name |
query | нет | string |
form | true | Фильтр по name с частичным текстовым совпадением. Этот фильтр также можно передать как filter[name], если это поддерживает Laravel query adapter. |
"Coffee" |
Тело запроса
Тело запроса отсутствует.
Ответы
200 Successful response.
Successful response.
| Поле | Обязательное | Тип | Флаги | Ограничения | Описание | Пример |
|---|---|---|---|---|---|---|
data |
да | array<Shop> |
|
|||
data[] |
нет | Shop |
Аккаунт магазина продавца. | |
||
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[].name |
да | string |
"Demo Online Store" |
|||
data[].status_id |
нет | integer:int64 | null |
1 |
|||
data[].domain_id |
нет | integer:int64 | null |
min: 1 | 3 |
||
data[].owner_user_id |
нет | integer:int64 | null |
min: 1 | 15 |
||
data[].composite_items_enabled |
нет | boolean |
false |
|||
data[].custom_label_enabled |
нет | boolean |
false |
|||
data[].custom_label |
нет | string | null |
"CDEK label" |
|||
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": 12,
"name": "Demo Online Store",
"status_id": 1,
"domain_id": 3,
"owner_user_id": 15,
"composite_items_enabled": false,
"custom_label_enabled": false,
"custom_label": null,
"created_at": "2026-07-14T09:00:00Z",
"updated_at": "2026-07-14T09:30:00Z"
}
],
"links": {
"first": "https://betawms.ffcdek.ru/api/v2/shops?page=1",
"last": "https://betawms.ffcdek.ru/api/v2/shops?page=2",
"prev": null,
"next": "https://betawms.ffcdek.ru/api/v2/shops?page=2"
},
"meta": {
"api_version": "v2",
"current_page": 1,
"from": 1,
"last_page": 2,
"path": "https://betawms.ffcdek.ru/api/v2/shops",
"per_page": 50,
"to": 50,
"total": 73
}
}
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"
}
Создать магазин
| operationId | createShops |
|---|---|
| Раздел | Магазины |
| Безопасность | bearerAuth |
Create shop. Запрос использует описанную payload-схему, проверяет видимость tenant и возвращает нормализованный API envelope.
Пример HTTP-запроса (cURL)
Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.
curl --globoff --request POST "${NWMS_BASE_URL}/api/v2/shops" \
--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" |
Тело запроса
CreateShopRequest обязательно
| Поле | Обязательное | Тип | Флаги | Ограничения | Описание | Пример |
|---|---|---|---|---|---|---|
data |
да | CreateShopPayload |
|
|||
data.name |
да | string |
minLength: 1 | "Demo Online Store" |
||
data.status_id |
нет | integer:int64 | null |
1 |
|||
data.owner_user_id |
нет | integer:int64 | null |
min: 1 | 15 |
||
data.composite_items_enabled |
нет | boolean |
false |
|||
data.custom_label_enabled |
нет | boolean |
false |
|||
data.custom_label |
нет | string | null |
"CDEK label" |
Примеры запроса
default
{
"data": {
"name": "Demo Online Store",
"owner_user_id": 15
}
}
Ответы
201 Created.
Created.
| Поле | Обязательное | Тип | Флаги | Ограничения | Описание | Пример |
|---|---|---|---|---|---|---|
data |
да | Shop |
Аккаунт магазина продавца. | |
||
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.name |
да | string |
"Demo Online Store" |
|||
data.status_id |
нет | integer:int64 | null |
1 |
|||
data.domain_id |
нет | integer:int64 | null |
min: 1 | 3 |
||
data.owner_user_id |
нет | integer:int64 | null |
min: 1 | 15 |
||
data.composite_items_enabled |
нет | boolean |
false |
|||
data.custom_label_enabled |
нет | boolean |
false |
|||
data.custom_label |
нет | string | null |
"CDEK label" |
|||
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": 12,
"name": "Demo Online Store",
"status_id": 1,
"domain_id": 3,
"owner_user_id": 15,
"composite_items_enabled": false,
"custom_label_enabled": false,
"custom_label": null,
"created_at": "2026-07-14T09:00:00Z",
"updated_at": "2026-07-14T09:30: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"
}
Получить магазин
| operationId | getShops |
|---|---|
| Раздел | Магазины |
| Безопасность | bearerAuth |
Возвращает один ресурс: магазин, если он существует и видим аутентифицированному аккаунту.
Пример HTTP-запроса (cURL)
Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.
curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/shops/1001" \
--header "Accept: application/json" \
--header "Authorization: Bearer ${NWMS_TOKEN}"Параметры
| Имя | Где | Обязательное | Тип | Style | Explode | Ограничения | Описание | Пример |
|---|---|---|---|---|---|---|---|---|
id |
path | да | integer:int64 |
min: 1 | ID магазина. | 1001 |
Тело запроса
Тело запроса отсутствует.
Ответы
200 Successful response.
Successful response.
| Поле | Обязательное | Тип | Флаги | Ограничения | Описание | Пример |
|---|---|---|---|---|---|---|
data |
да | Shop |
Аккаунт магазина продавца. | |
||
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.name |
да | string |
"Demo Online Store" |
|||
data.status_id |
нет | integer:int64 | null |
1 |
|||
data.domain_id |
нет | integer:int64 | null |
min: 1 | 3 |
||
data.owner_user_id |
нет | integer:int64 | null |
min: 1 | 15 |
||
data.composite_items_enabled |
нет | boolean |
false |
|||
data.custom_label_enabled |
нет | boolean |
false |
|||
data.custom_label |
нет | string | null |
"CDEK label" |
|||
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": 12,
"name": "Demo Online Store",
"status_id": 1,
"domain_id": 3,
"owner_user_id": 15,
"composite_items_enabled": false,
"custom_label_enabled": false,
"custom_label": null,
"created_at": "2026-07-14T09:00:00Z",
"updated_at": "2026-07-14T09:30: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"
}
Обновить магазин
| operationId | replaceShops |
|---|---|
| Раздел | Магазины |
| Безопасность | bearerAuth |
Update shop. Запрос использует описанную payload-схему, проверяет видимость tenant и возвращает нормализованный API envelope.
Текущее поведение backend является legacy-семантикой частичного обновления: пропущенные поля не изменяются.
Пример HTTP-запроса (cURL)
Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.
curl --globoff --request PUT "${NWMS_BASE_URL}/api/v2/shops/1001" \
--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 | ID магазина. | 1001 |
||
Idempotency-Key |
header | нет | string |
maxLength: 191 | Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. |
"ord-create-20260714-001" |
Тело запроса
ReplaceShopRequest обязательно
| Поле | Обязательное | Тип | Флаги | Ограничения | Описание | Пример |
|---|---|---|---|---|---|---|
data |
да | ReplaceShopPayload |
Legacy PUT payload. Текущий backend применяет семантику частичного обновления. | |
||
data.name |
нет | string | null |
minLength: 1 | "Demo Online Store" |
||
data.status_id |
нет | integer:int64 | null |
1 |
|||
data.owner_user_id |
нет | integer:int64 | null |
min: 1 | 15 |
||
data.composite_items_enabled |
нет | boolean |
false |
|||
data.custom_label_enabled |
нет | boolean |
false |
|||
data.custom_label |
нет | string | null |
"CDEK label" |
Примеры запроса
default
{
"data": {
"name": "Demo Online Store",
"custom_label_enabled": false
}
}
Ответы
200 Successful response.
Successful response.
| Поле | Обязательное | Тип | Флаги | Ограничения | Описание | Пример |
|---|---|---|---|---|---|---|
data |
да | Shop |
Аккаунт магазина продавца. | |
||
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.name |
да | string |
"Demo Online Store" |
|||
data.status_id |
нет | integer:int64 | null |
1 |
|||
data.domain_id |
нет | integer:int64 | null |
min: 1 | 3 |
||
data.owner_user_id |
нет | integer:int64 | null |
min: 1 | 15 |
||
data.composite_items_enabled |
нет | boolean |
false |
|||
data.custom_label_enabled |
нет | boolean |
false |
|||
data.custom_label |
нет | string | null |
"CDEK label" |
|||
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": 12,
"name": "Demo Online Store",
"status_id": 1,
"domain_id": 3,
"owner_user_id": 15,
"composite_items_enabled": false,
"custom_label_enabled": false,
"custom_label": null,
"created_at": "2026-07-14T09:00:00Z",
"updated_at": "2026-07-14T09:30: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"
}
Обновить магазин
| operationId | patchShops |
|---|---|
| Раздел | Магазины |
| Безопасность | bearerAuth |
Update shop. Запрос использует описанную payload-схему, проверяет видимость tenant и возвращает нормализованный API envelope.
Текущее поведение backend является legacy-семантикой частичного обновления: пропущенные поля не изменяются.
Пример HTTP-запроса (cURL)
Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.
curl --globoff --request PATCH "${NWMS_BASE_URL}/api/v2/shops/1001" \
--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 | ID магазина. | 1001 |
||
Idempotency-Key |
header | нет | string |
maxLength: 191 | Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. |
"ord-create-20260714-001" |
Тело запроса
PatchShopRequest обязательно
| Поле | Обязательное | Тип | Флаги | Ограничения | Описание | Пример |
|---|---|---|---|---|---|---|
data |
да | PatchShopPayload |
|
|||
data.name |
нет | string | null |
minLength: 1 | "Demo Online Store" |
||
data.status_id |
нет | integer:int64 | null |
1 |
|||
data.owner_user_id |
нет | integer:int64 | null |
min: 1 | 15 |
||
data.composite_items_enabled |
нет | boolean |
false |
|||
data.custom_label_enabled |
нет | boolean |
false |
|||
data.custom_label |
нет | string | null |
"CDEK label" |
Примеры запроса
default
{
"data": {
"custom_label_enabled": false
}
}
Ответы
200 Successful response.
Successful response.
| Поле | Обязательное | Тип | Флаги | Ограничения | Описание | Пример |
|---|---|---|---|---|---|---|
data |
да | Shop |
Аккаунт магазина продавца. | |
||
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.name |
да | string |
"Demo Online Store" |
|||
data.status_id |
нет | integer:int64 | null |
1 |
|||
data.domain_id |
нет | integer:int64 | null |
min: 1 | 3 |
||
data.owner_user_id |
нет | integer:int64 | null |
min: 1 | 15 |
||
data.composite_items_enabled |
нет | boolean |
false |
|||
data.custom_label_enabled |
нет | boolean |
false |
|||
data.custom_label |
нет | string | null |
"CDEK label" |
|||
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": 12,
"name": "Demo Online Store",
"status_id": 1,
"domain_id": 3,
"owner_user_id": 15,
"composite_items_enabled": false,
"custom_label_enabled": false,
"custom_label": null,
"created_at": "2026-07-14T09:00:00Z",
"updated_at": "2026-07-14T09:30: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"
}
Склады
Получить список складов
| operationId | listWarehouses |
|---|---|
| Раздел | Склады |
| Безопасность | bearerAuth |
Возвращает склады, видимые аутентифицированному аккаунту. Используйте описанные query parameters для фильтрации, сортировки и пагинации.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Unknown read parameters are ignored. per_page is silently capped; use meta.per_page. Date-only boundaries follow the installation's stored calendar dates; ISO timestamps are serialized in UTC. The default general API limit is 600/minute; a user-specific override may apply. Its bucket is shared by authenticated user, not by shop/domain; Retry-After is returned on throttling.
Пример HTTP-запроса (cURL)
Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.
curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/warehouses" \
--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 |
Количество записей на странице. По умолчанию 50; максимум 250. Этот фильтр также можно передать как filter[per_page], если это поддерживает Laravel query adapter. |
50 |
sort |
query | нет | string |
form | false | pattern: ^-?[A-Za-z0-9_]+(,-?[A-Za-z0-9_]+)*$ | Поля сортировки через запятую. Префикс - означает сортировку по убыванию. Допустимые поля: id, name, status_id, type_id, created_at, updated_at. По умолчанию: -id. Этот фильтр также можно передать как filter[sort], если это поддерживает Laravel query adapter. |
"-id" |
id |
query | нет | integer:int64 |
form | true | min: 1 | Фильтр по id с точным совпадением. Этот фильтр также можно передать как filter[id], если это поддерживает Laravel query adapter. |
1001 |
status_id |
query | нет | integer:int64 |
form | true | min: 1 | Фильтр по status_id с точным совпадением. Этот фильтр также можно передать как filter[status_id], если это поддерживает Laravel query adapter. |
1 |
type_id |
query | нет | integer:int64 |
form | true | min: 1 | Фильтр по type_id с точным совпадением. Этот фильтр также можно передать как filter[type_id], если это поддерживает Laravel query adapter. |
1 |
domain_id |
query | нет | integer:int64 |
form | true | min: 1 | Фильтр по domain_id с точным совпадением. Этот фильтр также можно передать как filter[domain_id], если это поддерживает Laravel query adapter. |
3 |
owner_user_id |
query | нет | integer:int64 |
form | true | min: 1 | Фильтр по owner_user_id с точным совпадением. Этот фильтр также можно передать как filter[owner_user_id], если это поддерживает Laravel query adapter. |
15 |
parent_id |
query | нет | integer:int64 |
form | true | min: 1 | Фильтр по parent_id с точным совпадением. Этот фильтр также можно передать как filter[parent_id], если это поддерживает Laravel query adapter. |
1 |
country_id |
query | нет | integer:int64 |
form | true | min: 1 | Фильтр по country_id с точным совпадением. Этот фильтр также можно передать как filter[country_id], если это поддерживает Laravel query adapter. |
100 |
company_id |
query | нет | integer:int64 |
form | true | min: 1 | Фильтр по company_id с точным совпадением. Этот фильтр также можно передать как filter[company_id], если это поддерживает Laravel query adapter. |
7 |
service_provider_company_id |
query | нет | integer:int64 |
form | true | min: 1 | Фильтр по service_provider_company_id с точным совпадением. Этот фильтр также можно передать как filter[service_provider_company_id], если это поддерживает Laravel query adapter. |
8 |
name |
query | нет | string |
form | true | Фильтр по name с частичным текстовым совпадением. Этот фильтр также можно передать как filter[name], если это поддерживает Laravel query adapter. |
"Coffee" |
Тело запроса
Тело запроса отсутствует.
Ответы
200 Successful response.
Successful response.
| Поле | Обязательное | Тип | Флаги | Ограничения | Описание | Пример |
|---|---|---|---|---|---|---|
data |
да | array<Warehouse> |
|
|||
data[] |
нет | Warehouse |
Склад или клиентский склад. | |
||
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[].name |
да | string |
"Warehouse Sofia" |
|||
data[].status_id |
нет | integer:int64 | null |
ID статуса склада. Значения хранятся в базе данных и не моделируются как закрытый enum в публичном контракте. | 1 |
||
data[].type_id |
нет | integer:int64 | null |
ID типа склада. Значения хранятся в базе данных и не моделируются как закрытый enum в публичном контракте. | 2 |
||
data[].domain_id |
нет | integer:int64 | null |
min: 1 | 3 |
||
data[].owner_user_id |
нет | integer:int64 | null |
min: 1 | 15 |
||
data[].parent_id |
нет | integer:int64 | null |
min: 1 | 41 |
||
data[].country_id |
нет | integer:int64 | null |
min: 1 | 100 |
||
data[].currency_id |
нет | integer:int64 | null |
min: 1 | 978 |
||
data[].company_id |
нет | integer:int64 | null |
min: 1 | 7 |
||
data[].service_provider_company_id |
нет | integer:int64 | null |
min: 1 | 8 |
||
data[].billing_setting_id |
нет | integer:int64 | null |
min: 1 | 12 |
||
data[].settings |
нет | WarehouseSettings |
|
|||
data[].settings.datamatrix |
нет | object |
|
|||
data[].settings.datamatrix.enabled |
да | boolean |
false |
|||
data[].settings.datamatrix.type |
нет | string | null |
"standard" |
|||
data[].settings.datamatrix.acceptance_enabled |
да | boolean |
false |
|||
data[].settings.datamatrix.picking_enabled |
да | boolean |
false |
|||
data[].settings.datamatrix.packing_enabled |
да | boolean |
false |
|||
data[].settings.datamatrix.validation_mode |
нет | enum:int64 |
enum: 0, 1, 2 | 0 disabled, 1 template validation, 2 database validation. Read from warehouse DataMatrix settings. | 1 |
|
data[].settings.expiration_date_enabled |
нет | boolean |
true |
|||
data[].settings.production_date_enabled |
нет | boolean |
true |
|||
data[].settings.batch_enabled |
нет | boolean |
true |
|||
data[].settings.auto_acceptance_enabled |
нет | boolean |
false |
|||
data[].settings.order_auto_conduct_mode |
нет | enum:int64 | null |
enum: 0, 1, 2, 3 | Разрешение на явные действия автопроведения заказа: 0 — запрещено; 1 — пропуск сборки; 2 — пропуск упаковки; 3 — пропуск сборки и упаковки. Сама настройка не выполняет эти действия и не подтверждает передачу перевозчику. Автоупаковка заблокирована при включённой проверке DataMatrix на упаковке. | 0 |
|
data[].settings.require_acceptance_dimensions |
нет | boolean |
false |
|||
data[].settings.crossdock_enabled |
нет | boolean |
Allows cross-docking for a client warehouse. | true |
||
data[].document |
нет | WarehouseDocument |
|
|||
data[].document.number |
нет | string | null |
"WH-DOC-1001" |
|||
data[].document.date |
нет | string:date | null |
"2026-07-14" |
|||
data[].custom |
нет | object |
Специфичные для установки атрибуты склада. | {"billing_group":"Sofia A"} |
||
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": 42,
"name": "Warehouse Sofia",
"status_id": 1,
"type_id": 2,
"domain_id": 3,
"owner_user_id": 15,
"parent_id": 41,
"country_id": 100,
"currency_id": 978,
"company_id": 7,
"service_provider_company_id": 8,
"billing_setting_id": 12,
"settings": {
"datamatrix": {
"enabled": true,
"type": "standard",
"acceptance_enabled": true,
"picking_enabled": true,
"packing_enabled": false
},
"expiration_date_enabled": true,
"production_date_enabled": true,
"batch_enabled": true,
"auto_acceptance_enabled": false,
"order_auto_conduct_mode": 0,
"require_acceptance_dimensions": false
},
"document": {
"number": "WH-DOC-1001",
"date": "2026-07-14"
},
"custom": {
"billing_group": "Sofia A"
},
"created_at": "2026-07-14T09:00:00Z",
"updated_at": "2026-07-14T09:30:00Z"
}
],
"links": {
"first": "https://betawms.ffcdek.ru/api/v2/warehouses?page=1",
"last": "https://betawms.ffcdek.ru/api/v2/warehouses?page=2",
"prev": null,
"next": "https://betawms.ffcdek.ru/api/v2/warehouses?page=2"
},
"meta": {
"api_version": "v2",
"current_page": 1,
"from": 1,
"last_page": 2,
"path": "https://betawms.ffcdek.ru/api/v2/warehouses",
"per_page": 50,
"to": 50,
"total": 73
}
}
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"
}
Создать склад
| operationId | createWarehouses |
|---|---|
| Раздел | Склады |
| Безопасность | bearerAuth |
Creates a warehouse or client warehouse using public v2 fields. Ownership, parent warehouse, billing settings, and operational flags are validated by account scope.
Пример HTTP-запроса (cURL)
Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.
curl --globoff --request POST "${NWMS_BASE_URL}/api/v2/warehouses" \
--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" |
Тело запроса
CreateWarehouseRequest обязательно
| Поле | Обязательное | Тип | Флаги | Ограничения | Описание | Пример |
|---|---|---|---|---|---|---|
data |
да | CreateWarehousePayload |
|
|||
data.name |
да | string |
minLength: 1 | "Client Warehouse Varna" |
||
data.type_id |
нет | integer:int64 | null |
ID типа склада. Значения хранятся в базе данных и не моделируются как закрытый enum в публичном контракте. | 2 |
||
data.owner_user_id |
нет | integer:int64 | null |
min: 1 | 15 |
||
data.parent_id |
нет | integer:int64 | null |
min: 1 | 42 |
||
data.country_id |
нет | integer:int64 | null |
min: 1 | 100 |
||
data.currency_id |
нет | integer:int64 | null |
min: 1 | 978 |
||
data.company_id |
нет | integer:int64 | null |
min: 1 | 7 |
||
data.service_provider_company_id |
нет | integer:int64 | null |
min: 1 | 8 |
||
data.billing_setting_id |
нет | integer:int64 | null |
min: 1 | 12 |
||
data.settings |
нет | object | null |
|
|||
data.settings.datamatrix |
нет | object |
|
|||
data.settings.datamatrix.enabled |
да | boolean |
false |
|||
data.settings.datamatrix.type |
нет | string | null |
"standard" |
|||
data.settings.datamatrix.acceptance_enabled |
да | boolean |
false |
|||
data.settings.datamatrix.picking_enabled |
да | boolean |
false |
|||
data.settings.datamatrix.packing_enabled |
да | boolean |
false |
|||
data.settings.datamatrix.validation_mode |
нет | enum:int64 |
enum: 0, 1, 2 | 0 disabled, 1 template validation, 2 database validation. Read from warehouse DataMatrix settings. | 1 |
|
data.settings.expiration_date_enabled |
нет | boolean |
true |
|||
data.settings.production_date_enabled |
нет | boolean |
true |
|||
data.settings.batch_enabled |
нет | boolean |
true |
|||
data.settings.auto_acceptance_enabled |
нет | boolean |
false |
|||
data.settings.order_auto_conduct_mode |
нет | enum:int64 | null |
enum: 0, 1, 2, 3 | Разрешение на явные действия автопроведения заказа: 0 — запрещено; 1 — пропуск сборки; 2 — пропуск упаковки; 3 — пропуск сборки и упаковки. Сама настройка не выполняет эти действия и не подтверждает передачу перевозчику. Автоупаковка заблокирована при включённой проверке DataMatrix на упаковке. | 0 |
|
data.settings.require_acceptance_dimensions |
нет | boolean |
false |
|||
data.settings.crossdock_enabled |
нет | boolean |
Allows cross-docking for a client warehouse. | true |
||
data.document |
нет | object | null |
|
|||
data.document.number |
нет | string | null |
"WH-DOC-1001" |
|||
data.document.date |
нет | string:date | null |
"2026-07-14" |
|||
data.custom |
нет | object |
{"billing_group":"Varna B"} |
Примеры запроса
default
{
"data": {
"name": "Client Warehouse Varna",
"type_id": 2,
"parent_id": 42
}
}
Ответы
201 Created.
Created.
| Поле | Обязательное | Тип | Флаги | Ограничения | Описание | Пример |
|---|---|---|---|---|---|---|
data |
да | Warehouse |
Склад или клиентский склад. | |
||
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.name |
да | string |
"Warehouse Sofia" |
|||
data.status_id |
нет | integer:int64 | null |
ID статуса склада. Значения хранятся в базе данных и не моделируются как закрытый enum в публичном контракте. | 1 |
||
data.type_id |
нет | integer:int64 | null |
ID типа склада. Значения хранятся в базе данных и не моделируются как закрытый enum в публичном контракте. | 2 |
||
data.domain_id |
нет | integer:int64 | null |
min: 1 | 3 |
||
data.owner_user_id |
нет | integer:int64 | null |
min: 1 | 15 |
||
data.parent_id |
нет | integer:int64 | null |
min: 1 | 41 |
||
data.country_id |
нет | integer:int64 | null |
min: 1 | 100 |
||
data.currency_id |
нет | integer:int64 | null |
min: 1 | 978 |
||
data.company_id |
нет | integer:int64 | null |
min: 1 | 7 |
||
data.service_provider_company_id |
нет | integer:int64 | null |
min: 1 | 8 |
||
data.billing_setting_id |
нет | integer:int64 | null |
min: 1 | 12 |
||
data.settings |
нет | WarehouseSettings |
|
|||
data.settings.datamatrix |
нет | object |
|
|||
data.settings.datamatrix.enabled |
да | boolean |
false |
|||
data.settings.datamatrix.type |
нет | string | null |
"standard" |
|||
data.settings.datamatrix.acceptance_enabled |
да | boolean |
false |
|||
data.settings.datamatrix.picking_enabled |
да | boolean |
false |
|||
data.settings.datamatrix.packing_enabled |
да | boolean |
false |
|||
data.settings.datamatrix.validation_mode |
нет | enum:int64 |
enum: 0, 1, 2 | 0 disabled, 1 template validation, 2 database validation. Read from warehouse DataMatrix settings. | 1 |
|
data.settings.expiration_date_enabled |
нет | boolean |
true |
|||
data.settings.production_date_enabled |
нет | boolean |
true |
|||
data.settings.batch_enabled |
нет | boolean |
true |
|||
data.settings.auto_acceptance_enabled |
нет | boolean |
false |
|||
data.settings.order_auto_conduct_mode |
нет | enum:int64 | null |
enum: 0, 1, 2, 3 | Разрешение на явные действия автопроведения заказа: 0 — запрещено; 1 — пропуск сборки; 2 — пропуск упаковки; 3 — пропуск сборки и упаковки. Сама настройка не выполняет эти действия и не подтверждает передачу перевозчику. Автоупаковка заблокирована при включённой проверке DataMatrix на упаковке. | 0 |
|
data.settings.require_acceptance_dimensions |
нет | boolean |
false |
|||
data.settings.crossdock_enabled |
нет | boolean |
Allows cross-docking for a client warehouse. | true |
||
data.document |
нет | WarehouseDocument |
|
|||
data.document.number |
нет | string | null |
"WH-DOC-1001" |
|||
data.document.date |
нет | string:date | null |
"2026-07-14" |
|||
data.custom |
нет | object |
Специфичные для установки атрибуты склада. | {"billing_group":"Sofia A"} |
||
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": 42,
"name": "Warehouse Sofia",
"status_id": 1,
"type_id": 2,
"domain_id": 3,
"owner_user_id": 15,
"parent_id": 41,
"country_id": 100,
"currency_id": 978,
"company_id": 7,
"service_provider_company_id": 8,
"billing_setting_id": 12,
"settings": {
"datamatrix": {
"enabled": true,
"type": "standard",
"acceptance_enabled": true,
"picking_enabled": true,
"packing_enabled": false
},
"expiration_date_enabled": true,
"production_date_enabled": true,
"batch_enabled": true,
"auto_acceptance_enabled": false,
"order_auto_conduct_mode": 0,
"require_acceptance_dimensions": false
},
"document": {
"number": "WH-DOC-1001",
"date": "2026-07-14"
},
"custom": {
"billing_group": "Sofia A"
},
"created_at": "2026-07-14T09:00:00Z",
"updated_at": "2026-07-14T09:30: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"
}
Получить склад
| operationId | getWarehouses |
|---|---|
| Раздел | Склады |
| Безопасность | bearerAuth |
Возвращает один ресурс: склад, если он существует и видим аутентифицированному аккаунту.
Пример HTTP-запроса (cURL)
Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.
curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/warehouses/1001" \
--header "Accept: application/json" \
--header "Authorization: Bearer ${NWMS_TOKEN}"Параметры
| Имя | Где | Обязательное | Тип | Style | Explode | Ограничения | Описание | Пример |
|---|---|---|---|---|---|---|---|---|
id |
path | да | integer:int64 |
min: 1 | ID склада. | 1001 |
Тело запроса
Тело запроса отсутствует.
Ответы
200 Successful response.
Successful response.
| Поле | Обязательное | Тип | Флаги | Ограничения | Описание | Пример |
|---|---|---|---|---|---|---|
data |
да | Warehouse |
Склад или клиентский склад. | |
||
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.name |
да | string |
"Warehouse Sofia" |
|||
data.status_id |
нет | integer:int64 | null |
ID статуса склада. Значения хранятся в базе данных и не моделируются как закрытый enum в публичном контракте. | 1 |
||
data.type_id |
нет | integer:int64 | null |
ID типа склада. Значения хранятся в базе данных и не моделируются как закрытый enum в публичном контракте. | 2 |
||
data.domain_id |
нет | integer:int64 | null |
min: 1 | 3 |
||
data.owner_user_id |
нет | integer:int64 | null |
min: 1 | 15 |
||
data.parent_id |
нет | integer:int64 | null |
min: 1 | 41 |
||
data.country_id |
нет | integer:int64 | null |
min: 1 | 100 |
||
data.currency_id |
нет | integer:int64 | null |
min: 1 | 978 |
||
data.company_id |
нет | integer:int64 | null |
min: 1 | 7 |
||
data.service_provider_company_id |
нет | integer:int64 | null |
min: 1 | 8 |
||
data.billing_setting_id |
нет | integer:int64 | null |
min: 1 | 12 |
||
data.settings |
нет | WarehouseSettings |
|
|||
data.settings.datamatrix |
нет | object |
|
|||
data.settings.datamatrix.enabled |
да | boolean |
false |
|||
data.settings.datamatrix.type |
нет | string | null |
"standard" |
|||
data.settings.datamatrix.acceptance_enabled |
да | boolean |
false |
|||
data.settings.datamatrix.picking_enabled |
да | boolean |
false |
|||
data.settings.datamatrix.packing_enabled |
да | boolean |
false |
|||
data.settings.datamatrix.validation_mode |
нет | enum:int64 |
enum: 0, 1, 2 | 0 disabled, 1 template validation, 2 database validation. Read from warehouse DataMatrix settings. | 1 |
|
data.settings.expiration_date_enabled |
нет | boolean |
true |
|||
data.settings.production_date_enabled |
нет | boolean |
true |
|||
data.settings.batch_enabled |
нет | boolean |
true |
|||
data.settings.auto_acceptance_enabled |
нет | boolean |
false |
|||
data.settings.order_auto_conduct_mode |
нет | enum:int64 | null |
enum: 0, 1, 2, 3 | Разрешение на явные действия автопроведения заказа: 0 — запрещено; 1 — пропуск сборки; 2 — пропуск упаковки; 3 — пропуск сборки и упаковки. Сама настройка не выполняет эти действия и не подтверждает передачу перевозчику. Автоупаковка заблокирована при включённой проверке DataMatrix на упаковке. | 0 |
|
data.settings.require_acceptance_dimensions |
нет | boolean |
false |
|||
data.settings.crossdock_enabled |
нет | boolean |
Allows cross-docking for a client warehouse. | true |
||
data.document |
нет | WarehouseDocument |
|
|||
data.document.number |
нет | string | null |
"WH-DOC-1001" |
|||
data.document.date |
нет | string:date | null |
"2026-07-14" |
|||
data.custom |
нет | object |
Специфичные для установки атрибуты склада. | {"billing_group":"Sofia A"} |
||
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": 42,
"name": "Warehouse Sofia",
"status_id": 1,
"type_id": 2,
"domain_id": 3,
"owner_user_id": 15,
"parent_id": 41,
"country_id": 100,
"currency_id": 978,
"company_id": 7,
"service_provider_company_id": 8,
"billing_setting_id": 12,
"settings": {
"datamatrix": {
"enabled": true,
"type": "standard",
"acceptance_enabled": true,
"picking_enabled": true,
"packing_enabled": false
},
"expiration_date_enabled": true,
"production_date_enabled": true,
"batch_enabled": true,
"auto_acceptance_enabled": false,
"order_auto_conduct_mode": 0,
"require_acceptance_dimensions": false
},
"document": {
"number": "WH-DOC-1001",
"date": "2026-07-14"
},
"custom": {
"billing_group": "Sofia A"
},
"created_at": "2026-07-14T09:00:00Z",
"updated_at": "2026-07-14T09:30: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"
}
Обновить склад
| operationId | replaceWarehouses |
|---|---|
| Раздел | Склады |
| Безопасность | bearerAuth |
Updates editable warehouse fields. Operational flags, document metadata, billing setting, and custom attributes may be changed when permitted.
Текущее поведение backend является legacy-семантикой частичного обновления: пропущенные поля не изменяются.
Пример HTTP-запроса (cURL)
Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.
curl --globoff --request PUT "${NWMS_BASE_URL}/api/v2/warehouses/1001" \
--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 | ID склада. | 1001 |
||
Idempotency-Key |
header | нет | string |
maxLength: 191 | Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. |
"ord-create-20260714-001" |
Тело запроса
ReplaceWarehouseRequest обязательно
| Поле | Обязательное | Тип | Флаги | Ограничения | Описание | Пример |
|---|---|---|---|---|---|---|
data |
да | ReplaceWarehousePayload |
Legacy PUT payload. Текущий backend применяет семантику частичного обновления. | |
||
data.name |
нет | string | null |
minLength: 1 | "Client Warehouse Varna" |
||
data.status_id |
нет | integer:int64 | null |
ID статуса склада. Значения хранятся в базе данных и не моделируются как закрытый enum в публичном контракте. | 1 |
||
data.owner_user_id |
нет | integer:int64 | null |
min: 1 | 15 |
||
data.parent_id |
нет | integer:int64 | null |
min: 1 | 42 |
||
data.country_id |
нет | integer:int64 | null |
min: 1 | 100 |
||
data.currency_id |
нет | integer:int64 | null |
min: 1 | 978 |
||
data.company_id |
нет | integer:int64 | null |
min: 1 | 7 |
||
data.service_provider_company_id |
нет | integer:int64 | null |
min: 1 | 8 |
||
data.billing_setting_id |
нет | integer:int64 | null |
min: 1 | 12 |
||
data.settings |
нет | object | null |
|
|||
data.settings.datamatrix |
нет | object |
|
|||
data.settings.datamatrix.enabled |
да | boolean |
false |
|||
data.settings.datamatrix.type |
нет | string | null |
"standard" |
|||
data.settings.datamatrix.acceptance_enabled |
да | boolean |
false |
|||
data.settings.datamatrix.picking_enabled |
да | boolean |
false |
|||
data.settings.datamatrix.packing_enabled |
да | boolean |
false |
|||
data.settings.datamatrix.validation_mode |
нет | enum:int64 |
enum: 0, 1, 2 | 0 disabled, 1 template validation, 2 database validation. Read from warehouse DataMatrix settings. | 1 |
|
data.settings.expiration_date_enabled |
нет | boolean |
true |
|||
data.settings.production_date_enabled |
нет | boolean |
true |
|||
data.settings.batch_enabled |
нет | boolean |
true |
|||
data.settings.auto_acceptance_enabled |
нет | boolean |
false |
|||
data.settings.order_auto_conduct_mode |
нет | enum:int64 | null |
enum: 0, 1, 2, 3 | Разрешение на явные действия автопроведения заказа: 0 — запрещено; 1 — пропуск сборки; 2 — пропуск упаковки; 3 — пропуск сборки и упаковки. Сама настройка не выполняет эти действия и не подтверждает передачу перевозчику. Автоупаковка заблокирована при включённой проверке DataMatrix на упаковке. | 0 |
|
data.settings.require_acceptance_dimensions |
нет | boolean |
false |
|||
data.settings.crossdock_enabled |
нет | boolean |
Allows cross-docking for a client warehouse. | true |
||
data.document |
нет | object | null |
|
|||
data.document.number |
нет | string | null |
"WH-DOC-1001" |
|||
data.document.date |
нет | string:date | null |
"2026-07-14" |
|||
data.custom |
нет | object |
{"billing_group":"Varna B"} |
Примеры запроса
default
{
"data": {
"name": "Client Warehouse Varna",
"billing_setting_id": 12
}
}
Ответы
200 Successful response.
Successful response.
| Поле | Обязательное | Тип | Флаги | Ограничения | Описание | Пример |
|---|---|---|---|---|---|---|
data |
да | Warehouse |
Склад или клиентский склад. | |
||
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.name |
да | string |
"Warehouse Sofia" |
|||
data.status_id |
нет | integer:int64 | null |
ID статуса склада. Значения хранятся в базе данных и не моделируются как закрытый enum в публичном контракте. | 1 |
||
data.type_id |
нет | integer:int64 | null |
ID типа склада. Значения хранятся в базе данных и не моделируются как закрытый enum в публичном контракте. | 2 |
||
data.domain_id |
нет | integer:int64 | null |
min: 1 | 3 |
||
data.owner_user_id |
нет | integer:int64 | null |
min: 1 | 15 |
||
data.parent_id |
нет | integer:int64 | null |
min: 1 | 41 |
||
data.country_id |
нет | integer:int64 | null |
min: 1 | 100 |
||
data.currency_id |
нет | integer:int64 | null |
min: 1 | 978 |
||
data.company_id |
нет | integer:int64 | null |
min: 1 | 7 |
||
data.service_provider_company_id |
нет | integer:int64 | null |
min: 1 | 8 |
||
data.billing_setting_id |
нет | integer:int64 | null |
min: 1 | 12 |
||
data.settings |
нет | WarehouseSettings |
|
|||
data.settings.datamatrix |
нет | object |
|
|||
data.settings.datamatrix.enabled |
да | boolean |
false |
|||
data.settings.datamatrix.type |
нет | string | null |
"standard" |
|||
data.settings.datamatrix.acceptance_enabled |
да | boolean |
false |
|||
data.settings.datamatrix.picking_enabled |
да | boolean |
false |
|||
data.settings.datamatrix.packing_enabled |
да | boolean |
false |
|||
data.settings.datamatrix.validation_mode |
нет | enum:int64 |
enum: 0, 1, 2 | 0 disabled, 1 template validation, 2 database validation. Read from warehouse DataMatrix settings. | 1 |
|
data.settings.expiration_date_enabled |
нет | boolean |
true |
|||
data.settings.production_date_enabled |
нет | boolean |
true |
|||
data.settings.batch_enabled |
нет | boolean |
true |
|||
data.settings.auto_acceptance_enabled |
нет | boolean |
false |
|||
data.settings.order_auto_conduct_mode |
нет | enum:int64 | null |
enum: 0, 1, 2, 3 | Разрешение на явные действия автопроведения заказа: 0 — запрещено; 1 — пропуск сборки; 2 — пропуск упаковки; 3 — пропуск сборки и упаковки. Сама настройка не выполняет эти действия и не подтверждает передачу перевозчику. Автоупаковка заблокирована при включённой проверке DataMatrix на упаковке. | 0 |
|
data.settings.require_acceptance_dimensions |
нет | boolean |
false |
|||
data.settings.crossdock_enabled |
нет | boolean |
Allows cross-docking for a client warehouse. | true |
||
data.document |
нет | WarehouseDocument |
|
|||
data.document.number |
нет | string | null |
"WH-DOC-1001" |
|||
data.document.date |
нет | string:date | null |
"2026-07-14" |
|||
data.custom |
нет | object |
Специфичные для установки атрибуты склада. | {"billing_group":"Sofia A"} |
||
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": 42,
"name": "Warehouse Sofia",
"status_id": 1,
"type_id": 2,
"domain_id": 3,
"owner_user_id": 15,
"parent_id": 41,
"country_id": 100,
"currency_id": 978,
"company_id": 7,
"service_provider_company_id": 8,
"billing_setting_id": 12,
"settings": {
"datamatrix": {
"enabled": true,
"type": "standard",
"acceptance_enabled": true,
"picking_enabled": true,
"packing_enabled": false
},
"expiration_date_enabled": true,
"production_date_enabled": true,
"batch_enabled": true,
"auto_acceptance_enabled": false,
"order_auto_conduct_mode": 0,
"require_acceptance_dimensions": false
},
"document": {
"number": "WH-DOC-1001",
"date": "2026-07-14"
},
"custom": {
"billing_group": "Sofia A"
},
"created_at": "2026-07-14T09:00:00Z",
"updated_at": "2026-07-14T09:30: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"
}
Обновить склад
| operationId | patchWarehouses |
|---|---|
| Раздел | Склады |
| Безопасность | bearerAuth |
Update warehouse. Запрос использует описанную payload-схему, проверяет видимость tenant и возвращает нормализованный API envelope.
Текущее поведение backend является legacy-семантикой частичного обновления: пропущенные поля не изменяются.
Пример HTTP-запроса (cURL)
Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.
curl --globoff --request PATCH "${NWMS_BASE_URL}/api/v2/warehouses/1001" \
--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 | ID склада. | 1001 |
||
Idempotency-Key |
header | нет | string |
maxLength: 191 | Опциональный ключ идемпотентности для write-запросов API v2. Успешные ответы 2xx/3xx повторяются для того же ключа и идентичного payload в течение одного дня. Тот же ключ с другим payload возвращает 409. |
"ord-create-20260714-001" |
Тело запроса
PatchWarehouseRequest обязательно
| Поле | Обязательное | Тип | Флаги | Ограничения | Описание | Пример |
|---|---|---|---|---|---|---|
data |
да | PatchWarehousePayload |
|
|||
data.name |
нет | string | null |
minLength: 1 | "Client Warehouse Varna" |
||
data.status_id |
нет | integer:int64 | null |
ID статуса склада. Значения хранятся в базе данных и не моделируются как закрытый enum в публичном контракте. | 1 |
||
data.owner_user_id |
нет | integer:int64 | null |
min: 1 | 15 |
||
data.parent_id |
нет | integer:int64 | null |
min: 1 | 42 |
||
data.country_id |
нет | integer:int64 | null |
min: 1 | 100 |
||
data.currency_id |
нет | integer:int64 | null |
min: 1 | 978 |
||
data.company_id |
нет | integer:int64 | null |
min: 1 | 7 |
||
data.service_provider_company_id |
нет | integer:int64 | null |
min: 1 | 8 |
||
data.billing_setting_id |
нет | integer:int64 | null |
min: 1 | 12 |
||
data.settings |
нет | object | null |
|
|||
data.settings.datamatrix |
нет | object |
|
|||
data.settings.datamatrix.enabled |
да | boolean |
false |
|||
data.settings.datamatrix.type |
нет | string | null |
"standard" |
|||
data.settings.datamatrix.acceptance_enabled |
да | boolean |
false |
|||
data.settings.datamatrix.picking_enabled |
да | boolean |
false |
|||
data.settings.datamatrix.packing_enabled |
да | boolean |
false |
|||
data.settings.datamatrix.validation_mode |
нет | enum:int64 |
enum: 0, 1, 2 | 0 disabled, 1 template validation, 2 database validation. Read from warehouse DataMatrix settings. | 1 |
|
data.settings.expiration_date_enabled |
нет | boolean |
true |
|||
data.settings.production_date_enabled |
нет | boolean |
true |
|||
data.settings.batch_enabled |
нет | boolean |
true |
|||
data.settings.auto_acceptance_enabled |
нет | boolean |
false |
|||
data.settings.order_auto_conduct_mode |
нет | enum:int64 | null |
enum: 0, 1, 2, 3 | Разрешение на явные действия автопроведения заказа: 0 — запрещено; 1 — пропуск сборки; 2 — пропуск упаковки; 3 — пропуск сборки и упаковки. Сама настройка не выполняет эти действия и не подтверждает передачу перевозчику. Автоупаковка заблокирована при включённой проверке DataMatrix на упаковке. | 0 |
|
data.settings.require_acceptance_dimensions |
нет | boolean |
false |
|||
data.settings.crossdock_enabled |
нет | boolean |
Allows cross-docking for a client warehouse. | true |
||
data.document |
нет | object | null |
|
|||
data.document.number |
нет | string | null |
"WH-DOC-1001" |
|||
data.document.date |
нет | string:date | null |
"2026-07-14" |
|||
data.custom |
нет | object |
{"billing_group":"Varna B"} |
Примеры запроса
default
{
"data": {
"billing_setting_id": 12
}
}
Ответы
200 Successful response.
Successful response.
| Поле | Обязательное | Тип | Флаги | Ограничения | Описание | Пример |
|---|---|---|---|---|---|---|
data |
да | Warehouse |
Склад или клиентский склад. | |
||
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.name |
да | string |
"Warehouse Sofia" |
|||
data.status_id |
нет | integer:int64 | null |
ID статуса склада. Значения хранятся в базе данных и не моделируются как закрытый enum в публичном контракте. | 1 |
||
data.type_id |
нет | integer:int64 | null |
ID типа склада. Значения хранятся в базе данных и не моделируются как закрытый enum в публичном контракте. | 2 |
||
data.domain_id |
нет | integer:int64 | null |
min: 1 | 3 |
||
data.owner_user_id |
нет | integer:int64 | null |
min: 1 | 15 |
||
data.parent_id |
нет | integer:int64 | null |
min: 1 | 41 |
||
data.country_id |
нет | integer:int64 | null |
min: 1 | 100 |
||
data.currency_id |
нет | integer:int64 | null |
min: 1 | 978 |
||
data.company_id |
нет | integer:int64 | null |
min: 1 | 7 |
||
data.service_provider_company_id |
нет | integer:int64 | null |
min: 1 | 8 |
||
data.billing_setting_id |
нет | integer:int64 | null |
min: 1 | 12 |
||
data.settings |
нет | WarehouseSettings |
|
|||
data.settings.datamatrix |
нет | object |
|
|||
data.settings.datamatrix.enabled |
да | boolean |
false |
|||
data.settings.datamatrix.type |
нет | string | null |
"standard" |
|||
data.settings.datamatrix.acceptance_enabled |
да | boolean |
false |
|||
data.settings.datamatrix.picking_enabled |
да | boolean |
false |
|||
data.settings.datamatrix.packing_enabled |
да | boolean |
false |
|||
data.settings.datamatrix.validation_mode |
нет | enum:int64 |
enum: 0, 1, 2 | 0 disabled, 1 template validation, 2 database validation. Read from warehouse DataMatrix settings. | 1 |
|
data.settings.expiration_date_enabled |
нет | boolean |
true |
|||
data.settings.production_date_enabled |
нет | boolean |
true |
|||
data.settings.batch_enabled |
нет | boolean |
true |
|||
data.settings.auto_acceptance_enabled |
нет | boolean |
false |
|||
data.settings.order_auto_conduct_mode |
нет | enum:int64 | null |
enum: 0, 1, 2, 3 | Разрешение на явные действия автопроведения заказа: 0 — запрещено; 1 — пропуск сборки; 2 — пропуск упаковки; 3 — пропуск сборки и упаковки. Сама настройка не выполняет эти действия и не подтверждает передачу перевозчику. Автоупаковка заблокирована при включённой проверке DataMatrix на упаковке. | 0 |
|
data.settings.require_acceptance_dimensions |
нет | boolean |
false |
|||
data.settings.crossdock_enabled |
нет | boolean |
Allows cross-docking for a client warehouse. | true |
||
data.document |
нет | WarehouseDocument |
|
|||
data.document.number |
нет | string | null |
"WH-DOC-1001" |
|||
data.document.date |
нет | string:date | null |
"2026-07-14" |
|||
data.custom |
нет | object |
Специфичные для установки атрибуты склада. | {"billing_group":"Sofia A"} |
||
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": 42,
"name": "Warehouse Sofia",
"status_id": 1,
"type_id": 2,
"domain_id": 3,
"owner_user_id": 15,
"parent_id": 41,
"country_id": 100,
"currency_id": 978,
"company_id": 7,
"service_provider_company_id": 8,
"billing_setting_id": 12,
"settings": {
"datamatrix": {
"enabled": true,
"type": "standard",
"acceptance_enabled": true,
"picking_enabled": true,
"packing_enabled": false
},
"expiration_date_enabled": true,
"production_date_enabled": true,
"batch_enabled": true,
"auto_acceptance_enabled": false,
"order_auto_conduct_mode": 0,
"require_acceptance_dimensions": false
},
"document": {
"number": "WH-DOC-1001",
"date": "2026-07-14"
},
"custom": {
"billing_group": "Sofia A"
},
"created_at": "2026-07-14T09:00:00Z",
"updated_at": "2026-07-14T09:30: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"
}