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 /api/v2/me

Get current user

operationIdgetCurrentUser
TagAccount
SecuritybearerAuth

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

GET /api/v2/users

List users

operationIdlistUsers
TagUsers
SecuritybearerAuth

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 /api/v2/users/{id}

Get user

operationIdgetUsers
TagUsers
SecuritybearerAuth

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"
}