Визиты погрузки
Каждая операция ниже сгенерирована из OpenAPI v2 и содержит параметры, поля запроса, поля ответа, ошибки и примеры.
Визиты погрузки
Получить список визитов погрузки
| operationId | listLoadingVisits |
|---|---|
| Раздел | Визиты погрузки |
| Безопасность | 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/loading/visits" \
--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, planned_at, registered_at, queue_number, 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 |
warehouse_id |
query | нет | integer:int64 |
form | true | min: 1 | Фильтр по warehouse_id с точным совпадением. Этот фильтр также можно передать как filter[warehouse_id], если это поддерживает Laravel query adapter. |
42 |
client_warehouse_id |
query | нет | integer:int64 |
form | true | min: 1 | Фильтр по client_warehouse_id с точным совпадением. Этот фильтр также можно передать как filter[client_warehouse_id], если это поддерживает Laravel query adapter. |
43 |
shop_id |
query | нет | integer:int64 |
form | true | min: 1 | Фильтр по shop_id с точным совпадением. Этот фильтр также можно передать как filter[shop_id], если это поддерживает Laravel query adapter. |
12 |
type |
query | нет | LoadingVisitType |
form | true | Фильтр по type с точным совпадением. Этот фильтр также можно передать как filter[type], если это поддерживает Laravel query adapter. |
|
|
status |
query | нет | LoadingVisitStatus |
form | true | Фильтр по status с точным совпадением. Этот фильтр также можно передать как filter[status], если это поддерживает Laravel query adapter. |
|
|
document_type |
query | нет | LoadingVisitDocumentType |
form | true | Фильтр по document_type с точным совпадением. Этот фильтр также можно передать как filter[document_type], если это поддерживает Laravel query adapter. |
|
|
document_id |
query | нет | integer:int64 |
form | true | min: 1 | Фильтр по document_id с точным совпадением. Этот фильтр также можно передать как filter[document_id], если это поддерживает Laravel query adapter. |
5101 |
driver_phone |
query | нет | string |
form | true | Фильтр по driver_phone с частичным текстовым совпадением. Этот фильтр также можно передать как filter[driver_phone], если это поддерживает Laravel query adapter. |
"+359888123456" |
|
driver_name |
query | нет | string |
form | true | Фильтр по driver_name с частичным текстовым совпадением. Этот фильтр также можно передать как filter[driver_name], если это поддерживает Laravel query adapter. |
"Ivan Petrov" |
|
vehicle_number |
query | нет | string |
form | true | Фильтр по vehicle_number с частичным текстовым совпадением. Этот фильтр также можно передать как filter[vehicle_number], если это поддерживает Laravel query adapter. |
"CB1234AB" |
|
planned_at_from |
query | нет | string:date |
form | true | Нижняя включительная граница даты для planned_at. Этот фильтр также можно передать как filter[planned_at_from], если это поддерживает Laravel query adapter. |
"2026-07-14" |
|
planned_at_to |
query | нет | string:date |
form | true | Верхняя включительная граница даты для planned_at. Этот фильтр также можно передать как filter[planned_at_to], если это поддерживает Laravel query adapter. |
"2026-07-14" |
|
registered_at_from |
query | нет | string:date |
form | true | Нижняя включительная граница даты для registered_at. Этот фильтр также можно передать как filter[registered_at_from], если это поддерживает Laravel query adapter. |
"2026-07-14" |
|
registered_at_to |
query | нет | string:date |
form | true | Верхняя включительная граница даты для registered_at. Этот фильтр также можно передать как filter[registered_at_to], если это поддерживает Laravel query adapter. |
"2026-07-14" |
|
created_at_from |
query | нет | string:date |
form | true | Нижняя включительная граница даты для created_at. Этот фильтр также можно передать как filter[created_at_from], если это поддерживает Laravel query adapter. |
"2026-07-14" |
|
created_at_to |
query | нет | string:date |
form | true | Верхняя включительная граница даты для created_at. Этот фильтр также можно передать как filter[created_at_to], если это поддерживает Laravel query adapter. |
"2026-07-14" |
Тело запроса
Тело запроса отсутствует.
Ответы
200 Successful response.
Successful response.
| Поле | Обязательное | Тип | Флаги | Ограничения | Описание | Пример |
|---|---|---|---|---|---|---|
data |
да | array<LoadingVisit> |
|
|||
data[] |
нет | LoadingVisit |
Запланированный визит погрузки или разгрузки. | |
||
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 | null |
min: 1 | 3 |
||
data[].warehouse_id |
нет | integer:int64 | null |
min: 1 | 42 |
||
data[].client_warehouse_id |
нет | integer:int64 | null |
min: 1 | 43 |
||
data[].shop_id |
нет | integer:int64 | null |
min: 1 | 12 |
||
data[].user_id |
нет | integer:int64 | null |
min: 1 | 9 |
||
data[].type |
да | LoadingVisitType |
enum: inbound, outbound | "inbound" |
||
data[].status |
да | LoadingVisitStatus |
enum: draft, approved, waiting, called, in_progress, finished, cancelled, no_show | Статус жизненного цикла визита погрузки, хранящийся в rwLoadingVisit. |
"waiting" |
|
data[].queue_number |
нет | integer:int64 | null |
17 |
|||
data[].driver |
да | LoadingVisitDriver |
|
|||
data[].driver.phone |
нет | string | null |
"+359888123456" |
|||
data[].driver.name |
нет | string | null |
"Ivan Petrov" |
|||
data[].driver.vehicle_number |
нет | string | null |
"CB1234AB" |
|||
data[].document |
да | LoadingVisitDocument |
|
|||
data[].document.type |
нет | enum | null |
enum: acceptance, order, send_document | "acceptance" |
||
data[].document.id |
нет | integer:int64 | null |
min: 1 | 5101 |
||
data[].document.acceptance_id |
нет | integer:int64 | null |
min: 1 | 5101 |
||
data[].document.order_id |
нет | integer:int64 | null |
min: 1 | 8101 |
||
data[].document.send_document_id |
нет | integer:int64 | null |
min: 1 | 9101 |
||
data[].planned_at |
нет | string:date-time | null |
"2026-07-14T10:00:00Z" |
|||
data[].registered_at |
нет | string:date-time | null |
"2026-07-14T09:55:00Z" |
|||
data[].called_at |
нет | string:date-time | null |
"2026-07-14T10:30:00Z" |
|||
data[].started_at |
нет | string:date-time | null |
"2026-07-14T10:30:00Z" |
|||
data[].finished_at |
нет | string:date-time | null |
"2026-07-14T10:30:00Z" |
|||
data[].gate_id |
нет | integer:int64 | null |
min: 1 | 3 |
||
data[].comment |
нет | string | null |
"ASN-100245" |
|||
data[].warehouse_comment |
нет | string | null |
"Gate 2" |
|||
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": 9101,
"domain_id": 3,
"warehouse_id": 42,
"client_warehouse_id": 43,
"shop_id": 12,
"user_id": 15,
"type": "inbound",
"status": "waiting",
"queue_number": 17,
"driver": {
"phone": "+359888123456",
"name": "Ivan Petrov",
"vehicle_number": "CB1234AB"
},
"document": {
"type": "acceptance",
"id": 5101,
"acceptance_id": 5101,
"order_id": null,
"send_document_id": null
},
"planned_at": "2026-07-14T10:00:00Z",
"registered_at": "2026-07-14T09:55:00Z",
"called_at": null,
"started_at": null,
"finished_at": null,
"gate_id": 3,
"comment": "ASN-100245",
"warehouse_comment": "Gate 2",
"created_at": "2026-07-14T09:00:00Z",
"updated_at": "2026-07-14T09:30:00Z"
}
],
"links": {
"first": "https://betawms.ffcdek.ru/api/v2/loading/visits?page=1",
"last": "https://betawms.ffcdek.ru/api/v2/loading/visits?page=2",
"prev": null,
"next": "https://betawms.ffcdek.ru/api/v2/loading/visits?page=2"
},
"meta": {
"api_version": "v2",
"current_page": 1,
"from": 1,
"last_page": 2,
"path": "https://betawms.ffcdek.ru/api/v2/loading/visits",
"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 | createLoadingVisits |
|---|---|
| Раздел | Визиты погрузки |
| Безопасность | bearerAuth |
Creates a loading or unloading visit for a warehouse slot. Driver, document link, planned time, and gate fields are validated against the user visible scope.
Пример HTTP-запроса (cURL)
Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.
curl --globoff --request POST "${NWMS_BASE_URL}/api/v2/loading/visits" \
--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" |
Тело запроса
CreateLoadingVisitRequest обязательно
| Поле | Обязательное | Тип | Флаги | Ограничения | Описание | Пример |
|---|---|---|---|---|---|---|
data |
да | CreateLoadingVisitPayload |
|
|||
data.warehouse_id |
нет | integer:int64 | null |
min: 1 | 42 |
||
data.client_warehouse_id |
нет | integer:int64 | null |
min: 1 | 43 |
||
data.shop_id |
нет | integer:int64 | null |
min: 1 | 12 |
||
data.type |
да | LoadingVisitType |
enum: inbound, outbound | "inbound" |
||
data.planned_at |
нет | string:date-time | null |
"2026-07-14T10:00:00Z" |
|||
data.gate_id |
нет | integer:int64 | null |
min: 1 | 3 |
||
data.comment |
нет | string | null |
"ASN-100245" |
|||
data.driver |
нет | object | null |
|
|||
data.driver.phone |
нет | string | null |
"+359888123456" |
|||
data.driver.name |
нет | string | null |
"Ivan Petrov" |
|||
data.driver.vehicle_number |
нет | string | null |
"CB1234AB" |
|||
data.document |
нет | object | null |
|
|||
data.document.type |
нет | enum | null |
enum: acceptance, order, send_document | "acceptance" |
||
data.document.id |
нет | integer:int64 | null |
min: 1 | 5101 |
||
data.document.acceptance_id |
нет | integer:int64 | null |
min: 1 | 5101 |
||
data.document.order_id |
нет | integer:int64 | null |
min: 1 | 8101 |
||
data.document.send_document_id |
нет | integer:int64 | null |
min: 1 | 9101 |
Примеры запроса
default
{
"data": {
"type": "inbound",
"warehouse_id": 42,
"planned_at": "2026-07-14T10:00:00Z",
"driver": {
"phone": "+359888123456",
"name": "Ivan Petrov",
"vehicle_number": "CB1234AB"
}
}
}
Ответы
201 Created.
Created.
| Поле | Обязательное | Тип | Флаги | Ограничения | Описание | Пример |
|---|---|---|---|---|---|---|
data |
да | LoadingVisit |
Запланированный визит погрузки или разгрузки. | |
||
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 | null |
min: 1 | 3 |
||
data.warehouse_id |
нет | integer:int64 | null |
min: 1 | 42 |
||
data.client_warehouse_id |
нет | integer:int64 | null |
min: 1 | 43 |
||
data.shop_id |
нет | integer:int64 | null |
min: 1 | 12 |
||
data.user_id |
нет | integer:int64 | null |
min: 1 | 9 |
||
data.type |
да | LoadingVisitType |
enum: inbound, outbound | "inbound" |
||
data.status |
да | LoadingVisitStatus |
enum: draft, approved, waiting, called, in_progress, finished, cancelled, no_show | Статус жизненного цикла визита погрузки, хранящийся в rwLoadingVisit. |
"waiting" |
|
data.queue_number |
нет | integer:int64 | null |
17 |
|||
data.driver |
да | LoadingVisitDriver |
|
|||
data.driver.phone |
нет | string | null |
"+359888123456" |
|||
data.driver.name |
нет | string | null |
"Ivan Petrov" |
|||
data.driver.vehicle_number |
нет | string | null |
"CB1234AB" |
|||
data.document |
да | LoadingVisitDocument |
|
|||
data.document.type |
нет | enum | null |
enum: acceptance, order, send_document | "acceptance" |
||
data.document.id |
нет | integer:int64 | null |
min: 1 | 5101 |
||
data.document.acceptance_id |
нет | integer:int64 | null |
min: 1 | 5101 |
||
data.document.order_id |
нет | integer:int64 | null |
min: 1 | 8101 |
||
data.document.send_document_id |
нет | integer:int64 | null |
min: 1 | 9101 |
||
data.planned_at |
нет | string:date-time | null |
"2026-07-14T10:00:00Z" |
|||
data.registered_at |
нет | string:date-time | null |
"2026-07-14T09:55:00Z" |
|||
data.called_at |
нет | string:date-time | null |
"2026-07-14T10:30:00Z" |
|||
data.started_at |
нет | string:date-time | null |
"2026-07-14T10:30:00Z" |
|||
data.finished_at |
нет | string:date-time | null |
"2026-07-14T10:30:00Z" |
|||
data.gate_id |
нет | integer:int64 | null |
min: 1 | 3 |
||
data.comment |
нет | string | null |
"ASN-100245" |
|||
data.warehouse_comment |
нет | string | null |
"Gate 2" |
|||
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": 9101,
"domain_id": 3,
"warehouse_id": 42,
"client_warehouse_id": 43,
"shop_id": 12,
"user_id": 15,
"type": "inbound",
"status": "waiting",
"queue_number": 17,
"driver": {
"phone": "+359888123456",
"name": "Ivan Petrov",
"vehicle_number": "CB1234AB"
},
"document": {
"type": "acceptance",
"id": 5101,
"acceptance_id": 5101,
"order_id": null,
"send_document_id": null
},
"planned_at": "2026-07-14T10:00:00Z",
"registered_at": "2026-07-14T09:55:00Z",
"called_at": null,
"started_at": null,
"finished_at": null,
"gate_id": 3,
"comment": "ASN-100245",
"warehouse_comment": "Gate 2",
"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 | getLoadingVisits |
|---|---|
| Раздел | Визиты погрузки |
| Безопасность | bearerAuth |
Возвращает один ресурс: визит погрузки, если он существует и видим аутентифицированному аккаунту.
Пример HTTP-запроса (cURL)
Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.
curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/loading/visits/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 |
да | LoadingVisit |
Запланированный визит погрузки или разгрузки. | |
||
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 | null |
min: 1 | 3 |
||
data.warehouse_id |
нет | integer:int64 | null |
min: 1 | 42 |
||
data.client_warehouse_id |
нет | integer:int64 | null |
min: 1 | 43 |
||
data.shop_id |
нет | integer:int64 | null |
min: 1 | 12 |
||
data.user_id |
нет | integer:int64 | null |
min: 1 | 9 |
||
data.type |
да | LoadingVisitType |
enum: inbound, outbound | "inbound" |
||
data.status |
да | LoadingVisitStatus |
enum: draft, approved, waiting, called, in_progress, finished, cancelled, no_show | Статус жизненного цикла визита погрузки, хранящийся в rwLoadingVisit. |
"waiting" |
|
data.queue_number |
нет | integer:int64 | null |
17 |
|||
data.driver |
да | LoadingVisitDriver |
|
|||
data.driver.phone |
нет | string | null |
"+359888123456" |
|||
data.driver.name |
нет | string | null |
"Ivan Petrov" |
|||
data.driver.vehicle_number |
нет | string | null |
"CB1234AB" |
|||
data.document |
да | LoadingVisitDocument |
|
|||
data.document.type |
нет | enum | null |
enum: acceptance, order, send_document | "acceptance" |
||
data.document.id |
нет | integer:int64 | null |
min: 1 | 5101 |
||
data.document.acceptance_id |
нет | integer:int64 | null |
min: 1 | 5101 |
||
data.document.order_id |
нет | integer:int64 | null |
min: 1 | 8101 |
||
data.document.send_document_id |
нет | integer:int64 | null |
min: 1 | 9101 |
||
data.planned_at |
нет | string:date-time | null |
"2026-07-14T10:00:00Z" |
|||
data.registered_at |
нет | string:date-time | null |
"2026-07-14T09:55:00Z" |
|||
data.called_at |
нет | string:date-time | null |
"2026-07-14T10:30:00Z" |
|||
data.started_at |
нет | string:date-time | null |
"2026-07-14T10:30:00Z" |
|||
data.finished_at |
нет | string:date-time | null |
"2026-07-14T10:30:00Z" |
|||
data.gate_id |
нет | integer:int64 | null |
min: 1 | 3 |
||
data.comment |
нет | string | null |
"ASN-100245" |
|||
data.warehouse_comment |
нет | string | null |
"Gate 2" |
|||
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": 9101,
"domain_id": 3,
"warehouse_id": 42,
"client_warehouse_id": 43,
"shop_id": 12,
"user_id": 15,
"type": "inbound",
"status": "waiting",
"queue_number": 17,
"driver": {
"phone": "+359888123456",
"name": "Ivan Petrov",
"vehicle_number": "CB1234AB"
},
"document": {
"type": "acceptance",
"id": 5101,
"acceptance_id": 5101,
"order_id": null,
"send_document_id": null
},
"planned_at": "2026-07-14T10:00:00Z",
"registered_at": "2026-07-14T09:55:00Z",
"called_at": null,
"started_at": null,
"finished_at": null,
"gate_id": 3,
"comment": "ASN-100245",
"warehouse_comment": "Gate 2",
"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 | replaceLoadingVisits |
|---|---|
| Раздел | Визиты погрузки |
| Безопасность | bearerAuth |
Update loading visit. Запрос использует описанную payload-схему, проверяет видимость tenant и возвращает нормализованный API envelope.
Текущее поведение backend является legacy-семантикой частичного обновления: пропущенные поля не изменяются.
Пример HTTP-запроса (cURL)
Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.
curl --globoff --request PUT "${NWMS_BASE_URL}/api/v2/loading/visits/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" |
Тело запроса
ReplaceLoadingVisitRequest обязательно
| Поле | Обязательное | Тип | Флаги | Ограничения | Описание | Пример |
|---|---|---|---|---|---|---|
data |
да | LoadingVisitWritePayload |
|
|||
data.warehouse_id |
нет | integer:int64 | null |
min: 1 | 42 |
||
data.client_warehouse_id |
нет | integer:int64 | null |
min: 1 | 43 |
||
data.shop_id |
нет | integer:int64 | null |
min: 1 | 12 |
||
data.type |
нет | enum | null |
enum: inbound, outbound | "inbound" |
||
data.planned_at |
нет | string:date-time | null |
"2026-07-14T10:00:00Z" |
|||
data.gate_id |
нет | integer:int64 | null |
min: 1 | 3 |
||
data.comment |
нет | string | null |
"ASN-100245" |
|||
data.driver |
нет | object | null |
|
|||
data.driver.phone |
нет | string | null |
"+359888123456" |
|||
data.driver.name |
нет | string | null |
"Ivan Petrov" |
|||
data.driver.vehicle_number |
нет | string | null |
"CB1234AB" |
|||
data.document |
нет | object | null |
|
|||
data.document.type |
нет | enum | null |
enum: acceptance, order, send_document | "acceptance" |
||
data.document.id |
нет | integer:int64 | null |
min: 1 | 5101 |
||
data.document.acceptance_id |
нет | integer:int64 | null |
min: 1 | 5101 |
||
data.document.order_id |
нет | integer:int64 | null |
min: 1 | 8101 |
||
data.document.send_document_id |
нет | integer:int64 | null |
min: 1 | 9101 |
Примеры запроса
default
{
"data": {
"planned_at": "2026-07-14T11:00:00Z",
"gate_id": 3
}
}
Ответы
200 Successful response.
Successful response.
| Поле | Обязательное | Тип | Флаги | Ограничения | Описание | Пример |
|---|---|---|---|---|---|---|
data |
да | LoadingVisit |
Запланированный визит погрузки или разгрузки. | |
||
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 | null |
min: 1 | 3 |
||
data.warehouse_id |
нет | integer:int64 | null |
min: 1 | 42 |
||
data.client_warehouse_id |
нет | integer:int64 | null |
min: 1 | 43 |
||
data.shop_id |
нет | integer:int64 | null |
min: 1 | 12 |
||
data.user_id |
нет | integer:int64 | null |
min: 1 | 9 |
||
data.type |
да | LoadingVisitType |
enum: inbound, outbound | "inbound" |
||
data.status |
да | LoadingVisitStatus |
enum: draft, approved, waiting, called, in_progress, finished, cancelled, no_show | Статус жизненного цикла визита погрузки, хранящийся в rwLoadingVisit. |
"waiting" |
|
data.queue_number |
нет | integer:int64 | null |
17 |
|||
data.driver |
да | LoadingVisitDriver |
|
|||
data.driver.phone |
нет | string | null |
"+359888123456" |
|||
data.driver.name |
нет | string | null |
"Ivan Petrov" |
|||
data.driver.vehicle_number |
нет | string | null |
"CB1234AB" |
|||
data.document |
да | LoadingVisitDocument |
|
|||
data.document.type |
нет | enum | null |
enum: acceptance, order, send_document | "acceptance" |
||
data.document.id |
нет | integer:int64 | null |
min: 1 | 5101 |
||
data.document.acceptance_id |
нет | integer:int64 | null |
min: 1 | 5101 |
||
data.document.order_id |
нет | integer:int64 | null |
min: 1 | 8101 |
||
data.document.send_document_id |
нет | integer:int64 | null |
min: 1 | 9101 |
||
data.planned_at |
нет | string:date-time | null |
"2026-07-14T10:00:00Z" |
|||
data.registered_at |
нет | string:date-time | null |
"2026-07-14T09:55:00Z" |
|||
data.called_at |
нет | string:date-time | null |
"2026-07-14T10:30:00Z" |
|||
data.started_at |
нет | string:date-time | null |
"2026-07-14T10:30:00Z" |
|||
data.finished_at |
нет | string:date-time | null |
"2026-07-14T10:30:00Z" |
|||
data.gate_id |
нет | integer:int64 | null |
min: 1 | 3 |
||
data.comment |
нет | string | null |
"ASN-100245" |
|||
data.warehouse_comment |
нет | string | null |
"Gate 2" |
|||
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": 9101,
"domain_id": 3,
"warehouse_id": 42,
"client_warehouse_id": 43,
"shop_id": 12,
"user_id": 15,
"type": "inbound",
"status": "waiting",
"queue_number": 17,
"driver": {
"phone": "+359888123456",
"name": "Ivan Petrov",
"vehicle_number": "CB1234AB"
},
"document": {
"type": "acceptance",
"id": 5101,
"acceptance_id": 5101,
"order_id": null,
"send_document_id": null
},
"planned_at": "2026-07-14T10:00:00Z",
"registered_at": "2026-07-14T09:55:00Z",
"called_at": null,
"started_at": null,
"finished_at": null,
"gate_id": 3,
"comment": "ASN-100245",
"warehouse_comment": "Gate 2",
"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 | patchLoadingVisits |
|---|---|
| Раздел | Визиты погрузки |
| Безопасность | bearerAuth |
Update loading visit. Запрос использует описанную payload-схему, проверяет видимость tenant и возвращает нормализованный API envelope.
Текущее поведение backend является legacy-семантикой частичного обновления: пропущенные поля не изменяются.
Пример HTTP-запроса (cURL)
Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.
curl --globoff --request PATCH "${NWMS_BASE_URL}/api/v2/loading/visits/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" |
Тело запроса
PatchLoadingVisitRequest обязательно
| Поле | Обязательное | Тип | Флаги | Ограничения | Описание | Пример |
|---|---|---|---|---|---|---|
data |
да | LoadingVisitWritePayload |
|
|||
data.warehouse_id |
нет | integer:int64 | null |
min: 1 | 42 |
||
data.client_warehouse_id |
нет | integer:int64 | null |
min: 1 | 43 |
||
data.shop_id |
нет | integer:int64 | null |
min: 1 | 12 |
||
data.type |
нет | enum | null |
enum: inbound, outbound | "inbound" |
||
data.planned_at |
нет | string:date-time | null |
"2026-07-14T10:00:00Z" |
|||
data.gate_id |
нет | integer:int64 | null |
min: 1 | 3 |
||
data.comment |
нет | string | null |
"ASN-100245" |
|||
data.driver |
нет | object | null |
|
|||
data.driver.phone |
нет | string | null |
"+359888123456" |
|||
data.driver.name |
нет | string | null |
"Ivan Petrov" |
|||
data.driver.vehicle_number |
нет | string | null |
"CB1234AB" |
|||
data.document |
нет | object | null |
|
|||
data.document.type |
нет | enum | null |
enum: acceptance, order, send_document | "acceptance" |
||
data.document.id |
нет | integer:int64 | null |
min: 1 | 5101 |
||
data.document.acceptance_id |
нет | integer:int64 | null |
min: 1 | 5101 |
||
data.document.order_id |
нет | integer:int64 | null |
min: 1 | 8101 |
||
data.document.send_document_id |
нет | integer:int64 | null |
min: 1 | 9101 |
Примеры запроса
default
{
"data": {
"gate_id": 3
}
}
Ответы
200 Successful response.
Successful response.
| Поле | Обязательное | Тип | Флаги | Ограничения | Описание | Пример |
|---|---|---|---|---|---|---|
data |
да | LoadingVisit |
Запланированный визит погрузки или разгрузки. | |
||
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 | null |
min: 1 | 3 |
||
data.warehouse_id |
нет | integer:int64 | null |
min: 1 | 42 |
||
data.client_warehouse_id |
нет | integer:int64 | null |
min: 1 | 43 |
||
data.shop_id |
нет | integer:int64 | null |
min: 1 | 12 |
||
data.user_id |
нет | integer:int64 | null |
min: 1 | 9 |
||
data.type |
да | LoadingVisitType |
enum: inbound, outbound | "inbound" |
||
data.status |
да | LoadingVisitStatus |
enum: draft, approved, waiting, called, in_progress, finished, cancelled, no_show | Статус жизненного цикла визита погрузки, хранящийся в rwLoadingVisit. |
"waiting" |
|
data.queue_number |
нет | integer:int64 | null |
17 |
|||
data.driver |
да | LoadingVisitDriver |
|
|||
data.driver.phone |
нет | string | null |
"+359888123456" |
|||
data.driver.name |
нет | string | null |
"Ivan Petrov" |
|||
data.driver.vehicle_number |
нет | string | null |
"CB1234AB" |
|||
data.document |
да | LoadingVisitDocument |
|
|||
data.document.type |
нет | enum | null |
enum: acceptance, order, send_document | "acceptance" |
||
data.document.id |
нет | integer:int64 | null |
min: 1 | 5101 |
||
data.document.acceptance_id |
нет | integer:int64 | null |
min: 1 | 5101 |
||
data.document.order_id |
нет | integer:int64 | null |
min: 1 | 8101 |
||
data.document.send_document_id |
нет | integer:int64 | null |
min: 1 | 9101 |
||
data.planned_at |
нет | string:date-time | null |
"2026-07-14T10:00:00Z" |
|||
data.registered_at |
нет | string:date-time | null |
"2026-07-14T09:55:00Z" |
|||
data.called_at |
нет | string:date-time | null |
"2026-07-14T10:30:00Z" |
|||
data.started_at |
нет | string:date-time | null |
"2026-07-14T10:30:00Z" |
|||
data.finished_at |
нет | string:date-time | null |
"2026-07-14T10:30:00Z" |
|||
data.gate_id |
нет | integer:int64 | null |
min: 1 | 3 |
||
data.comment |
нет | string | null |
"ASN-100245" |
|||
data.warehouse_comment |
нет | string | null |
"Gate 2" |
|||
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": 9101,
"domain_id": 3,
"warehouse_id": 42,
"client_warehouse_id": 43,
"shop_id": 12,
"user_id": 15,
"type": "inbound",
"status": "waiting",
"queue_number": 17,
"driver": {
"phone": "+359888123456",
"name": "Ivan Petrov",
"vehicle_number": "CB1234AB"
},
"document": {
"type": "acceptance",
"id": 5101,
"acceptance_id": 5101,
"order_id": null,
"send_document_id": null
},
"planned_at": "2026-07-14T10:00:00Z",
"registered_at": "2026-07-14T09:55:00Z",
"called_at": null,
"started_at": null,
"finished_at": null,
"gate_id": 3,
"comment": "ASN-100245",
"warehouse_comment": "Gate 2",
"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 | cancelLoadingVisitByPath |
|---|---|
| Раздел | Визиты погрузки |
| Безопасность | bearerAuth |
Cancel loading visit. Запрос использует описанную payload-схему, проверяет видимость tenant и возвращает нормализованный API envelope.
Пример HTTP-запроса (cURL)
Подставьте свой сервер и токен. ID из примера замените реальными доступными ID. Для тела запроса сохраните подходящий JSON из раздела ниже в request.json; перед отправкой замените демонстрационные значения. Заголовок Idempotency-Key использует ключ одной логической операции.
curl --globoff --request POST "${NWMS_BASE_URL}/api/v2/loading/visits/1001/cancel" \
--header "Accept: application/json" \
--header "Authorization: Bearer ${NWMS_TOKEN}" \
--header "Idempotency-Key: ${NWMS_REQUEST_KEY}"Параметры
| Имя | Где | Обязательное | Тип | 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" |
Тело запроса
Тело запроса отсутствует.
Ответы
200 Successful response.
Successful response.
| Поле | Обязательное | Тип | Флаги | Ограничения | Описание | Пример |
|---|---|---|---|---|---|---|
data |
да | LoadingVisit |
Запланированный визит погрузки или разгрузки. | |
||
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 | null |
min: 1 | 3 |
||
data.warehouse_id |
нет | integer:int64 | null |
min: 1 | 42 |
||
data.client_warehouse_id |
нет | integer:int64 | null |
min: 1 | 43 |
||
data.shop_id |
нет | integer:int64 | null |
min: 1 | 12 |
||
data.user_id |
нет | integer:int64 | null |
min: 1 | 9 |
||
data.type |
да | LoadingVisitType |
enum: inbound, outbound | "inbound" |
||
data.status |
да | LoadingVisitStatus |
enum: draft, approved, waiting, called, in_progress, finished, cancelled, no_show | Статус жизненного цикла визита погрузки, хранящийся в rwLoadingVisit. |
"waiting" |
|
data.queue_number |
нет | integer:int64 | null |
17 |
|||
data.driver |
да | LoadingVisitDriver |
|
|||
data.driver.phone |
нет | string | null |
"+359888123456" |
|||
data.driver.name |
нет | string | null |
"Ivan Petrov" |
|||
data.driver.vehicle_number |
нет | string | null |
"CB1234AB" |
|||
data.document |
да | LoadingVisitDocument |
|
|||
data.document.type |
нет | enum | null |
enum: acceptance, order, send_document | "acceptance" |
||
data.document.id |
нет | integer:int64 | null |
min: 1 | 5101 |
||
data.document.acceptance_id |
нет | integer:int64 | null |
min: 1 | 5101 |
||
data.document.order_id |
нет | integer:int64 | null |
min: 1 | 8101 |
||
data.document.send_document_id |
нет | integer:int64 | null |
min: 1 | 9101 |
||
data.planned_at |
нет | string:date-time | null |
"2026-07-14T10:00:00Z" |
|||
data.registered_at |
нет | string:date-time | null |
"2026-07-14T09:55:00Z" |
|||
data.called_at |
нет | string:date-time | null |
"2026-07-14T10:30:00Z" |
|||
data.started_at |
нет | string:date-time | null |
"2026-07-14T10:30:00Z" |
|||
data.finished_at |
нет | string:date-time | null |
"2026-07-14T10:30:00Z" |
|||
data.gate_id |
нет | integer:int64 | null |
min: 1 | 3 |
||
data.comment |
нет | string | null |
"ASN-100245" |
|||
data.warehouse_comment |
нет | string | null |
"Gate 2" |
|||
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": 9101,
"domain_id": 3,
"warehouse_id": 42,
"client_warehouse_id": 43,
"shop_id": 12,
"user_id": 15,
"type": "inbound",
"status": "waiting",
"queue_number": 17,
"driver": {
"phone": "+359888123456",
"name": "Ivan Petrov",
"vehicle_number": "CB1234AB"
},
"document": {
"type": "acceptance",
"id": 5101,
"acceptance_id": 5101,
"order_id": null,
"send_document_id": null
},
"planned_at": "2026-07-14T10:00:00Z",
"registered_at": "2026-07-14T09:55:00Z",
"called_at": null,
"started_at": null,
"finished_at": null,
"gate_id": 3,
"comment": "ASN-100245",
"warehouse_comment": "Gate 2",
"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"
}