Skip to content

API Reference

The reference below is generated from the committed OpenAPI specification (docs/openapi.yaml), which is produced from the server code by mock-oidc openapi. A CI drift-guard fails the build if the committed spec falls out of sync with the code.

mock-oidc dev

Mock Control


GET /_mock/clock

Get the clock state

Responses

{
    "frozen": true,
    "now": "2022-04-13T15:42:05.901Z"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "additionalProperties": false,
    "properties": {
        "frozen": {
            "type": "boolean"
        },
        "now": {
            "format": "date-time",
            "type": "string"
        }
    },
    "required": [
        "frozen",
        "now"
    ],
    "type": "object"
}

{
    "detail": "Property foo is required but is missing.",
    "errors": [
        {
            "location": "string",
            "message": "string",
            "value": null
        }
    ],
    "instance": "https://example.com/error-log/abc123",
    "status": 400,
    "title": "Bad Request",
    "type": "https://example.com/errors/example"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "additionalProperties": false,
    "properties": {
        "detail": {
            "description": "A human-readable explanation specific to this occurrence of the problem.",
            "example": "Property foo is required but is missing.",
            "type": "string"
        },
        "errors": {
            "description": "Optional list of individual error details",
            "items": {
                "$ref": "#/components/schemas/ErrorDetail"
            },
            "nullable": true,
            "type": "array"
        },
        "instance": {
            "description": "A URI reference that identifies the specific occurrence of the problem.",
            "example": "https://example.com/error-log/abc123",
            "format": "uri",
            "type": "string"
        },
        "status": {
            "description": "HTTP status code",
            "example": 400,
            "format": "int64",
            "type": "integer"
        },
        "title": {
            "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
            "example": "Bad Request",
            "type": "string"
        },
        "type": {
            "default": "about:blank",
            "description": "A URI reference to human-readable documentation for the error.",
            "example": "https://example.com/errors/example",
            "format": "uri",
            "type": "string"
        }
    },
    "type": "object"
}

PUT /_mock/clock

Freeze or unfreeze the clock

Description

frozen=true pins the clock at instant (required); frozen=false returns it to the wall clock. One global clock drives issuance AND verification, so this moves iat/nbf/exp and the verifier alike.

Request body

