Skip to main content

Mandaitor Delegation Mandate Registry API (1.0.0)

Download OpenAPI specification:Download

Mandaitor API Support: api@mandaitor.io License: Proprietary

Neutral, trustworthy infrastructure for verifiable delegated authority between humans and AI agents.

Admin

Admin-only operations

List onboarding access requests (admin only)

Lists onboarding access requests. Supports optional status filtering (PENDING, APPROVED, REJECTED) and cursor-based pagination. Requires Cognito JWT with mandaitor-admins group membership.

Authorizations:
BearerAuth
query Parameters
status
string
Enum: "PENDING" "APPROVED" "REJECTED"

Filter by request status

limit
integer [ 1 .. 200 ]
Default: 50
cursor
string

Base64url-encoded pagination cursor

Responses

Response samples

Content type
application/json
{
  • "requests": [
    ],
  • "next_cursor": "string"
}

Approve or reject an access request

Processes an admin action on an onboarding request. Supported values for {action}: approve, reject.

Authorizations:
ApiKeyAuthBearerAuth
path Parameters
requestId
required
string
action
required
string
Enum: "approve" "reject"
Request Body schema: application/json
notes
string

Responses

Request samples

Content type
application/json
{
  • "notes": "string"
}

Response samples

Content type
application/json
{
  • "tenant_id": "string",
  • "company_name": "string",
  • "plan": "string",
  • "status": "ACTIVE",
  • "created_at": "2019-08-24T14:15:22Z",
  • "api_keys": [
    ]
}

Emergency kill-switch — revoke all tenant mandates

EMERGENCY OPERATION — Immediately revokes all ACTIVE and SUSPENDED mandates for a tenant. This is an irreversible bulk operation intended for security incidents, compliance breaches, or contract terminations.

Requires Cognito JWT with mandaitor-admins group membership. A MANDATE_REVOKED audit event is emitted per mandate with details.kill_switch_triggered = true.

Authorizations:
BearerAuth
path Parameters
id
required
string
Example: tnt_ABC123
Request Body schema: application/json
required
reason
required
string

Mandatory reason for the emergency kill-switch

Responses

Request samples

Content type
application/json
{
  • "reason": "Security incident — unauthorized access detected"
}

Response samples

Content type
application/json
{
  • "tenant_id": "string",
  • "revoked_count": 0,
  • "skipped_count": 0,
  • "execution_id": "string",
  • "timestamp": "2019-08-24T14:15:22Z"
}

Get current system operational mode

Returns the current system mode (growth, sustain, maintenance, frozen) and associated metadata. Requires Cognito JWT with mandaitor-admins group membership.

Authorizations:
BearerAuth

Responses

Response samples

Content type
application/json
{
  • "mode": "growth",
  • "reason": "Default operational mode",
  • "changed_at": "2019-08-24T14:15:22Z",
  • "changed_by": "string",
  • "estimated_duration_minutes": 0
}

Set system operational mode

Changes the system operational mode. This immediately affects all API endpoints:

  • growth — Normal operation. All features active.
  • sustain — Normal operation. No new features (policy only).
  • maintenance — All authenticated endpoints return 503.
  • frozen — Write endpoints return 503. Reads still work.

Mode changes propagate within ~10 seconds via in-memory cache TTL. Requires Cognito JWT with mandaitor-admins group membership.

Authorizations:
BearerAuth
Request Body schema: application/json
required
mode
required
string
Enum: "growth" "sustain" "maintenance" "frozen"
reason
string
estimated_duration_minutes
integer

Responses

Request samples

Content type
application/json
{
  • "mode": "maintenance",
  • "reason": "CDK stack update — estimated 30 minutes",
  • "estimated_duration_minutes": 30
}

Response samples

Content type
application/json
{
  • "mode": "growth",
  • "reason": "Default operational mode",
  • "changed_at": "2019-08-24T14:15:22Z",
  • "changed_by": "string",
  • "estimated_duration_minutes": 0
}

EUDI Wallet

eIDAS 2.0 EUDI Wallet identity verification (OpenID4VP)

Initiate EUDI Wallet verification session

