Replace Listing Profile Mappings
PUT/api/v2/sales-channels/:salesChannel/listing-profiles/:profile/mappings
Replace the listing profile's whole set of general field mappings.
products:writeGrant this scope to your token under Settings → Developer → Personal Access Tokens.
This is a full sync, not a per-row patch: send every row the editor rendered. A field omitted from mappings is removed from the profile, and a row whose source_type is blank or null (or whose source_value is empty) is treated as unmapped and likewise stores nothing — that is how a field is unbound without deleting the row. Field names are matched case-insensitively; when the same name appears twice the last entry wins.
Responds with the profile's rows in the same shape as the GET, so a client can render the saved state without a second call.
Returns 404 when the profile does not belong to the sales channel in the path, and 422 when a row is missing channel_field_name or carries an unrecognised source_type.
A profile's vocabulary is the channel's CORE listing fields and nothing else — the fields the channel asks for on every listing whatever the category, as its module declares them. Category aspects are never returned and can never be stored here: a template is category-specific, a profile is not. A row with is_core: false is a mapping made before that rule was enforced — it is still live, so it is returned to be removed rather than hidden.
Authentication: Requires Bearer token.
Request
Responses
- 200
- 401
- 403
- 404
- 422
- 429
OK
Response Headers
Unauthenticated — the bearer token is missing, revoked, expired, or malformed. Never retry automatically; fix the credential. See the Errors guide.
Forbidden — the token lacks a required scope, the endpoint is not available to API tokens, or the user behind the token lacks the permission. A human must adjust the token scopes or user permissions; do not retry.
Not found — no record with the given identifier (or the route does not exist). Verify the ID before retrying.
Unprocessable Content
Response Headers
Rate limited — platform limit is 1,000 requests/min; individual tokens may carry lower limits. Honor the Retry-After header before retrying. See the Rate Limits guide.