Skip to main content

Pharus API (1.0.0)

Download OpenAPI specification:Download

Pharus exposes every action in the platform as a REST endpoint. Use this API to build integrations, sync data with other systems, or back your own interface.

Conventions

  • Base path. Every endpoint lives under /api. Paths below are shown after that prefix.
  • Authentication. Send Authorization: Bearer <firebase-id-token> together with X-Org-Id: <org-id> on every request. A few token-gated routes used during invitation acceptance are public.
  • Authorization. Each endpoint declares the minimum role required (member, admin, or owner), enforced before the request runs.
  • Errors. Non-2xx responses use { "error": { "code", "message", "details?" } }, where code is a stable identifier such as not_found, in_use, invalid_transition, validation_failed, forbidden, unauthorized, conflict, or internal_error.
  • Deletes return 200. Soft deletes return the updated entity; hard deletes return { "deletedId": "uuid" }. There are no 204 responses.
  • Cursor pagination. Unbounded reads accept ?cursor=<opaque>&limit=<int> and return { "data": [...], "nextCursor": string | null }.
  • Bulk imports accept { "rows": [...] } and return a per-row { index, status, id? | error? }.

Locations

Create location

Request Body schema: application/json
name
required
string [ 1 .. 100 ] characters
address
string or null
city
string or null <= 150 characters
state
string or null <= 100 characters
country
string or null = 2 characters
zipCode
string or null <= 20 characters
notes
string or null

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "address": "string",
  • "city": "string",
  • "state": "string",
  • "country": "st",
  • "zipCode": "string",
  • "notes": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "orgId": "string",
  • "name": "string",
  • "sortOrder": 0,
  • "address": "string",
  • "city": "string",
  • "state": "string",
  • "country": "string",
  • "zipCode": "string",
  • "notes": "string",
  • "isActive": true,
  • "createdAt": "2019-08-24T14:15:22Z",
  • "updatedAt": "2019-08-24T14:15:22Z"
}

List locations (bounded; no pagination)

Responses

Response samples

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

Update location

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
Request Body schema: application/json
name
string [ 1 .. 100 ] characters
address
string or null
city
string or null <= 150 characters
state
string or null <= 100 characters
country
string or null = 2 characters
zipCode
string or null <= 20 characters
notes
string or null
sortOrder
integer >= 0
isActive
boolean

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "address": "string",
  • "city": "string",
  • "state": "string",
  • "country": "st",
  • "zipCode": "string",
  • "notes": "string",
  • "sortOrder": 0,
  • "isActive": true
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "orgId": "string",
  • "name": "string",
  • "sortOrder": 0,
  • "address": "string",
  • "city": "string",
  • "state": "string",
  • "country": "string",
  • "zipCode": "string",
  • "notes": "string",
  • "isActive": true,
  • "createdAt": "2019-08-24T14:15:22Z",
  • "updatedAt": "2019-08-24T14:15:22Z"
}

Delete location (gated by in-use check)

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

Content type
application/json
{
  • "deletedId": "string"
}

Check if location is referenced anywhere

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

Content type
application/json
{
  • "inUse": true,
  • "references": {
    }
}

Vendors

Create vendor

Request Body schema: application/json
name
required
string [ 1 .. 255 ] characters
address
string or null
city
string or null
state
string or null
country
string or null = 2 characters
zipCode
string or null
term
string or null
qboId
string or null
notes
string or null

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "address": "string",
  • "city": "string",
  • "state": "string",
  • "country": "st",
  • "zipCode": "string",
  • "term": "string",
  • "qboId": "string",
  • "notes": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "orgId": "string",
  • "name": "string",
  • "address": "string",
  • "city": "string",
  • "state": "string",
  • "country": "string",
  • "zipCode": "string",
  • "term": "string",
  • "qboId": "string",
  • "notes": "string",
  • "isActive": true,
  • "createdAt": "string",
  • "updatedAt": "string"
}

List vendors

query Parameters
isActive
string
Enum: "true" "false"

Responses

Response samples

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

Update vendor

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
Request Body schema: application/json
name
string [ 1 .. 255 ] characters
address
string or null
city
string or null
state
string or null
country
string or null = 2 characters
zipCode
string or null
term
string or null
qboId
string or null
notes
string or null
isActive
boolean

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "address": "string",
  • "city": "string",
  • "state": "string",
  • "country": "st",
  • "zipCode": "string",
  • "term": "string",
  • "qboId": "string",
  • "notes": "string",
  • "isActive": true
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "orgId": "string",
  • "name": "string",
  • "address": "string",
  • "city": "string",
  • "state": "string",
  • "country": "string",
  • "zipCode": "string",
  • "term": "string",
  • "qboId": "string",
  • "notes": "string",
  • "isActive": true,
  • "createdAt": "string",
  • "updatedAt": "string"
}

Delete vendor

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

Content type
application/json
{
  • "deletedId": "string"
}

Get vendor detail

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "orgId": "string",
  • "name": "string",
  • "address": "string",
  • "city": "string",
  • "state": "string",
  • "country": "string",
  • "zipCode": "string",
  • "term": "string",
  • "qboId": "string",
  • "notes": "string",
  • "isActive": true,
  • "createdAt": "string",
  • "updatedAt": "string"
}

Bulk-import vendors

Request Body schema: application/json
required
Array of objects
Array
name
required
string [ 1 .. 255 ] characters
address
string or null
city
string or null
state
string or null
country
string or null = 2 characters
zipCode
string or null
term
string or null
qboId
string or null
notes
string or null

Responses

Request samples

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

Response samples

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

Materials

Create material

Request Body schema: application/json
code
required
string [ 1 .. 100 ] characters
name
required
string [ 1 .. 255 ] characters
typeId
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
notes
string or null

Responses

Request samples

Content type
application/json
{
  • "code": "string",
  • "name": "string",
  • "typeId": "string",
  • "notes": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "orgId": "string",
  • "materialCode": "string",
  • "name": "string",
  • "materialTypeId": "string",
  • "notes": "string",
  • "isActive": true,
  • "createdAt": "string",
  • "updatedAt": "string"
}

List materials

query Parameters
active
string
Enum: "true" "false"
type
string
q
string

Responses

Response samples

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

Update material

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
Request Body schema: application/json
code
string [ 1 .. 100 ] characters
name
string [ 1 .. 255 ] characters
typeId
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
notes
string or null
isActive
boolean

Responses

Request samples

Content type
application/json
{
  • "code": "string",
  • "name": "string",
  • "typeId": "string",
  • "notes": "string",
  • "isActive": true
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "orgId": "string",
  • "materialCode": "string",
  • "name": "string",
  • "materialTypeId": "string",
  • "notes": "string",
  • "isActive": true,
  • "createdAt": "string",
  • "updatedAt": "string"
}

Delete material

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

Content type
application/json
{
  • "deletedId": "string"
}

Get material detail

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "orgId": "string",
  • "materialCode": "string",
  • "name": "string",
  • "materialTypeId": "string",
  • "notes": "string",
  • "isActive": true,
  • "createdAt": "string",
  • "updatedAt": "string"
}

Bulk-import materials

Request Body schema: application/json
required
Array of objects
Array
code
required
string [ 1 .. 100 ] characters
name
required
string [ 1 .. 255 ] characters
typeId
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
notes
string or null

Responses

Request samples

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

Response samples

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

Create material type

Request Body schema: application/json
name
required
string [ 1 .. 100 ] characters

Responses

