Products

A product describes what you sell (goods or services). A product determines how what you sell appears on invoices and receipts. The pricing for products is set in Plans. One product can have many plans.

Retrieve a list of products

Retrieve a list of products.

Request
Security:
query Parameters
filter
string

The collection items filter requires a special format. Use "," for multiple allowed values. Use ";" for multiple fields. See the filter guide for more options and examples about this format.

sort
Array of strings

The collection items sort field and order (prefix with "-" for descending sort).

limit
integer [ 0 .. 1000 ]

The collection items limit.

offset
integer >= 0

The collection items offset.

q
string

The partial search of the text fields.

header Parameters
Organization-Id
string (ResourceId) <= 50 characters

Organization identifier in scope of which need to perform request (if not specified, the default organization will be used).

Example: 4f6cf35x-2c4y-483z-a0a9-158621f77a21
Responses
200A list of products was retrieved successfully.
Response Headers
Pagination-Total
integer

Total items count.

Pagination-Limit
integer

Items per page limit.

Pagination-Offset
integer

Pagination offset.

Response Schema: application/json
Array
id
string <= 50 characters

The product ID.

name
required
string <= 255 characters

The product name.

unitLabel
string <= 50 characters
Default: "unit"

The unit label, such as per seat or per unit.

description
string <= 512 characters

The product description.

requiresShipping
boolean

If the product requires shipping, shipping calculations will be applied.

options
Array of strings

The product options such as color, size, etc. The product options definition does not include option values. Those are defined within the plans.

customFields
object (ResourceCustomFields)
Default: {}

Custom Fields list as a map {"custom field name": "custom field value", ...}. The format must follow the saved format (see Custom Fields section for the formats).

createdTime
string <date-time>

The product created time.

updatedTime
string <date-time>

The product updated time.

taxCategoryId
string

The product's tax category identifier string.

Enum: "00000" "99999" "20010" "40030" "51020" "51010" "31000" "30070"
accountingCode
string

The product accounting code.

Array of objects (schemas) non-empty

The links related to resource.

401Unauthorized access, invalid credentials was used.
403Access forbidden.
get/products
Request samples
// all parameters are optional
const firstCollection = await api.products.getAll();

// alternatively you can specify one or more of them
const params = {limit: 20, offset: 100, sort: '-createdTime'}; 
const secondCollection = await api.products.getAll(params);

// access the collection items, each item is a Member
secondCollection.items.forEach(product => console.log(product.fields.name));
Response samples
application/json
[
  • {
    }
]

Create a Product

Create a Product.

Request
Security:
header Parameters
Organization-Id
string (ResourceId) <= 50 characters

Organization identifier in scope of which need to perform request (if not specified, the default organization will be used).

Example: 4f6cf35x-2c4y-483z-a0a9-158621f77a21
Request Body schema: application/json

Product resource.

name
required
string <= 255 characters

The product name.

unitLabel
string <= 50 characters
Default: "unit"

The unit label, such as per seat or per unit.

description
string <= 512 characters

The product description.

requiresShipping
boolean

If the product requires shipping, shipping calculations will be applied.

options
Array of strings

The product options such as color, size, etc. The product options definition does not include option values. Those are defined within the plans.

customFields
object (ResourceCustomFields)
Default: {}

Custom Fields list as a map {"custom field name": "custom field value", ...}. The format must follow the saved format (see Custom Fields section for the formats).

taxCategoryId
string

The product's tax category identifier string.

Enum: "00000" "99999" "20010" "40030" "51020" "51010" "31000" "30070"
accountingCode
string

The product accounting code.

Responses
201Product was created.
Response Schema: application/json
id
string <= 50 characters

The product ID.

name
required
string <= 255 characters

The product name.

unitLabel
string <= 50 characters
Default: "unit"

The unit label, such as per seat or per unit.

description
string <= 512 characters

The product description.

requiresShipping
boolean

If the product requires shipping, shipping calculations will be applied.

options
Array of strings

The product options such as color, size, etc. The product options definition does not include option values. Those are defined within the plans.

customFields
object (ResourceCustomFields)
Default: {}