Creates a new OpenID4VP session for EUDI Wallet identity verification. Returns a QR code URI (cross-device) and deep link URI (same-device) that the user scans/opens with their EUDI Wallet.

Authorizations:
ApiKeyAuthBearerAuth
Request Body schema: application/json
optional
presentation_definition_id
string
Default: "mandaitor-pid-standard"
Enum: "mandaitor-pid-minimal" "mandaitor-pid-standard" "mandaitor-pid-delegation"

ID of the presentation definition to use

Responses

Request samples

Content type
application/json
{
  • "presentation_definition_id": "mandaitor-pid-minimal"
}

Response samples

Content type
application/json
{
  • "session_id": "eudi_01HXYZ...",
  • "status": "PENDING",
  • "request_uri": "http://example.com",
  • "qr_code_uri": "string",
  • "deep_link_uri": "string",
  • "expires_at": "2019-08-24T14:15:22Z"
}

Poll EUDI session status

Polls the status of an EUDI Wallet verification session. Returns the resolved identity when the session is completed.

Authorizations:
ApiKeyAuthBearerAuth
path Parameters
sessionId
required
string

Responses

Response samples

Content type
application/json
{
  • "session_id": "string",
  • "status": "PENDING",
  • "created_at": "2019-08-24T14:15:22Z",
  • "presentation_definition_id": "string",
  • "resolved_identity": {
    },
  • "verified_at": "2019-08-24T14:15:22Z",
  • "errors": [
    ]
}

Receive VP Token from EUDI Wallet

Receives the VP Token from the EUDI Wallet via direct_post response mode. This endpoint is called by the wallet after user consent. No authentication required as the wallet POSTs directly.

path Parameters
sessionId
required
string
Request Body schema:
required
vp_token
required
string

The VP Token (SD-JWT VC compact serialization)

presentation_submission
object

DIF Presentation Submission mapping

Responses

Request samples

Content type
{
  • "vp_token": "string",
  • "presentation_submission": { }
}

Response samples

Content type
application/json
{
  • "status": "COMPLETED",
  • "session_id": "string"
}

Serve OpenID4VP Authorization Request Object

Serves the signed JWT Authorization Request Object that the EUDI Wallet fetches after scanning the QR code. Returns the JWT directly with content type application/oauth-authz-req+jwt.

path Parameters
requestId
required
string

Responses

Response samples

Content type
application/json
{
  • "error": "BAD_REQUEST",
  • "message": "principal and delegate are required"
}

Events

Immutable audit trail

Get audit events for a mandate

Returns a paginated list of audit events for a specific mandate. Events form an immutable, hash-chained audit trail.

Authorizations:
ApiKeyAuthBearerAuth
path Parameters
id
required
string
Example: mdt_01HXYZ...
query Parameters
limit
integer [ 1 .. 200 ]
Default: 50
cursor
string

Base64url-encoded pagination cursor

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "next_cursor": "string"
}

Query all events for the tenant

Queries all audit events for the authenticated tenant, filtered by mandate_id. Supports optional event_type filtering and cursor-based pagination.

Authorizations:
ApiKeyAuthBearerAuth
query Parameters
mandate_id
required
string

Mandate ID to filter events by

event_type
string
Enum: "MANDATE_CREATED" "MANDATE_SUSPENDED" "MANDATE_REACTIVATED" "MANDATE_REVOKED" "VERIFICATION_ALLOWED" "VERIFICATION_DENIED" "ESCALATION_TRIGGERED"
limit
integer [ 1 .. 200 ]
Default: 50
cursor
string

Base64url-encoded pagination cursor

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "next_cursor": "string"
}

Get a specific event by ID

Retrieves a single audit event by its ID. Requires the mandate_id query parameter to locate the event in the partition.

Authorizations:
ApiKeyAuthBearerAuth
path Parameters
id
required
string
Example: evt_01HXYZ...
query Parameters
mandate_id
required
string

Mandate ID the event belongs to

Responses

Response samples

Content type
application/json
{
  • "event_id": "string",
  • "tenant_id": "string",
  • "mandate_id": "string",
  • "event_type": "MANDATE_CREATED",
  • "timestamp": "2019-08-24T14:15:22Z",
  • "actor": {
    },
  • "details": { },
  • "previous_event_hash": "string",
  • "event_hash": "string",
  • "kms_signature": "string",
  • "hash_algorithm": "SHA_256",
  • "signing_algorithm": "RSASSA_PSS_SHA_256"
}