Request samples

Content type
application/json
{
  • "name": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "orgId": "string",
  • "name": "string",
  • "sortOrder": 0,
  • "isActive": true,
  • "createdAt": "string"
}

List material types

Responses

Response samples

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

Update material type

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
Request Body schema: application/json
name
string [ 1 .. 100 ] characters
sortOrder
integer
isActive
boolean

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "sortOrder": 0,
  • "isActive": true
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "orgId": "string",
  • "name": "string",
  • "sortOrder": 0,
  • "isActive": true,
  • "createdAt": "string"
}

Delete material type

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

Content type
application/json
{
  • "deletedId": "string"
}

Check if material type is in use

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

Content type
application/json
{
  • "inUse": true,
  • "materialCount": 0,
  • "sampleMaterialIds": [
    ]
}

Products

Create SKU

Request Body schema: application/json
code
required
string [ 1 .. 100 ] characters
name
required
string [ 1 .. 255 ] characters
typeId
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
itemsPerUnit
integer >= 1
ozPerItem
number or null
qboId
string or null
notes
string or null

Responses

Request samples

Content type
application/json
{
  • "code": "string",
  • "name": "string",
  • "typeId": "string",
  • "itemsPerUnit": 1,
  • "ozPerItem": 0,
  • "qboId": "string",
  • "notes": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "orgId": "string",
  • "skuCode": "string",
  • "name": "string",
  • "skuTypeId": "string",
  • "itemsPerUnit": 0,
  • "ozPerItem": "string",
  • "qboId": "string",
  • "notes": "string",
  • "isActive": true,
  • "createdAt": "string",
  • "updatedAt": "string"
}

List SKUs

query Parameters
active
string
Enum: "true" "false"
type
string
itemsPerUnitMin
string
itemsPerUnitMax
string
ozPerItemMin
string
ozPerItemMax
string
q
string

Responses

Response samples

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

Update SKU

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
Request Body schema: application/json
code
string [ 1 .. 100 ] characters
name
string [ 1 .. 255 ] characters
typeId
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
itemsPerUnit
integer >= 1
ozPerItem
number or null
qboId
string or null
notes
string or null
isActive
boolean

Responses

Request samples

Content type
application/json
{
  • "code": "string",
  • "name": "string",
  • "typeId": "string",
  • "itemsPerUnit": 1,
  • "ozPerItem": 0,
  • "qboId": "string",
  • "notes": "string",
  • "isActive": true
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "orgId": "string",
  • "skuCode": "string",
  • "name": "string",
  • "skuTypeId": "string",
  • "itemsPerUnit": 0,
  • "ozPerItem": "string",
  • "qboId": "string",
  • "notes": "string",
  • "isActive": true,
  • "createdAt": "string",
  • "updatedAt": "string"
}

Delete SKU

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

Content type
application/json
{
  • "deletedId": "string"
}

Get SKU detail

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "orgId": "string",
  • "skuCode": "string",
  • "name": "string",
  • "skuTypeId": "string",
  • "itemsPerUnit": 0,
  • "ozPerItem": "string",
  • "qboId": "string",
  • "notes": "string",
  • "isActive": true,
  • "createdAt": "string",
  • "updatedAt": "string"
}

Bulk-import SKUs

Request Body schema: application/json
required
Array of objects
Array
code
required
string [ 1 .. 100 ] characters
name
required
string [ 1 .. 255 ] characters
typeId
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
itemsPerUnit
integer >= 1
ozPerItem
number or null
qboId
string or null
notes
string or null

Responses

Request samples

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

Response samples

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

Create SKU type

Request Body schema: application/json
name
required
string [ 1 .. 100 ] characters

Responses

Request samples

Content type
application/json
{
  • "name": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "orgId": "string",
  • "name": "string",
  • "sortOrder": 0,
  • "isActive": true,
  • "createdAt": "string"
}

List SKU types

Responses

Response samples

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

Update SKU type

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
Request Body schema: application/json
name
string [ 1 .. 100 ] characters
sortOrder
integer
isActive
boolean

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "sortOrder": 0,
  • "isActive": true
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "orgId": "string",
  • "name": "string",
  • "sortOrder": 0,
  • "isActive": true,
  • "createdAt": "string"
}

Delete SKU type

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

Content type
application/json
{
  • "deletedId": "string"
}

Check SKU type usage

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

Content type
application/json
{
  • "inUse": true,
  • "skuCount": 0,
  • "sampleSkuIds": [
    ]
}

BOM

Create BOM

Request Body schema: application/json
outputSkuId
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
required
Array of objects

Responses

Request samples

Content type
application/json
{
  • "outputSkuId": "string",
  • "items": [
    ]
}

Response samples

Content type
application/json
{
  • "outputSkuId": "string",
  • "items": [
    ]
}

List SKUs with BOMs

query Parameters
q
string

Responses

Response samples

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

Replace BOM composition

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
Request Body schema: application/json
outputSkuId
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
required
Array of objects

Responses

Request samples

Content type
application/json
{
  • "outputSkuId": "string",
  • "items": [
    ]
}

Response samples

Content type
application/json
{
  • "outputSkuId": "string",
  • "items": [
    ]
}

Delete BOM

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

Content type
application/json
{
  • "deletedId": "string"
}

Get BOM for a SKU

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

Content type
application/json
{
  • "outputSkuId": "string",
  • "items": [
    ]
}

Contacts

Create contact

Request Body schema: application/json
firstName
required
string non-empty
lastName
string or null
title
string or null
notes
string or null
displayName
string

Responses

Request samples

Content type
application/json
{
  • "firstName": "string",
  • "lastName": "string",
  • "title": "string",
  • "notes": "string",
  • "displayName": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "orgId": "string",
  • "displayName": "string",
  • "firstName": "string",
  • "lastName": "string",
  • "title": "string",
  • "notes": "string",
  • "isActive": true,
  • "createdAt": "string",
  • "updatedAt": "string"
}

List contacts

Responses

Response samples

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

Update contact

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
Request Body schema: application/json
firstName
string
lastName
string or null
title
string or null
notes
string or null
displayName
string
isActive
boolean

Responses

Request samples

Content type
application/json
{
  • "firstName": "string",
  • "lastName": "string",
  • "title": "string",
  • "notes": "string",
  • "displayName": "string",
  • "isActive": true
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "orgId": "string",
  • "displayName": "string",
  • "firstName": "string",
  • "lastName": "string",
  • "title": "string",
  • "notes": "string",
  • "isActive": true,
  • "createdAt": "string",
  • "updatedAt": "string"
}

Delete contact

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

Content type
application/json
{
  • "deletedId": "string"
}

Get contact detail

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

Content type
application/json
{
  • "contact": {
    },
  • "methods": [
    ],
  • "links": [
    ]
}

Add contact method

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
Request Body schema: application/json
type
required
string
Enum: "email" "phone"
value
required
string non-empty
label
string or null
isPrimary
boolean

Responses

Request samples

Content type
application/json
{
  • "type": "email",
  • "value": "string",
  • "label": "string",
  • "isPrimary": true
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "orgId": "string",
  • "contactId": "string",
  • "methodType": "email",
  • "value": "string",
  • "label": "string",
  • "isPrimary": true,
  • "isActive": true,
  • "createdAt": "string",
  • "updatedAt": "string"
}

List methods for a contact

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

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

Update contact method

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
Request Body schema: application/json
type
string
Enum: "email" "phone"
value
string
label
string or null
isPrimary
boolean
isActive
boolean

