Zum Inhalt springen

Get the channel's ranking weights

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

The six weights and the sort presets the widget offers. Role: viewer.

channelId
required
string format: uuid

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

The channel’s current ranking configuration.

Media typeapplication/json
object
version
required

Optimistic-concurrency version. Send it back in If-Match on the next write.

integer
>= 1
weights
required

The six ranking signals, each 0–100. They are relative shares, not percentages: they do not have to sum to anything. For relevance searches, Typesense retrieves a bounded candidate window and the API applies all six weights in Go before pagination, which is why changing them takes effect on the next query and never needs a reindex.

object
relevance
required

Textual match quality. Setting it to 0 makes the result order independent of what the visitor typed and is almost never right.

integer
<= 100
margin
required

The normalised margin derived from purchasePrice. Products without a purchase price score neutrally rather than last.

integer
<= 100
stock
required

Availability. Pushes out-of-stock products down instead of hiding them, which keeps a searched-for article findable.

integer
<= 100
conversion
required

The product’s click-to-purchase rate from search, normalised across the catalogue.

integer
<= 100
sales
required

Recent sales volume, normalised across the catalogue and seeded from the order backfill so a fresh tenant does not rank from a cold start.

integer
<= 100
novelty
required

Recency of releasedAt, decaying over 90 days.

integer
<= 100
sortPresets
required
Array<object>
<= 10 items

One entry of the sort dropdown the widget offers.

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

Merchant-facing label, already in the channel’s language.

string
<= 80 characters
sort
required

The sort key sent as SearchRequest.sort: one of relevance, price_asc, price_desc, newest. Anything else is 422 validation_failed.

string
<= 32 characters
default

Preselected when the widget opens. At most one preset may set it; several is 422 validation_failed.

boolean
updatedAt
required
string format: date-time
updatedBy

Better-auth user id of the last editor.

string
<= 128 characters
Examplegenerated
{
"version": 1,
"weights": {
"relevance": 1,
"margin": 1,
"stock": 1,
"conversion": 1,
"sales": 1,
"novelty": 1
},
"sortPresets": [
{
"id": "example",
"label": "example",
"sort": "example",
"default": true
}
],
"updatedAt": "2026-04-15T12:00:00Z",
"updatedBy": "example"
}

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

not_found — the addressed shop, channel, synonym, curation, index run, key or organization does not exist inside the caller’s organization. Deliberately indistinguishable from “exists but belongs to somebody else”.

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