Evidence

Export a court-ready evidence pack

Exports a comprehensive, court-ready evidence pack for a mandate containing:

  • Mandate snapshot at export time
  • Hash-chained audit event log
  • SD-JWT proof tokens from verification events
  • Case log hash (SHA-256 fingerprint over canonical event chain)
  • Issuer DID document reference for independent verification

The case_log_hash is a deterministic SHA-256 digest computed over the canonical JSON representation of the event chain, enabling tamper detection.

The schema_version field allows forward-compatible evolution of the pack format.

Authorizations:
ApiKeyAuthBearerAuth
path Parameters
id
required
string
Example: mdt_01HXYZ...
query Parameters
event_id
string

Scope the evidence pack to a specific verification event

Responses

Response samples

Content type
application/json
{
  • "schema_version": "1.1.0",
  • "export_timestamp": "2019-08-24T14:15:22Z",
  • "tenant_id": "string",
  • "mandate_id": "string",
  • "mandate_snapshot": { },
  • "event_chain": [
    ],
  • "event_count": 0,
  • "case_log_hash": "string",
  • "chain_integrity": {
    },
  • "issuer": {},
  • "proof_tokens": [
    ],
  • "crypto_metadata": {
    },
  • "metadata": {
    }
}

Identity

Identity provider configuration, token exchange, and SCIM provisioning

Get tenant identity provider configuration

Authorizations:
ApiKeyAuthBearerAuth
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "tenant_id": "string",
  • "identity_providers": {
    }
}

Update tenant identity provider configuration

Authorizations:
ApiKeyAuthBearerAuth
path Parameters
id
required
string
Request Body schema: application/json
required
enabled_providers
required
Array of strings
Items Enum: "API_KEY" "COGNITO" "EUDI_WALLET" "AUTH0" "OKTA" "ENTRA_ID" "GOOGLE" "AWS_IAM_IDC" "GENERIC_OIDC"
object
object
object
object
object
object
object

Responses

Request samples

Content type
application/json
{
  • "enabled_providers": [
    ],
  • "auth0": {
    },
  • "okta": {},
  • "entra": {
    },
  • "eudi": {
    },
  • "google": {
    },
  • "aws_iam_idc": {},
  • "generic_oidc": {}
}

Response samples

Content type
application/json
{
  • "tenant_id": "string",
  • "identity_providers": {
    }
}

OAuth 2.0 Token Exchange for delegation chains

Exchange a user's access token for a scoped delegation token. Implements RFC 8693 Token Exchange for On-Behalf-Of (OBO) flows where AI agents act on behalf of authenticated users.

Authorizations:
ApiKeyAuthBearerAuth
Request Body schema: application/json
required
subject_token
required
string

The original user's access token

subject_token_type
string
Default: "urn:ietf:params:oauth:token-type:access_token"
mandate_id
required
string

Mandate ID that authorizes the delegation

scope
string
audience
string

Responses

Request samples

Content type
application/json
{
  • "subject_token": "string",
  • "subject_token_type": "urn:ietf:params:oauth:token-type:access_token",
  • "mandate_id": "string",
  • "scope": "string",
  • "audience": "string"
}

Response samples

Content type
application/json
{
  • "access_token": "string",
  • "token_type": "Bearer",
  • "expires_in": 3600,
  • "scope": "string",
  • "issued_token_type": "string",
  • "delegation": {
    }
}

Mandates

Core mandate lifecycle operations

Create a new mandate

Creates a new delegation mandate between a principal and a delegate. The mandate defines the scope of delegated authority, optional constraints, and an expiration date. A KMS-signed audit event is emitted on success.

Authorizations:
ApiKeyAuthBearerAuth
Request Body schema: application/json
required
required
object (Subject)

Represents an entity (human, AI agent, service, or organization) that participates in a mandate as either principal or delegate.

required
object (Subject)

Represents an entity (human, AI agent, service, or organization) that participates in a mandate as either principal or delegate.

required
object (Scope)

