Preview which Mapping Set an app (or the tenant) would be bound to if a choice were saved.
curl --request POST \ --url https://auth.example.com/api/admin/identity-mapping/preview-effective \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "client_id": "example", "proposal": { "client": { "fieldMappingSetId": "example", "fieldMappingVersionId": "example", "destinationNamespace": "example", "sourceProfileId": "example" }, "tenant_default": "example" } }'Nothing is written. The answer is the effective endpoint’s, before (what is saved) and after (with the proposal), from the same selection. proposal.client is an app’s own choice (a set, { "mode": "none" }, or null to follow the defaults; needs client_id and the clients read permission); proposal.tenant_default is the tenant’s default (a set ID, none, or null to have none of its own). A proposal is checked as a save checks it: a malformed one is the save’s 400, and a set a save would refuse (missing, another tenant’s, not active, not one release path, a platform set for an app) gives after.selection of kind failed with code proposal_refused and the tier, and refusals with the save’s reason codes. An app of another tenant, and one that does not exist, are 404. Needs the settings read permission. This read-only inspection remains available while release mutations are paused or rollout status is unavailable. Rate limited with the moderate profile.
Authorizations
Section titled “Authorizations ”Request Body required
Section titled “Request Body required ”object
object
A Mapping Set ID, none, or null (no default of the tenant’s own).
Responses
Section titled “ Responses ”What an app or the tenant is bound to now, and with the proposal.
object
object
The app asked about; null for the tenant’s view.
object
The version the app’s own choice pins, if it does.
object
object
A level is set and not usable. The selection does not fall to the next level. settings_unreadable (no tier: the settings decide both defaults) is given only in the list of every tenant, for a tenant whose settings could not be read; the effective endpoint answers 503 instead.
A fixed code for what failed underneath. legacy_profile_only_selector: the app’s own choice names a Destination Profile (destinationProfileId) and no Mapping Set and no opt-out, a selector of the older kind, which is not a choice; the release fails for the app (400 invalid_client) rather than lose the profile’s gate in silence (select a Mapping Set or save { "mode": "none" }). With settings_unreadable, the code of the read that failed (unknown when it has none).
The app’s level, the tenant default and the platform default, in that order.
object
What the level says. This endpoint reads every level, so unset, set, none and invalid are what is found. not_consulted is given for the two defaults only when they were not read for this answer: the app’s own identity_mapping is not a choice (selection is failed with client_selector_invalid, and nothing below it is looked at), or the app decides (a set, or an opt-out) and the settings that hold the defaults could not be read.
The set the level names, when state is set.
For the two defaults: kv is saved at the tenant itself, platform is the platform’s value.
Whether the set exists and the calling tenant may name it (its own or the platform’s). False for a set that does not exist and for another tenant’s. Absent, with the other set* fields, when the Admin database could not be read.
Given with a selection of none because nothing is named (no_default); empty otherwise. implicit_activation_no_longer_applies: the tenant has active activations that fit an OIDC call (for an app, one that names it counts too), which the release used to apply to an app naming no Mapping Set and no longer does. Name the Mapping Set as the tenant’s default (or the app’s own) to keep what they did. Only this tenant’s rows are read, and only IDs and names are given.
object
object
The Admin database could not be read to look for the activations, so warnings is empty without the tenant having none.
object
The app asked about; null for the tenant’s view.
object
The version the app’s own choice pins, if it does.
object
object
A level is set and not usable. The selection does not fall to the next level. settings_unreadable (no tier: the settings decide both defaults) is given only in the list of every tenant, for a tenant whose settings could not be read; the effective endpoint answers 503 instead.
A fixed code for what failed underneath. legacy_profile_only_selector: the app’s own choice names a Destination Profile (destinationProfileId) and no Mapping Set and no opt-out, a selector of the older kind, which is not a choice; the release fails for the app (400 invalid_client) rather than lose the profile’s gate in silence (select a Mapping Set or save { "mode": "none" }). With settings_unreadable, the code of the read that failed (unknown when it has none).
The app’s level, the tenant default and the platform default, in that order.
object
What the level says. This endpoint reads every level, so unset, set, none and invalid are what is found. not_consulted is given for the two defaults only when they were not read for this answer: the app’s own identity_mapping is not a choice (selection is failed with client_selector_invalid, and nothing below it is looked at), or the app decides (a set, or an opt-out) and the settings that hold the defaults could not be read.
The set the level names, when state is set.
For the two defaults: kv is saved at the tenant itself, platform is the platform’s value.
Whether the set exists and the calling tenant may name it (its own or the platform’s). False for a set that does not exist and for another tenant’s. Absent, with the other set* fields, when the Admin database could not be read.
Given with a selection of none because nothing is named (no_default); empty otherwise. implicit_activation_no_longer_applies: the tenant has active activations that fit an OIDC call (for an app, one that names it counts too), which the release used to apply to an app naming no Mapping Set and no longer does. Name the Mapping Set as the tenant’s default (or the app’s own) to keep what they did. Only this tenant’s rows are read, and only IDs and names are given.
object
object
The Admin database could not be read to look for the activations, so warnings is empty without the tenant having none.
Why a save of the proposal would be refused; after binds nothing then.
object
Example
{ "before": { "selection": { "kind": "bound", "tier": "client", "setOwner": "tenant" }, "chain": [ { "tier": "client", "state": "unset", "source": "kv", "setOwner": "tenant" } ], "warnings": [ { "code": "implicit_activation_no_longer_applies" } ], "warnings_unavailable": true }, "after": { "selection": { "kind": "bound", "tier": "client", "setOwner": "tenant" }, "chain": [ { "tier": "client", "state": "unset", "source": "kv", "setOwner": "tenant" } ], "warnings": [ { "code": "implicit_activation_no_longer_applies" } ], "warnings_unavailable": true }, "refusals": [ { "tier": "client" } ]}Error response.
object
Example generated
{ "error": "example", "message": "example", "error_description": "example"}Error response.
object
Example generated
{ "error": "example", "message": "example", "error_description": "example"}Error response.
object
Example generated
{ "error": "example", "message": "example", "error_description": "example"}Error response.
object
Example generated
{ "error": "example", "message": "example", "error_description": "example"}Error response.
object
Example generated
{ "error": "example", "message": "example", "error_description": "example"}Error response.
object
Example generated
{ "error": "example", "message": "example", "error_description": "example"}Error response.
object
Example generated
{ "error": "example", "message": "example", "error_description": "example"}