Skip to main content

OpenAPI definition (v0)

Articles

CRUD operations for Articles (SKU metadata)

List articles

Lists articles as of a timestamp. Returns either a full list or a paginated object when page and size are provided.

query Parameters
asOf
string <date-time>

Timestamp to evaluate article state (defaults to now) ISO-8601 format

page
integer <int32>

Page number (1-based). When provided together with size, a paginated response is returned

size
integer <int32>

Page size for paginated response

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "page": 0,
  • "size": 0,
  • "total": 0
}

Upsert an article

Create or update an article. If updated_at is absent, current time is used.

Request Body schema: application/json
required

Article to upsert

Responses

Request samples

Content type
application/json
No sample

Batch upsert articles

Upsert a batch of articles. Returns 202 if all succeed, otherwise 400 with details.

Request Body schema: application/json
required

Array of articles to upsert

Array

Responses

Request samples

Content type
application/json
[
  • {
    }
]

List all article metadata keys

Returns a list of all unique metadata keys used across articles

Responses

List values for a metadata key

Returns paginated list of all values for a specific metadata key

path Parameters
key
required
string

Metadata key to retrieve values for

query Parameters
page
integer <int32>

Page number (0-based)

size
integer <int32>

Number of items per page

Responses

Delete (soft) an article

Marks an article as deleted at the specified time (or now).

path Parameters
sku
required
string

Article SKU

query Parameters
when
string <date-time>

Deletion timestamp (defaults to now)

Responses

Get one article

Fetch a single article by SKU at a given timestamp (defaults to now)

path Parameters
sku
required
string

Article SKU

query Parameters
asOf
string <date-time>

Timestamp to evaluate article state (defaults to now)

Responses

Response samples

Content type
application/json
No sample

Pricelists

CRUD operations for Pricelists metadata

List pricelists

Lists pricelists as of a timestamp. Always returns a paginated object with items, total, page, size.

query Parameters
asOf
string <date-time>

Timestamp to evaluate pricelist state (defaults to now)

page
integer <int32>

Page number (1-based)

size
integer <int32>

Page size

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "page": 0,
  • "size": 0,
  • "total": 0
}

Upsert a pricelist

Create or update a pricelist metadata entry

Request Body schema: application/json
required
code
required
string

Code of the pricelist (unique, not null, recommended to be 64 chars or less)

currency_code
required
string

Currency code (3-letter ISO code, e.g. "USD", "EUR")

vat_mode
required
string
Enum: "NET" "GROSS"

Select if the Pricelist price is in VAT-included or VAT-excluded mode.

description
string

Description of the Pricelist (optional)

end_date
string <date-time>

End date of the Pricelist (optional, if not provided, the Pricelist is considered active indefinitely)

object

Arbitrary key/value metadata for this pricelist (optional; not searchable)

name
string

Name of the Pricelist (optional)

parent_code
string

Parent pricelist code (optional, if not provided, the Pricelist is considered a top-level pricelist)

Array of objects (PriceRule)

Optional list of price rules applied to articles matched by article_matches

start_date
string <date-time>

Start date of the Pricelist (optional, if not provided, the Pricelist is considered active immediately)

Responses

Request samples

Content type
application/json
{
  • "code": "string",
  • "currency_code": "string",
  • "vat_mode": "NET"
}

Batch upsert pricelists

Upsert multiple pricelists in a single request

Request Body schema: application/json
required
Array
code
required
string

Code of the pricelist (unique, not null, recommended to be 64 chars or less)

currency_code
required
string

Currency code (3-letter ISO code, e.g. "USD", "EUR")

vat_mode
required
string
Enum: "NET" "GROSS"

Select if the Pricelist price is in VAT-included or VAT-excluded mode.

description
string

Description of the Pricelist (optional)

end_date
string <date-time>

End date of the Pricelist (optional, if not provided, the Pricelist is considered active indefinitely)

object

Arbitrary key/value metadata for this pricelist (optional; not searchable)

name
string

Name of the Pricelist (optional)

parent_code
string

Parent pricelist code (optional, if not provided, the Pricelist is considered a top-level pricelist)

Array of objects (PriceRule)

Optional list of price rules applied to articles matched by article_matches

