Zum Inhalt springen

Get one published widget configuration version

GET
/v1/admin/channels/{channelId}/widget-config/versions/{version}
curl --request GET \
--url http://localhost:8080/v1/admin/channels/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/widget-config/versions/1 \
--header 'Authorization: Bearer <token>' \
--header 'X-Antares-Actor: <X-Antares-Actor>'

The exact payload that was published, for the history screen’s diff view. Role: viewer.

channelId
required
string format: uuid

Channel UUID — never the human-readable channelKey. Validated against the actor’s organization first.

version
required
integer
>= 1

Published widget configuration version number, counting from 1.

The stored payload of that version.

Media typeapplication/json
object
version
required
integer
>= 1
config
required

The complete published designer surface. Everything the widget renders comes from here; the widget itself ships no merchant-specific defaults.

object
layout
required

Which shell the widget mounts. overlay opens a full-screen dialog over the shop. dropdown renders under the merchant’s own input and leaves the page visible. command is a centred command palette opened by a hotkey. page replaces the shop’s own search results page in place and paginates with real URLs. A widget build that does not know the configured layout mounts nothing and leaves the shop’s native search working.

string
Allowed values: overlay dropdown command page
layoutOptions

Per-layout settings. Only the block matching the configured layout is read; the others are kept so switching layouts in the designer does not lose their settings.

object
overlay
object
openOn

What opens the overlay. focus opens as soon as the merchant’s input is focused, which is the fastest path for a visitor who is already searching. tap waits for a deliberate pointer or keyboard activation. hotkey opens only on the configured key combination.

string
Allowed values: focus tap hotkey
hotkey

Key combination that opens the overlay, in the form mod+k where mod is Command on macOS and Control elsewhere. Read only when openOn is hotkey.

string
<= 32 characters
maxWidthPx

Maximum width of the dialog on wide viewports. Default 1120.

integer
>= 480 <= 1600
showFilters

Render the facet rail inside the dialog. Default true.

boolean
closeOnBackdrop

Clicking the scrim closes the dialog. Default true.

boolean
dropdown
object
maxResults

Products listed in the dropdown before “show all results”. Default 8.

integer
>= 3 <= 20
widthMode

input matches the merchant’s search field exactly. container widens to the field’s nearest positioned ancestor, which is what a narrow header field needs to show product images at all.

string
Allowed values: input container
showFooterLink

Render the “show all results” footer row. Default true.

boolean
command
object
hotkey

Key combination that opens the palette. Default mod+k.

string
<= 32 characters
maxResults

Rows in the palette before it scrolls. Default 10.

integer
>= 3 <= 30
showRecent

Show recent searches when the palette opens empty. Default true.

boolean
showHint

Render the “press ⌘K” hint next to the merchant’s input. Default true.

boolean
page
object
mountSelector

CSS selector of the element on the shop’s search results page that the widget replaces. The widget mounts nothing if it does not match, leaving the shop’s own results in place.

string
<= 200 characters
resultsPerPage

Products per page. Default 24.

integer
>= 6 <= 100
sidebarFilters

Render the facet rail as a sidebar rather than a collapsible bar above the grid. Default true.

boolean
paginationMode

pages renders numbered links with real ?p= URLs, which is the only mode a crawler and the browser’s back button both handle. load_more appends on click. infinite appends on scroll.

string
Allowed values: pages load_more infinite
widgetVersion
required

The widget bundle version this configuration was authored against. Part of the /v1/widget/config ETag, so publishing a configuration invalidates the cache.

string
configVersion

The published version number this payload was served from. Absent in a draft. Reported back on events so an A/B result can be attributed to a concrete publish.

integer
>= 1
publishedAt

When this version was published. Absent in a draft.

string format: date-time
locale
required

Formatting locale for prices, numbers and dates. It does not select the interface strings — those always come from translations, so a merchant can ship any wording they like in any of these locales.

string
Allowed values: de-DE de-AT de-CH en-GB en-US fr-FR it-IT es-ES nl-NL pl-PL cs-CZ da-DK sv-SE nb-NO fi-FI pt-PT
themePreset

Baseline the theme tokens are merged onto. system follows the visitor’s prefers-color-scheme. contrast is the WCAG AAA baseline. custom starts from the light baseline and expects themeTokens to define the palette.

string
Allowed values: light dark system contrast custom
themeTokens

The designer’s typed token vocabulary. Every entry compiles into the CSS custom property named in its description, and unset entries fall back to the preset. Colour values accept any CSS colour notation; length values accept any CSS length.