Defines the actions, resources, and effect (ALLOW/DENY) that a mandate authorizes, with optional conditions.

object (Constraints)

Optional restrictions on mandate usage including time windows, geographic fencing, MFA requirements, IP whitelisting, and escalation rules.

metadata
object
expires_at
string <date-time>
taxonomy_id
string

Taxonomy identifier to validate the mandate scope against (e.g., "construction", "realestate", "venture").

taxonomy_version
string^[a-z][a-z0-9-]*(@\d+\.\d+\.\d+(-[a-z0-9.]+)?...

Versioned taxonomy reference. Accepts either a plain ID (uses latest version) or id@semver format (validates exact version match).

require_approval
boolean
Default: false

When true, the mandate starts in PENDING_APPROVAL status and requires explicit approval before becoming ACTIVE.

Responses

Request samples

Content type
application/json
{
  • "principal": {
    },
  • "delegate": {
    },
  • "scope": {
    },
  • "constraints": {
    },
  • "metadata": { },
  • "expires_at": "2019-08-24T14:15:22Z",
  • "taxonomy_id": "construction",
  • "taxonomy_version": "construction@2.0.0",
  • "require_approval": false
}

Response samples

Content type
application/json
{
  • "mandate_id": "mdt_01HXYZ...",
  • "tenant_id": "string",
  • "version": 0,
  • "status": "DRAFT",
  • "principal": {
    },
  • "delegate": {
    },
  • "scope": {
    },
  • "constraints": {
    },
  • "proof": {
    },
  • "metadata": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "expires_at": "2019-08-24T14:15:22Z"
}

List mandates (paginated)

Returns a paginated list of mandates for the authenticated tenant. Supports optional filtering by status and cursor-based pagination.

Authorizations:
ApiKeyAuthBearerAuth
query Parameters
status
string
Enum: "DRAFT" "ACTIVE" "SUSPENDED" "REVOKED" "EXPIRED"
limit
integer [ 1 .. 200 ]
Default: 50
cursor
string

Base64url-encoded pagination cursor

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "next_cursor": "string"
}

Get mandate by ID

Retrieves a single mandate by its ID. Returns the full mandate record including principal, delegate, scope, constraints, and proof metadata.

Authorizations:
ApiKeyAuthBearerAuth
path Parameters
id
required
string
Example: mdt_01HXYZ...

Responses

Response samples

Content type
application/json
{
  • "mandate_id": "mdt_01HXYZ...",
  • "tenant_id": "string",
  • "version": 0,
  • "status": "DRAFT",
  • "principal": {
    },
  • "delegate": {
    },
  • "scope": {
    },
  • "constraints": {
    },
  • "proof": {
    },
  • "metadata": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "expires_at": "2019-08-24T14:15:22Z"
}

Revoke a mandate

Permanently revokes a mandate. Only active or suspended mandates can be revoked. An optional reason can be provided. A KMS-signed audit event is emitted.

Authorizations:
ApiKeyAuthBearerAuth
path Parameters
id
required
string
Example: mdt_01HXYZ...
Request Body schema: application/json
reason
string

Responses

Request samples

Content type
application/json
{
  • "reason": "Contract terminated"
}

Response samples

Content type
application/json
{
  • "mandate_id": "string",
  • "status": "string",
  • "updated_at": "2019-08-24T14:15:22Z"
}

Suspend a mandate

Temporarily suspends an active mandate. Suspended mandates can be reactivated later. An optional reason can be provided.

Authorizations:
ApiKeyAuthBearerAuth
path Parameters
id
required
string
Example: mdt_01HXYZ...
Request Body schema: application/json
reason
string

Responses

Request samples

Content type
application/json
{
  • "reason": "Under review"
}

Response samples

Content type
application/json
{
  • "mandate_id": "string",
  • "status": "string",
  • "updated_at": "2019-08-24T14:15:22Z"
}

Reactivate a suspended mandate

Reactivates a previously suspended mandate, returning it to ACTIVE status. Only mandates in SUSPENDED state can be reactivated.

Authorizations:
ApiKeyAuthBearerAuth
path Parameters
id
required
string
Example: mdt_01HXYZ...

Responses

Response samples