Custom Fields list as a map {"custom field name": "custom field value", ...}. The format must follow the saved format (see Custom Fields section for the formats).

createdTime
string <date-time>

The product created time.

updatedTime
string <date-time>

The product updated time.

taxCategoryId
string

The product's tax category identifier string.

Enum: "00000" "99999" "20010" "40030" "51020" "51010" "31000" "30070"
accountingCode
string

The product accounting code.

Array of objects (schemas) non-empty

The links related to resource.

401Unauthorized access, invalid credentials was used.
403Access forbidden.
422Invalid data was sent.
post/products
Request samples
application/json
{
  • "name": "Premium membership",
  • "unitLabel": "seat",
  • "description": "string",
  • "requiresShipping": false,
  • "options": [
    ],
  • "customFields": {
    },
  • "taxCategoryId": "00000",
  • "accountingCode": "4010"
}
Response samples
application/json
{
  • "id": "membership",
  • "name": "Premium membership",
  • "unitLabel": "seat",
  • "description": "string",
  • "requiresShipping": false,
  • "options": [
    ],
  • "customFields": {
    },
  • "createdTime": "2019-08-24T14:15:22Z",
  • "updatedTime": "2019-08-24T14:15:22Z",
  • "taxCategoryId": "00000",
  • "accountingCode": "4010",
  • "_links": [
    ]
}

Retrieve a product

Retrieve a product with specified identifier string.

Request
Security:
path Parameters
id
required
string <= 50 characters ^[@~\-\.\w]+$

The resource identifier string.

header Parameters
Organization-Id
string (ResourceId) <= 50 characters

Organization identifier in scope of which need to perform request (if not specified, the default organization will be used).

Example: 4f6cf35x-2c4y-483z-a0a9-158621f77a21
Responses
200Product was retrieved successfully.
Response Schema: application/json
id
string <= 50 characters

The product ID.

name
required
string <= 255 characters

The product name.

unitLabel
string <= 50 characters
Default: "unit"

The unit label, such as per seat or per unit.

description
string <= 512 characters

The product description.

requiresShipping
boolean

If the product requires shipping, shipping calculations will be applied.

options
Array of strings

The product options such as color, size, etc. The product options definition does not include option values. Those are defined within the plans.

customFields
object (ResourceCustomFields)
Default: {}

Custom Fields list as a map {"custom field name": "custom field value", ...}. The format must follow the saved format (see Custom Fields section for the formats).

createdTime
string <date-time>

The product created time.

updatedTime
string <date-time>

The product updated time.

taxCategoryId
string

The product's tax category identifier string.

Enum: "00000" "99999" "20010" "40030" "51020" "51010" "31000" "30070"
accountingCode
string

The product accounting code.

Array of objects (schemas) non-empty

The links related to resource.

401Unauthorized access, invalid credentials was used.
403Access forbidden.
404Resource was not found.
get/products/{id}
Request samples
const product = await api.products.get({id: 'foobar-001'});
console.log(product.fields.name);
Response samples
application/json
{
  • "id": "membership",
  • "name": "Premium membership",
  • "unitLabel": "seat",
  • "description": "string",
  • "requiresShipping": false,
  • "options": [
    ],
  • "customFields": {
    },
  • "createdTime": "2019-08-24T14:15:22Z",
  • "updatedTime": "2019-08-24T14:15:22Z",
  • "taxCategoryId": "00000",
  • "accountingCode": "4010",
  • "_links": [
    ]
}

Upsert a product with predefined ID

Create or update a product with predefined identifier string.

Request
Security:
path Parameters
id
required
string <= 50 characters ^[@~\-\.\w]+$

The resource identifier string.

header Parameters
Organization-Id
string (ResourceId) <= 50 characters

Organization identifier in scope of which need to perform request (if not specified, the default organization will be used).

Example: 4f6cf35x-2c4y-483z-a0a9-158621f77a21
Request Body schema: application/json

Product resource.

name
required
string <= 255 characters

The product name.

unitLabel
string <= 50 characters
Default: "unit"

The unit label, such as per seat or per unit.

description
string <= 512 characters

The product description.

requiresShipping
boolean

If the product requires shipping, shipping calculations will be applied.

options
Array of strings