object
colorBackground

--antares-color-background — the widget surface behind everything.

string
<= 64 characters
colorSurface

--antares-color-surface — raised areas such as the facet rail.

string
<= 64 characters
colorText

--antares-color-text — primary body text.

string
<= 64 characters
colorMuted

--antares-color-muted — secondary text, counts and hints.

string
<= 64 characters
colorPrimary

--antares-color-primary — the single accent: buttons, focus rings, active chips.

string
<= 64 characters
colorPrimaryContrast

--antares-color-primary-contrast — text drawn on top of the accent.

string
<= 64 characters
colorBorder

--antares-color-border — hairlines and input outlines.

string
<= 64 characters
colorBackdrop

--antares-color-backdrop — the scrim behind the overlay and command layouts.

string
<= 64 characters
colorSale

--antares-color-sale — the sale badge and the strike-through price.

string
<= 64 characters
colorSuccess

--antares-color-success — the in-stock indicator.

string
<= 64 characters
colorDanger

--antares-color-danger — the out-of-stock indicator and error text.

string
<= 64 characters
font

--antares-font — the body font stack.

string
<= 200 characters
fontHeading

--antares-font-heading — headings; falls back to font when unset.

string
<= 200 characters
fontSize

--antares-font-size — the base size the type scale is derived from.

string
<= 32 characters
radius

--antares-radius — the corner radius of cards and the shell.

string
<= 32 characters
spacing

--antares-spacing — the base spacing unit of the layout grid.

string
<= 32 characters
shadow

--antares-shadow — the elevation shadow of the shell.

string
<= 200 characters
zIndex

--antares-z-index — stacking order of the widget’s shell. Raise it when a shop’s sticky header paints over the overlay.

string
<= 16 characters
tokens
required

The compiled CSS custom properties the widget sets on its shadow host, for example {"--antares-color-primary": "#3157d5"}. Publishing materialises themePreset and themeTokens into this map; the widget applies it verbatim and needs no knowledge of the designer’s vocabulary. Keys that do not match --antares-[a-z0-9-]+ are ignored by the widget.

object
key
additional properties
string
customCss

Merchant CSS injected into the widget’s shadow root after the layout’s own sheet. Parsed by a CSP-safe parser at publish time: @import, url() to a foreign origin, expression() and anything that can issue a network request are rejected with widget_config_invalid. Available on Pro and above; sending it on a lower plan is 402 plan_feature_unavailable.

string
<= 20000 characters
translations
required

Every string the widget can paint. All keys are required: a missing key is a blank button in a shopper’s face, so publishing an incomplete set is 422 widget_config_invalid rather than a runtime fallback to English.

object
searchLabel
required

Accessible name of the search input.

string
searchPlaceholder
required

Placeholder inside the search input.

string
noResults
required

Shown when a query returned nothing and no rescue was possible.

string
loading
required

Status text while a request is in flight, announced to screen readers.

string
unavailable
required

Shown when the API failed and the shop’s native search takes over.

string
close
required

Accessible name of the close control.

string
results
required

Heading above the full result list.

string
instantResults
required

Heading above the instant suggestions.

string
allResults
required

Label of the “show all results” action.

string
filters
required

Heading of the facet rail.

string
apply
required

Label of the apply-filters action.

string
clearFilters
required

Label of the reset-filters action.

string
priceFrom
required

Label of the lower bound of the price range facet.

string
priceTo
required

Label of the upper bound of the price range facet.

string
inStock
required

Label for stock status in_stock.

string
lowStock
required

Label for stock status low.

string
outOfStock
required

Label for stock status out.

string
sale
required

Label of the sale badge.

string
new
required

Label of the new badge.

string
topseller
required

Label of the topseller badge.

string
tierPrices
required

Label of the tier_prices badge and the heading of the quantity ladder.

string
variants
required

Variant count line. {count} is substituted.

string
popular
required

Heading above the popular searches.

string
quickAccess
required

Heading above the curated shortcuts.

string
recent
required

Heading above the visitor’s recent searches.

string
suggestions
required

Heading above the query suggestions.

string
resultCount
required

Result count line. {count} is substituted.

string
addToCart
required

Label of the add-to-cart action.

string
loadMore
required

Label of the load-more action.

string
features
required

Feature switches. Every one defaults to the value documented below, so an older configuration keeps working when a new switch is added.

object
instantSearch

Query /v1/instant while the visitor types. Off means results appear only on submit. Default true.

boolean
addToCart

