POST
/
catalogue
/
products
curl -X POST \
 /catalogue/products \
 --header "Content-Type: application/json" \
 --header "Authorization: Bearer <token>" \
 --data '{
    "id": "ad8f1c2c-3b1c-4b0a-8b0a-0b0b0b0b0b0b",
    "productFamilies": [
        []
    ],
    "name": "Basic",
    "description": "For small teams.",
    "internalName": "Basic (Weekly)",
    "number": "M-1234",
    "translations": [],
    "type": "",
    "measurement": {
        "id": "ad8f1c2c-3b1c-4b0a-8b0a-0b0b0b0b0b0b",
        "code": "users",
        "description": "The number of users.",
        "fairBilling": "1"
    },
    "invoiceVisibility": "",
    "createdAt": "",
    "updatedAt": "",
    "taxGroup": {
        "id": "00000000-0000-0000-0000-000000000000",
        "internalDescription": "19%"
    },
    "isArchived": "",
    "customFields": {
        "field1": "value1",
        "field2": "value2"
    }
}'
{
  "id": "ad8f1c2c-3b1c-4b0a-8b0a-0b0b0b0b0b0b",
  "productFamilies": [
    {
      "id": "ad8b3b9e-5b0a-4e1a-8b0a-4e1a8b0a4e1a",
      "name": "Team Packages"
    }
  ],
  "name": "Basic",
  "description": "For small teams.",
  "internalName": "Basic (Weekly)",
  "number": "M-1234",
  "translations": {},
  "type": "product",
  "measurement": {
    "id": "ad8f1c2c-3b1c-4b0a-8b0a-0b0b0b0b0b0b",
    "unit": {
      "id": {},
      "name": "Stück",
      "translations": {}
    },
    "code": "users",
    "description": "The number of users.",
    "aggregationType": "<any>",
    "fairBilling": true,
    "type": "<any>"
  },
  "invoiceVisibility": "always",
  "costCentre": {
    "id": "ad8f1c9c-4f0a-4e1a-8b1a-9c4d9c4d9c4d",
    "name": "Cost Centre",
    "code": "CC",
    "type": "KOST1",
    "createdAt": "2021-01-01T00:00:00+00:00",
    "updatedAt": "2021-01-01T00:00:00+00:00"
  },
  "createdAt": "2023-11-07T05:31:56Z",
  "updatedAt": "2023-11-07T05:31:56Z",
  "taxGroup": {
    "id": "00000000-0000-0000-0000-000000000000",
    "internalDescription": "19%",
    "reverseChargeType": "REVERSE_CHARGE",
    "type": "standard"
  },
  "isArchived": true,
  "customFields": {
    "field1": "value1",
    "field2": "value2"
  }
}

Authorizations

Authorization
string
header
required

Value for the Authorization header parameter.

Body

The new Product resource
productFamilies
object[]
required

A product family groups multiple products together.

translations
object
required

The translations of the product. The locale is used as key.

type
enum<string>
required

The type of the product.

  • product: recurring billed product
  • charge: one-time billing
  • plan: plan specific product, which cannot be used as a normal product. Will be filtered out in any product lists.
Available options:
product,
charge,
plan
measurement
object
required

The measurement that is used for the price plan. This could define the quantity or a metered usage.

taxGroup
object
required

The tax group that is used for the product.

name
string

The name of the product based on the current tenant language. This will be displayed on customer communication.

description
string | null

The description of the product based on the current tenant language.

internalName
string | null

Internal name of the product, to differentiate between products with the same name. This will shown in web-app lists, selections and reports.

number
string | null

Internal product number

Required string length: 2 - 255
invoiceVisibility
enum<string>

Defines when the product should be displayed in the invoice.

  • always: The product is always displayed in the invoice.
  • only_if_charged: The product is only displayed in the invoice if it is charged.
Available options:
always,
only_if_charged
costCentre
object | null

The cost centre is used for accounting exports.

createdAt
string
updatedAt
string
isArchived
boolean

Defines if the product is archived and should not be used anymore.

customFields
object | null

Custom fields for the entity. The keys are the field names and the values are the field values. They need to be configured under "/custom-fields" in the API documentation. The input is validated against the configuration. For more details see Custom Fields Guide

Response

201
application/json
Product resource created
productFamilies
object[]
required

A product family groups multiple products together.

translations
object
required

The translations of the product. The locale is used as key.

type
enum<string>
required

The type of the product.

  • product: recurring billed product
  • charge: one-time billing
  • plan: plan specific product, which cannot be used as a normal product. Will be filtered out in any product lists.
Available options:
product,
charge,
plan
measurement
object
required

The measurement that is used for the price plan. This could define the quantity or a metered usage.

taxGroup
object
required

The tax group that is used for the product.

id
string

The unique identifier of the product.

name
string

The name of the product based on the current tenant language. This will be displayed on customer communication.

description
string | null

The description of the product based on the current tenant language.

internalName
string | null

Internal name of the product, to differentiate between products with the same name. This will shown in web-app lists, selections and reports.

number
string | null

Internal product number

Required string length: 2 - 255
invoiceVisibility
enum<string>

Defines when the product should be displayed in the invoice.

  • always: The product is always displayed in the invoice.
  • only_if_charged: The product is only displayed in the invoice if it is charged.
Available options:
always,
only_if_charged
costCentre
object | null

The cost centre is used for accounting exports.

createdAt
string
updatedAt
string
isArchived
boolean

Defines if the product is archived and should not be used anymore.

customFields
object | null

Custom fields for the entity. The keys are the field names and the values are the field values. They need to be configured under "/custom-fields" in the API documentation. The input is validated against the configuration. For more details see Custom Fields Guide