Content type
application/json
{
  • "mandate_id": "string",
  • "status": "string",
  • "updated_at": "2019-08-24T14:15:22Z"
}

Approve a pending mandate

Approves a mandate that is in PENDING_APPROVAL state, transitioning it to ACTIVE. Only mandates created with require_approval: true enter this state. An audit event (MANDATE_APPROVED) is emitted.

Authorizations:
ApiKeyAuthBearerAuth
path Parameters
id
required
string
Example: mdt_01HXYZ...
Request Body schema: application/json
reason
string

Optional reason/notes for the approval

Responses

Request samples

Content type
application/json
{
  • "reason": "string"
}

Response samples

Content type
application/json
{
  • "mandate_id": "string",
  • "status": "string",
  • "updated_at": "2019-08-24T14:15:22Z"
}

Reject a pending mandate

Rejects a mandate that is in PENDING_APPROVAL state, transitioning it to REVOKED. An audit event (MANDATE_REJECTED) is emitted.

Authorizations:
ApiKeyAuthBearerAuth
path Parameters
id
required
string
Example: mdt_01HXYZ...
Request Body schema: application/json
reason
string

Reason for rejection

Responses

Request samples

Content type
application/json
{
  • "reason": "string"
}

Response samples

Content type
application/json
{
  • "mandate_id": "string",
  • "status": "string",
  • "updated_at": "2019-08-24T14:15:22Z"
}

Onboarding

Tenant access request and activation

Submit an access request (no auth required)

Submits a new tenant access request. No authentication required. The request enters PENDING state and must be approved by an admin.

Request Body schema: application/json
required
company_name
required
string
contact_name
string
contact_email
required
string <email>
use_case
required
string
industry
string
Enum: "construction" "real_estate" "venture_capital" "other"
website
string <uri>

Responses

Request samples

Content type
application/json
{
  • "company_name": "monco GmbH",
  • "contact_name": "Max Mustermann",
  • "contact_email": "max@monco.ai",
  • "use_case": "AI agent delegation for construction validation",
  • "industry": "construction",
  • "website": "http://example.com"
}

Response samples

Content type
application/json
{
  • "request_id": "string",
  • "status": "PENDING",
  • "message": "string"
}

Generate a new API key for the tenant

Generates a new API key for a tenant. The raw key is returned only once in the response and cannot be retrieved again. Requires Cognito JWT.

Authorizations:
ApiKeyAuthBearerAuth
path Parameters
id
required
string
Request Body schema: application/json
name
string
scopes
Array of strings

Responses

Request samples

Content type
application/json
{
  • "name": "production-key",
  • "scopes": [
    ]
}

Response samples

Content type
application/json
{
  • "key_id": "string",
  • "api_key": "string",
  • "name": "string",
  • "scopes": [
    ],
  • "created_at": "2019-08-24T14:15:22Z"
}

Public

Unauthenticated public endpoints

Health/status check

Returns service health status. No sensitive data is exposed. Suitable for monitoring, load balancers, and Trust Center embedding.

Responses

Response samples

Content type
application/json
{
  • "status": "ok",
  • "timestamp": "2019-08-24T14:15:22Z",
  • "version": "1.2.3-beta.1",
  • "stage": "prod"
}

Resolve the Mandaitor issuer DID document

Returns the W3C DID Document for the Mandaitor issuer DID (did:web:api.mandaitor.io). Contains the public key used to verify Proof-of-Mandate SD-JWT VCs.

Responses

Response samples

Content type
application/did+json
{
  • "@context": [
    ],
  • "id": "did:web:api.mandaitor.io",
  • "verificationMethod": [
    ],
  • "authentication": [
    ],
  • "assertionMethod": [
    ],
  • "service": [
    ]
}

Public trust signals for machine-readable trust metadata

Returns machine-readable trust metadata including region, partition, issuer DID, data residency claims, and supported open standards. Unauthenticated and cache-friendly (5-minute client, 10-minute CDN).

Responses

Response samples

Content type
application/json
{
  • "schema_version": "1.0.0",
  • "region": "eusc-de-east-1",
  • "partition": "aws-eusc",
  • "issuer_did": "did:web:api.mandaitor.io",
  • "data_residency": {
    },
  • "open_standards": [
    ],
  • "build_version": "string",
  • "stage": "string",
  • "timestamp": "2019-08-24T14:15:22Z"
}