Render an add-to-cart control on each result. Requires the storefront to expose a cart endpoint the loader can call. Default false.

boolean
filters

Render the facet rail at all. Default true.

boolean
sorting

Offer the sort presets from the ranking configuration. Default true.

boolean
didYouMean

Show spelling corrections above the results. Default true.

boolean
semanticRescue

Show semantically related products when the lexical pass found fewer than three matches, labelled as suggestions. Requires hybrid search on the plan. Default true.

boolean
recentSearches

Keep the visitor’s last queries in localStorage and offer them on an empty input. Default true.

boolean
popularSearches

Offer the channel’s most searched queries on an empty input. Default true.

boolean
quickAccess

Offer the merchant’s curated shortcuts on an empty input. Default true.

boolean
categorySuggestions

Offer matching categories alongside product suggestions. Default true.

boolean
brandSuggestions

Offer matching manufacturers alongside product suggestions. Default true.

boolean
variantBadges

Show the variant count on results that have variants. Default true.

boolean
tierPriceBadge

Show the tier_prices badge and the quantity ladder on results that carry one. Default true.

boolean
analytics

Report interaction events to /v1/events. Turning it off blinds every panel metric for this channel and is meant for merchants whose consent banner has not been answered yet. Default true.

boolean
facets
required

The facets the widget requests and renders, in display order. An empty array hides the facet rail entirely.

Array<object>
<= 30 items

One facet in the rail, in the order the array lists it.

object
field
required

The facet field. properties.* addresses one of the shop’s own property axes by its normalised name.

string
/^(manufacturer|categories|price|inStock|properties\.[a-z0-9_-]+)$/
label

Merchant override for the displayed name. Without it the API’s translated label is used.

string
<= 80 characters
enabled

Render this facet. Default true. A disabled facet is still not requested.

boolean
collapsed

Render collapsed on first paint. Default false.

boolean
display

How the facet is painted. list is checkboxes, chips is inline toggles, slider is a two-handle numeric range (the only valid choice for price), swatch renders the value as a colour or image swatch, rating renders stars.

string
Allowed values: list chips slider swatch rating
maxValues

How many values to show before “show more”. Ignored for slider. Default 8.

integer
>= 1 <= 100
abVariants

Running experiments. A session is bucketed once, by a stable hash of its sessionId, and the bucket is reported back on every event as variant. The unlisted remainder of traffic gets the base configuration. An empty or absent array means no experiment is running.

Array<object>
<= 4 items
object
id
required

Stable identifier reported back on every event as variant. Reusing an id for a different experiment mixes two experiments’ numbers and must not be done.

string
<= 64 characters /^[a-z0-9][a-z0-9_-]{0,63}$/
label

Merchant-facing name shown in the panel. Never reaches the widget.

string
<= 80 characters
weightPct
required

Share of sessions bucketed into this variant. The sum across all variants must not exceed 100; the remainder receives the base configuration.

integer
<= 100
overrides

What this variant changes about the base configuration. Anything absent is inherited. Deliberately a subset: an experiment that changes the translations or the feature set is a different configuration, not a variant of one.

object
layout

Which shell the widget mounts. overlay opens a full-screen dialog over the shop. dropdown renders under the merchant’s own input and leaves the page visible. command is a centred command palette opened by a hotkey. page replaces the shop’s own search results page in place and paginates with real URLs. A widget build that does not know the configured layout mounts nothing and leaves the shop’s native search working.

string
Allowed values: overlay dropdown command page
layoutOptions

Per-layout settings. Only the block matching the configured layout is read; the others are kept so switching layouts in the designer does not lose their settings.

object
overlay
object
openOn

What opens the overlay. focus opens as soon as the merchant’s input is focused, which is the fastest path for a visitor who is already searching. tap waits for a deliberate pointer or keyboard activation. hotkey opens only on the configured key combination.

string
Allowed values: focus tap hotkey
hotkey

Key combination that opens the overlay, in the form mod+k where mod is Command on macOS and Control elsewhere. Read only when openOn is hotkey.

string
<= 32 characters
maxWidthPx

Maximum width of the dialog on wide viewports. Default 1120.

integer
>= 480 <= 1600
showFilters

Render the facet rail inside the dialog. Default true.

boolean
closeOnBackdrop

Clicking the scrim closes the dialog. Default true.

boolean
dropdown
object
maxResults

Products listed in the dropdown before “show all results”. Default 8.

integer
>= 3 <= 20
widthMode

input matches the merchant’s search field exactly. container widens to the field’s nearest positioned ancestor, which is what a narrow header field needs to show product images at all.