Responses

Request samples

Content type
application/json
{
  • "type": "email",
  • "value": "string",
  • "label": "string",
  • "isPrimary": true,
  • "isActive": true
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "orgId": "string",
  • "contactId": "string",
  • "methodType": "email",
  • "value": "string",
  • "label": "string",
  • "isPrimary": true,
  • "isActive": true,
  • "createdAt": "string",
  • "updatedAt": "string"
}

Delete contact method

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

Content type
application/json
{
  • "deletedId": "string"
}

Link contact to entity

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
Request Body schema: application/json
entityType
required
string
Enum: "customer" "vendor"
entityId
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
role
string or null
notes
string or null
isPrimary
boolean

Responses

Request samples

Content type
application/json
{
  • "entityType": "customer",
  • "entityId": "string",
  • "role": "string",
  • "notes": "string",
  • "isPrimary": true
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "orgId": "string",
  • "contactId": "string",
  • "entityType": "customer",
  • "entityId": "string",
  • "role": "string",
  • "isPrimary": true,
  • "notes": "string",
  • "isActive": true,
  • "createdAt": "string",
  • "updatedAt": "string"
}

Update contact-entity link

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
Request Body schema: application/json
role
string or null
notes
string or null
isPrimary
boolean
isActive
boolean

Responses

Request samples

Content type
application/json
{
  • "role": "string",
  • "notes": "string",
  • "isPrimary": true,
  • "isActive": true
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "orgId": "string",
  • "contactId": "string",
  • "entityType": "customer",
  • "entityId": "string",
  • "role": "string",
  • "isPrimary": true,
  • "notes": "string",
  • "isActive": true,
  • "createdAt": "string",
  • "updatedAt": "string"
}

Unlink contact from entity

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

Content type
application/json
{
  • "deletedId": "string"
}

Find or create contact for entity

Request Body schema: application/json
firstName
required
string non-empty
lastName
string or null
email
required
string <email>
entityType
required
string
Enum: "customer" "vendor"
entityId
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
role
string or null

Responses

Request samples

Content type
application/json
{
  • "firstName": "string",
  • "lastName": "string",
  • "email": "user@example.com",
  • "entityType": "customer",
  • "entityId": "string",
  • "role": "string"
}

Response samples

Content type
application/json
{
  • "contact": {
    },
  • "method": {
    },
  • "link": {
    },
  • "created": true
}

List contacts linked to an entity

query Parameters
entityType
required
string
Enum: "customer" "vendor"
entityId
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

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

MaterialsInventory

Create materials transfer

Request Body schema: application/json
materialId
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
sourceLocationId
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
destinationLocationId
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
quantity
required
number > 0
eventDate
string
notes
string or null

Responses

Request samples

Content type
application/json
{
  • "materialId": "string",
  • "sourceLocationId": "string",
  • "destinationLocationId": "string",
  • "quantity": 0,
  • "eventDate": "string",
  • "notes": "string"
}

Response samples

Content type
application/json
{
  • "ledgerEntry": {
    },
  • "ref": "string"
}

Complete in-transit transfer

path Parameters
ref
required
string
Request Body schema: application/json
eventDate
string
notes
string or null

Responses

Request samples

Content type
application/json
{
  • "eventDate": "string",
  • "notes": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "orgId": "string",
  • "code": "string",
  • "materialId": "string",
  • "locationId": "string",
  • "eventType": "ORDER",
  • "quantity": "string",
  • "unitCost": "string",
  • "ref": "string",
  • "toLocationId": "string",
  • "notes": "string",
  • "eventDate": "string",
  • "sourceType": "string",
  • "sourceId": "string",
  • "createdAt": "string"
}

Adjust materials inventory

Request Body schema: application/json
materialId
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
locationId
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
quantity
required
number > 0
notes
string or null
eventDate
string

Responses

Request samples

Content type
application/json
{
  • "materialId": "string",
  • "locationId": "string",
  • "quantity": 0,
  • "notes": "string",
  • "eventDate": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "orgId": "string",
  • "code": "string",
  • "materialId": "string",
  • "locationId": "string",
  • "eventType": "ORDER",
  • "quantity": "string",
  • "unitCost": "string",
  • "ref": "string",
  • "toLocationId": "string",
  • "notes": "string",
  • "eventDate": "string",
  • "sourceType": "string",
  • "sourceId": "string",
  • "createdAt": "string"
}

Dispose materials inventory

Request Body schema: application/json
materialId
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
locationId
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
quantity
required
number > 0
notes
string or null
eventDate
string

Responses

Request samples

Content type
application/json
{
  • "materialId": "string",
  • "locationId": "string",
  • "quantity": 0,
  • "notes": "string",
  • "eventDate": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "orgId": "string",
  • "code": "string",
  • "materialId": "string",
  • "locationId": "string",
  • "eventType": "ORDER",
  • "quantity": "string",
  • "unitCost": "string",
  • "ref": "string",
  • "toLocationId": "string",
  • "notes": "string",
  • "eventDate": "string",
  • "sourceType": "string",
  • "sourceId": "string",
  • "createdAt": "string"
}

Materials summary

query Parameters
materialId
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
locationId
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

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

List materials ledger entries

query Parameters
materialId
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
locationId
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
eventType
string
Enum: "ORDER" "RECEIVE" "DEMAND" "ALLOCATE" "CONSUME" "TRANSFER" "ADJUST" "DISPOSE" "REVERSE_ORDER" "REVERSE_RECEIVE" "REVERSE_DEMAND" "REVERSE_ALLOCATE" "REVERSE_CONSUME" "REVERSE_TRANSFER"
ref
string
dateFrom
string
dateTo
string

Responses

Response samples

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

Get ledger entry detail

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "orgId": "string",
  • "code": "string",
  • "materialId": "string",
  • "locationId": "string",
  • "eventType": "ORDER",
  • "quantity": "string",
  • "unitCost": "string",
  • "ref": "string",
  • "toLocationId": "string",
  • "notes": "string",
  • "eventDate": "string",
  • "sourceType": "string",
  • "sourceId": "string",
  • "createdAt": "string"
}

FinishedGoodsInventory

Create FG transfer

Request Body schema: application/json
skuId
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
sourceLocationId
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
destinationLocationId
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
quantity
required
number > 0
eventDate
string
notes
string or null

Responses

Request samples

Content type
application/json
{
  • "skuId": "string",
  • "sourceLocationId": "string",
  • "destinationLocationId": "string",
  • "quantity": 0,
  • "eventDate": "string",
  • "notes": "string"
}

Response samples

Content type
application/json
{
  • "ledgerEntry": {
    },
  • "ref": "string"
}

Complete FG in-transit transfer

path Parameters
ref
required
string
Request Body schema: application/json
eventDate
string
notes
string or null

Responses

Request samples

Content type
application/json
{
  • "eventDate": "string",
  • "notes": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "orgId": "string",
  • "code": "string",
  • "skuId": "string",
  • "locationId": "string",
  • "eventType": "ORDER",
  • "quantity": "string",
  • "unitCost": "string",
  • "ref": "string",
  • "toLocationId": "string",
  • "notes": "string",
  • "eventDate": "string",
  • "sourceType": "string",
  • "sourceId": "string",
  • "createdAt": "string"
}

Adjust FG inventory

Request Body schema: application/json
skuId
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
locationId
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
quantity
required
number > 0
notes
string or null
eventDate
string

