Authentication and Users
Every operation below is generated from the OpenAPI v2 specification and includes parameters, request fields, response fields, errors, and examples.
Account
Get current user
| operationId | getCurrentUser |
|---|---|
| Tag | Account |
| Security | bearerAuth |
Returns one account when it exists and is visible to the authenticated account.
HTTP request example (cURL)
Set your server and token. Replace sample IDs with accessible IDs. For requests with a body, save the applicable JSON example below as request.json and replace sample values before sending. Idempotency-Key identifies one logical operation.
curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/me" \
--header "Accept: application/json" \
--header "Authorization: Bearer ${NWMS_TOKEN}"Parameters
This operation has no path, query, or header parameters.
Request body
No request body.
Responses
200 Successful response.
Successful response.
| Field | Required | Type | Flags | Constraints | Description | Example |
|---|---|---|---|---|---|---|
data |
yes | User |
Authenticated or visible NWMS user. | |
||
data.id |
yes | integer:int64 |
readOnly | min: 1 | 1001 |
|
data.created_at |
no | string:date-time | null |
"2026-07-14T10:30:00Z" |
|||
data.updated_at |
no | string:date-time | null |
"2026-07-14T10:30:00Z" |
|||
data.name |
yes | string |
"Client Manager" |
|||
data.email |
yes | string:email |
"client.manager@nwms.cloud" |
|||
data.language |
no | string | null |
"en" |
|||
data.storage_id |
no | string | null |
"default" |
|||
data.domain_id |
no | integer:int64 | null |
min: 1 | 3 |
||
data.warehouse_id |
no | integer:int64 | null |
min: 1 | 42 |
||
data.parent_id |
no | integer:int64 | null |
min: 1 | 15 |
||
data.data_scope |
no | string | null |
"domain" |
|||
data.roles |
no | array<string> |
|
|||
data.roles[] |
no | string |
"clients" |
|||
data.domain |
no | object | null |
|
|||
data.domain.id |
yes | integer:int64 |
min: 1 | 3 |
||
data.domain.name |
yes | string |
"Demo Domain" |
|||
data.warehouse |
no | object | null |
|
|||
data.warehouse.id |
yes | integer:int64 |
min: 1 | 42 |
||
data.warehouse.name |
yes | string |
"Warehouse Sofia" |
|||
meta |
yes | ResponseMeta |
|
|||
meta.api_version |
yes | enum |
enum: v2 | "v2" |
||
meta.deleted |
no | boolean |
true |
|||
meta.id |
no | integer:int64 | null |
min: 1 | 1001 |
||
meta.command_replayed |
no | boolean |
True when an idempotent cross-dock command returned the original successful result. | false |
||
meta.crossdock_configuration |
no | object | null |
|
|||
meta.crossdock_configuration.physical_warehouse_id |
yes | integer:int64 |
min: 1 | 42 |
||
meta.crossdock_configuration.enabled |
yes | boolean |
true |
|||
meta.crossdock_configuration.process_version |
yes | string |
"direct_order_v1" |
Response examples
success
{
"data": {
"id": 15,
"name": "Client Manager",
"email": "client.manager@nwms.cloud",
"language": "en",
"storage_id": "default",
"domain_id": 3,
"warehouse_id": 42,
"parent_id": null,
"data_scope": "domain",
"roles": [
"clients"
],
"domain": {
"id": 3,
"name": "Demo Domain"
},
"warehouse": {
"id": 42,
"name": "Warehouse Sofia"
},
"created_at": "2026-07-14T09:00:00Z",
"updated_at": "2026-07-14T09:30:00Z"
},
"meta": {
"api_version": "v2"
}
}
401 Authentication required
Unauthorized
Authentication is required.
| Field | Required | Type | Flags | Constraints | Description | Example |
|---|---|---|---|---|---|---|
message |
yes | string |
"The request could not be processed." |
|||
error |
yes | string |
"BAD_REQUEST" |
Response examples
AUTH_REQUIRED
{
"message": "Authentication is required.",
"error": "AUTH_REQUIRED"
}
403 Forbidden
Forbidden
The authenticated account is not allowed to perform this action.
| Field | Required | Type | Flags | Constraints | Description | Example |
|---|---|---|---|---|---|---|
message |
yes | string |
"The request could not be processed." |
|||
error |
yes | string |
"BAD_REQUEST" |
Response examples
FORBIDDEN
{
"message": "The authenticated account is not allowed to perform this action.",
"error": "FORBIDDEN"
}
429 Rate limit exceeded
TooManyRequests
Rate limit exceeded.
| Field | Required | Type | Flags | Constraints | Description | Example |
|---|---|---|---|---|---|---|
message |
yes | string |
"Too Many Attempts." |
|||
error |
yes | string |
"RATE_LIMITED" |
500 Internal server error
InternalServerError
An unexpected server error occurred.
| Field | Required | Type | Flags | Constraints | Description | Example |
|---|---|---|---|---|---|---|
message |
yes | string |
"The request could not be processed." |
|||
error |
yes | string |
"BAD_REQUEST" |
Response examples
INTERNAL_SERVER_ERROR
{
"message": "An unexpected server error occurred.",
"error": "INTERNAL_SERVER_ERROR"
}
Users
List users
| operationId | listUsers |
|---|---|
| Tag | Users |
| Security | bearerAuth |
Returns users visible to the authenticated account. Use documented query parameters for filtering, sorting, and pagination.
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 request example (cURL)
Set your server and token. Replace sample IDs with accessible IDs. For requests with a body, save the applicable JSON example below as request.json and replace sample values before sending. Idempotency-Key identifies one logical operation.
curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/users" \
--header "Accept: application/json" \
--header "Authorization: Bearer ${NWMS_TOKEN}"Parameters
| Name | In | Required | Type | Style | Explode | Constraints | Description | Example |
|---|---|---|---|---|---|---|---|---|
page |
query | no | integer:int64 |
form | true | min: 1 | Page number. The same filter may also be sent as filter[page] where supported by the Laravel query adapter. |
1 |
per_page |
query | no | integer:int64 |
form | true | min: 1 max: 500 |
Number of records per page. Default is 50; maximum is 500. The same filter may also be sent as filter[per_page] where supported by the Laravel query adapter. |
50 |
sort |
query | no | string |
form | false | pattern: ^-?[A-Za-z0-9_]+(,-?[A-Za-z0-9_]+)*$ | Comma-separated sort fields. Prefix with - for descending order. Allowed fields: id, name, email, domain_id, warehouse_id, created_at, updated_at. Default: -id. The same filter may also be sent as filter[sort] where supported by the Laravel query adapter. |
"-id" |
id |
query | no | integer:int64 |
form | true | min: 1 | Filter by id using exact matching. The same filter may also be sent as filter[id] where supported by the Laravel query adapter. |
1001 |
domain_id |
query | no | integer:int64 |
form | true | min: 1 | Filter by domain_id using exact matching. The same filter may also be sent as filter[domain_id] where supported by the Laravel query adapter. |
3 |
warehouse_id |
query | no | integer:int64 |
form | true | min: 1 | Filter by warehouse_id using exact matching. The same filter may also be sent as filter[warehouse_id] where supported by the Laravel query adapter. |
42 |
parent_id |
query | no | integer:int64 |
form | true | min: 1 | Filter by parent_id using exact matching. The same filter may also be sent as filter[parent_id] where supported by the Laravel query adapter. |
1 |
data_scope |
query | no | string |
form | true | Filter by data_scope using exact matching. The same filter may also be sent as filter[data_scope] where supported by the Laravel query adapter. |
"domain" |
|
name |
query | no | string |
form | true | Filter by name using partial text matching. The same filter may also be sent as filter[name] where supported by the Laravel query adapter. |
"Coffee" |
|
email |
query | no | string |
form | true | Filter by email using partial text matching. The same filter may also be sent as filter[email] where supported by the Laravel query adapter. |
"client.manager@nwms.cloud" |
|
id_from |
query | no | number:float |
form | true | Lower inclusive numeric boundary for id. The same filter may also be sent as filter[id_from] where supported by the Laravel query adapter. |
19.99 |
|
id_to |
query | no | number:float |
form | true | Upper inclusive numeric boundary for id. The same filter may also be sent as filter[id_to] where supported by the Laravel query adapter. |
19.99 |
Request body
No request body.
Responses
200 Successful response.
Successful response.
| Field | Required | Type | Flags | Constraints | Description | Example |
|---|---|---|---|---|---|---|
data |
yes | array<User> |
|
|||
data[] |
no | User |
Authenticated or visible NWMS user. | |
||
data[].id |
yes | integer:int64 |
readOnly | min: 1 | 1001 |
|
data[].created_at |
no | string:date-time | null |
"2026-07-14T10:30:00Z" |
|||
data[].updated_at |
no | string:date-time | null |
"2026-07-14T10:30:00Z" |
|||
data[].name |
yes | string |
"Client Manager" |
|||
data[].email |
yes | string:email |
"client.manager@nwms.cloud" |
|||
data[].language |
no | string | null |
"en" |
|||
data[].storage_id |
no | string | null |
"default" |
|||
data[].domain_id |
no | integer:int64 | null |
min: 1 | 3 |
||
data[].warehouse_id |
no | integer:int64 | null |
min: 1 | 42 |
||
data[].parent_id |
no | integer:int64 | null |
min: 1 | 15 |
||
data[].data_scope |
no | string | null |
"domain" |
|||
data[].roles |
no | array<string> |
|
|||
data[].roles[] |
no | string |
"clients" |
|||
data[].domain |
no | object | null |
|
|||
data[].domain.id |
yes | integer:int64 |
min: 1 | 3 |
||
data[].domain.name |
yes | string |
"Demo Domain" |
|||
data[].warehouse |
no | object | null |
|
|||
data[].warehouse.id |
yes | integer:int64 |
min: 1 | 42 |
||
data[].warehouse.name |
yes | string |
"Warehouse Sofia" |
|||
links |
yes | PaginationLinks |
|
|||
links.first |
yes | string:uri | null |
"https://betawms.ffcdek.ru/api/v2/orders?page=1" |
|||
links.last |
yes | string:uri | null |
"https://betawms.ffcdek.ru/api/v2/orders?page=2" |
|||
links.prev |
yes | string:uri | null |
|
|||
links.next |
yes | string:uri | null |
"https://betawms.ffcdek.ru/api/v2/orders?page=2" |
|||
meta |
yes | PaginationMeta |
|
|||
meta.api_version |
yes | enum |
enum: v2 | "v2" |
||
meta.current_page |
yes | integer:int32 |
min: 1 | 1 |
||
meta.from |
yes | integer:int32 | null |
min: 1 | 1 |
||
meta.last_page |
yes | integer:int32 |
min: 1 | 2 |
||
meta.path |
yes | string:uri |
"https://betawms.ffcdek.ru/api/v2/orders" |
|||
meta.per_page |
yes | integer:int32 |
min: 1 | 50 |
||
meta.to |
yes | integer:int32 | null |
min: 1 | 50 |
||
meta.total |
yes | integer:int32 |
min: 0 | 73 |
Response examples
success
{
"data": [
{
"id": 15,
"name": "Client Manager",
"email": "client.manager@nwms.cloud",
"language": "en",
"storage_id": "default",
"domain_id": 3,
"warehouse_id": 42,
"parent_id": null,
"data_scope": "domain",
"roles": [
"clients"
],
"domain": {
"id": 3,
"name": "Demo Domain"
},
"warehouse": {
"id": 42,
"name": "Warehouse Sofia"
},
"created_at": "2026-07-14T09:00:00Z",
"updated_at": "2026-07-14T09:30:00Z"
}
],
"links": {
"first": "https://betawms.ffcdek.ru/api/v2/users?page=1",
"last": "https://betawms.ffcdek.ru/api/v2/users?page=2",
"prev": null,
"next": "https://betawms.ffcdek.ru/api/v2/users?page=2"
},
"meta": {
"api_version": "v2",
"current_page": 1,
"from": 1,
"last_page": 2,
"path": "https://betawms.ffcdek.ru/api/v2/users",
"per_page": 50,
"to": 50,
"total": 73
}
}
401 Authentication required
Unauthorized
Authentication is required.
| Field | Required | Type | Flags | Constraints | Description | Example |
|---|---|---|---|---|---|---|
message |
yes | string |
"The request could not be processed." |
|||
error |
yes | string |
"BAD_REQUEST" |
Response examples
AUTH_REQUIRED
{
"message": "Authentication is required.",
"error": "AUTH_REQUIRED"
}
403 Forbidden
Forbidden
The authenticated account is not allowed to perform this action.
| Field | Required | Type | Flags | Constraints | Description | Example |
|---|---|---|---|---|---|---|
message |
yes | string |
"The request could not be processed." |
|||
error |
yes | string |
"BAD_REQUEST" |
Response examples
FORBIDDEN
{
"message": "The authenticated account is not allowed to perform this action.",
"error": "FORBIDDEN"
}
429 Rate limit exceeded
TooManyRequests
Rate limit exceeded.
| Field | Required | Type | Flags | Constraints | Description | Example |
|---|---|---|---|---|---|---|
message |
yes | string |
"Too Many Attempts." |
|||
error |
yes | string |
"RATE_LIMITED" |
500 Internal server error
InternalServerError
An unexpected server error occurred.
| Field | Required | Type | Flags | Constraints | Description | Example |
|---|---|---|---|---|---|---|
message |
yes | string |
"The request could not be processed." |
|||
error |
yes | string |
"BAD_REQUEST" |
Response examples
INTERNAL_SERVER_ERROR
{
"message": "An unexpected server error occurred.",
"error": "INTERNAL_SERVER_ERROR"
}
Get user
| operationId | getUsers |
|---|---|
| Tag | Users |
| Security | bearerAuth |
Returns one user when it exists and is visible to the authenticated account.
HTTP request example (cURL)
Set your server and token. Replace sample IDs with accessible IDs. For requests with a body, save the applicable JSON example below as request.json and replace sample values before sending. Idempotency-Key identifies one logical operation.
curl --globoff --request GET "${NWMS_BASE_URL}/api/v2/users/1001" \
--header "Accept: application/json" \
--header "Authorization: Bearer ${NWMS_TOKEN}"Parameters
| Name | In | Required | Type | Style | Explode | Constraints | Description | Example |
|---|---|---|---|---|---|---|---|---|
id |
path | yes | integer:int64 |
min: 1 | User ID. | 1001 |
Request body
No request body.
Responses
200 Successful response.
Successful response.
| Field | Required | Type | Flags | Constraints | Description | Example |
|---|---|---|---|---|---|---|
data |
yes | User |
Authenticated or visible NWMS user. | |
||
data.id |
yes | integer:int64 |
readOnly | min: 1 | 1001 |
|
data.created_at |
no | string:date-time | null |
"2026-07-14T10:30:00Z" |
|||
data.updated_at |
no | string:date-time | null |
"2026-07-14T10:30:00Z" |
|||
data.name |
yes | string |
"Client Manager" |
|||
data.email |
yes | string:email |
"client.manager@nwms.cloud" |
|||
data.language |
no | string | null |
"en" |
|||
data.storage_id |
no | string | null |
"default" |
|||
data.domain_id |
no | integer:int64 | null |
min: 1 | 3 |
||
data.warehouse_id |
no | integer:int64 | null |
min: 1 | 42 |
||
data.parent_id |
no | integer:int64 | null |
min: 1 | 15 |
||
data.data_scope |
no | string | null |
"domain" |
|||
data.roles |
no | array<string> |
|
|||
data.roles[] |
no | string |
"clients" |
|||
data.domain |
no | object | null |
|
|||
data.domain.id |
yes | integer:int64 |
min: 1 | 3 |
||
data.domain.name |
yes | string |
"Demo Domain" |
|||
data.warehouse |
no | object | null |
|
|||
data.warehouse.id |
yes | integer:int64 |
min: 1 | 42 |
||
data.warehouse.name |
yes | string |
"Warehouse Sofia" |
|||
meta |
yes | ResponseMeta |
|
|||
meta.api_version |
yes | enum |
enum: v2 | "v2" |
||
meta.deleted |
no | boolean |
true |
|||
meta.id |
no | integer:int64 | null |
min: 1 | 1001 |
||
meta.command_replayed |
no | boolean |
True when an idempotent cross-dock command returned the original successful result. | false |
||
meta.crossdock_configuration |
no | object | null |
|
|||
meta.crossdock_configuration.physical_warehouse_id |
yes | integer:int64 |
min: 1 | 42 |
||
meta.crossdock_configuration.enabled |
yes | boolean |
true |
|||
meta.crossdock_configuration.process_version |
yes | string |
"direct_order_v1" |
Response examples
success
{
"data": {
"id": 15,
"name": "Client Manager",
"email": "client.manager@nwms.cloud",
"language": "en",
"storage_id": "default",
"domain_id": 3,
"warehouse_id": 42,
"parent_id": null,
"data_scope": "domain",
"roles": [
"clients"
],
"domain": {
"id": 3,
"name": "Demo Domain"
},
"warehouse": {
"id": 42,
"name": "Warehouse Sofia"
},
"created_at": "2026-07-14T09:00:00Z",
"updated_at": "2026-07-14T09:30:00Z"
},
"meta": {
"api_version": "v2"
}
}
401 Authentication required
Unauthorized
Authentication is required.
| Field | Required | Type | Flags | Constraints | Description | Example |
|---|---|---|---|---|---|---|
message |
yes | string |
"The request could not be processed." |
|||
error |
yes | string |
"BAD_REQUEST" |
Response examples
AUTH_REQUIRED
{
"message": "Authentication is required.",
"error": "AUTH_REQUIRED"
}
403 Forbidden
Forbidden
The authenticated account is not allowed to perform this action.
| Field | Required | Type | Flags | Constraints | Description | Example |
|---|---|---|---|---|---|---|
message |
yes | string |
"The request could not be processed." |
|||
error |
yes | string |
"BAD_REQUEST" |
Response examples
FORBIDDEN
{
"message": "The authenticated account is not allowed to perform this action.",
"error": "FORBIDDEN"
}
404 Not found
NotFound
The requested resource was not found or is outside the authenticated account scope.
| Field | Required | Type | Flags | Constraints | Description | Example |
|---|---|---|---|---|---|---|
message |
yes | string |
"The request could not be processed." |
|||
error |
yes | string |
"BAD_REQUEST" |
Response examples
NOT_FOUND
{
"message": "The requested resource was not found or is outside the authenticated account scope.",
"error": "NOT_FOUND"
}
429 Rate limit exceeded
TooManyRequests
Rate limit exceeded.
| Field | Required | Type | Flags | Constraints | Description | Example |
|---|---|---|---|---|---|---|
message |
yes | string |
"Too Many Attempts." |
|||
error |
yes | string |
"RATE_LIMITED" |
500 Internal server error
InternalServerError
An unexpected server error occurred.
| Field | Required | Type | Flags | Constraints | Description | Example |
|---|---|---|---|---|---|---|
message |
yes | string |
"The request could not be processed." |
|||
error |
yes | string |
"BAD_REQUEST" |
Response examples
INTERNAL_SERVER_ERROR
{
"message": "An unexpected server error occurred.",
"error": "INTERNAL_SERVER_ERROR"
}