string
Allowed values: input container
showFooterLink

Render the “show all results” footer row. Default true.

boolean
command
object
hotkey

Key combination that opens the palette. Default mod+k.

string
<= 32 characters
maxResults

Rows in the palette before it scrolls. Default 10.

integer
>= 3 <= 30
showRecent

Show recent searches when the palette opens empty. Default true.

boolean
showHint

Render the “press ⌘K” hint next to the merchant’s input. Default true.

boolean
page
object
mountSelector

CSS selector of the element on the shop’s search results page that the widget replaces. The widget mounts nothing if it does not match, leaving the shop’s own results in place.

string
<= 200 characters
resultsPerPage

Products per page. Default 24.

integer
>= 6 <= 100
sidebarFilters

Render the facet rail as a sidebar rather than a collapsible bar above the grid. Default true.

boolean
paginationMode

pages renders numbered links with real ?p= URLs, which is the only mode a crawler and the browser’s back button both handle. load_more appends on click. infinite appends on scroll.

string
Allowed values: pages load_more infinite
themePreset

Baseline the theme tokens are merged onto. system follows the visitor’s prefers-color-scheme. contrast is the WCAG AAA baseline. custom starts from the light baseline and expects themeTokens to define the palette.

string
Allowed values: light dark system contrast custom
themeTokens

The designer’s typed token vocabulary. Every entry compiles into the CSS custom property named in its description, and unset entries fall back to the preset. Colour values accept any CSS colour notation; length values accept any CSS length.

object
colorBackground

--antares-color-background — the widget surface behind everything.

string
<= 64 characters
colorSurface

--antares-color-surface — raised areas such as the facet rail.

string
<= 64 characters
colorText

--antares-color-text — primary body text.

string
<= 64 characters
colorMuted

--antares-color-muted — secondary text, counts and hints.

string
<= 64 characters
colorPrimary

--antares-color-primary — the single accent: buttons, focus rings, active chips.

string
<= 64 characters
colorPrimaryContrast

--antares-color-primary-contrast — text drawn on top of the accent.

string
<= 64 characters
colorBorder

--antares-color-border — hairlines and input outlines.

string
<= 64 characters
colorBackdrop

--antares-color-backdrop — the scrim behind the overlay and command layouts.

string
<= 64 characters
colorSale

--antares-color-sale — the sale badge and the strike-through price.

string
<= 64 characters
colorSuccess

--antares-color-success — the in-stock indicator.

string
<= 64 characters
colorDanger

--antares-color-danger — the out-of-stock indicator and error text.

string
<= 64 characters
font

--antares-font — the body font stack.

string
<= 200 characters
fontHeading

--antares-font-heading — headings; falls back to font when unset.

string
<= 200 characters
fontSize

--antares-font-size — the base size the type scale is derived from.

string
<= 32 characters
radius

--antares-radius — the corner radius of cards and the shell.

string
<= 32 characters
spacing

--antares-spacing — the base spacing unit of the layout grid.

string
<= 32 characters
shadow

--antares-shadow — the elevation shadow of the shell.

string
<= 200 characters
zIndex

--antares-z-index — stacking order of the widget’s shell. Raise it when a shop’s sticky header paints over the overlay.

string
<= 16 characters
facets
Array<object>
<= 30 items

One facet in the rail, in the order the array lists it.

object
field
required

The facet field. properties.* addresses one of the shop’s own property axes by its normalised name.

string
/^(manufacturer|categories|price|inStock|properties\.[a-z0-9_-]+)$/
label

Merchant override for the displayed name. Without it the API’s translated label is used.

string
<= 80 characters
enabled

Render this facet. Default true. A disabled facet is still not requested.

boolean
collapsed

Render collapsed on first paint. Default false.

boolean
display

How the facet is painted. list is checkboxes, chips is inline toggles, slider is a two-handle numeric range (the only valid choice for price), swatch renders the value as a colour or image swatch, rating renders stars.

string
Allowed values: list chips slider swatch rating
maxValues

How many values to show before “show more”. Ignored for slider. Default 8.

integer
>= 1 <= 100
Example
{
"config": {
"layout": "overlay",
"layoutOptions": {
"overlay": {
"openOn": "focus"
},
"dropdown": {
"widthMode": "input"
},
"page": {
"paginationMode": "pages"
}
},
"locale": "de-DE",
"themePreset": "light",
"facets": [
{
"display": "list"
}
],
"abVariants": [
{
"overrides": {
"layout": "overlay",
"layoutOptions": {
"overlay": {
"openOn": "focus"
},
"dropdown": {
"widthMode": "input"
},
"page": {
"paginationMode": "pages"
}
},
"themePreset": "light",
"facets": [
{
"display": "list"
}
]
}
}
]
}
}