Responses

Request samples

Content type
application/json
{
  • "skuId": "string",
  • "locationId": "string",
  • "quantity": 0,
  • "notes": "string",
  • "eventDate": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "orgId": "string",
  • "code": "string",
  • "skuId": "string",
  • "locationId": "string",
  • "eventType": "ORDER",
  • "quantity": "string",
  • "unitCost": "string",
  • "ref": "string",
  • "toLocationId": "string",
  • "notes": "string",
  • "eventDate": "string",
  • "sourceType": "string",
  • "sourceId": "string",
  • "createdAt": "string"
}

Dispose FG inventory

Request Body schema: application/json
skuId
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
locationId
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
quantity
required
number > 0
notes
string or null
eventDate
string

Responses

Request samples

Content type
application/json
{
  • "skuId": "string",
  • "locationId": "string",
  • "quantity": 0,
  • "notes": "string",
  • "eventDate": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "orgId": "string",
  • "code": "string",
  • "skuId": "string",
  • "locationId": "string",
  • "eventType": "ORDER",
  • "quantity": "string",
  • "unitCost": "string",
  • "ref": "string",
  • "toLocationId": "string",
  • "notes": "string",
  • "eventDate": "string",
  • "sourceType": "string",
  • "sourceId": "string",
  • "createdAt": "string"
}

FG summary

query Parameters
skuId
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
locationId
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

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

List FG ledger entries

query Parameters
skuId
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
locationId
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
eventType
string
Enum: "ORDER" "RECEIVE" "PRODUCE" "DEMAND" "ALLOCATE" "CONSUME" "TRANSFER" "ADJUST" "DISPOSE" "REVERSE_ORDER" "REVERSE_RECEIVE" "REVERSE_PRODUCE" "REVERSE_DEMAND" "REVERSE_ALLOCATE" "REVERSE_CONSUME" "REVERSE_TRANSFER"
ref
string
dateFrom
string
dateTo
string

Responses

Response samples

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

Get FG ledger entry detail

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "orgId": "string",
  • "code": "string",
  • "skuId": "string",
  • "locationId": "string",
  • "eventType": "ORDER",
  • "quantity": "string",
  • "unitCost": "string",
  • "ref": "string",
  • "toLocationId": "string",
  • "notes": "string",
  • "eventDate": "string",
  • "sourceType": "string",
  • "sourceId": "string",
  • "createdAt": "string"
}

SalesOrders

Create sales order

Request Body schema: application/json
customerId
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
channelId
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
status
required
string
Enum: "Received" "Entered" "Shipped" "Invoiced" "Paid" "Rejected" "In-Dispute" "Completed"
fulfillmentStatus
required
string
Enum: "Pending" "Partial" "Fulfilled"
fulfillmentLocationId
string or null^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
brokerId
string or null^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
brokerFeePercent
number or null
brokerFees
number >= 0
fulfillmentCosts
number >= 0
freightCosts
number >= 0
promoCosts
number >= 0
otherCosts
number >= 0
mabd
required
string
notes
string or null
qboId
string or null
required
Array of objects

Responses

Request samples

Content type
application/json
{
  • "customerId": "string",
  • "channelId": "string",
  • "status": "Received",
  • "fulfillmentStatus": "Pending",
  • "fulfillmentLocationId": "string",
  • "brokerId": "string",
  • "brokerFeePercent": 0,
  • "brokerFees": 0,
  • "fulfillmentCosts": 0,
  • "freightCosts": 0,
  • "promoCosts": 0,
  • "otherCosts": 0,
  • "mabd": "string",
  • "notes": "string",
  • "qboId": "string",
  • "items": [
    ]
}

Response samples

Content type
application/json
{
  • "salesOrder": {
    },
  • "items": [
    ]
}

List sales orders

Responses

Response samples

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

Update sales order

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
Request Body schema: application/json
customerId
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
channelId
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
status
string
Enum: "Received" "Entered" "Shipped" "Invoiced" "Paid" "Rejected" "In-Dispute" "Completed"
fulfillmentStatus
string
Enum: "Pending" "Partial" "Fulfilled"
fulfillmentLocationId
string or null^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
brokerId
string or null^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
brokerFeePercent
number or null
brokerFees
number >= 0
fulfillmentCosts
number >= 0
freightCosts
number >= 0
promoCosts
number >= 0
otherCosts
number >= 0
mabd
string
notes
string or null
qboId
string or null
placedAt
string
receivedAt
string or null
enteredAt
string or null
shippedAt
string or null
invoicedAt
string or null
paidAt
string or null
rejectedAt
string or null
inDisputeAt
string or null
completedAt
string or null

Responses

Request samples

Content type
application/json
{
  • "customerId": "string",
  • "channelId": "string",
  • "status": "Received",
  • "fulfillmentStatus": "Pending",
  • "fulfillmentLocationId": "string",
  • "brokerId": "string",
  • "brokerFeePercent": 0,
  • "brokerFees": 0,
  • "fulfillmentCosts": 0,
  • "freightCosts": 0,
  • "promoCosts": 0,
  • "otherCosts": 0,
  • "mabd": "string",
  • "notes": "string",
  • "qboId": "string",
  • "placedAt": "string",
  • "receivedAt": "string",
  • "enteredAt": "string",
  • "shippedAt": "string",
  • "invoicedAt": "string",
  • "paidAt": "string",
  • "rejectedAt": "string",
  • "inDisputeAt": "string",
  • "completedAt": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "orgId": "string",
  • "customerId": "string",
  • "soNumber": "string",
  • "orderChannelId": "string",
  • "orderStatus": "Received",
  • "fulfillmentStatus": "Pending",
  • "fulfillmentLocationId": "string",
  • "brokerId": "string",
  • "brokerFeePercent": "string",
  • "brokerFees": "string",
  • "fulfillmentCosts": "string",
  • "freightCosts": "string",
  • "promoCosts": "string",
  • "otherCosts": "string",
  • "mabd": "string",
  • "placedAt": "string",
  • "receivedAt": "string",
  • "enteredAt": "string",
  • "shippedAt": "string",
  • "invoicedAt": "string",
  • "paidAt": "string",
  • "rejectedAt": "string",
  • "inDisputeAt": "string",
  • "completedAt": "string",
  • "notes": "string",
  • "qboId": "string",
  • "createdAt": "string",
  • "updatedAt": "string"
}

Delete sales order

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

Content type
application/json
{
  • "deletedId": "string"
}

Get sales order detail

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

Content type
application/json
{
  • "salesOrder": {
    },
  • "items": [
    ]
}

Bulk-import sales orders

Request Body schema: application/json
required
Array of objects
Array
customerId
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
channelId
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
status
required
string
Enum: "Received" "Entered" "Shipped" "Invoiced" "Paid" "Rejected" "In-Dispute" "Completed"
fulfillmentStatus
required
string
Enum: "Pending" "Partial" "Fulfilled"
fulfillmentLocationId
string or null^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
brokerId
string or null^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
brokerFeePercent
number or null
brokerFees
number >= 0
fulfillmentCosts
number >= 0
freightCosts
number >= 0
promoCosts
number >= 0
otherCosts
number >= 0
mabd
required
string
notes
string or null
qboId
string or null
required
Array of objects

Responses

Request samples

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

Response samples

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

Add item to sales order

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
Request Body schema: application/json
skuId
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
quantity
required
integer >= 1
unitPrice
number >= 0

Responses

Request samples

