Check a candidate declaration without persisting or contacting anything

A dry run. It answers whether this deployment would accept the declaration, and
reports the canonical issuer URL and the effective rules it would resolve to.

Nothing is written and nothing is contacted: no row, no DNS lookup, no discovery document, no key set. Whether the issuer is actually REACHABLE is the separate test verb, whose egress is why the platform gates it. Both verbs

nevertheless demand the same .test scope: the distinction drawn here is
about EGRESS, not about the scope assignment, and sharing the scope is the
conservative direction at the cost of an operator holding only .write
being unable to dry-run before declaring.

🔴 It runs exactly the admission the declaration runs — the same

expression, not an equivalent one. That is the recorded §117 defect stated in
reverse: there, a configuration-time self-test checked one endpoint while the
runtime path checked four, so a provider passed green and returned 503 at sign-in. A
green verdict here therefore means createTenantTrustedIssuer will
succeed, including the platform token-lifetime ceiling and the derived audience,
both of which are properties of this deployment rather than of the descriptor. The
visible consequence, stated rather than hidden: on a deployment with no public edge
base URL configured, this refuses too — truthfully, because the declaration would
not succeed either.

A refusal is a 200 carrying admitted: false and the

rule's own sentence, not a 400. The operator asked a question and got
an answer; a console renders the reason inline as they type. A body that is
structurally malformed — a missing required field, an unknown key — is still a
400, because that is not a candidate to have an opinion about.

Ungated. A tenant that has not bought the edition can still find out

whether its descriptor is well-formed before it does.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…
Path Params
uuid
required
Body Params

The candidate declaration, in exactly the shape create accepts.

A trusted-issuer declaration. Carries no credential of any kind: ANKASecure verifies tokens from this issuer against the PUBLIC key set the issuer publishes, so there is no secret to submit, store, seal or rotate.

string
enum
required

The vendor mechanism. It NARROWS the platform algorithm allow-list and can never widen it; choose GENERIC_OIDC for any provider not named here.

Allowed:
string
required
length between 0 and 2048

The issuer identifier, exactly as the provider publishes it in its OpenID Connect discovery document. HTTPS only, no query and no fragment (OpenID Connect Discovery 1.0 section 2). It is stored in canonical form — lowercase scheme and host, the default port removed, no trailing slash — because that string is both the uniqueness key and the value a presented token's iss claim is compared against.

string
length between 0 and 200

An operator-chosen label. Carries no meaning to any rule and is never compared against anything in a token.

permittedAlgorithms
array of strings
length between 0 and 9

The signature algorithms a token from this issuer may use. Omit it to accept the preset's own set. Every entry must be a member of that set — a narrower list is admitted, a wider one is refused by name.

permittedAlgorithms
string
required

The longest exp - iat a token from this issuer may declare, as an ISO-8601 duration. It may LOWER the platform ceiling and never raise it. The ceiling is an accept-or-refuse gate on the ISSUER rather than a bound on any one token: a declaration above it is refused outright, and every token that issuer mints is refused with it, a five-minute one included.

Headers
string
enum
Defaults to application/json

Generated from available response content types

Allowed:
Responses

Language
Credentials
Bearer
JWT
URL
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json
application/problem+json