contract_validation_failed — the OpenAPI request validator rejected the request before the handler ran — or invalid_request when the body is unreadable or is not valid JSON for the declared operation.

Media typeapplication/problem+json

RFC 9457 problem details. type is always https://api.antares.commergy.de/problems/{code} and is built in exactly one place. type, code and title are stable and never localised; only detail is localised, and only where the registry marks the audience as merchant.

object
type
required

Absolute problem type URI. Stable identifier, never localised.

string format: uri-reference
title
required

Stable English summary of the problem type.

string
status
required

The HTTP status code, repeated in the body.

integer
>= 400 <= 599
detail

Human-readable explanation of this occurrence. The only localised field; may be German or English depending on Accept-Language.

string
instance

The request path this occurrence relates to.

string format: uri-reference
code

The registry code, for example price_context_token_expired. This is what a client branches on; never branch on title or detail.

string
errors

Present only for per-item validation failures, above all ingest batches.

Array<object>
object
field
required

Dotted path of the offending field inside the request body, for example prices.CHF.gross.

string
message
required

What is wrong with it, in English.

string
productIndex

0-based index into the request’s products array. Present only for ingest batches, and the only way to map an error back to a product without echoing it.

integer
key
additional properties
any
Examplegenerated
{
"type": "example",
"title": "example",
"status": 1,
"detail": "example",
"instance": "example",
"code": "example",
"errors": [
{
"field": "example",
"message": "example",
"productIndex": 1
}
]
}

unauthorized — the credential is missing, malformed, unknown or revoked. For /v1/admin this also covers an actor JWS that fails signature, exp or kid verification, and a kid that no key in the panel’s JWKS matches.

Media typeapplication/problem+json

RFC 9457 problem details. type is always https://api.antares.commergy.de/problems/{code} and is built in exactly one place. type, code and title are stable and never localised; only detail is localised, and only where the registry marks the audience as merchant.

object
type
required

Absolute problem type URI. Stable identifier, never localised.

string format: uri-reference
title
required

Stable English summary of the problem type.

string
status
required

The HTTP status code, repeated in the body.

integer
>= 400 <= 599
detail

Human-readable explanation of this occurrence. The only localised field; may be German or English depending on Accept-Language.

string
instance

The request path this occurrence relates to.

string format: uri-reference
code

The registry code, for example price_context_token_expired. This is what a client branches on; never branch on title or detail.

string
errors

Present only for per-item validation failures, above all ingest batches.

Array<object>
object
field
required

Dotted path of the offending field inside the request body, for example prices.CHF.gross.

string
message
required

What is wrong with it, in English.

string
productIndex

0-based index into the request’s products array. Present only for ingest batches, and the only way to map an error back to a product without echoing it.

integer
key
additional properties
any
Examplegenerated
{
"type": "example",
"title": "example",
"status": 1,
"detail": "example",
"instance": "example",
"code": "example",
"errors": [
{
"field": "example",
"message": "example",
"productIndex": 1
}
]
}

forbidden — authenticated, but the actor’s role does not carry the permission this route needs, or the operation is one of the three that refuse an impersonated actor (billing checkout, portal link, key rotation).

Media typeapplication/problem+json

RFC 9457 problem details. type is always https://api.antares.commergy.de/problems/{code} and is built in exactly one place. type, code and title are stable and never localised; only detail is localised, and only where the registry marks the audience as merchant.

object
type
required

Absolute problem type URI. Stable identifier, never localised.

string format: uri-reference
title
required

Stable English summary of the problem type.

string
status
required

The HTTP status code, repeated in the body.

integer
>= 400 <= 599
detail

Human-readable explanation of this occurrence. The only localised field; may be German or English depending on Accept-Language.

string
instance

The request path this occurrence relates to.

string format: uri-reference
code

The registry code, for example price_context_token_expired. This is what a client branches on; never branch on title or detail.

string
errors

Present only for per-item validation failures, above all ingest batches.

Array<object>
object
field
required

Dotted path of the offending field inside the request body, for example prices.CHF.gross.

string
message
required

What is wrong with it, in English.

string
productIndex

0-based index into the request’s products array. Present only for ingest batches, and the only way to map an error back to a product without echoing it.