Content type
application/json
{
  • "skuId": "string",
  • "quantity": 1,
  • "unitPrice": 0
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "orgId": "string",
  • "salesOrderId": "string",
  • "skuId": "string",
  • "quantity": 0,
  • "unitPrice": "string"
}

List sales order items

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

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

Update sales order item

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
Request Body schema: application/json
skuId
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
quantity
integer >= 1
unitPrice
number >= 0

Responses

Request samples

Content type
application/json
{
  • "skuId": "string",
  • "quantity": 1,
  • "unitPrice": 0
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "orgId": "string",
  • "salesOrderId": "string",
  • "skuId": "string",
  • "quantity": 0,
  • "unitPrice": "string"
}

Remove item from sales order

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

Content type
application/json
{
  • "deletedId": "string"
}

Add timeline note

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
Request Body schema: application/json
body
required
string non-empty
statusAtTime
string
Enum: "Received" "Entered" "Shipped" "Invoiced" "Paid" "Rejected" "In-Dispute" "Completed"

Responses

Request samples

Content type
application/json
{
  • "body": "string",
  • "statusAtTime": "Received"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "orgId": "string",
  • "salesOrderId": "string",
  • "orderStatus": "Received",
  • "note": "string",
  • "createdAt": "string"
}

List sales order timeline notes

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

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

Delete timeline note

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

Content type
application/json
{
  • "deletedId": "string"
}

Create order channel

Request Body schema: application/json
name
required
string [ 1 .. 100 ] characters

Responses

Request samples

Content type
application/json
{
  • "name": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "orgId": "string",
  • "name": "string",
  • "sortOrder": 0,
  • "isActive": true,
  • "createdAt": "string"
}

List order channels

Responses

Response samples

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

Update order channel

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
Request Body schema: application/json
name
string [ 1 .. 100 ] characters
sortOrder
integer
isActive
boolean

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "sortOrder": 0,
  • "isActive": true
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "orgId": "string",
  • "name": "string",
  • "sortOrder": 0,
  • "isActive": true,
  • "createdAt": "string"
}

Delete order channel

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

Content type
application/json
{
  • "deletedId": "string"
}

Reactivate order channel

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "orgId": "string",
  • "name": "string",
  • "sortOrder": 0,
  • "isActive": true,
  • "createdAt": "string"
}

Check order channel usage

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

Content type
application/json
{
  • "inUse": true,
  • "soCount": 0
}

List order status enum values

Responses

Response samples

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

List fulfillment status enum values

Responses

Response samples

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

PurchaseOrders

Create PO

Request Body schema: application/json
vendorId
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
targetType
required
string
Enum: "materials" "finished_goods"
status
required
string
Enum: "Planning" "Placed" "In Transit" "Partial" "Received" "Paid" "Cancelled"
shipToLocationId
string or null^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
placedAt
string
shipDate
string or null
expectedDeliveryDate
string or null
shippingCosts
number >= 0
setupCosts
number >= 0
otherCosts
number >= 0
notes
string or null
required
Array of objects

Responses

Request samples

Content type
application/json
{
  • "vendorId": "string",
  • "targetType": "materials",
  • "status": "Planning",
  • "shipToLocationId": "string",
  • "placedAt": "string",
  • "shipDate": "string",
  • "expectedDeliveryDate": "string",
  • "shippingCosts": 0,
  • "setupCosts": 0,
  • "otherCosts": 0,
  • "notes": "string",
  • "items": [
    ]
}

Response samples

Content type
application/json
{
  • "purchaseOrder": {
    },
  • "items": [
    ]
}

List POs

Responses

Response samples

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

Update PO

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
Request Body schema: application/json
vendorId
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
targetType
string
Enum: "materials" "finished_goods"
status
string
Enum: "Planning" "Placed" "In Transit" "Partial" "Received" "Paid" "Cancelled"
shipToLocationId
string or null^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
placedAt
string
shipDate
string or null
expectedDeliveryDate
string or null
shippingCosts
number >= 0
setupCosts
number >= 0
otherCosts
number >= 0
notes
string or null
planningAt
string or null
inTransitAt
string or null
partialAt
string or null
receivedAt
string or null
paidAt
string or null
cancelledAt
string or null

Responses

Request samples

Content type
application/json
{
  • "vendorId": "string",
  • "targetType": "materials",
  • "status": "Planning",
  • "shipToLocationId": "string",
  • "placedAt": "string",
  • "shipDate": "string",
  • "expectedDeliveryDate": "string",
  • "shippingCosts": 0,
  • "setupCosts": 0,
  • "otherCosts": 0,
  • "notes": "string",
  • "planningAt": "string",
  • "inTransitAt": "string",
  • "partialAt": "string",
  • "receivedAt": "string",
  • "paidAt": "string",
  • "cancelledAt": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "orgId": "string",
  • "poNumber": "string",
  • "vendorId": "string",
  • "targetType": "materials",
  • "status": "Planning",
  • "shipToLocationId": "string",
  • "planningAt": "string",
  • "placedAt": "string",
  • "shipDate": "string",
  • "inTransitAt": "string",
  • "partialAt": "string",
  • "expectedDeliveryDate": "string",
  • "receivedAt": "string",
  • "paidAt": "string",
  • "cancelledAt": "string",
  • "shippingCosts": "string",
  • "setupCosts": "string",
  • "otherCosts": "string",
  • "notes": "string",
  • "createdAt": "string",
  • "updatedAt": "string"
}

Delete PO

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

Content type
application/json
{
  • "deletedId": "string"
}

Get PO detail

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

Content type
application/json
{
  • "purchaseOrder": {
    },
  • "items": [
    ]
}

Bulk-import POs

Request Body schema: application/json
required
Array of objects
Array
vendorId
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
targetType
required
string
Enum: "materials" "finished_goods"
status
required
string
Enum: "Planning" "Placed" "In Transit" "Partial" "Received" "Paid" "Cancelled"
shipToLocationId
string or null^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
placedAt
string
shipDate
string or null
expectedDeliveryDate
string or null
shippingCosts
number >= 0
setupCosts
number >= 0
otherCosts
number >= 0
notes
string or null
required
Array of objects

Responses

Request samples

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

Response samples

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

Add item to PO

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
Request Body schema: application/json
materialId
string or null^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
skuId
string or null^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
quantity
required
number > 0
unitCost
number >= 0

Responses

Request samples

Content type
application/json
{
  • "materialId": "string",
  • "skuId": "string",
  • "quantity": 0,
  • "unitCost": 0
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "orgId": "string",
  • "purchaseOrderId": "string",
  • "materialId": "string",
  • "skuId": "string",
  • "quantity": "string",
  • "unitCost": "string"
}

List PO items

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

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

Update PO item

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
Request Body schema: application/json
materialId
string or null^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
skuId
string or null^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
quantity
number > 0
unitCost
number >= 0

Responses

Request samples

Content type
application/json
{
  • "materialId": "string",
  • "skuId": "string",
  • "quantity": 0,
  • "unitCost": 0
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "orgId": "string",
  • "purchaseOrderId": "string",
  • "materialId": "string",
  • "skuId": "string",
  • "quantity": "string",
  • "unitCost": "string"
}

Remove PO item

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

Content type
application/json
{
  • "deletedId": "string"
}

Create receipt against PO

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
Request Body schema: application/json
receiptDate
string
notes
string or null
required
Array of objects

Responses

Request samples

Content type
application/json
{
  • "receiptDate": "string",
  • "notes": "string",
  • "items": [
    ]
}

