Download OpenAPI specification:
Commerce and order-fulfilment platform API for 4klyft.
This API provides endpoints for managing:
All API endpoints (except /api/docs and /api/v1/iam/auth/*) require JWT Bearer token authentication.
Include the token in the Authorization header:
Authorization: Bearer <your-jwt-token>
Every /api/ request is rate-limited per caller — by your authenticated
identity when a token is present, otherwise by client IP. The
authentication endpoints (/auth/login, /auth/refresh,
/auth/request-password-reset) carry stricter, IP-based limits.
Each response advertises your current budget via headers:
X-RateLimit-Limit — the bucket sizeX-RateLimit-Remaining — tokens left in the current windowX-RateLimit-Reset — Unix timestamp when a token next frees upExceeding a limit returns 429 Too Many Requests (RFC 6585) with a
Retry-After header (seconds to wait). Back off and retry after the
indicated delay rather than hammering the endpoint.
Represents a configuration setting in the system.
Settings store configurable values for the application, organized by categories. Settings can have different types (string, integer, boolean, JSON) and support default values and encryption for sensitive data.
Retrieve all settings, optionally filtered by category.
| category | string Enum: "general" "warehousing" "notifications" "billing" "integrations" "security" Example: category=general Filter by setting category |
| page | integer >= 1 Default: 1 Example: page=1 Page number for pagination |
| itemsPerPage | integer [ 1 .. 100 ] Default: 50 Example: itemsPerPage=50 Number of items per page |
{- "totalItems": 0,
- "search": {
- "@type": "string",
- "template": "string",
- "variableRepresentation": "string",
- "mapping": [
- {
- "@type": "string",
- "variable": "string",
- "property": "string",
- "required": true
}
]
}, - "view": {
- "@id": "string",
- "@type": "string",
- "first": "string",
- "last": "string",
- "previous": "string",
- "next": "string"
}, - "member": [
- {
- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01912345-6789-7abc-def0-123456789abc",
- "key": "company_name",
- "value": 30,
- "type": "string",
- "category": "general",
- "label": "Default Node Duration",
- "description": "Default time in minutes allocated for each stop on a route",
- "defaultValue": "30",
- "isDefault": true,
- "isEncrypted": false,
- "createdAt": "2024-01-01T00:00:00+00:00",
- "updatedAt": "2024-06-15T14:30:00+00:00"
}
]
}Retrieve all settings in a specific category.
| category required | string Enum: "general" "warehousing" "notifications" "billing" "integrations" "security" Example: general Setting category |
| page | integer Default: 1 The collection page number |
{- "totalItems": 0,
- "search": {
- "@type": "string",
- "template": "string",
- "variableRepresentation": "string",
- "mapping": [
- {
- "@type": "string",
- "variable": "string",
- "property": "string",
- "required": true
}
]
}, - "view": {
- "@id": "string",
- "@type": "string",
- "first": "string",
- "last": "string",
- "previous": "string",
- "next": "string"
}, - "member": [
- {
- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01912345-6789-7abc-def0-123456789abc",
- "key": "company_name",
- "value": 30,
- "type": "string",
- "category": "general",
- "label": "Default Node Duration",
- "description": "Default time in minutes allocated for each stop on a route",
- "defaultValue": "30",
- "isDefault": true,
- "isEncrypted": false,
- "createdAt": "2024-01-01T00:00:00+00:00",
- "updatedAt": "2024-06-15T14:30:00+00:00"
}
]
}Retrieve a single setting by its key.
| key required | string Example: company_name Setting key |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01912345-6789-7abc-def0-123456789abc",
- "key": "company_name",
- "value": 30,
- "type": "string",
- "category": "general",
- "label": "Default Node Duration",
- "description": "Default time in minutes allocated for each stop on a route",
- "defaultValue": "30",
- "isDefault": true,
- "isEncrypted": false,
- "createdAt": "2024-01-01T00:00:00+00:00",
- "updatedAt": "2024-06-15T14:30:00+00:00"
}Create or update many settings in a single request, keyed by the dotted-notation setting key. Existing keys are updated in place; new keys are created using type+category drawn from the default catalog. Unknown keys are rejected with 400. Returns no body — re-read GET /settings to refresh.
List of {key, value} pairs to upsert
required | Array of objects [ 1 .. 200 ] items |
{- "settings": [
- {
- "key": "session_timeout",
- "value": 3600
}
]
}{- "type": "/errors/validation-error",
- "title": "Validation Error",
- "status": 400,
- "detail": "The provided input is invalid",
- "violations": [
- {
- "propertyPath": "code",
- "message": "This value should not be blank."
}
], - "instance": "string"
}Retrieve a single setting by its UUID.
| id required | string <uuid> Example: 01912345-6789-7abc-def0-123456789abc Setting UUID |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01912345-6789-7abc-def0-123456789abc",
- "key": "company_name",
- "value": 30,
- "type": "string",
- "category": "general",
- "label": "Default Node Duration",
- "description": "Default time in minutes allocated for each stop on a route",
- "defaultValue": "30",
- "isDefault": true,
- "isEncrypted": false,
- "createdAt": "2024-01-01T00:00:00+00:00",
- "updatedAt": "2024-06-15T14:30:00+00:00"
}Update a setting value.
| id required | string <uuid> Example: 01912345-6789-7abc-def0-123456789abc Setting UUID |
Setting update data
| value required | any New value for the setting |
{- "value": 45
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01912345-6789-7abc-def0-123456789abc",
- "key": "company_name",
- "value": 30,
- "type": "string",
- "category": "general",
- "label": "Default Node Duration",
- "description": "Default time in minutes allocated for each stop on a route",
- "defaultValue": "30",
- "isDefault": true,
- "isEncrypted": false,
- "createdAt": "2024-01-01T00:00:00+00:00",
- "updatedAt": "2024-06-15T14:30:00+00:00"
}Reset a setting to its default value. Only works for settings that have a default value defined.
| id required | string <uuid> Example: 01912345-6789-7abc-def0-123456789abc Setting UUID |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01912345-6789-7abc-def0-123456789abc",
- "key": "company_name",
- "value": 30,
- "type": "string",
- "category": "general",
- "label": "Default Node Duration",
- "description": "Default time in minutes allocated for each stop on a route",
- "defaultValue": "30",
- "isDefault": true,
- "isEncrypted": false,
- "createdAt": "2024-01-01T00:00:00+00:00",
- "updatedAt": "2024-06-15T14:30:00+00:00"
}