Submit an access request (no auth required)

Submits a new tenant access request. No authentication required. The request enters PENDING state and must be approved by an admin.

Request Body schema: application/json
required
company_name
required
string
contact_name
string
contact_email
required
string <email>
use_case
required
string
industry
string
Enum: "construction" "real_estate" "venture_capital" "other"
website
string <uri>

Responses

Request samples

Content type
application/json
{
  • "company_name": "monco GmbH",
  • "contact_name": "Max Mustermann",
  • "contact_email": "max@monco.ai",
  • "use_case": "AI agent delegation for construction validation",
  • "industry": "construction",
  • "website": "http://example.com"
}

Response samples

Content type
application/json
{
  • "request_id": "string",
  • "status": "PENDING",
  • "message": "string"
}

Public widget config for embed (no auth)

Returns the public-safe widget configuration for embedding. No authentication required. Sensitive fields (secrets, internal IDs) are stripped from the response.

path Parameters
widgetId
required
string

Responses

Response samples

Content type
application/json
{
  • "widget_id": "string",
  • "tenant_name": "string",
  • "branding": { },
  • "enabled_idps": [
    ],
  • "taxonomy_libraries": [
    ]
}

SCIM

SCIM 2.0 user provisioning (Okta/Entra ID lifecycle management)

List provisioned users

Authorizations:
ApiKeyAuthBearerAuth
query Parameters
startIndex
integer
Default: 1
count
integer
Default: 100

Responses

Response samples

Content type
application/scim+json
{ }

Provision a new user

Authorizations:
ApiKeyAuthBearerAuth
Request Body schema: application/scim+json
required
object

Responses

Request samples

Content type
application/scim+json
{ }

Response samples

Content type
application/scim+json
{ }

Get a provisioned user

Authorizations:
ApiKeyAuthBearerAuth
path Parameters
userId
required
string

Responses

Response samples

Content type
application/json
{
  • "error": "BAD_REQUEST",
  • "message": "principal and delegate are required"
}

Replace a user

Authorizations:
ApiKeyAuthBearerAuth
path Parameters
userId
required
string
Request Body schema: application/scim+json
required
object

Responses

Request samples

Content type
application/scim+json
{ }

Response samples

Content type
application/json
{
  • "error": "BAD_REQUEST",
  • "message": "principal and delegate are required"
}

Partially update a user

Authorizations:
ApiKeyAuthBearerAuth
path Parameters
userId
required
string
Request Body schema: application/scim+json
required
object

Responses

Request samples

Content type
application/scim+json
{ }

Response samples

Content type
application/json
{
  • "error": "BAD_REQUEST",
  • "message": "principal and delegate are required"
}

Deprovision a user (revokes all mandates)

Authorizations:
ApiKeyAuthBearerAuth
path Parameters
userId
required
string

Responses

Response samples

Content type
application/json
{
  • "error": "BAD_REQUEST",
  • "message": "principal and delegate are required"
}

Verification

Real-time action authorization

Verify if an action is authorized by a mandate

Performance-critical endpoint. Target: < 50ms p99 latency (without PoM), < 200ms p99 (with PoM). Returns ALLOW or DENY with optional escalation metadata and an optional Proof-of-Mandate Verifiable Credential.

Authorizations:
ApiKeyAuthBearerAuth
query Parameters
pom
string
Value: "sd-jwt-vc"

Request a Proof-of-Mandate Verifiable Credential in the response. The VC is an SD-JWT signed by the Mandaitor issuer DID.

Request Body schema: application/json
required
delegate_subject_id
string

Canonical field. Subject ID of the delegate to verify.

agent_id
string
Deprecated

Deprecated legacy alias for delegate_subject_id. Use delegate_subject_id for new integrations.

action
required
string
resource
required
string
context
object

Additional context for constraint evaluation. When a mandate has require_mfa: true, the caller must supply MFA proof via one of:

  • amr (array of strings) — must include "mfa"
  • loa (string) — must be "SUBSTANTIAL" or "HIGH"
  • mfa_timestamp (string, ISO 8601) — timestamp of last MFA verification