Response samples

Content type
application/json
{
  • "purchaseOrder": {
    },
  • "receipt": {
    },
  • "receiptItems": [
    ]
}

List PO receipts

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

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

Update PO receipt

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
Request Body schema: application/json
receiptDate
string

Responses

Request samples

Content type
application/json
{
  • "receiptDate": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "orgId": "string",
  • "purchaseOrderId": "string",
  • "receiptDate": "string",
  • "createdAt": "string",
  • "updatedAt": "string"
}

Delete PO receipt

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

Content type
application/json
{
  • "deletedId": "string"
}

Get PO receipt detail

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

Content type
application/json
{
  • "receipt": {
    },
  • "items": [
    ]
}

List items across POs

Responses

Response samples

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

Generate PO PDF

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

List PO status enum values

Responses

Response samples

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

WorkOrders

Create WO

Request Body schema: application/json
status
required
string
Enum: "Draft" "Entered" "Placed" "Production" "In Transit" "Partial" "Received" "Completed" "Cancelled"
workSiteLocationId
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
orderDate
string
expectedDeliveryDate
string or null
notes
string or null
required
Array of objects

Responses

Request samples

Content type
application/json
{
  • "status": "Draft",
  • "workSiteLocationId": "string",
  • "orderDate": "string",
  • "expectedDeliveryDate": "string",
  • "notes": "string",
  • "items": [
    ]
}

Response samples

Content type
application/json
{
  • "workOrder": {
    },
  • "items": [
    ],
  • "inputs": [
    ]
}

List WOs

Responses

Response samples

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

Update WO

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
Request Body schema: application/json
status
string
Enum: "Draft" "Entered" "Placed" "Production" "In Transit" "Partial" "Received" "Completed" "Cancelled"
workSiteLocationId
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
orderDate
string
expectedDeliveryDate
string or null
notes
string or null
placedAt
string
draftAt
string or null
enteredAt
string or null
productionStartedAt
string or null
inTransitAt
string or null
partialAt
string or null
receivedAt
string or null
completedAt
string or null
cancelledAt
string or null

Responses

Request samples

Content type
application/json
{
  • "status": "Draft",
  • "workSiteLocationId": "string",
  • "orderDate": "string",
  • "expectedDeliveryDate": "string",
  • "notes": "string",
  • "placedAt": "string",
  • "draftAt": "string",
  • "enteredAt": "string",
  • "productionStartedAt": "string",
  • "inTransitAt": "string",
  • "partialAt": "string",
  • "receivedAt": "string",
  • "completedAt": "string",
  • "cancelledAt": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "orgId": "string",
  • "woNumber": "string",
  • "status": "Draft",
  • "workSiteId": "string",
  • "draftAt": "string",
  • "enteredAt": "string",
  • "placedAt": "string",
  • "expectedDeliveryDate": "string",
  • "productionStartedAt": "string",
  • "inTransitAt": "string",
  • "partialAt": "string",
  • "receivedAt": "string",
  • "completedAt": "string",
  • "cancelledAt": "string",
  • "notes": "string",
  • "createdAt": "string",
  • "updatedAt": "string"
}

Delete WO

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

Content type
application/json
{
  • "deletedId": "string"
}

Get WO detail

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

Content type
application/json
{
  • "workOrder": {
    },
  • "items": [
    ],
  • "inputs": [
    ]
}

Bulk-import WOs

Request Body schema: application/json
required
Array of objects
Array
status
required
string
Enum: "Draft" "Entered" "Placed" "Production" "In Transit" "Partial" "Received" "Completed" "Cancelled"
workSiteLocationId
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
orderDate
string
expectedDeliveryDate
string or null
notes
string or null
required
Array of objects

Responses

Request samples

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

Response samples

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

Add item to WO

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
Request Body schema: application/json
skuId
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
quantity
required
integer >= 1
conversionCost
number >= 0

Responses

Request samples

Content type
application/json
{
  • "skuId": "string",
  • "quantity": 1,
  • "conversionCost": 0
}

Response samples

Content type
application/json
{
  • "item": {
    },
  • "inputs": [
    ]
}

Update WO item

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
Request Body schema: application/json
quantity
integer >= 1
conversionCost
number >= 0

Responses

Request samples

Content type
application/json
{
  • "quantity": 1,
  • "conversionCost": 0
}

Response samples

Content type
application/json
{
  • "item": {
    },
  • "inputs": [
    ]
}

Remove WO item

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

Content type
application/json
{
  • "deletedId": "string"
}

Create receipt against WO

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
Request Body schema: application/json
receiptDate
string
notes
string or null
required
Array of objects

Responses

Request samples

Content type
application/json
{
  • "receiptDate": "string",
  • "notes": "string",
  • "items": [
    ]
}

Response samples

Content type
application/json
{
  • "workOrder": {
    },
  • "receipt": {
    },
  • "receiptItems": [
    ]
}

List WO receipts

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

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

Update WO receipt

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
Request Body schema: application/json
receiptDate
string

Responses

Request samples

Content type
application/json
{
  • "receiptDate": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "orgId": "string",
  • "workOrderId": "string",
  • "receiptDate": "string",
  • "createdAt": "string"
}

Delete WO receipt

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

Content type
application/json
{
  • "deletedId": "string"
}

Get WO receipt detail

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

Content type
application/json
{
  • "receipt": {
    },
  • "items": [
    ]
}

List WO status enum values

Responses

Response samples

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

ProductionOrders

Create production order

Request Body schema: application/json
status
required
string
Enum: "Draft" "Entered" "Placed" "Production" "In Transit" "Partial" "Received" "Completed" "Cancelled"
locationId
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
orderDate
string
expectedDeliveryDate
string or null
notes
string or null
required
Array of objects

Responses

Request samples

Content type
application/json
{
  • "status": "Draft",
  • "locationId": "string",
  • "orderDate": "string",
  • "expectedDeliveryDate": "string",
  • "notes": "string",
  • "items": [
    ]
}

Response samples

Content type
application/json
{
  • "productionOrder": {
    },
  • "items": [
    ],
  • "inputs": [
    ]
}

List production orders

Responses

Response samples

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

Update production order

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
Request Body schema: application/json
status
string
Enum: "Draft" "Entered" "Placed" "Production" "In Transit" "Partial" "Received" "Completed" "Cancelled"
locationId
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
orderDate
string
expectedDeliveryDate
string or null
notes
string or null
placedAt
string
draftAt
string or null
enteredAt
string or null
productionStartedAt
string or null
inTransitAt
string or null
partialAt
string or null
receivedAt
string or null
completedAt
string or null
cancelledAt
string or null

Responses

Request samples

Content type
application/json
{
  • "status": "Draft",
  • "locationId": "string",
  • "orderDate": "string",
  • "expectedDeliveryDate": "string",
  • "notes": "string",
  • "placedAt": "string",
  • "draftAt": "string",
  • "enteredAt": "string",
  • "productionStartedAt": "string",
  • "inTransitAt": "string",
  • "partialAt": "string",
  • "receivedAt": "string",
  • "completedAt": "string",
  • "cancelledAt": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "orgId": "string",
  • "prodNumber": "string",
  • "status": "Draft",
  • "locationId": "string",
  • "placedAt": "string",
  • "expectedDeliveryDate": "string",
  • "draftAt": "string",
  • "enteredAt": "string",
  • "productionStartedAt": "string",
  • "inTransitAt": "string",
  • "partialAt": "string",
  • "receivedAt": "string",
  • "completedAt": "string",
  • "cancelledAt": "string",
  • "notes": "string",
  • "createdAt": "string",
  • "updatedAt": "string"
}