integer
key
additional properties
any
Examplegenerated
{
"type": "example",
"title": "example",
"status": 1,
"detail": "example",
"instance": "example",
"code": "example",
"errors": [
{
"field": "example",
"message": "example",
"productIndex": 1
}
]
}

widget_config_version_not_found — no such published version for this channel.

Media typeapplication/problem+json

RFC 9457 problem details. type is always https://api.antares.commergy.de/problems/{code} and is built in exactly one place. type, code and title are stable and never localised; only detail is localised, and only where the registry marks the audience as merchant.

object
type
required

Absolute problem type URI. Stable identifier, never localised.

string format: uri-reference
title
required

Stable English summary of the problem type.

string
status
required

The HTTP status code, repeated in the body.

integer
>= 400 <= 599
detail

Human-readable explanation of this occurrence. The only localised field; may be German or English depending on Accept-Language.

string
instance

The request path this occurrence relates to.

string format: uri-reference
code

The registry code, for example price_context_token_expired. This is what a client branches on; never branch on title or detail.

string
errors

Present only for per-item validation failures, above all ingest batches.

Array<object>
object
field
required

Dotted path of the offending field inside the request body, for example prices.CHF.gross.

string
message
required

What is wrong with it, in English.

string
productIndex

0-based index into the request’s products array. Present only for ingest batches, and the only way to map an error back to a product without echoing it.

integer
key
additional properties
any
Examplegenerated
{
"type": "example",
"title": "example",
"status": 1,
"detail": "example",
"instance": "example",
"code": "example",
"errors": [
{
"field": "example",
"message": "example",
"productIndex": 1
}
]
}

rate_limit_exceeded — the per-key or per-IP token bucket is exhausted.

Media typeapplication/problem+json

RFC 9457 problem details. type is always https://api.antares.commergy.de/problems/{code} and is built in exactly one place. type, code and title are stable and never localised; only detail is localised, and only where the registry marks the audience as merchant.

object
type
required

Absolute problem type URI. Stable identifier, never localised.

string format: uri-reference
title
required

Stable English summary of the problem type.

string
status
required

The HTTP status code, repeated in the body.

integer
>= 400 <= 599
detail

Human-readable explanation of this occurrence. The only localised field; may be German or English depending on Accept-Language.

string
instance

The request path this occurrence relates to.

string format: uri-reference
code

The registry code, for example price_context_token_expired. This is what a client branches on; never branch on title or detail.

string
errors

Present only for per-item validation failures, above all ingest batches.

Array<object>
object
field
required

Dotted path of the offending field inside the request body, for example prices.CHF.gross.

string
message
required

What is wrong with it, in English.

string
productIndex

0-based index into the request’s products array. Present only for ingest batches, and the only way to map an error back to a product without echoing it.

integer
key
additional properties
any
Examplegenerated
{
"type": "example",
"title": "example",
"status": 1,
"detail": "example",
"instance": "example",
"code": "example",
"errors": [
{
"field": "example",
"message": "example",
"productIndex": 1
}
]
}
Retry-After
integer
>= 1

Seconds until the bucket refills enough for one request.

invalid_widget_config — the stored configuration for this channel cannot be decoded. Data corruption on our side, not a caller error. Or internal_error.

Media typeapplication/problem+json

RFC 9457 problem details. type is always https://api.antares.commergy.de/problems/{code} and is built in exactly one place. type, code and title are stable and never localised; only detail is localised, and only where the registry marks the audience as merchant.

object
type
required

Absolute problem type URI. Stable identifier, never localised.

string format: uri-reference
title
required

Stable English summary of the problem type.

string
status
required

The HTTP status code, repeated in the body.

integer
>= 400 <= 599
detail

Human-readable explanation of this occurrence. The only localised field; may be German or English depending on Accept-Language.

string
instance

The request path this occurrence relates to.

string format: uri-reference
code

The registry code, for example price_context_token_expired. This is what a client branches on; never branch on title or detail.

string
errors

Present only for per-item validation failures, above all ingest batches.

Array<object>
object
field
required

Dotted path of the offending field inside the request body, for example prices.CHF.gross.

string
message
required

What is wrong with it, in English.

string
productIndex

0-based index into the request’s products array. Present only for ingest batches, and the only way to map an error back to a product without echoing it.

integer
key
additional properties
any
Examplegenerated
{
"type": "example",
"title": "example",
"status": 1,
"detail": "example",
"instance": "example",
"code": "example",
"errors": [
{
"field": "example",
"message": "example",
"productIndex": 1
}
]
}