start_date
string <date-time>

Start date of the Pricelist (optional, if not provided, the Pricelist is considered active immediately)

Responses

Request samples

Content type
application/json
[
  • {
    }
]

List all pricelist metadata keys

Returns a list of all unique metadata keys used across pricelists

Responses

List values for a pricelist metadata key

Returns paginated list of all values for a specific pricelist metadata key

path Parameters
key
required
string

Metadata key to retrieve values for

query Parameters
page
integer <int32>

Page number (0-based)

size
integer <int32>

Number of items per page

Responses

Query pricelists by selection

Returns paginated pricelists matching the provided PricelistSelection. Selection supports explicit pricelist codes and/or metadata key/value matches.

query Parameters
asOf
string <date-time>
page
integer <int32>
size
integer <int32>
Request Body schema: application/json
required
currencyCode
string

Filter by currency code (3-letter ISO code). Only pricelists with this currency will be included.

object

Metadata filters as key-value pairs. Pricelists matching any of the provided values for each key will be included.

pricelists
Array of strings

Explicit list of pricelist codes to query. Can be combined with metadata filters.

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "page": 0,
  • "size": 0,
  • "total": 0
}

Delete (soft) a pricelist

Marks a pricelist as deleted at the specified time (or now). Returns {deleted:true, when:...} if successful.

path Parameters
code
required
string
query Parameters
asOf
string <date-time>

Responses

Get one pricelist

Fetch a single pricelist by code

path Parameters
code
required
string

Responses

Prices

Query and manage prices.

Delete a price definition

Soft deletes a price definition for a SKU/pricelist combination.

Request Body schema: application/json
required
asOf
string <date-time>
pricelist
string
sku
string

Responses

Request samples

Content type
application/json
{ }

List prices

Administrative endpoint to list all currently active prices.

query Parameters
page
integer <int32>

Page number to retrieve (1-based).

size
integer <int32>

Number of items per page.

Responses

Upsert a price definition

Upserts a single price definition with its quantity breaks.

Request Body schema: application/json
required
required
object (PriceDefinition)

The base price definition.

pricelist
required
string

Pricelist code.

sku
required
string

SKU code.

Array of objects (QuantityBreak)

A list of quantity breaks for this price.

remove_future_changes
boolean

If true, removes all scheduled future prices for this SKU/pricelist combination after the given start date.

start_date
string <date-time>

Start date for the price (ISO-8601 format). If in the past, it will be set to the current time.

Responses

Request samples

Content type
application/json
{
  • "price": { },
  • "pricelist": "PL-RETAIL",
  • "sku": "SKU-123"
}

Batch delete price definitions

Soft deletes multiple price definitions in a single request.

Request Body schema: application/json
required
Array
asOf
string <date-time>
pricelist
string
sku
string

Responses

Request samples

Content type
application/json
[
  • { }
]

Batch upsert price definitions

Upserts a list of price definitions in a single request.

Request Body schema: application/json
required
Array
required
object (PriceDefinition)

The base price definition.

pricelist
required
string

Pricelist code.

sku
required
string

SKU code.

Array of objects (QuantityBreak)

A list of quantity breaks for this price.

remove_future_changes
boolean

If true, removes all scheduled future prices for this SKU/pricelist combination after the given start date.

start_date
string <date-time>

Start date for the price (ISO-8601 format). If in the past, it will be set to the current time.

Responses

Request samples

Content type
application/json
[
  • {
    }
]

Count all prices

Returns the total number of price records in the database.

Responses

Get pricelists for a SKU

Retrieves a list of all pricelists that contain a price for the given SKU.

path Parameters
sku
required
string
Example: SKU-123

SKU code.

query Parameters
asOf
string <date-time>

Optional timestamp to query prices as of a specific time (ISO-8601 format).

page
integer <int32>

Page number to retrieve (1-based).

size
integer <int32>

Number of items per page.

Responses

Query for best prices

Performs a best-price query for multiple SKUs across multiple pricelists.

Request Body schema: application/json
required
required
object (PricelistFilter)

Filter defining which pricelists to query

skus
required
Array of strings

List of SKU codes to query prices for

tax_area
required
string