Delete production order

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

Content type
application/json
{
  • "deletedId": "string"
}

Get production order detail

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

Content type
application/json
{
  • "productionOrder": {
    },
  • "items": [
    ],
  • "inputs": [
    ]
}

Bulk-import production orders

Request Body schema: application/json
required
Array of objects
Array
status
required
string
Enum: "Draft" "Entered" "Placed" "Production" "In Transit" "Partial" "Received" "Completed" "Cancelled"
locationId
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
orderDate
string
expectedDeliveryDate
string or null
notes
string or null
required
Array of objects

Responses

Request samples

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

Response samples

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

Add item to production order

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
Request Body schema: application/json
skuId
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
quantity
required
integer >= 1
productionCost
number or null >= 0

Responses

Request samples

Content type
application/json
{
  • "skuId": "string",
  • "quantity": 1,
  • "productionCost": 0
}

Response samples

Content type
application/json
{
  • "item": {
    },
  • "inputs": [
    ]
}

Update production order item

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
Request Body schema: application/json
quantity
integer >= 1
productionCost
number or null >= 0

Responses

Request samples

Content type
application/json
{
  • "quantity": 1,
  • "productionCost": 0
}

Response samples

Content type
application/json
{
  • "item": {
    },
  • "inputs": [
    ]
}

Remove production order item

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

Content type
application/json
{
  • "deletedId": "string"
}

Create receipt against production order

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
Request Body schema: application/json
receiptDate
string
notes
string or null
required
Array of objects

Responses

Request samples

Content type
application/json
{
  • "receiptDate": "string",
  • "notes": "string",
  • "items": [
    ]
}

Response samples

Content type
application/json
{
  • "productionOrder": {
    },
  • "receipt": {
    },
  • "receiptItems": [
    ]
}

List production order receipts

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

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

Update production order receipt

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
Request Body schema: application/json
receiptDate
string

Responses

Request samples

Content type
application/json
{
  • "receiptDate": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "orgId": "string",
  • "productionOrderId": "string",
  • "receiptDate": "string",
  • "createdAt": "string"
}

Delete production order receipt

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

Content type
application/json
{
  • "deletedId": "string"
}

Get production order receipt detail

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

Content type
application/json
{
  • "receipt": {
    },
  • "items": [
    ]
}

List production order status enum values

Responses

Response samples

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

Documents

Upload document

Request Body schema: multipart/form-data
file
required
string <binary>
entityType
required
string
Enum: "sales_order" "purchase_order" "work_order"
entityId
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "orgId": "string",
  • "entityType": "sales_order",
  • "entityId": "string",
  • "name": "string",
  • "gcsPath": "string",
  • "mimeType": "string",
  • "sizeBytes": "string",
  • "createdAt": "string"
}

List documents for an entity

query Parameters
entityType
required
string
Enum: "sales_order" "purchase_order" "work_order"
entityId
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

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

Delete document

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

Content type
application/json
{
  • "deletedId": "string"
}

Get document detail (signed download URL)

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "orgId": "string",
  • "entityType": "sales_order",
  • "entityId": "string",
  • "name": "string",
  • "gcsPath": "string",
  • "mimeType": "string",
  • "sizeBytes": "string",
  • "createdAt": "string",
  • "signedUrl": "string"
}

Platform

Create user

Request Body schema: application/json
email
required
string <email>
displayName
string or null

Responses

Request samples

Content type
application/json
{
  • "email": "user@example.com",
  • "displayName": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "firebaseUid": "string",
  • "email": "string",
  • "displayName": "string",
  • "isActive": true,
  • "lastLoginAt": "string",
  • "createdAt": "string",
  • "updatedAt": "string"
}

Get user

Responses

Response samples

Content type
application/json
{
  • "user": {
    },
  • "organizations": [
    ]
}

Update user

Request Body schema: application/json
displayName
string or null

Responses

Request samples

Content type
application/json
{
  • "displayName": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "firebaseUid": "string",
  • "email": "string",
  • "displayName": "string",
  • "isActive": true,
  • "lastLoginAt": "string",
  • "createdAt": "string",
  • "updatedAt": "string"
}

Delete user

Responses

Response samples

Content type
application/json
{
  • "deletedId": "string"
}

Create API token (PAT)

Request Body schema: application/json
name
required
string [ 1 .. 255 ] characters
orgId
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
expiresInDays
integer or null [ 1 .. 3650 ]

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "orgId": "string",
  • "expiresInDays": 1
}

Response samples

Content type
application/json
{
  • "token": {
    },
  • "plaintext": "string"
}

List my API tokens

Responses

Response samples

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

Revoke API token

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

Content type
application/json
{
  • "deletedId": "string"
}

List my pending invitations

Responses

Response samples

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

Look up invitation by token (public)

path Parameters
token
required
string

Responses

Response samples

Content type
application/json
{
  • "invitation": {
    }
}

Accept invitation

Request Body schema: application/json
token
required
string
displayName
string or null

Responses

Request samples

Content type
application/json
{
  • "token": "string",
  • "displayName": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "userId": "string",
  • "orgId": "string",
  • "role": "owner",
  • "isActive": true,
  • "joinedAt": "string",
  • "lastActiveAt": "string",
  • "createdAt": "string",
  • "updatedAt": "string"
}

Decline invitation

Request Body schema: application/json
invitationId
required
string

Responses

Request samples

Content type
application/json
{
  • "invitationId": "string"
}

Response samples

Content type
application/json
{
  • "ok": true
}

Create organization

Request Body schema: application/json
name
required
string [ 1 .. 255 ] characters
slug
required
string^[a-z0-9][a-z0-9-]*[a-z0-9]$

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "slug": "string"
}

Response samples

Content type
application/json
{
  • "organization": {
    },
  • "membership": {
    }
}

Get current organization

Responses

Response samples

Content type
application/json
{
  • "organization": {
    },
  • "settings": {
    }
}

Update current organization

Request Body schema: application/json
name
string
slug
string
legalName
string or null
address
string or null
city
string or null
state
string or null
country
string or null
zipCode
string or null
logoUrl
string or null
contactEmail
string or null
contactPhone
string or null

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "slug": "string",
  • "legalName": "string",
  • "address": "string",
  • "city": "string",
  • "state": "string",
  • "country": "string",
  • "zipCode": "string",
  • "logoUrl": "string",
  • "contactEmail": "string",
  • "contactPhone": "string"
}

Response samples

Content type
application/json
{
  • "organization": {
    },
  • "settings": {
    }
}

Delete current organization (purge)

Responses

Response samples

Content type
application/json
{
  • "deletedId": "string"
}

List organization members

Responses

Response samples

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

Update user role

path Parameters
userId
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
Request Body schema: application/json
role
required
string
Enum: "owner" "admin" "member" "viewer"

Responses

Request samples

Content type
application/json
{
  • "role": "owner"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "userId": "string",
  • "orgId": "string",
  • "role": "owner",
  • "isActive": true,
  • "joinedAt": "string",
  • "lastActiveAt": "string",
  • "createdAt": "string",
  • "updatedAt": "string"
}

Remove user from org

path Parameters
userId
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

Content type
application/json
{
  • "deletedId": "string"
}

Leave organization

Responses

Response samples