{
    "frozen": true,
    "instant": "2022-04-13T15:42:05.901Z"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the request body
{
    "additionalProperties": false,
    "properties": {
        "frozen": {
            "type": "boolean"
        },
        "instant": {
            "description": "Required when frozen=true; the fixed 'now'.",
            "format": "date-time",
            "type": "string"
        }
    },
    "required": [
        "frozen"
    ],
    "type": "object"
}

Responses

{
    "frozen": true,
    "now": "2022-04-13T15:42:05.901Z"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "additionalProperties": false,
    "properties": {
        "frozen": {
            "type": "boolean"
        },
        "now": {
            "format": "date-time",
            "type": "string"
        }
    },
    "required": [
        "frozen",
        "now"
    ],
    "type": "object"
}

{
    "detail": "Property foo is required but is missing.",
    "errors": [
        {
            "location": "string",
            "message": "string",
            "value": null
        }
    ],
    "instance": "https://example.com/error-log/abc123",
    "status": 400,
    "title": "Bad Request",
    "type": "https://example.com/errors/example"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "additionalProperties": false,
    "properties": {
        "detail": {
            "description": "A human-readable explanation specific to this occurrence of the problem.",
            "example": "Property foo is required but is missing.",
            "type": "string"
        },
        "errors": {
            "description": "Optional list of individual error details",
            "items": {
                "$ref": "#/components/schemas/ErrorDetail"
            },
            "nullable": true,
            "type": "array"
        },
        "instance": {
            "description": "A URI reference that identifies the specific occurrence of the problem.",
            "example": "https://example.com/error-log/abc123",
            "format": "uri",
            "type": "string"
        },
        "status": {
            "description": "HTTP status code",
            "example": 400,
            "format": "int64",
            "type": "integer"
        },
        "title": {
            "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
            "example": "Bad Request",
            "type": "string"
        },
        "type": {
            "default": "about:blank",
            "description": "A URI reference to human-readable documentation for the error.",
            "example": "https://example.com/errors/example",
            "format": "uri",
            "type": "string"
        }
    },
    "type": "object"
}

POST /_mock/clock/advance

Advance the (frozen) clock by a Go duration

Request body

{
    "duration": "string"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the request body
{
    "additionalProperties": false,
    "properties": {
        "duration": {
            "description": "Go duration, e.g. '90s', '5m', '1h'. Advances (and freezes) the clock.",
            "type": "string"
        }
    },
    "required": [
        "duration"
    ],
    "type": "object"
}

Responses

{
    "frozen": true,
    "now": "2022-04-13T15:42:05.901Z"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "additionalProperties": false,
    "properties": {
        "frozen": {
            "type": "boolean"
        },
        "now": {
            "format": "date-time",
            "type": "string"
        }
    },
    "required": [
        "frozen",
        "now"
    ],
    "type": "object"
}

{
    "detail": "Property foo is required but is missing.",
    "errors": [
        {
            "location": "string",
            "message": "string",
            "value": null
        }
    ],
    "instance": "https://example.com/error-log/abc123",
    "status": 400,
    "title": "Bad Request",
    "type": "https://example.com/errors/example"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "additionalProperties": false,
    "properties": {
        "detail": {
            "description": "A human-readable explanation specific to this occurrence of the problem.",
            "example": "Property foo is required but is missing.",
            "type": "string"
        },
        "errors": {
            "description": "Optional list of individual error details",
            "items": {
                "$ref": "#/components/schemas/ErrorDetail"
            },
            "nullable": true,
            "type": "array"
        },
        "instance": {
            "description": "A URI reference that identifies the specific occurrence of the problem.",
            "example": "https://example.com/error-log/abc123",
            "format": "uri",
            "type": "string"
        },
        "status": {
            "description": "HTTP status code",
            "example": 400,
            "format": "int64",
            "type": "integer"
        },
        "title": {
            "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
            "example": "Bad Request",
            "type": "string"
        },
        "type": {
            "default": "about:blank",
            "description": "A URI reference to human-readable documentation for the error.",
            "example": "https://example.com/errors/example",
            "format": "uri",
            "type": "string"
        }
    },
    "type": "object"
}

POST /_mock/mint

Directly mint a token (issueToken / anyToken)

Description

Signs a token without a grant flow, using the SAME signer/keys as /{issuer}/token, so the result verifies against /{issuer}/jwks. Supply issuerUrl to sign for an arbitrary external iss.

Input parameters

Parameter In Type Default Nullable Description
Host header string No
X-Forwarded-Host header string No
X-Forwarded-Port header string No
X-Forwarded-Proto header string No

Request body

{
    "audience": [
        "string"
    ],
    "claims": {},
    "clientId": "string",
    "expirySeconds": 59,
    "issuer": "string",
    "issuerUrl": "string",
    "kind": "access_token",
    "scope": [
        "string"
    ],
    "subject": "string",
    "typ": "string"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the request body
{
    "additionalProperties": false,
    "properties": {
        "audience": {
            "description": "aud claim. Omitted -> no audience is stamped.",
            "items": {
                "type": "string"
            },
            "nullable": true,
            "type": "array"
        },
        "claims": {
            "additionalProperties": {},
            "description": "Additional/overriding claims.",
            "type": "object"
        },
        "clientId": {
            "default": "default",
            "type": "string"
        },
        "expirySeconds": {
            "default": 3600,
            "format": "int64",
            "type": "integer"
        },
        "issuer": {
            "default": "default",
            "description": "Issuer id (first segment); '_mock' reserved.",
            "type": "string"
        },
        "issuerUrl": {
            "description": "Override iss with an arbitrary URL (anyToken).",
            "type": "string"
        },
        "kind": {
            "default": "access_token",
            "enum": [
                "access_token",
                "id_token"
            ],
            "type": "string"
        },
        "scope": {
            "items": {
                "type": "string"
            },
            "nullable": true,
            "type": "array"
        },
        "subject": {
            "description": "sub claim; defaults to a random UUID.",
            "type": "string"
        },
        "typ": {
            "default": "JWT",
            "description": "JWS typ header (open JOSEType; at+jwt accepted).",
            "type": "string"
        }
    },
    "required": [
        "issuer"
    ],
    "type": "object"
}

Responses

{
    "algorithm": "string",
    "claims": {},
    "expiresAt": "2022-04-13T15:42:05.901Z",
    "issuer": "string",
    "kid": "string",
    "token": "string"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "additionalProperties": false,
    "properties": {
        "algorithm": {
            "type": "string"
        },
        "claims": {
            "additionalProperties": {},
            "description": "Decoded claim set (convenience).",
            "type": "object"
        },
        "expiresAt": {
            "format": "date-time",
            "type": "string"
        },
        "issuer": {
            "description": "Resolved iss.",
            "type": "string"
        },
        "kid": {
            "type": "string"
        },
        "token": {
            "description": "Compact signed JWT.",
            "type": "string"
        }
    },
    "required": [
        "token",
        "kid",
        "algorithm",
        "issuer",
        "expiresAt",
        "claims"
    ],
    "type": "object"
}

{
    "detail": "Property foo is required but is missing.",
    "errors": [
        {
            "location": "string",
            "message": "string",
            "value": null
        }
    ],
    "instance": "https://example.com/error-log/abc123",
    "status": 400,
    "title": "Bad Request",
    "type": "https://example.com/errors/example"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "additionalProperties": false,
    "properties": {
        "detail": {
            "description": "A human-readable explanation specific to this occurrence of the problem.",
            "example": "Property foo is required but is missing.",
            "type": "string"
        },
        "errors": {
            "description": "Optional list of individual error details",
            "items": {
                "$ref": "#/components/schemas/ErrorDetail"
            },
            "nullable": true,
            "type": "array"
        },
        "instance": {
            "description": "A URI reference that identifies the specific occurrence of the problem.",
            "example": "https://example.com/error-log/abc123",
            "format": "uri",
            "type": "string"
        },
        "status": {
            "description": "HTTP status code",
            "example": 400,
            "format": "int64",
            "type": "integer"
        },
        "title": {
            "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
            "example": "Bad Request",
            "type": "string"
        },
        "type": {
            "default": "about:blank",
            "description": "A URI reference to human-readable documentation for the error.",
            "example": "https://example.com/errors/example",
            "format": "uri",
            "type": "string"
        }
    },
    "type": "object"
}

DELETE /_mock/requests

Clear the captured-request log

Responses

{
    "cleared": true
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "additionalProperties": false,
    "properties": {
        "cleared": {
            "type": "boolean"
        }
    },
    "required": [
        "cleared"
    ],
    "type": "object"
}

{
    "detail": "Property foo is required but is missing.",
    "errors": [
        {
            "location": "string",
            "message": "string",
            "value": null
        }
    ],
    "instance": "https://example.com/error-log/abc123",
    "status": 400,
    "title": "Bad Request",
    "type": "https://example.com/errors/example"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "additionalProperties": false,
    "properties": {
        "detail": {
            "description": "A human-readable explanation specific to this occurrence of the problem.",
            "example": "Property foo is required but is missing.",
            "type": "string"
        },
        "errors": {
            "description": "Optional list of individual error details",
            "items": {
                "$ref": "#/components/schemas/ErrorDetail"
            },
            "nullable": true,
            "type": "array"
        },
        "instance": {
            "description": "A URI reference that identifies the specific occurrence of the problem.",
            "example": "https://example.com/error-log/abc123",
            "format": "uri",
            "type": "string"
        },
        "status": {
            "description": "HTTP status code",
            "example": 400,
            "format": "int64",
            "type": "integer"
        },
        "title": {
            "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
            "example": "Bad Request",
            "type": "string"
        },
        "type": {
            "default": "about:blank",
            "description": "A URI reference to human-readable documentation for the error.",
            "example": "https://example.com/errors/example",
            "format": "uri",
            "type": "string"
        }
    },
    "type": "object"
}

GET /_mock/requests

List the captured-request log (non-destructive)

Input parameters

Parameter In Type Default Nullable Description
endpoint query string No
issuer query string No

Responses

{
    "count": 98,
    "requests": [
        {
            "body": "string",
            "bodyBase64": "string",
            "headers": {},
            "id": "string",
            "issuer": "string",
            "method": "string",
            "path": "string",
            "query": {},
            "receivedAt": "2022-04-13T15:42:05.901Z",
            "url": "string"
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "additionalProperties": false,
    "properties": {
        "count": {
            "format": "int64",
            "type": "integer"
        },
        "requests": {
            "items": {
                "$ref": "#/components/schemas/CapturedRequestDTO"
            },
            "nullable": true,
            "type": "array"
        }
    },
    "required": [
        "count",
        "requests"
    ],
    "type": "object"
}

{
    "detail": "Property foo is required but is missing.",
    "errors": [
        {
            "location": "string",
            "message": "string",
            "value": null
        }
    ],
    "instance": "https://example.com/error-log/abc123",
    "status": 400,
    "title": "Bad Request",
    "type": "https://example.com/errors/example"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "additionalProperties": false,
    "properties": {
        "detail": {
            "description": "A human-readable explanation specific to this occurrence of the problem.",
            "example": "Property foo is required but is missing.",
            "type": "string"
        },
        "errors": {
            "description": "Optional list of individual error details",
            "items": {
                "$ref": "#/components/schemas/ErrorDetail"
            },
            "nullable": true,
            "type": "array"
        },
        "instance": {
            "description": "A URI reference that identifies the specific occurrence of the problem.",
            "example": "https://example.com/error-log/abc123",
            "format": "uri",
            "type": "string"
        },
        "status": {
            "description": "HTTP status code",
            "example": 400,
            "format": "int64",
            "type": "integer"
        },
        "title": {
            "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
            "example": "Bad Request",
            "type": "string"
        },
        "type": {
            "default": "about:blank",
            "description": "A URI reference to human-readable documentation for the error.",
            "example": "https://example.com/errors/example",
            "format": "uri",
            "type": "string"
        }
    },
    "type": "object"
}

POST /_mock/requests/take

Destructively take the oldest captured request (takeRequest)

Description

Long-polls up to timeoutMs for the oldest matching captured request, removes it, and returns it. A miss within the timeout is a clean 404 (not an exception). Raw body bytes are preserved.

Request body

{
    "endpoint": "authorize",
    "issuer": "string",
    "timeoutMs": 207
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the request body
{
    "additionalProperties": false,
    "properties": {
        "endpoint": {
            "enum": [
                "authorize",
                "token",
                "userinfo",
                "introspect",
                "revoke",
                "endsession",
                "jwks"
            ],
            "type": "string"
        },
        "issuer": {
            "type": "string"
        },
        "timeoutMs": {
            "default": 1000,
            "description": "Max time to wait for a matching request.",
            "format": "int64",
            "type": "integer"
        }
    },
    "type": "object"
}

Responses

{
    "body": "string",
    "bodyBase64": "string",
    "headers": {},
    "id": "string",
    "issuer": "string",
    "method": "string",
    "path": "string",
    "query": {},
    "receivedAt": "2022-04-13T15:42:05.901Z",
    "url": "string"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "additionalProperties": false,
    "properties": {
        "body": {
            "description": "Best-effort UTF-8 decode of the body, for convenience.",
            "type": "string"
        },
        "bodyBase64": {
            "description": "Raw body bytes, base64 (exact order).",
            "type": "string"
        },
        "headers": {
            "additionalProperties": {
                "items": {
                    "type": "string"
                },
                "nullable": true,
                "type": "array"
            },
            "type": "object"
        },
        "id": {
            "type": "string"
        },
        "issuer": {
            "type": "string"
        },
        "method": {
            "type": "string"
        },
        "path": {
            "type": "string"
        },
        "query": {
            "additionalProperties": {
                "items": {
                    "type": "string"
                },
                "nullable": true,
                "type": "array"
            },
            "type": "object"
        },
        "receivedAt": {
            "format": "date-time",
            "type": "string"
        },
        "url": {
            "type": "string"
        }
    },
    "required": [
        "id",
        "receivedAt",
        "issuer",
        "method",
        "path",
        "url"
    ],
    "type": "object"
}

{
    "detail": "Property foo is required but is missing.",
    "errors": [
        {
            "location": "string",
            "message": "string",
            "value": null
        }
    ],
    "instance": "https://example.com/error-log/abc123",
    "status": 400,
    "title": "Bad Request",
    "type": "https://example.com/errors/example"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "additionalProperties": false,
    "properties": {
        "detail": {
            "description": "A human-readable explanation specific to this occurrence of the problem.",
            "example": "Property foo is required but is missing.",
            "type": "string"
        },
        "errors": {
            "description": "Optional list of individual error details",
            "items": {
                "$ref": "#/components/schemas/ErrorDetail"
            },
            "nullable": true,
            "type": "array"
        },
        "instance": {
            "description": "A URI reference that identifies the specific occurrence of the problem.",
            "example": "https://example.com/error-log/abc123",
            "format": "uri",
            "type": "string"
        },
        "status": {
            "description": "HTTP status code",
            "example": 400,
            "format": "int64",
            "type": "integer"
        },
        "title": {
            "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
            "example": "Bad Request",
            "type": "string"
        },
        "type": {
            "default": "about:blank",
            "description": "A URI reference to human-readable documentation for the error.",
            "example": "https://example.com/errors/example",
            "format": "uri",
            "type": "string"
        }
    },
    "type": "object"
}

POST /_mock/reset

Reset control-plane state (the @AfterEach)

Description

Atomically flushes the scenario queue and the request log and unfreezes the clock. It deliberately does NOT drop materialized signing keys, so JWKS a client already fetched stays valid.

Responses

{
    "reset": true
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "additionalProperties": false,
    "properties": {
        "reset": {
            "type": "boolean"
        }
    },
    "required": [
        "reset"
    ],
    "type": "object"
}

{
    "detail": "Property foo is required but is missing.",
    "errors": [
        {
            "location": "string",
            "message": "string",
            "value": null
        }
    ],
    "instance": "https://example.com/error-log/abc123",
    "status": 400,
    "title": "Bad Request",
    "type": "https://example.com/errors/example"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "additionalProperties": false,
    "properties": {
        "detail": {
            "description": "A human-readable explanation specific to this occurrence of the problem.",
            "example": "Property foo is required but is missing.",
            "type": "string"
        },
        "errors": {
            "description": "Optional list of individual error details",
            "items": {
                "$ref": "#/components/schemas/ErrorDetail"
            },
            "nullable": true,
            "type": "array"
        },
        "instance": {
            "description": "A URI reference that identifies the specific occurrence of the problem.",
            "example": "https://example.com/error-log/abc123",
            "format": "uri",
            "type": "string"
        },
        "status": {
            "description": "HTTP status code",
            "example": 400,
            "format": "int64",
            "type": "integer"
        },
        "title": {
            "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
            "example": "Bad Request",
            "type": "string"
        },
        "type": {
            "default": "about:blank",
            "description": "A URI reference to human-readable documentation for the error.",
            "example": "https://example.com/errors/example",
            "format": "uri",
            "type": "string"
        }
    },
    "type": "object"
}

DELETE /_mock/scenarios

Flush the scenario queue

Responses

{
    "queueDepth": 230
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "additionalProperties": false,
    "properties": {
        "queueDepth": {
            "format": "int64",
            "type": "integer"
        }
    },
    "required": [
        "queueDepth"
    ],
    "type": "object"
}

{
    "detail": "Property foo is required but is missing.",
    "errors": [
        {
            "location": "string",
            "message": "string",
            "value": null
        }
    ],
    "instance": "https://example.com/error-log/abc123",
    "status": 400,
    "title": "Bad Request",
    "type": "https://example.com/errors/example"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "additionalProperties": false,
    "properties": {
        "detail": {
            "description": "A human-readable explanation specific to this occurrence of the problem.",
            "example": "Property foo is required but is missing.",
            "type": "string"
        },
        "errors": {
            "description": "Optional list of individual error details",
            "items": {
                "$ref": "#/components/schemas/ErrorDetail"
            },
            "nullable": true,
            "type": "array"
        },
        "instance": {
            "description": "A URI reference that identifies the specific occurrence of the problem.",
            "example": "https://example.com/error-log/abc123",
            "format": "uri",
            "type": "string"
        },
        "status": {
            "description": "HTTP status code",
            "example": 400,
            "format": "int64",
            "type": "integer"
        },
        "title": {
            "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
            "example": "Bad Request",
            "type": "string"
        },
        "type": {
            "default": "about:blank",
            "description": "A URI reference to human-readable documentation for the error.",
            "example": "https://example.com/errors/example",
            "format": "uri",
            "type": "string"
        }
    },
    "type": "object"
}

GET /_mock/scenarios

List the pending scenario queue

Responses

{
    "queueDepth": 120,
    "scenarios": [
        {
            "issuer": "string",
            "kind": "string"
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "additionalProperties": false,
    "properties": {
        "queueDepth": {
            "format": "int64",
            "type": "integer"
        },
        "scenarios": {
            "items": {
                "$ref": "#/components/schemas/ScenarioSummaryDTO"
            },
            "nullable": true,
            "type": "array"
        }
    },
    "required": [
        "queueDepth",
        "scenarios"
    ],
    "type": "object"
}

{
    "detail": "Property foo is required but is missing.",
    "errors": [
        {
            "location": "string",
            "message": "string",
            "value": null
        }
    ],
    "instance": "https://example.com/error-log/abc123",
    "status": 400,
    "title": "Bad Request",
    "type": "https://example.com/errors/example"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "additionalProperties": false,
    "properties": {
        "detail": {
            "description": "A human-readable explanation specific to this occurrence of the problem.",
            "example": "Property foo is required but is missing.",
            "type": "string"
        },
        "errors": {
            "description": "Optional list of individual error details",
            "items": {
                "$ref": "#/components/schemas/ErrorDetail"
            },
            "nullable": true,
            "type": "array"
        },
        "instance": {
            "description": "A URI reference that identifies the specific occurrence of the problem.",
            "example": "https://example.com/error-log/abc123",
            "format": "uri",
            "type": "string"
        },
        "status": {
            "description": "HTTP status code",
            "example": 400,
            "format": "int64",
            "type": "integer"
        },
        "title": {
            "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
            "example": "Bad Request",
            "type": "string"
        },
        "type": {
            "default": "about:blank",
            "description": "A URI reference to human-readable documentation for the error.",
            "example": "https://example.com/errors/example",
            "format": "uri",
            "type": "string"
        }
    },
    "type": "object"
}

POST /_mock/scenarios

Enqueue a one-shot scenario (enqueueCallback)

Description

Enqueues a single-use, issuer-matched callback consumed by the NEXT matching /token (or refresh) request for that issuer. It does not return a token; it changes how the next real request responds.

Request body

{
    "audience": [
        "string"
    ],
    "claims": {},
    "expirySeconds": 103,
    "issuer": "string",
    "requestMappings": [
        {
            "claims": {},
            "match": "string",
            "param": "string",
            "typeHeader": "string"
        }
    ],
    "subject": "string",
    "typ": "string"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the request body
{
    "additionalProperties": false,
    "properties": {
        "audience": {
            "items": {
                "type": "string"
            },
            "nullable": true,
            "type": "array"
        },
        "claims": {
            "additionalProperties": {},
            "type": "object"
        },
        "expirySeconds": {
            "format": "int64",
            "type": "integer"
        },
        "issuer": {
            "default": "default",
            "type": "string"
        },
        "requestMappings": {
            "items": {
                "$ref": "#/components/schemas/RequestMappingDTO"
            },
            "nullable": true,
            "type": "array"
        },
        "subject": {
            "type": "string"
        },
        "typ": {
            "type": "string"
        }
    },
    "required": [
        "issuer"
    ],
    "type": "object"
}

Responses

{
    "queueDepth": 42,
    "scenarioId": "string"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "additionalProperties": false,
    "properties": {
        "queueDepth": {
            "format": "int64",
            "type": "integer"
        },
        "scenarioId": {
            "type": "string"
        }
    },
    "required": [
        "scenarioId",
        "queueDepth"
    ],
    "type": "object"
}

{
    "detail": "Property foo is required but is missing.",
    "errors": [
        {
            "location": "string",
            "message": "string",
            "value": null
        }
    ],
    "instance": "https://example.com/error-log/abc123",
    "status": 400,
    "title": "Bad Request",
    "type": "https://example.com/errors/example"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "additionalProperties": false,
    "properties": {
        "detail": {
            "description": "A human-readable explanation specific to this occurrence of the problem.",
            "example": "Property foo is required but is missing.",
            "type": "string"
        },
        "errors": {
            "description": "Optional list of individual error details",
            "items": {
                "$ref": "#/components/schemas/ErrorDetail"
            },
            "nullable": true,
            "type": "array"
        },
        "instance": {
            "description": "A URI reference that identifies the specific occurrence of the problem.",
            "example": "https://example.com/error-log/abc123",
            "format": "uri",
            "type": "string"
        },
        "status": {
            "description": "HTTP status code",
            "example": 400,
            "format": "int64",
            "type": "integer"
        },
        "title": {
            "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
            "example": "Bad Request",
            "type": "string"
        },
        "type": {
            "default": "about:blank",
            "description": "A URI reference to human-readable documentation for the error.",
            "example": "https://example.com/errors/example",
            "format": "uri",
            "type": "string"
        }
    },
    "type": "object"
}

OIDC


GET /favicon.ico

Favicon (empty 200)

Responses

"string"
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "format": "base64",
    "type": "string"
}

Response headers

Name Description Schema
Content-Type string
Location string

{
    "detail": "Property foo is required but is missing.",
    "errors": [
        {
            "location": "string",
            "message": "string",
            "value": null
        }
    ],
    "instance": "https://example.com/error-log/abc123",
    "status": 400,
    "title": "Bad Request",
    "type": "https://example.com/errors/example"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "additionalProperties": false,
    "properties": {
        "detail": {
            "description": "A human-readable explanation specific to this occurrence of the problem.",
            "example": "Property foo is required but is missing.",
            "type": "string"
        },
        "errors": {
            "description": "Optional list of individual error details",
            "items": {
                "$ref": "#/components/schemas/ErrorDetail"
            },
            "nullable": true,
            "type": "array"
        },
        "instance": {
            "description": "A URI reference that identifies the specific occurrence of the problem.",
            "example": "https://example.com/error-log/abc123",
            "format": "uri",
            "type": "string"
        },
        "status": {
            "description": "HTTP status code",
            "example": 400,
            "format": "int64",
            "type": "integer"
        },
        "title": {
            "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
            "example": "Bad Request",
            "type": "string"
        },
        "type": {
            "default": "about:blank",
            "description": "A URI reference to human-readable documentation for the error.",
            "example": "https://example.com/errors/example",
            "format": "uri",
            "type": "string"
        }
    },
    "type": "object"
}

GET /{issuer}/.well-known/oauth-authorization-server

OIDC/OAuth2 provider metadata

Input parameters

Parameter In Type Default Nullable Description
issuer path string No Issuer id; the first path segment.

Responses

{
    "authorization_endpoint": "string",
    "code_challenge_methods_supported": [
        "string"
    ],
    "end_session_endpoint": "string",
    "id_token_signing_alg_values_supported": [
        "string"
    ],
    "introspection_endpoint": "string",
    "issuer": "string",
    "jwks_uri": "string",
    "response_modes_supported": [
        "string"
    ],
    "response_types_supported": [
        "string"
    ],
    "revocation_endpoint": "string",
    "subject_types_supported": [
        "string"
    ],
    "token_endpoint": "string",
    "userinfo_endpoint": "string"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "additionalProperties": false,
    "properties": {
        "authorization_endpoint": {
            "type": "string"
        },
        "code_challenge_methods_supported": {
            "items": {
                "type": "string"
            },
            "nullable": true,
            "type": "array"
        },
        "end_session_endpoint": {
            "type": "string"
        },
        "id_token_signing_alg_values_supported": {
            "items": {
                "type": "string"
            },
            "nullable": true,
            "type": "array"
        },
        "introspection_endpoint": {
            "type": "string"
        },
        "issuer": {
            "type": "string"
        },
        "jwks_uri": {
            "type": "string"
        },
        "response_modes_supported": {
            "items": {
                "type": "string"
            },
            "nullable": true,
            "type": "array"
        },
        "response_types_supported": {
            "items": {
                "type": "string"
            },
            "nullable": true,
            "type": "array"
        },
        "revocation_endpoint": {
            "type": "string"
        },
        "subject_types_supported": {
            "items": {
                "type": "string"
            },
            "nullable": true,
            "type": "array"
        },
        "token_endpoint": {
            "type": "string"
        },
        "userinfo_endpoint": {
            "type": "string"
        }
    },
    "required": [
        "issuer",
        "authorization_endpoint",
        "end_session_endpoint",
        "revocation_endpoint",
        "token_endpoint",
        "userinfo_endpoint",
        "jwks_uri",
        "introspection_endpoint",
        "response_types_supported",
        "response_modes_supported",
        "subject_types_supported",
        "id_token_signing_alg_values_supported",
        "code_challenge_methods_supported"
    ],
    "type": "object"
}

{
    "detail": "Property foo is required but is missing.",
    "errors": [
        {
            "location": "string",
            "message": "string",
            "value": null
        }
    ],
    "instance": "https://example.com/error-log/abc123",
    "status": 400,
    "title": "Bad Request",
    "type": "https://example.com/errors/example"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "additionalProperties": false,
    "properties": {
        "detail": {
            "description": "A human-readable explanation specific to this occurrence of the problem.",
            "example": "Property foo is required but is missing.",
            "type": "string"
        },
        "errors": {
            "description": "Optional list of individual error details",
            "items": {
                "$ref": "#/components/schemas/ErrorDetail"
            },
            "nullable": true,
            "type": "array"
        },
        "instance": {
            "description": "A URI reference that identifies the specific occurrence of the problem.",
            "example": "https://example.com/error-log/abc123",
            "format": "uri",
            "type": "string"
        },
        "status": {
            "description": "HTTP status code",
            "example": 400,
            "format": "int64",
            "type": "integer"
        },
        "title": {
            "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
            "example": "Bad Request",
            "type": "string"
        },
        "type": {
            "default": "about:blank",
            "description": "A URI reference to human-readable documentation for the error.",
            "example": "https://example.com/errors/example",
            "format": "uri",
            "type": "string"
        }
    },
    "type": "object"
}

GET /{issuer}/.well-known/openid-configuration

OIDC/OAuth2 provider metadata

Input parameters

Parameter In Type Default Nullable Description
issuer path string No Issuer id; the first path segment.

Responses

{
    "authorization_endpoint": "string",
    "code_challenge_methods_supported": [
        "string"
    ],
    "end_session_endpoint": "string",
    "id_token_signing_alg_values_supported": [
        "string"
    ],
    "introspection_endpoint": "string",
    "issuer": "string",
    "jwks_uri": "string",
    "response_modes_supported": [
        "string"
    ],
    "response_types_supported": [
        "string"
    ],
    "revocation_endpoint": "string",
    "subject_types_supported": [
        "string"
    ],
    "token_endpoint": "string",
    "userinfo_endpoint": "string"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "additionalProperties": false,
    "properties": {
        "authorization_endpoint": {
            "type": "string"
        },
        "code_challenge_methods_supported": {
            "items": {
                "type": "string"
            },
            "nullable": true,
            "type": "array"
        },
        "end_session_endpoint": {
            "type": "string"
        },
        "id_token_signing_alg_values_supported": {
            "items": {
                "type": "string"
            },
            "nullable": true,
            "type": "array"
        },
        "introspection_endpoint": {
            "type": "string"
        },
        "issuer": {
            "type": "string"
        },
        "jwks_uri": {
            "type": "string"
        },
        "response_modes_supported": {
            "items": {
                "type": "string"
            },
            "nullable": true,
            "type": "array"
        },
        "response_types_supported": {
            "items": {
                "type": "string"
            },
            "nullable": true,
            "type": "array"
        },
        "revocation_endpoint": {
            "type": "string"
        },
        "subject_types_supported": {
            "items": {
                "type": "string"
            },
            "nullable": true,
            "type": "array"
        },
        "token_endpoint": {
            "type": "string"
        },
        "userinfo_endpoint": {
            "type": "string"
        }
    },
    "required": [
        "issuer",
        "authorization_endpoint",
        "end_session_endpoint",
        "revocation_endpoint",
        "token_endpoint",
        "userinfo_endpoint",
        "jwks_uri",
        "introspection_endpoint",
        "response_types_supported",
        "response_modes_supported",
        "subject_types_supported",
        "id_token_signing_alg_values_supported",
        "code_challenge_methods_supported"
    ],
    "type": "object"
}

{
    "detail": "Property foo is required but is missing.",
    "errors": [
        {
            "location": "string",
            "message": "string",
            "value": null
        }
    ],
    "instance": "https://example.com/error-log/abc123",
    "status": 400,
    "title": "Bad Request",
    "type": "https://example.com/errors/example"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "additionalProperties": false,
    "properties": {
        "detail": {
            "description": "A human-readable explanation specific to this occurrence of the problem.",
            "example": "Property foo is required but is missing.",
            "type": "string"
        },
        "errors": {
            "description": "Optional list of individual error details",
            "items": {
                "$ref": "#/components/schemas/ErrorDetail"
            },
            "nullable": true,
            "type": "array"
        },
        "instance": {
            "description": "A URI reference that identifies the specific occurrence of the problem.",
            "example": "https://example.com/error-log/abc123",
            "format": "uri",
            "type": "string"
        },
        "status": {
            "description": "HTTP status code",
            "example": 400,
            "format": "int64",
            "type": "integer"
        },
        "title": {
            "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
            "example": "Bad Request",
            "type": "string"
        },
        "type": {
            "default": "about:blank",
            "description": "A URI reference to human-readable documentation for the error.",
            "example": "https://example.com/errors/example",
            "format": "uri",
            "type": "string"
        }
    },
    "type": "object"
}

GET /{issuer}/authorize

OAuth2/OIDC authorization endpoint

Input parameters

Parameter In Type Default Nullable Description
client_id query string No
code_challenge query string No
code_challenge_method query string No
issuer path string No
nonce query string No
prompt query string No
redirect_uri query string No
response_mode query string No
response_type query string No
scope query string No
state query string No

Responses

"string"
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "format": "base64",
    "type": "string"
}

Response headers

Name Description Schema
Content-Type string
Location string

{
    "detail": "Property foo is required but is missing.",
    "errors": [
        {
            "location": "string",
            "message": "string",
            "value": null
        }
    ],
    "instance": "https://example.com/error-log/abc123",
    "status": 400,
    "title": "Bad Request",
    "type": "https://example.com/errors/example"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "additionalProperties": false,
    "properties": {
        "detail": {
            "description": "A human-readable explanation specific to this occurrence of the problem.",
            "example": "Property foo is required but is missing.",
            "type": "string"
        },
        "errors": {
            "description": "Optional list of individual error details",
            "items": {
                "$ref": "#/components/schemas/ErrorDetail"
            },
            "nullable": true,
            "type": "array"
        },
        "instance": {
            "description": "A URI reference that identifies the specific occurrence of the problem.",
            "example": "https://example.com/error-log/abc123",
            "format": "uri",
            "type": "string"
        },
        "status": {
            "description": "HTTP status code",
            "example": 400,
            "format": "int64",
            "type": "integer"
        },
        "title": {
            "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
            "example": "Bad Request",
            "type": "string"
        },
        "type": {
            "default": "about:blank",
            "description": "A URI reference to human-readable documentation for the error.",
            "example": "https://example.com/errors/example",
            "format": "uri",
            "type": "string"
        }
    },
    "type": "object"
}

POST /{issuer}/authorize

Interactive login submission

Input parameters

Parameter In Type Default Nullable Description
client_id query string No
code_challenge query string No
code_challenge_method query string No
issuer path string No
nonce query string No
prompt query string No
redirect_uri query string No
response_mode query string No
response_type query string No
scope query string No
state query string No

Request body

{
    "claims": "string",
    "username": "string"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the request body
{
    "properties": {
        "claims": {
            "type": "string"
        },
        "username": {
            "type": "string"
        }
    },
    "type": "object"
}

Responses

"string"
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "format": "base64",
    "type": "string"
}

Response headers

Name Description Schema
Content-Type string
Location string

{
    "detail": "Property foo is required but is missing.",
    "errors": [
        {
            "location": "string",
            "message": "string",
            "value": null
        }
    ],
    "instance": "https://example.com/error-log/abc123",
    "status": 400,
    "title": "Bad Request",
    "type": "https://example.com/errors/example"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "additionalProperties": false,
    "properties": {
        "detail": {
            "description": "A human-readable explanation specific to this occurrence of the problem.",
            "example": "Property foo is required but is missing.",
            "type": "string"
        },
        "errors": {
            "description": "Optional list of individual error details",
            "items": {
                "$ref": "#/components/schemas/ErrorDetail"
            },
            "nullable": true,
            "type": "array"
        },
        "instance": {
            "description": "A URI reference that identifies the specific occurrence of the problem.",
            "example": "https://example.com/error-log/abc123",
            "format": "uri",
            "type": "string"
        },
        "status": {
            "description": "HTTP status code",
            "example": 400,
            "format": "int64",
            "type": "integer"
        },
        "title": {
            "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
            "example": "Bad Request",
            "type": "string"
        },
        "type": {
            "default": "about:blank",
            "description": "A URI reference to human-readable documentation for the error.",
            "example": "https://example.com/errors/example",
            "format": "uri",
            "type": "string"
        }
    },
    "type": "object"
}

GET /{issuer}/debugger

Interactive OIDC debugger (pre-filled authorize form)

Input parameters

Parameter In Type Default Nullable Description
client_id query string No
issuer path string No
scope query string No
subject query string No

Responses

"string"
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "format": "base64",
    "type": "string"
}

Response headers

Name Description Schema
Content-Type string
Location string

{
    "detail": "Property foo is required but is missing.",
    "errors": [
        {
            "location": "string",
            "message": "string",
            "value": null
        }
    ],
    "instance": "https://example.com/error-log/abc123",
    "status": 400,
    "title": "Bad Request",
    "type": "https://example.com/errors/example"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "additionalProperties": false,
    "properties": {
        "detail": {
            "description": "A human-readable explanation specific to this occurrence of the problem.",
            "example": "Property foo is required but is missing.",
            "type": "string"
        },
        "errors": {
            "description": "Optional list of individual error details",
            "items": {
                "$ref": "#/components/schemas/ErrorDetail"
            },
            "nullable": true,
            "type": "array"
        },
        "instance": {
            "description": "A URI reference that identifies the specific occurrence of the problem.",
            "example": "https://example.com/error-log/abc123",
            "format": "uri",
            "type": "string"
        },
        "status": {
            "description": "HTTP status code",
            "example": 400,
            "format": "int64",
            "type": "integer"
        },
        "title": {
            "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
            "example": "Bad Request",
            "type": "string"
        },
        "type": {
            "default": "about:blank",
            "description": "A URI reference to human-readable documentation for the error.",
            "example": "https://example.com/errors/example",
            "format": "uri",
            "type": "string"
        }
    },
    "type": "object"
}

POST /{issuer}/debugger

Debugger: start the authorization-code flow

Input parameters

Parameter In Type Default Nullable Description
issuer path string No

Request body

{
    "client_id": "string",
    "scope": "string",
    "subject": "string"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the request body
{
    "properties": {
        "client_id": {
            "type": "string"
        },
        "scope": {
            "type": "string"
        },
        "subject": {
            "type": "string"
        }
    },
    "type": "object"
}

Responses

Response headers

Name Description Schema
Location string
Set-Cookie string

{
    "detail": "Property foo is required but is missing.",
    "errors": [
        {
            "location": "string",
            "message": "string",
            "value": null
        }
    ],
    "instance": "https://example.com/error-log/abc123",
    "status": 400,
    "title": "Bad Request",
    "type": "https://example.com/errors/example"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "additionalProperties": false,
    "properties": {
        "detail": {
            "description": "A human-readable explanation specific to this occurrence of the problem.",
            "example": "Property foo is required but is missing.",
            "type": "string"
        },
        "errors": {
            "description": "Optional list of individual error details",
            "items": {
                "$ref": "#/components/schemas/ErrorDetail"
            },
            "nullable": true,
            "type": "array"
        },
        "instance": {
            "description": "A URI reference that identifies the specific occurrence of the problem.",
            "example": "https://example.com/error-log/abc123",
            "format": "uri",
            "type": "string"
        },
        "status": {
            "description": "HTTP status code",
            "example": 400,
            "format": "int64",
            "type": "integer"
        },
        "title": {
            "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
            "example": "Bad Request",
            "type": "string"
        },
        "type": {
            "default": "about:blank",
            "description": "A URI reference to human-readable documentation for the error.",
            "example": "https://example.com/errors/example",
            "format": "uri",
            "type": "string"
        }
    },
    "type": "object"
}

GET /{issuer}/debugger/callback

Debugger: authorization-code callback (back-channel exchange)

Input parameters

Parameter In Type Default Nullable Description
code query string No
Cookie header string No
error query string No
error_description query string No
issuer path string No
state query string No

Responses

"string"
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "format": "base64",
    "type": "string"
}

Response headers

Name Description Schema
Content-Type string
Location string

{
    "detail": "Property foo is required but is missing.",
    "errors": [
        {
            "location": "string",
            "message": "string",
            "value": null
        }
    ],
    "instance": "https://example.com/error-log/abc123",
    "status": 400,
    "title": "Bad Request",
    "type": "https://example.com/errors/example"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "additionalProperties": false,
    "properties": {
        "detail": {
            "description": "A human-readable explanation specific to this occurrence of the problem.",
            "example": "Property foo is required but is missing.",
            "type": "string"
        },
        "errors": {
            "description": "Optional list of individual error details",
            "items": {
                "$ref": "#/components/schemas/ErrorDetail"
            },
            "nullable": true,
            "type": "array"
        },
        "instance": {
            "description": "A URI reference that identifies the specific occurrence of the problem.",
            "example": "https://example.com/error-log/abc123",
            "format": "uri",
            "type": "string"
        },
        "status": {
            "description": "HTTP status code",
            "example": 400,
            "format": "int64",
            "type": "integer"
        },
        "title": {
            "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
            "example": "Bad Request",
            "type": "string"
        },
        "type": {
            "default": "about:blank",
            "description": "A URI reference to human-readable documentation for the error.",
            "example": "https://example.com/errors/example",
            "format": "uri",
            "type": "string"
        }
    },
    "type": "object"
}

POST /{issuer}/debugger/callback

Debugger: authorization-code callback (back-channel exchange)

Input parameters

Parameter In Type Default Nullable Description
code query string No
Cookie header string No
error query string No
error_description query string No
issuer path string No
state query string No

Responses

"string"
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "format": "base64",
    "type": "string"
}

Response headers

Name Description Schema
Content-Type string
Location string

{
    "detail": "Property foo is required but is missing.",
    "errors": [
        {
            "location": "string",
            "message": "string",
            "value": null
        }
    ],
    "instance": "https://example.com/error-log/abc123",
    "status": 400,
    "title": "Bad Request",
    "type": "https://example.com/errors/example"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "additionalProperties": false,
    "properties": {
        "detail": {
            "description": "A human-readable explanation specific to this occurrence of the problem.",
            "example": "Property foo is required but is missing.",
            "type": "string"
        },
        "errors": {
            "description": "Optional list of individual error details",
            "items": {
                "$ref": "#/components/schemas/ErrorDetail"
            },
            "nullable": true,
            "type": "array"
        },
        "instance": {
            "description": "A URI reference that identifies the specific occurrence of the problem.",
            "example": "https://example.com/error-log/abc123",
            "format": "uri",
            "type": "string"
        },
        "status": {
            "description": "HTTP status code",
            "example": 400,
            "format": "int64",
            "type": "integer"
        },
        "title": {
            "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
            "example": "Bad Request",
            "type": "string"
        },
        "type": {
            "default": "about:blank",
            "description": "A URI reference to human-readable documentation for the error.",
            "example": "https://example.com/errors/example",
            "format": "uri",
            "type": "string"
        }
    },
    "type": "object"
}

GET /{issuer}/endsession

RP-initiated logout endpoint

Input parameters

Parameter In Type Default Nullable Description
issuer path string No
post_logout_redirect_uri query string No
state query string No

Responses

"string"
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "format": "base64",
    "type": "string"
}

Response headers

Name Description Schema
Content-Type string
Location string

{
    "detail": "Property foo is required but is missing.",
    "errors": [
        {
            "location": "string",
            "message": "string",
            "value": null
        }
    ],
    "instance": "https://example.com/error-log/abc123",
    "status": 400,
    "title": "Bad Request",
    "type": "https://example.com/errors/example"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "additionalProperties": false,
    "properties": {
        "detail": {
            "description": "A human-readable explanation specific to this occurrence of the problem.",
            "example": "Property foo is required but is missing.",
            "type": "string"
        },
        "errors": {
            "description": "Optional list of individual error details",
            "items": {
                "$ref": "#/components/schemas/ErrorDetail"
            },
            "nullable": true,
            "type": "array"
        },
        "instance": {
            "description": "A URI reference that identifies the specific occurrence of the problem.",
            "example": "https://example.com/error-log/abc123",
            "format": "uri",
            "type": "string"
        },
        "status": {
            "description": "HTTP status code",
            "example": 400,
            "format": "int64",
            "type": "integer"
        },
        "title": {
            "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
            "example": "Bad Request",
            "type": "string"
        },
        "type": {
            "default": "about:blank",
            "description": "A URI reference to human-readable documentation for the error.",
            "example": "https://example.com/errors/example",
            "format": "uri",
            "type": "string"
        }
    },
    "type": "object"
}

POST /{issuer}/endsession

RP-initiated logout endpoint

Input parameters

Parameter In Type Default Nullable Description
issuer path string No
post_logout_redirect_uri query string No
state query string No

Responses

"string"
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "format": "base64",
    "type": "string"
}

Response headers

Name Description Schema
Content-Type string
Location string

{
    "detail": "Property foo is required but is missing.",
    "errors": [
        {
            "location": "string",
            "message": "string",
            "value": null
        }
    ],
    "instance": "https://example.com/error-log/abc123",
    "status": 400,
    "title": "Bad Request",
    "type": "https://example.com/errors/example"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "additionalProperties": false,
    "properties": {
        "detail": {
            "description": "A human-readable explanation specific to this occurrence of the problem.",
            "example": "Property foo is required but is missing.",
            "type": "string"
        },
        "errors": {
            "description": "Optional list of individual error details",
            "items": {
                "$ref": "#/components/schemas/ErrorDetail"
            },
            "nullable": true,
            "type": "array"
        },
        "instance": {
            "description": "A URI reference that identifies the specific occurrence of the problem.",
            "example": "https://example.com/error-log/abc123",
            "format": "uri",
            "type": "string"
        },
        "status": {
            "description": "HTTP status code",
            "example": 400,
            "format": "int64",
            "type": "integer"
        },
        "title": {
            "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
            "example": "Bad Request",
            "type": "string"
        },
        "type": {
            "default": "about:blank",
            "description": "A URI reference to human-readable documentation for the error.",
            "example": "https://example.com/errors/example",
            "format": "uri",
            "type": "string"
        }
    },
    "type": "object"
}

GET /{issuer}/jwks

JSON Web Key Set

Input parameters

Parameter In Type Default Nullable Description
issuer path string No Issuer id; the first path segment.

Responses

{
    "keys": [
        {
            "alg": "string",
            "crv": "string",
            "e": "string",
            "kid": "string",
            "kty": "string",
            "n": "string",
            "use": "string",
            "x": "string",
            "y": "string"
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "additionalProperties": false,
    "properties": {
        "keys": {
            "items": {
                "$ref": "#/components/schemas/JWKDTO"
            },
            "nullable": true,
            "type": "array"
        }
    },
    "required": [
        "keys"
    ],
    "type": "object"
}

{
    "detail": "Property foo is required but is missing.",
    "errors": [
        {
            "location": "string",
            "message": "string",
            "value": null
        }
    ],
    "instance": "https://example.com/error-log/abc123",
    "status": 400,
    "title": "Bad Request",
    "type": "https://example.com/errors/example"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "additionalProperties": false,
    "properties": {
        "detail": {
            "description": "A human-readable explanation specific to this occurrence of the problem.",
            "example": "Property foo is required but is missing.",
            "type": "string"
        },
        "errors": {
            "description": "Optional list of individual error details",
            "items": {
                "$ref": "#/components/schemas/ErrorDetail"
            },
            "nullable": true,
            "type": "array"
        },
        "instance": {
            "description": "A URI reference that identifies the specific occurrence of the problem.",
            "example": "https://example.com/error-log/abc123",
            "format": "uri",
            "type": "string"
        },
        "status": {
            "description": "HTTP status code",
            "example": 400,
            "format": "int64",
            "type": "integer"
        },
        "title": {
            "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
            "example": "Bad Request",
            "type": "string"
        },
        "type": {
            "default": "about:blank",
            "description": "A URI reference to human-readable documentation for the error.",
            "example": "https://example.com/errors/example",
            "format": "uri",
            "type": "string"
        }
    },
    "type": "object"
}

GET /{issuer}/userinfo

OpenID Connect UserInfo endpoint

Input parameters

Parameter In Type Default Nullable Description
Authorization header string No
issuer path string No

Responses

Schema of the response body

Response headers

Name Description Schema
WWW-Authenticate string

{
    "detail": "Property foo is required but is missing.",
    "errors": [
        {
            "location": "string",
            "message": "string",
            "value": null
        }
    ],
    "instance": "https://example.com/error-log/abc123",
    "status": 400,
    "title": "Bad Request",
    "type": "https://example.com/errors/example"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "additionalProperties": false,
    "properties": {
        "detail": {
            "description": "A human-readable explanation specific to this occurrence of the problem.",
            "example": "Property foo is required but is missing.",
            "type": "string"
        },
        "errors": {
            "description": "Optional list of individual error details",
            "items": {
                "$ref": "#/components/schemas/ErrorDetail"
            },
            "nullable": true,
            "type": "array"
        },
        "instance": {
            "description": "A URI reference that identifies the specific occurrence of the problem.",
            "example": "https://example.com/error-log/abc123",
            "format": "uri",
            "type": "string"
        },
        "status": {
            "description": "HTTP status code",
            "example": 400,
            "format": "int64",
            "type": "integer"
        },
        "title": {
            "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
            "example": "Bad Request",
            "type": "string"
        },
        "type": {
            "default": "about:blank",
            "description": "A URI reference to human-readable documentation for the error.",
            "example": "https://example.com/errors/example",
            "format": "uri",
            "type": "string"
        }
    },
    "type": "object"
}

OAuth2


POST /{issuer}/introspect

OAuth2 token introspection endpoint

Input parameters

Parameter In Type Default Nullable Description
Authorization header string No
issuer path string No

Request body

{
    "token": "string",
    "token_type_hint": "string"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the request body
{
    "properties": {
        "token": {
            "type": "string"
        },
        "token_type_hint": {
            "type": "string"
        }
    },
    "type": "object"
}

Responses

{
    "active": true,
    "exp": 78,
    "iat": 173,
    "iss": "string",
    "jti": "string",
    "nbf": 173,
    "scope": "string",
    "sub": "string",
    "token_type": "string"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "additionalProperties": false,
    "properties": {
        "active": {
            "type": "boolean"
        },
        "exp": {
            "format": "int64",
            "type": "integer"
        },
        "iat": {
            "format": "int64",
            "type": "integer"
        },
        "iss": {
            "type": "string"
        },
        "jti": {
            "type": "string"
        },
        "nbf": {
            "format": "int64",
            "type": "integer"
        },
        "scope": {
            "type": "string"
        },
        "sub": {
            "type": "string"
        },
        "token_type": {
            "type": "string"
        }
    },
    "required": [
        "active"
    ],
    "type": "object"
}

{
    "detail": "Property foo is required but is missing.",
    "errors": [
        {
            "location": "string",
            "message": "string",
            "value": null
        }
    ],
    "instance": "https://example.com/error-log/abc123",
    "status": 400,
    "title": "Bad Request",
    "type": "https://example.com/errors/example"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "additionalProperties": false,
    "properties": {
        "detail": {
            "description": "A human-readable explanation specific to this occurrence of the problem.",
            "example": "Property foo is required but is missing.",
            "type": "string"
        },
        "errors": {
            "description": "Optional list of individual error details",
            "items": {
                "$ref": "#/components/schemas/ErrorDetail"
            },
            "nullable": true,
            "type": "array"
        },
        "instance": {
            "description": "A URI reference that identifies the specific occurrence of the problem.",
            "example": "https://example.com/error-log/abc123",
            "format": "uri",
            "type": "string"
        },
        "status": {
            "description": "HTTP status code",
            "example": 400,
            "format": "int64",
            "type": "integer"
        },
        "title": {
            "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
            "example": "Bad Request",
            "type": "string"
        },
        "type": {
            "default": "about:blank",
            "description": "A URI reference to human-readable documentation for the error.",
            "example": "https://example.com/errors/example",
            "format": "uri",
            "type": "string"
        }
    },
    "type": "object"
}

POST /{issuer}/revoke

OAuth2 token revocation endpoint

Input parameters

Parameter In Type Default Nullable Description
issuer path string No

Request body

{
    "token": "string",
    "token_type_hint": "string"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the request body
{
    "properties": {
        "token": {
            "type": "string"
        },
        "token_type_hint": {
            "type": "string"
        }
    },
    "type": "object"
}

Responses

Schema of the response body

Response headers

Name Description Schema
WWW-Authenticate string

{
    "detail": "Property foo is required but is missing.",
    "errors": [
        {
            "location": "string",
            "message": "string",
            "value": null
        }
    ],
    "instance": "https://example.com/error-log/abc123",
    "status": 400,
    "title": "Bad Request",
    "type": "https://example.com/errors/example"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "additionalProperties": false,
    "properties": {
        "detail": {
            "description": "A human-readable explanation specific to this occurrence of the problem.",
            "example": "Property foo is required but is missing.",
            "type": "string"
        },
        "errors": {
            "description": "Optional list of individual error details",
            "items": {
                "$ref": "#/components/schemas/ErrorDetail"
            },
            "nullable": true,
            "type": "array"
        },
        "instance": {
            "description": "A URI reference that identifies the specific occurrence of the problem.",
            "example": "https://example.com/error-log/abc123",
            "format": "uri",
            "type": "string"
        },
        "status": {
            "description": "HTTP status code",
            "example": 400,
            "format": "int64",
            "type": "integer"
        },
        "title": {
            "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
            "example": "Bad Request",
            "type": "string"
        },
        "type": {
            "default": "about:blank",
            "description": "A URI reference to human-readable documentation for the error.",
            "example": "https://example.com/errors/example",
            "format": "uri",
            "type": "string"
        }
    },
    "type": "object"
}

POST /{issuer}/token

OAuth2 token endpoint

Input parameters

Parameter In Type Default Nullable Description
Authorization header string No
issuer path string No

Request body

{
    "assertion": "string",
    "audience": "string",
    "client_assertion": "string",
    "client_assertion_type": "string",
    "client_id": "string",
    "client_secret": "string",
    "code": "string",
    "code_verifier": "string",
    "grant_type": "string",
    "password": "string",
    "redirect_uri": "string",
    "refresh_token": "string",
    "scope": "string",
    "subject_token": "string",
    "subject_token_type": "string",
    "username": "string"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the request body
{
    "properties": {
        "assertion": {
            "type": "string"
        },
        "audience": {
            "type": "string"
        },
        "client_assertion": {
            "type": "string"
        },
        "client_assertion_type": {
            "type": "string"
        },
        "client_id": {
            "type": "string"
        },
        "client_secret": {
            "type": "string"
        },
        "code": {
            "type": "string"
        },
        "code_verifier": {
            "type": "string"
        },
        "grant_type": {
            "type": "string"
        },
        "password": {
            "type": "string"
        },
        "redirect_uri": {
            "type": "string"
        },
        "refresh_token": {
            "type": "string"
        },
        "scope": {
            "type": "string"
        },
        "subject_token": {
            "type": "string"
        },
        "subject_token_type": {
            "type": "string"
        },
        "username": {
            "type": "string"
        }
    },
    "type": "object"
}

Responses

{
    "access_token": "string",
    "expires_in": 29,
    "id_token": "string",
    "issued_token_type": "string",
    "refresh_token": "string",
    "scope": "string",
    "token_type": "string"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "additionalProperties": false,
    "properties": {
        "access_token": {
            "type": "string"
        },
        "expires_in": {
            "format": "int64",
            "type": "integer"
        },
        "id_token": {
            "type": "string"
        },
        "issued_token_type": {
            "type": "string"
        },
        "refresh_token": {
            "type": "string"
        },
        "scope": {
            "type": "string"
        },
        "token_type": {
            "type": "string"
        }
    },
    "required": [
        "token_type",
        "access_token",
        "expires_in"
    ],
    "type": "object"
}

{
    "detail": "Property foo is required but is missing.",
    "errors": [
        {
            "location": "string",
            "message": "string",
            "value": null
        }
    ],
    "instance": "https://example.com/error-log/abc123",
    "status": 400,
    "title": "Bad Request",
    "type": "https://example.com/errors/example"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "additionalProperties": false,
    "properties": {
        "detail": {
            "description": "A human-readable explanation specific to this occurrence of the problem.",
            "example": "Property foo is required but is missing.",
            "type": "string"
        },
        "errors": {
            "description": "Optional list of individual error details",
            "items": {
                "$ref": "#/components/schemas/ErrorDetail"
            },
            "nullable": true,
            "type": "array"
        },
        "instance": {
            "description": "A URI reference that identifies the specific occurrence of the problem.",
            "example": "https://example.com/error-log/abc123",
            "format": "uri",
            "type": "string"
        },
        "status": {
            "description": "HTTP status code",
            "example": 400,
            "format": "int64",
            "type": "integer"
        },
        "title": {
            "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
            "example": "Bad Request",
            "type": "string"
        },
        "type": {
            "default": "about:blank",
            "description": "A URI reference to human-readable documentation for the error.",
            "example": "https://example.com/errors/example",
            "format": "uri",
            "type": "string"
        }
    },
    "type": "object"
}

Schemas

AdvanceClockInputBody

Name Type Description
duration string Go duration, e.g. '90s', '5m', '1h'. Advances (and freezes) the clock.

CapturedRequestDTO

Name Type Description
body string Best-effort UTF-8 decode of the body, for convenience.
bodyBase64 string Raw body bytes, base64 (exact order).
headers
id string
issuer string
method string
path string
query
receivedAt string(date-time)
url string

ClearRequestsOutputBody

Name Type Description
cleared boolean

ClearScenariosOutputBody

Name Type Description
queueDepth integer(int64)

ClockStateDTO

Name Type Description
frozen boolean
now string(date-time)

EnqueueScenarioOutputBody

Name Type Description
queueDepth integer(int64)
scenarioId string

ErrorDetail

Name Type Description
location string Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'
message string Error message text
value The value at the given location

ErrorModel

Name Type Description
detail string A human-readable explanation specific to this occurrence of the problem.
errors Array<ErrorDetail> Optional list of individual error details
instance string(uri) A URI reference that identifies the specific occurrence of the problem.
status integer(int64) HTTP status code
title string A short, human-readable summary of the problem type. This value should not change between occurrences of the error.
type string(uri) A URI reference to human-readable documentation for the error.

JWKDTO

Name Type Description
alg string
crv string
e string
kid string
kty string
n string
use string
x string
y string

ListRequestsOutputBody

Name Type Description
count integer(int64)
requests Array<CapturedRequestDTO>

ListScenariosOutputBody

Name Type Description
queueDepth integer(int64)
scenarios Array<ScenarioSummaryDTO>

MintRequestDTO

Name Type Description
audience Array<string> aud claim. Omitted -> no audience is stamped.
claims Additional/overriding claims.
clientId string
expirySeconds integer(int64)
issuer string Issuer id (first segment); '_mock' reserved.
issuerUrl string Override iss with an arbitrary URL (anyToken).
kind string
scope Array<string>
subject string sub claim; defaults to a random UUID.
typ string JWS typ header (open JOSEType; at+jwt accepted).

MintTokenOutputBody

Name Type Description
algorithm string
claims Decoded claim set (convenience).
expiresAt string(date-time)
issuer string Resolved iss.
kid string
token string Compact signed JWT.

RequestMappingDTO

Name Type Description
claims ${...}-templated claims applied when this mapping matches.
match string '*' (any present value), an exact string, or a full-match regex.
param string Form/synthetic param name to test (e.g. client_id, scope, subject).
typeHeader string Overrides the JWS typ when this mapping matches.

ResetOutputBody

Name Type Description
reset boolean

ScenarioDTO

Name Type Description
audience Array<string>
claims
expirySeconds integer(int64)
issuer string
requestMappings Array<RequestMappingDTO>
subject string
typ string

ScenarioSummaryDTO

Name Type Description
issuer string
kind string 'default' or 'requestMapping'.

SetClockInputBody

Name Type Description
frozen boolean
instant string(date-time) Required when frozen=true; the fixed 'now'.

TakeRequestInputBody

Name Type Description
endpoint string
issuer string
timeoutMs integer(int64) Max time to wait for a matching request.

Security schemes

Name Type Scheme Description
oauth2 oauth2
openIdConnect openIdConnect

Tags

Name Description
Mock Control Test-time control plane (mock-oidc). Direct token mint, one-shot scenario enqueue, captured-request inspection, and clock control. Test-only; disabled by --control-enabled=false.