Tax area code for VAT calculation (e.g., 'SE' for Sweden, 'DE' for Germany)

as_of
string <date-time>

Point-in-time to evaluate prices at (ISO-8601 format). Defaults to current time if not specified.

rounding_profile
string

Rounding profile code to apply to calculated prices

sort_order
string
Enum: "ASC" "DESC"

Sort order for results (ascending or descending by price)

Responses

Request samples

Content type
application/json
{
  • "pricelist_filter": { },
  • "skus": [
    ],
  • "tax_area": "SE"
}

Response samples

Content type
*/*
{
  "error": "skus, pricelists and tax areas cannot be empty"
}

Get SKUs for a pricelist

Retrieves a list of all SKUs that have a price on the given pricelist.

path Parameters
code
required
string
Example: PL-RETAIL

Pricelist code.

query Parameters
asOf
string <date-time>

Optional timestamp to query prices as of a specific time (ISO-8601 format).

page
integer <int32>

Page number to retrieve (1-based).

size
integer <int32>

Number of items per page.

Responses

Get a price definition

Retrieves the raw price definition for a SKU on a pricelist, without tax application.

path Parameters
sku
required
string
Example: SKU-123

SKU code.

pricelist
required
string
Example: PL-RETAIL

Pricelist code.

query Parameters
asOf
string <date-time>

Optional timestamp to query prices as of a specific time (ISO-8601 format).

Responses

Get a single price

Retrieves the price for a single SKU on a specific pricelist and tax area.

path Parameters
sku
required
string
Example: SKU-123

SKU code.

pricelist
required
string
Example: PL-RETAIL

Pricelist code.

taxArea
required
string
Example: SE

Tax area code.

query Parameters
rounding_profile
required
string
Example: rounding_profile=global-eur

Rounding profile code.

asOf
string <date-time>

Optional timestamp to query prices as of a specific time (ISO-8601 format).

Responses

Changes

Expose recent price bundle changes for a SKU on a pricelist

List changes

List recent changes for a SKU on a pricelist over the last N days.

path Parameters
pricelist
required
string
Example: PL-RETAIL

Pricelist code

sku
required
string
Example: SKU-123

SKU code

query Parameters
days
integer <int32>
Default: 30
Example: days=30

Lookback window in days

limit
integer <int32>
Default: 1000
Example: limit=1000

Max records to return

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Tax Areas

CRUD operations for Tax Areas

List tax areas

Returns a list of all tax areas as of a specific timestamp

query Parameters
asOf
string <date-time>
Example: asOf=2025-01-15T10:00:00Z

Timestamp to evaluate tax areas at (ISO-8601 format). Defaults to current time.

Responses

Upsert tax area

Create or update a tax area

Request Body schema: application/json
required
code
string
deleted_at
string <date-time>
is_active
boolean
name
string
updated_at
string <date-time>
valid_from
string <date-time>
valid_to
string <date-time>

Responses

Request samples

Content type
application/json
{ }

Delete tax area

Soft deletes a tax area by marking it as deleted at the specified time (or now)

path Parameters
code
required
string
Example: SE

Tax area code to delete

query Parameters
when
string <date-time>
Example: when=2025-01-15T10:00:00Z

Deletion timestamp (ISO-8601 format). Defaults to current time.

Responses

Get one tax area

Retrieves a single tax area by its code as of a specific timestamp

path Parameters
code
required
string
Example: SE

Tax area code

query Parameters
asOf
string <date-time>
Example: asOf=2025-01-15T10:00:00Z

Timestamp to evaluate tax area at (ISO-8601 format). Defaults to current time.

Responses

Set tax area active status

Enables or disables a tax area. Inactive tax areas are not used for VAT calculations.

path Parameters
code
required
string
Example: SE

Tax area code

query Parameters
value
required
boolean
Example: value=true

Active status: true to enable, false to disable

Responses

VAT Classes

CRUD operations for VAT Classes

List VAT classes

Returns a list of all VAT classes as of a specific timestamp

query Parameters
asOf
string <date-time>
Example: asOf=2025-01-15T10:00:00Z

Timestamp to evaluate VAT classes at (ISO-8601 format). Defaults to current time.

Responses

Upsert VAT class

Create or update a VAT class

Request Body schema: application/json
required
code
string
deleted_at
string <date-time>
description
string
is_active
boolean
name
string
updated_at
string <date-time>

Responses

Request samples

Content type
application/json
{ }

Delete VAT class

Soft deletes a VAT class by marking it as deleted at the specified time (or now)

path Parameters
code
required
string
Example: STANDARD

VAT class code to delete

query Parameters
when
string <date-time>
Example: when=2025-01-15T10:00:00Z

Deletion timestamp (ISO-8601 format). Defaults to current time.

Responses

Get one VAT class

Retrieves a single VAT class by its code as of a specific timestamp

path Parameters
code
required
string
Example: STANDARD

VAT class code

query Parameters
asOf
string <date-time>
Example: asOf=2025-01-15T10:00:00Z

Timestamp to evaluate VAT class at (ISO-8601 format). Defaults to current time.

Responses

Set VAT class active status

Enables or disables a VAT class. Inactive VAT classes are not available for assignment.

path Parameters
code
required
string
Example: STANDARD

VAT class code

query Parameters
value
required
boolean
Example: value=true

Active status: true to enable, false to disable

Responses

Article Tax Class

Manage mapping between Articles (SKU) and VAT classes by tax area

List mappings by SKU

List Article-TaxClass mappings for a SKU as of time

query Parameters
sku
required
string

SKU code

asOf
string <date-time>

Timestamp to evaluate at (ISO-8601)

Responses

Upsert Article-TaxClass mapping

Create or update VAT class assignment for a SKU in a tax area

Request Body schema: application/json
required

Upsert payload

sku_code
string
start_date
string <date-time>
tax_area_code
string
updated_at
string <date-time>
updated_by
string
vat_class_code
string

Responses

Request samples

Content type
application/json
{ }

List mappings by tax area

List Article-TaxClass mappings for a tax area as of time

query Parameters
tax_area
required
string

Tax area code

asOf
string <date-time>

Timestamp to evaluate at (ISO-8601)

Responses

Delete mapping

Soft delete mapping for SKU/tax area at specified time (or now)

path Parameters
sku
required
string

SKU code

taxArea
required
string

Tax area code

query Parameters
when
string <date-time>

Deletion timestamp (ISO-8601)

Responses

Get one mapping

Fetch VAT class mapping for a SKU in a tax area as of time

path Parameters
sku
required
string
Example: SKU-123

SKU code

taxArea
required
string
Example: PL-RETAIL

Tax area code

query Parameters
asOf
string <date-time>
Example: asOf=2025-01-01T00:00:00Z

Timestamp to evaluate mapping at (ISO-8601)

Responses

VAT Rates

CRUD operations for VAT Rates

List VAT rates

Returns a list of all VAT rates for a specific tax area as of a timestamp

query Parameters
tax_area
required
string
Example: tax_area=SE

Tax area code to retrieve rates for

asOf
string <date-time>
Example: asOf=2025-01-15T10:00:00Z

Timestamp to evaluate rates at (ISO-8601 format). Defaults to current time.

Responses

Upsert VAT rate

Create or update a VAT rate for a VAT class in a tax area

Request Body schema: application/json
required
rate
number
start_date
string <date-time>
tax_area_code
string
updated_at
string <date-time>
updated_by
string
vat_class_code
string

Responses

Request samples

Content type
application/json
{ }

Delete VAT rate

Soft deletes a VAT rate by marking it as deleted at the specified time (or now)

path Parameters
taxArea
required
string
Example: SE

Tax area code

vatClass
required
string
Example: STANDARD

VAT class code

query Parameters
when
string <date-time>
Example: when=2025-01-15T10:00:00Z

Deletion timestamp (ISO-8601 format). Defaults to current time.

Responses

Get one VAT rate

Retrieves a single VAT rate for a specific VAT class in a tax area as of a timestamp

path Parameters
taxArea
required
string
Example: SE

Tax area code

vatClass
required
string
Example: STANDARD

VAT class code

query Parameters
asOf
string <date-time>
Example: asOf=2025-01-15T10:00:00Z

Timestamp to evaluate rate at (ISO-8601 format). Defaults to current time.

Responses

FX

View and update foreign exchange rates

Upsert daily EUR exchange rates

Create or update EUR to other currency exchange rates for a specific UTC date. Accepts a map of currency codes to exchange rates.

Request Body schema: application/json
required

Daily rates payload with UTC date and currency rate map

date
required
string <date>

UTC date for the exchange rates (ISO-8601 format: yyyy-MM-dd)

required
object

Map of 3-letter currency codes to exchange rates from EUR. Example: {"USD": 1.08, "GBP": 0.85}

Responses

Request samples

Content type
application/json
{
  • "date": "2025-01-15",
  • "rates": {
    }
}

Fetch latest rates from ECB

Fetches the latest daily exchange rates from European Central Bank (ECB) feed and persists them to the database

Responses

Get FX rate

Retrieves the foreign exchange rate from base currency to quote currency as of a specific timestamp. Uses EUR as cross-currency when direct rate is not available.

query Parameters
base
required
string
Example: base=USD

Base currency code (3-letter ISO code)

quote
required
string
Example: quote=EUR

Quote currency code (3-letter ISO code)

asOf
string <date-time>
Example: asOf=2025-01-01T00:00:00Z

Timestamp to retrieve rate at (ISO-8601 format). Defaults to current time.

Responses

Settings

Manage simple application settings as key/value pairs with optional timestamps.

List settings

List all settings as of an optional timestamp. If asOf is omitted, returns the latest values.

query Parameters
asOf
string <date-time>
Example: asOf=2025-01-01T00:00:00Z

Point-in-time to read settings at (ISO-8601). If omitted, reads latest.

Responses

Delete a setting

Delete (or mark deleted) a setting. If 'when' is provided, deletion is recorded at that time; otherwise now.

path Parameters
key
required
string
Example: feature_x_enabled

Setting key

query Parameters
when
string <date-time>
Example: when=2025-01-01T00:00:00Z

Deletion timestamp (ISO-8601)

Responses

Get a setting

Fetch a single setting by key at an optional point-in-time.

path Parameters
key
required
string
Example: feature_x_enabled

Setting key

query Parameters
asOf
string <date-time>
Example: asOf=2025-01-01T00:00:00Z

Point-in-time to read at (ISO-8601)

Responses

Upsert a setting

Create or update a setting value. If updated_at is provided, the change is recorded at that time; otherwise now.

path Parameters
key
required
string
Example: feature_x_enabled

Setting key

Request Body schema: application/json
required

Upsert payload with value and optional updated_at ISO-8601 timestamp.

string

Responses

Request samples

Content type
application/json

String value

{
  • "value": "true",
  • "updated_at": "2025-01-01T00:00:00Z"
}

Rounding Profiles

Manage predefined rounding profiles for price calculations

List rounding profiles

Returns a list of all available rounding profiles

Responses

Create rounding profile

Creates a new rounding profile or updates an existing one with the same code

Request Body schema: application/json
required
code
string
currency_code
string
default_for_currency
boolean
default_global
boolean
Array of objects (RoundingTierRule)

Responses

Request samples

Content type
application/json
{ }

Evaluate rounding profile

Applies a rounding profile to a list of values and returns the rounded results

Request Body schema: application/json
required
required
object (RoundingProfile)

Rounding profile to apply

values
required
Array of numbers

List of numeric values to round

Responses

Request samples

Content type
application/json
{
  • "profile": { },
  • "values": [
    ]
}

Delete rounding profile

Deletes a rounding profile by its code

path Parameters
code
required
string
Example: global-eur

Rounding profile code to delete

Responses

Get rounding profile

Retrieves a single rounding profile by its code

path Parameters
code
required
string
Example: global-eur

Rounding profile code

Responses

Update rounding profile

Updates an existing rounding profile by code

path Parameters
code
required
string
Example: global-eur

Rounding profile code

Request Body schema: application/json
required
code
string
currency_code
string
default_for_currency
boolean
default_global
boolean
Array of objects (RoundingTierRule)

Responses

Request samples

Content type
application/json
{ }

Tax Baseline

Operations to seed or manage tax baseline data

Trigger tax baseline seeding

Runs the TaxBaselineSeeder. Honours 'quantaprice.seed.tax' property.

Responses