Zum Inhalt springen

Get connector runtime configuration

GET
/v1/connector/config
curl --request GET \
--url http://localhost:8080/v1/connector/config \
--header 'Authorization: Bearer <token>' \
--header 'X-Antares-Environment-Fingerprint: example'

Everything the deliberately thin connector needs to do its job without a second source of truth: which channels and languages exist, which currencies each channel assigns, and which price-context signing generation to mint tokens with. Polled at most every five minutes, which is also the upper bound on how long a key rotation takes to reach the storefront.

X-Antares-Environment-Fingerprint
required
string
>= 16 characters <= 128 characters

SHA-256 over the shop’s APP_URL plus its platform version. APP_URL lives in .env and is not carried by a database dump, which is exactly why it is the discriminator between a production install and a clone of it.

Configuration required by the deliberately thin connector.

Media typeapplication/json
object
shopId
required

The Antares shop UUID in canonical lower-case dashed form. The connector treats it as an opaque string and feeds it verbatim into the HKDF info string when it derives the price-context signing secret, so any reformatting would change the derived key.

string
channels
required
Array<object>
object
platformChannelId
required

The sales channel id as the platform spells it.

string
channel
required

The Antares channel key the connector puts into every envelope.

string
languages
required

The locales mapped for this channel, ^[a-z]{2}-[A-Z]{2}$.

Array<string>
>= 1 items
defaultCurrency
required

Upper-case ISO 4217 code.

string
/^[A-Z]{3}$/
currencies
required

Every currency this channel assigns, defaultCurrency first. This is the exact list an envelope’s currencies must carry.

Array<string>
>= 1 items <= 20 items unique items
allowedOrigins

The origins the widget may be embedded on, so the connector can warn a merchant whose storefront domain is not registered instead of leaving them with a silent 403 origin_not_allowed.

Array<string>
<= 20 items
publicKey

The channel’s pk_live_…. Returned on every poll so a connector that lost its local copy — a fresh install against an existing shop, a restored backup — can reconfigure the storefront without a new pairing.

string
loaderUrl
required

Absolute URL of the widget loader script the connector injects into the storefront.

string format: uri
maxBatchSize
required
integer
Allowed value: 500
supportedCurrencies
required

The union of every currency assigned across the shop’s channels, the shop’s own default currency first. Per-channel assignment is on ConnectorChannel, which is what a connector building an envelope must use; this list exists so a connector can decide once whether it has to resolve prices in more than one currency at all.

Array<string>
>= 1 items <= 20 items unique items
priceContext

Which signing-secret generation the storefront must mint price-context tokens with. The connector derives the secret itself with HKDF-SHA-256 from the sk it holds; the API never sends it. Picking a new generation up on the next poll — at most five minutes — is what makes a key rotation invisible to shoppers.

object
generation
required

The active generation. The API also accepts tokens signed with a generation retired less than 26 hours ago, which is the 24-hour maximum token lifetime plus margin.

integer
>= 1
kid
required

The key identifier to put into the token’s kid claim, derived from public inputs only as the first 8 hex characters of SHA-256("antares:price-context-kid:v1|{shopId}|{generation}").

string
/^[0-9a-f]{8}$/
algorithm
required

The MAC algorithm. Only one is defined for token format version 1.

string
Allowed value: HMAC-SHA-256
Example
{
"channels": [
{
"defaultCurrency": "EUR",
"currencies": [
"EUR"
]
}
],
"maxBatchSize": 500,
"supportedCurrencies": [
"EUR"
],
"priceContext": {
"algorithm": "HMAC-SHA-256"
}
}

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
}
]
}

environment_mismatchX-Antares-Environment-Fingerprint differs from the value bound at connect. Ingest and orders stay blocked until the merchant resolves it through POST /v1/admin/shops/{shopId}/environment.

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.

internal_error — unhandled failure. detail is always generic; the cause goes to the log with a correlation id.

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
}
]
}