Responses

Request samples

Content type
application/json
{
  • "delegate_subject_id": "monco:agent:validate-agent-v2",
  • "agent_id": "monco:agent:validate-agent-v2",
  • "action": "construction.validation.approve",
  • "resource": "monco:project:proj_ABC123/zone:EG/installation:stk_42",
  • "context": { }
}

Response samples

Content type
application/json
{
  • "decision": "ALLOW",
  • "mandate_id": "string",
  • "event_id": "string",
  • "reason_codes": [
    ],
  • "constraints_remaining": { },
  • "proof_of_mandate": {
    },
  • "proof_token": "string"
}

Widget Config

Tenant widget configuration

Get tenant widget configuration

Retrieves the widget configuration for a tenant. Returns the latest version by default, or a specific version if the version query parameter is provided.

Authorizations:
ApiKeyAuthBearerAuth
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "tenant_id": "string",
  • "widget_id": "string",
  • "identity_providers": [
    ],
  • "taxonomy_libraries": [
    ],
  • "mandate_templates": [
    ],
  • "branding": {
    },
  • "approval_workflow": {
    },
  • "webhook_url": "http://example.com",
  • "updated_at": "2019-08-24T14:15:22Z"
}

Update tenant widget configuration

Updates the widget configuration for a tenant. Creates a new versioned record. IdP credentials are stored in AWS Secrets Manager.

Authorizations:
ApiKeyAuthBearerAuth
path Parameters
id
required
string
Request Body schema: application/json
required
identity_providers
Array of objects
taxonomy_libraries
Array of strings
mandate_templates
Array of objects
branding
object
approval_workflow
object
webhook_url
string <uri>

Responses

Request samples

Content type
application/json
{
  • "identity_providers": [
    ],
  • "taxonomy_libraries": [
    ],
  • "mandate_templates": [
    ],
  • "branding": { },
  • "approval_workflow": { },
  • "webhook_url": "http://example.com"
}

Response samples

Content type
application/json
{
  • "tenant_id": "string",
  • "widget_id": "string",
  • "identity_providers": [
    ],
  • "taxonomy_libraries": [
    ],
  • "mandate_templates": [
    ],
  • "branding": {
    },
  • "approval_workflow": {
    },
  • "webhook_url": "http://example.com",
  • "updated_at": "2019-08-24T14:15:22Z"
}

Validate an IdP connection

Validates an Identity Provider configuration by attempting a client credentials flow against the specified provider (Entra ID, Auth0, Okta, or eIDAS).

Alias support: Accepts both provider (canonical) and idpType (legacy). If both are present, provider takes precedence.

Authorizations:
ApiKeyAuthBearerAuth
path Parameters
id
required
string
Request Body schema: application/json
required
provider
string
Enum: "eidas_eudi" "entra_id" "auth0" "okta"

Canonical field. The IdP type to validate.

idpType
string
Deprecated

Deprecated legacy alias for provider.

config
required
object

Responses

Request samples

Content type
application/json
{
  • "provider": "eidas_eudi",
  • "idpType": "string",
  • "config": { }
}

Response samples

Content type
application/json
{
  • "results": {
    }
}

List widget configuration versions

Returns a paginated list of all configuration versions for the tenant, sorted by version number descending (newest first). Each entry contains version metadata (not the full configuration body).

Authorizations:
BearerAuth
path Parameters
id
required
string
query Parameters
limit
integer <= 100
Default: 20
cursor
string

Responses

Response samples

Content type
application/json
{
  • "versions": [
    ],
  • "next_cursor": "string"
}

Rollback widget configuration to a previous version

Rolls back the widget configuration to a previous version by creating a new version that is a copy of the target version. This preserves the full version history for audit purposes — no versions are deleted.

The new version includes a rollbackFrom field indicating which version it was copied from.

Authorizations:
BearerAuth
path Parameters
id
required
string
Request Body schema: application/json
required
version
required
integer >= 1

The version number to roll back to

Responses

Request samples

Content type
application/json
{
  • "version": 1
}

Response samples

Content type
application/json
{
  • "message": "string",
  • "version": 0,
  • "rollbackFrom": 0,
  • "widgetId": "string"
}