mutation SaveShopCurrencies($request: SaveShopCurrenciesCommandRequestInput!) {
SaveShopCurrencies(request: $request) {
currencies {
currencyCode
name
isDefault
}
}
}{
"request": {
"salesChannelId": "string",
"currencies": [
{
"currencyCode": "string",
"isDefault": true
}
]
}
}{
"data": {
"SaveShopCurrencies": {
"currencies": [
{
"currencyCode": "string",
"name": "string",
"isDefault": true
}
]
}
}
}SaveShopCurrencies
Declaratively replaces the complete set of currencies assigned to a shop. The request describes the full desired state - every currency contained in it is assigned and every currency not contained in it is unassigned. The call is therefore idempotent: repeating it with the same body leaves the shop in the same state, and because the currency is addressed by its natural code (ADR-85) rather than by a server-generated surrogate, no clientId or request token is needed to make a retry safe. Exactly one assignment must be marked as the default currency, and the list must not be empty - a shop without any currency cannot price anything, so clearing all assignments is not an accepted target state on this route. Note on the response shape: unlike a command that returns only the minimal necessary data, this one echoes the complete resulting assignment list. That is deliberate - it matches the existing sales channel precedent and the declarative-replace example in ADR-57, and it saves the caller a follow-up read to learn the canonical form and resolved display name of the codes it just submitted. Concurrency: this write is last-writer-wins. It takes no If-Match header and no row version, so two concurrent calls for the same shop overwrite each other without a conflict being reported - the second call simply wins. Callers that need to protect a read-modify-write cycle have to coordinate outside this API. This is a deliberate choice for the first release of the endpoint, not an oversight: the underlying column (bRowversion) is not mapped today, and adding a required precondition later would be a breaking change, so it is called out here rather than left implicit.
SaveShopCurrencies(request: SaveShopCurrenciesCommandRequestInput!): SaveShopCurrenciesCommandResponse!Arguments
The persisted currency assignments, in the order submitted, with each code normalized to its canonical form and its display name resolved from the Wawi currency master data.
mutation SaveShopCurrencies($request: SaveShopCurrenciesCommandRequestInput!) {
SaveShopCurrencies(request: $request) {
currencies {
currencyCode
name
isDefault
}
}
}{
"request": {
"salesChannelId": "string",
"currencies": [
{
"currencyCode": "string",
"isDefault": true
}
]
}
}{
"data": {
"SaveShopCurrencies": {
"currencies": [
{
"currencyCode": "string",
"name": "string",
"isDefault": true
}
]
}
}
}Was this page helpful?