The product options such as color, size, etc. The product options definition does not include option values. Those are defined within the plans.

customFields
object (ResourceCustomFields)
Default: {}

Custom Fields list as a map {"custom field name": "custom field value", ...}. The format must follow the saved format (see Custom Fields section for the formats).

taxCategoryId
string

The product's tax category identifier string.

Enum: "00000" "99999" "20010" "40030" "51020" "51010" "31000" "30070"
accountingCode
string

The product accounting code.

Responses
200Product was updated.
Response Schema: application/json
id
string <= 50 characters

The product ID.

name
required
string <= 255 characters

The product name.

unitLabel
string <= 50 characters
Default: "unit"

The unit label, such as per seat or per unit.

description
string <= 512 characters

The product description.

requiresShipping
boolean

If the product requires shipping, shipping calculations will be applied.

options
Array of strings

The product options such as color, size, etc. The product options definition does not include option values. Those are defined within the plans.

customFields
object (ResourceCustomFields)
Default: {}

Custom Fields list as a map {"custom field name": "custom field value", ...}. The format must follow the saved format (see Custom Fields section for the formats).

createdTime
string <date-time>

The product created time.

updatedTime
string <date-time>

The product updated time.

taxCategoryId
string

The product's tax category identifier string.

Enum: "00000" "99999" "20010" "40030" "51020" "51010" "31000" "30070"
accountingCode
string

The product accounting code.

Array of objects (schemas) non-empty

The links related to resource.

201Product was created.
Response Schema: application/json
id
string <= 50 characters

The product ID.

name
required
string <= 255 characters

The product name.

unitLabel
string <= 50 characters
Default: "unit"

The unit label, such as per seat or per unit.

description
string <= 512 characters

The product description.

requiresShipping
boolean

If the product requires shipping, shipping calculations will be applied.

options
Array of strings

The product options such as color, size, etc. The product options definition does not include option values. Those are defined within the plans.

customFields
object (ResourceCustomFields)
Default: {}

Custom Fields list as a map {"custom field name": "custom field value", ...}. The format must follow the saved format (see Custom Fields section for the formats).

createdTime
string <date-time>

The product created time.

updatedTime
string <date-time>

The product updated time.

taxCategoryId
string

The product's tax category identifier string.

Enum: "00000" "99999" "20010" "40030" "51020" "51010" "31000" "30070"
accountingCode
string

The product accounting code.

Array of objects (schemas) non-empty

The links related to resource.

401Unauthorized access, invalid credentials was used.
403Access forbidden.
422Invalid data was sent.
put/products/{id}
Request samples
application/json
{
  • "name": "Premium membership",
  • "unitLabel": "seat",
  • "description": "string",
  • "requiresShipping": false,
  • "options": [
    ],
  • "customFields": {
    },
  • "taxCategoryId": "00000",
  • "accountingCode": "4010"
}
Response samples
application/json
{
  • "id": "membership",
  • "name": "Premium membership",
  • "unitLabel": "seat",
  • "description": "string",
  • "requiresShipping": false,
  • "options": [
    ],
  • "customFields": {
    },
  • "createdTime": "2019-08-24T14:15:22Z",
  • "updatedTime": "2019-08-24T14:15:22Z",
  • "taxCategoryId": "00000",
  • "accountingCode": "4010",
  • "_links": [
    ]
}

Delete a product

Delete a product with predefined identifier string.

Request
Security:
path Parameters
id
required
string <= 50 characters ^[@~\-\.\w]+$

The resource identifier string.

header Parameters
Organization-Id
string (ResourceId) <= 50 characters

Organization identifier in scope of which need to perform request (if not specified, the default organization will be used).

Example: 4f6cf35x-2c4y-483z-a0a9-158621f77a21
Responses
204Product was deleted.
401Unauthorized access, invalid credentials was used.
403Access forbidden.
404Resource was not found.
delete/products/{id}
Request samples
const request = await api.products.delete({id: 'my-second-key'});

// the request does not return any fields but
// you can confirm the success using the status code
console.log(request.response.status); // 204
Response samples
application/json
{
  • "status": 400,
  • "title": "string",
  • "detail": "string",
  • "error": "string"
}