4klyft API (1.0.0)

Download OpenAPI specification:

4klyft API Support: [email protected] License: Proprietary

Commerce and order-fulfilment platform API for 4klyft.

Overview

This API provides endpoints for managing:

  • Catalog (PIM/DAM): products, variants, attributes, options, categories, brands, collections, assortments, and media
  • Sales: orders, customers, merchants, sales channels, and channel order import
  • Inventory: stock items, levels, lots, and serial units across custodians
  • Warehousing & Operations: goods receipt/issue, holds, and custodian operations
  • Fulfilment: fulfilment orders dispatched to third-party (3PL) providers
  • Shipping: carriers, shipments, labels, tracking, returns, and proof of delivery
  • Finance & Billing: payments, settlements, invoices, credit notes, tax, and subscriptions
  • Integration: sales-channel connections, providers, webhooks, and catalog/order sync
  • Documents: operational document generation and requests
  • Storage: file/drive storage with chunked upload and signed access
  • Identity & Access (IAM): authentication, users, roles, permissions, and tenants
  • Platform services: notifications, scheduling, numbering, data exchange, analytics, and workspace tables & views

Authentication

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>

Rate Limiting

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 size
  • X-RateLimit-Remaining — tokens left in the current window
  • X-RateLimit-Reset — Unix timestamp when a token next frees up

Exceeding 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.

Error Handling

The API uses RFC 7807 Problem Details for error responses.

Settings

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.

List all settings

Retrieve all settings, optionally filtered by category.

Authorizations:
Bearer
query Parameters
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

Responses

Response samples

Content type
{
  • "totalItems": 0,
  • "search": {
    },
  • "view": {
    },
  • "member": [
    ]
}

List settings by category

Retrieve all settings in a specific category.

Authorizations:
Bearer
path Parameters
category
required
string
Enum: "general" "warehousing" "notifications" "billing" "integrations" "security"
Example: general

Setting category

query Parameters
page
integer
Default: 1

The collection page number

Responses

Response samples

Content type
{
  • "totalItems": 0,
  • "search": {
    },
  • "view": {
    },
  • "member": [
    ]
}

Get a setting by key

Retrieve a single setting by its key.

Authorizations:
Bearer
path Parameters
key
required
string
Example: company_name

Setting key

Responses

Response samples

Content type
{
  • "@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"
}

Bulk upsert settings by key

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.

Authorizations:
Bearer
Request Body schema: application/json
required

List of {key, value} pairs to upsert

required
Array of objects [ 1 .. 200 ] items

Responses

Request samples

Content type
application/json
{
  • "settings": [
    ]
}

Response samples

Content type
{
  • "type": "/errors/validation-error",
  • "title": "Validation Error",
  • "status": 400,
  • "detail": "The provided input is invalid",
  • "violations": [
    ],
  • "instance": "string"
}

Get a setting

Retrieve a single setting by its UUID.

Authorizations:
Bearer
path Parameters
id
required
string <uuid>
Example: 01912345-6789-7abc-def0-123456789abc

Setting UUID

Responses

Response samples

Content type
{
  • "@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"
}

Delete a setting

Delete a setting. This action cannot be undone.

Authorizations:
Bearer
path Parameters
id
required
string <uuid>
Example: 01912345-6789-7abc-def0-123456789abc

Setting UUID

Responses

Update a setting

Update a setting value.

Authorizations:
Bearer
path Parameters
id
required
string <uuid>
Example: 01912345-6789-7abc-def0-123456789abc

Setting UUID

Request Body schema: application/json
required

Setting update data

value
required
any

New value for the setting

Responses

Request samples

Content type
application/json
{
  • "value": 45
}

Response samples

Content type
{
  • "@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 setting to default

Reset a setting to its default value. Only works for settings that have a default value defined.

Authorizations:
Bearer
path Parameters
id
required
string <uuid>
Example: 01912345-6789-7abc-def0-123456789abc

Setting UUID

Responses

Response samples

Content type
{
  • "@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"
}