Content type
application/json
{
  • "deletedOrg": true
}

Send invitation

Request Body schema: application/json
email
required
string <email>
role
required
string
Enum: "owner" "admin" "member" "viewer"
inviterDisplayName
string

Responses

Request samples

Content type
application/json
{
  • "email": "user@example.com",
  • "role": "owner",
  • "inviterDisplayName": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "orgId": "string",
  • "invitedBy": "string",
  • "email": "string",
  • "role": "owner",
  • "token": "string",
  • "expiresAt": "string",
  • "acceptedAt": "string",
  • "revokedAt": "string",
  • "createdAt": "string"
}

List organization invitations

Responses

Response samples

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

Resend invitation

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
Request Body schema: application/json
inviterDisplayName
string

Responses

Request samples

Content type
application/json
{
  • "inviterDisplayName": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "orgId": "string",
  • "invitedBy": "string",
  • "email": "string",
  • "role": "owner",
  • "token": "string",
  • "expiresAt": "string",
  • "acceptedAt": "string",
  • "revokedAt": "string",
  • "createdAt": "string"
}

Revoke invitation

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

Content type
application/json
{
  • "deletedId": "string"
}

Customers

Create customer

Request Body schema: application/json
name
required
string [ 1 .. 255 ] characters
typeId
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
segmentId
string or null^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
brokerId
string or null^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
brokerFeePercent
number or null
address
string or null
city
string or null
state
string or null
country
string or null = 2 characters
zipCode
string or null
parentId
string or null^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
qboId
string or null
notes
string or null

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "typeId": "string",
  • "segmentId": "string",
  • "brokerId": "string",
  • "brokerFeePercent": 0,
  • "address": "string",
  • "city": "string",
  • "state": "string",
  • "country": "st",
  • "zipCode": "string",
  • "parentId": "string",
  • "qboId": "string",
  • "notes": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "orgId": "string",
  • "name": "string",
  • "customerTypeId": "string",
  • "customerSegmentId": "string",
  • "brokerId": "string",
  • "brokerFeePercent": "string",
  • "address": "string",
  • "city": "string",
  • "state": "string",
  • "country": "string",
  • "zipCode": "string",
  • "parentCustomerId": "string",
  • "qboId": "string",
  • "notes": "string",
  • "isActive": true,
  • "createdAt": "string",
  • "updatedAt": "string"
}

List customers

query Parameters
active
string
Enum: "true" "false"
type
string
segment
string
broker
string
parentCustomer
string
q
string

Responses

Response samples

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

Update customer

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
Request Body schema: application/json
name
string [ 1 .. 255 ] characters
typeId
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
segmentId
string or null^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
brokerId
string or null^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
brokerFeePercent
number or null
address
string or null
city
string or null
state
string or null
country
string or null = 2 characters
zipCode
string or null
parentId
string or null^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
qboId
string or null
notes
string or null
isActive
boolean

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "typeId": "string",
  • "segmentId": "string",
  • "brokerId": "string",
  • "brokerFeePercent": 0,
  • "address": "string",
  • "city": "string",
  • "state": "string",
  • "country": "st",
  • "zipCode": "string",
  • "parentId": "string",
  • "qboId": "string",
  • "notes": "string",
  • "isActive": true
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "orgId": "string",
  • "name": "string",
  • "customerTypeId": "string",
  • "customerSegmentId": "string",
  • "brokerId": "string",
  • "brokerFeePercent": "string",
  • "address": "string",
  • "city": "string",
  • "state": "string",
  • "country": "string",
  • "zipCode": "string",
  • "parentCustomerId": "string",
  • "qboId": "string",
  • "notes": "string",
  • "isActive": true,
  • "createdAt": "string",
  • "updatedAt": "string"
}

Delete customer

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

Content type
application/json
{
  • "deletedId": "string"
}

Get customer detail

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "orgId": "string",
  • "name": "string",
  • "customerTypeId": "string",
  • "customerSegmentId": "string",
  • "brokerId": "string",
  • "brokerFeePercent": "string",
  • "address": "string",
  • "city": "string",
  • "state": "string",
  • "country": "string",
  • "zipCode": "string",
  • "parentCustomerId": "string",
  • "qboId": "string",
  • "notes": "string",
  • "isActive": true,
  • "createdAt": "string",
  • "updatedAt": "string"
}

Bulk-import customers

Request Body schema: application/json
required
Array of objects
Array
name
required
string [ 1 .. 255 ] characters
typeId
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
segmentId
string or null^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
brokerId
string or null^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
brokerFeePercent
number or null
address
string or null
city
string or null
state
string or null
country
string or null = 2 characters
zipCode
string or null
parentId
string or null^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
qboId
string or null
notes
string or null

Responses

Request samples

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

Response samples

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

Create customer type

Request Body schema: application/json
name
required
string [ 1 .. 100 ] characters

Responses

Request samples

Content type
application/json
{
  • "name": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "orgId": "string",
  • "name": "string",
  • "sortOrder": 0,
  • "isActive": true,
  • "createdAt": "string"
}

List customer types

Responses

Response samples

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

Update customer type

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
Request Body schema: application/json
name
string [ 1 .. 100 ] characters
sortOrder
integer
isActive
boolean

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "sortOrder": 0,
  • "isActive": true
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "orgId": "string",
  • "name": "string",
  • "sortOrder": 0,
  • "isActive": true,
  • "createdAt": "string"
}

Delete customer type

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

Content type
application/json
{
  • "deletedId": "string"
}

Create customer segment

Request Body schema: application/json
name
required
string [ 1 .. 100 ] characters

Responses

Request samples

Content type
application/json
{
  • "name": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "orgId": "string",
  • "name": "string",
  • "sortOrder": 0,
  • "isActive": true,
  • "createdAt": "string"
}

List customer segments

Responses

Response samples

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

Update customer segment

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
Request Body schema: application/json
name
string [ 1 .. 100 ] characters
sortOrder
integer
isActive
boolean

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "sortOrder": 0,
  • "isActive": true
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "orgId": "string",
  • "name": "string",
  • "sortOrder": 0,
  • "isActive": true,
  • "createdAt": "string"
}

Delete customer segment

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

Content type
application/json
{
  • "deletedId": "string"
}

Create broker

Request Body schema: application/json
name
required
string [ 1 .. 100 ] characters

Responses

Request samples

Content type
application/json
{
  • "name": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "orgId": "string",
  • "name": "string",
  • "sortOrder": 0,
  • "isActive": true,
  • "createdAt": "string"
}

List brokers

Responses

Response samples

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

Update broker

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
Request Body schema: application/json
name
string [ 1 .. 100 ] characters
sortOrder
integer
isActive
boolean

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "sortOrder": 0,
  • "isActive": true
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "orgId": "string",
  • "name": "string",
  • "sortOrder": 0,
  • "isActive": true,
  • "createdAt": "string"
}

Delete broker

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

Content type
application/json
{
  • "deletedId": "string"
}

Check customer type usage

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

Content type
application/json
{
  • "inUse": true,
  • "customerCount": 0,
  • "sampleCustomerIds": [
    ]
}

Check customer segment usage

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

Content type
application/json
{
  • "inUse": true,
  • "customerCount": 0,
  • "sampleCustomerIds": [
    ]
}

Check broker usage

path Parameters
id
required
string^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

Responses

Response samples

Content type
application/json
{
  • "inUse": true,
  • "customerCount": 0,
  • "soCount": 0
}