Laurel · Agentic Access

Laurel Agentic Access

x-agentic-access generated

Laurel exposes 364 API operations that an AI agent could call, of which 225 are state-changing ‘acting’ operations. This is a recommended x-agentic-access execution contract — the scope, audience, consequence tier, short-lived token constraints, and escalation each action should carry before it is handed to an autonomous agent.

By consequence: 139 read, 216 write, and 9 safety-critical.

9 operations are classed safety-critical and should require human-in-the-loop approval at runtime.

Contracts are classified heuristically from the provider’s OpenAPI and refresh on every APIs.io network build; audience is bound per deployment. The model follows Curity’s Access Intelligence (apidays Munich 2026). Browse every provider’s agent contracts at agentic-access.apis.io.

CompanyAiTimekeepingTime TrackingLegalLegal TechAccountingProfessional ServicesBillingPractice ManagementWork IntelligenceAnalytics
Operations: 364 Acting: 225 Human-in-the-loop: 9 Method: generated

By consequence

read 139 write 216 safety-critical 9

Highest-consequence actions

The physical and safety-critical operations an agent could invoke — the ones that most warrant scoped tokens, tight TTLs, and escalation. Full per-operation contracts are in the source below.

MethodPathConsequenceHuman-in-loop
POST /api/v1/customers/{customerId}/clients/override-compliance-rules safety-critical required
POST /api/v1/customers/{customerId}/clients/override-compliance-rules/affected-count safety-critical required
PATCH /api/v1/customers/{customerId}/connections/{connectionId}/scim safety-critical required
PATCH /api/v1/customers/{customerId}/users/{userId}/entries/{entryId}/override safety-critical required
POST /api/v1/entries/{entryId}/dismiss-autostop safety-critical required
PATCH /api/v1/public/customers/{customerId}/users/{userId}/entries/{entryId}/override safety-critical required
PATCH /api/v2/customers/{customerId}/users/{userId}/entries/{entryExternalId}/override safety-critical required
POST /api/v2/timers/{timerId}/stop safety-critical required
POST /api/v3/timers/stop safety-critical required

Source

Agentic Access

Raw ↑
generated: '2026-07-19'
method: generated
source: openapi/laurel-identity-openapi-original.json, openapi/laurel-ingestion-openapi-original.json,
  openapi/laurel-time-openapi-original.json
description: Recommended x-agentic-access execution contracts, classified heuristically from the OpenAPI.
  A governance starting point for exposing this API to AI agents — review and bind audience per deployment.
  See research/curity/agentic-governance/.
notes: Classified with word-boundary matching after stripping the NestJS "Controller" token from operationIds;
  plain substring matching mis-reads "...Controller_create" as the safety keyword "control".
summary:
  operations: 364
  by_action_class:
    acting: 225
    connected: 139
  by_consequence:
    read: 139
    safety-critical: 9
    write: 216
  human_in_the_loop_required: 9
operations:
- path: /api/v1/tenants
  method: post
  operationId: TenantController_create_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/v1/tenants
  method: get
  operationId: TenantController_getAll_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/tenants/{tenantId}
  method: get
  operationId: TenantController_get_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/tenants/{tenantId}
  method: patch
  operationId: TenantController_updateOneById_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/v1/permissions
  method: get
  operationId: PermissionController_getAll_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/permissions/{permissionId}
  method: get
  operationId: PermissionController_getOne_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/ably/auth
  method: get
  operationId: AblyController_auth_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/clients/on-credentials-exchange
  method: post
  operationId: ClientController_onCredentialsExchange_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/v1/clients
  method: post
  operationId: ClientController_create_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/v1/clients
  method: get
  operationId: ClientController_getAll_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/clients/{clientId}
  method: get
  operationId: ClientController_get_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/clients/{clientId}
  method: patch
  operationId: ClientController_update_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/v1/clients/{clientId}
  method: delete
  operationId: ClientController_delete_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/v1/customers
  method: post
  operationId: CustomerController_create_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/v1/customers
  method: get
  operationId: CustomerController_getAll_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/customers/lookup
  method: get
  operationId: CustomerController_lookup_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/customers/{customerId}
  method: get
  operationId: CustomerController_get_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/customers/{customerId}
  method: patch
  operationId: CustomerController_update_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/v1/customers/{customerId}/tenant
  method: get
  operationId: CustomerController_getTenant_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/customers/{customerId}/identities
  method: post
  operationId: CustomerController_createNewCustomerIdentity_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/v1/customers/{customerId}/connections
  method: post
  operationId: CustomerController_createConnection_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/v1/customers/{customerId}/connections/{connectionId}
  method: patch
  operationId: CustomerController_updateConnection_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/v1/customers/{customerId}/connections/{connectionId}
  method: delete
  operationId: CustomerController_deleteConnection_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/v1/customers/{customerId}/connections/{connectionId}/scim
  method: patch
  operationId: CustomerController_updateConnectionScim_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: acting
    consequence: safety-critical
    subject: required
    audience: null
    token:
      max-ttl: 120
      exchange: true
      purpose-required: true
      proof-of-possession: true
    escalation:
      human-in-the-loop: required
    audit: required
- path: /api/v1/customers/{customerId}/connections/{connectionId}/domains
  method: put
  operationId: CustomerController_updateConnectionDomains_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/v1/customers/{customerId}/region
  method: get
  operationId: CustomerController_getCustomerRegion_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/customers/{customerId}/clients
  method: get
  operationId: CustomerClientController_getCustomerClients_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/customers/{customerId}/clients
  method: post
  operationId: CustomerClientController_create_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/v1/customers/{customerId}/clients/{clientId}
  method: get
  operationId: CustomerClientController_getCustomerClientById_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/customers/{customerId}/clients/{clientId}
  method: delete
  operationId: CustomerClientController_deleteCustomerClientById_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/v1/customers/{customerId}/managed-clients
  method: get
  operationId: CustomerManagedClientController_getCustomerManagedClients_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/customers/{customerId}/managed-clients
  method: post
  operationId: CustomerManagedClientController_create_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/v1/customers/{customerId}/managed-clients/{clientId}
  method: delete
  operationId: CustomerManagedClientController_deleteCustomerManagedClientById_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/v1/data-retention-audits
  method: post
  operationId: DataRetentionAuditController_create_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/v1/data-retention-audits
  method: get
  operationId: DataRetentionAuditController_getAll_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/data-retention-audits/{auditId}
  method: get
  operationId: DataRetentionAuditController_getOne_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /healthcheck
  method: get
  operationId: HealthCheckController_getHeathStatus
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/impersonation-events
  method: post
  operationId: ImpersonationEventController_create_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/v1/impersonation-events
  method: get
  operationId: ImpersonationEventController_getAll_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/impersonation-events/{eventId}
  method: get
  operationId: ImpersonationEventController_getOne_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/twilio/phone-lookups
  method: get
  operationId: TwilioController_getPhoneDetails_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/roles
  method: get
  operationId: RoleController_getAll_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/roles/{roleId}
  method: get
  operationId: RoleController_get_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/customers/{customerId}/users
  method: get
  operationId: CustomerUserController_search_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v2/customers/{customerId}/users
  method: get
  operationId: CustomerUserController_searchV2_v2
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/customers/{customerId}/users-lite
  method: get
  operationId: CustomerUserController_searchLite_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/customers/{customerId}/users/by-ids
  method: get
  operationId: CustomerUserController_getUsersByIds_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/customers/{customerId}/users/lookup
  method: get
  operationId: CustomerUserController_lookupUser_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/customers/{customerId}/users/batch/lookup
  method: post
  operationId: CustomerUserController_lookupUsersBatch_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/v1/customers/{customerId}/users/translate-timekeeper-ids
  method: post
  operationId: CustomerUserController_translateTimekeeperIdsToUserIds_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/v1/customers/{customerId}/users/lookup/identity
  method: post
  operationId: CustomerUserController_lookupUserIdentityType_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/v2/customers/{customerId}/users/lookup/identity
  method: get
  operationId: CustomerUserController_lookupUserByIdentity_v2
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/customers/{customerId}/users/{userId}/identities
  method: get
  operationId: CustomerUserController_lookupUserIdentity_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/customers/{customerId}/users/{userId}/identities
  method: post
  operationId: CustomerUserController_createNewUserIdentity_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/v1/customers/{customerId}/users/{userId}/identities
  method: put
  operationId: CustomerUserController_updateUserIdentity_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/v1/customers/{customerId}/users/{userId}/super-delegate
  method: patch
  operationId: CustomerUserController_setUserSuperDelegateStatus_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/v1/customers/{customerId}/users/{userId}
  method: get
  operationId: CustomerUserController_get_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/customers/{customerId}/users/{userId}
  method: patch
  operationId: CustomerUserController_update_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/v1/customers/{customerId}/users/{userId}
  method: delete
  operationId: CustomerUserController_delete_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/v2/customers/{customerId}/users/{userId}
  method: patch
  operationId: CustomerUserController_updateV2_v2
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/v1/customers/{customerId}/users/{userId}/status
  method: patch
  operationId: CustomerUserController_updateStatus_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/v1/customers/{customerId}/users/{userId}/identities/bulk
  method: post
  operationId: CustomerUserController_createBulkUserIdentities_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/v1/customers/{customerId}/users/{userId}/email-aliases
  method: post
  operationId: CustomerUserController_createEmailAliases_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/v1/customers/{customerId}/users/{userId}/email-aliases
  method: delete
  operationId: CustomerUserController_deleteEmailAlias_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/v1/customers/{customerId}/users/{userId}/email-aliases
  method: get
  operationId: CustomerUserController_getEmailAliases_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/customers/{customerId}/users/import
  method: post
  operationId: CustomerUserController_deprecatedImport_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/v2/customers/{customerId}/users/import
  method: post
  operationId: CustomerUserController_importV2_v2
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/v1/customers/{customerId}/users/batch/import
  method: post
  operationId: CustomerUserController_postUserData_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/v2/customers/{customerId}/users/batch/import
  method: post
  operationId: CustomerUserController_postUserDataV2_v2
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/v1/delegators
  method: get
  operationId: DelegatorController_search_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/users
  method: post
  operationId: UserController_create_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/v1/users/lookup
  method: get
  operationId: UserController_lookup_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/users/on-auth
  method: post
  operationId: UserController_onAuth_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/v1/users/on-broker-auth
  method: post
  operationId: UserController_onBrokerAuth_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/v1/users/current
  method: get
  operationId: UserController_findCurrentUser_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/users/current
  method: patch
  operationId: UserController_updateCurrent_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/v1/users/{userId}
  method: get
  operationId: UserController_get_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/user-groups
  method: get
  operationId: UserGroupController_list_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/user-groups
  method: post
  operationId: UserGroupController_create_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/v1/user-groups/by-external-id/{externalId}
  method: put
  operationId: UserGroupController_upsertByExternalId_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/v1/user-groups/by-external-id/{externalId}
  method: delete
  operationId: UserGroupController_deleteByExternalId_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/v1/user-groups/for-user/{userId}
  method: get
  operationId: UserGroupController_listForUser_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/user-groups/{userGroupId}
  method: get
  operationId: UserGroupController_get_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/user-groups/{userGroupId}
  method: patch
  operationId: UserGroupController_update_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/v1/user-groups/{userGroupId}
  method: delete
  operationId: UserGroupController_delete_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/

# --- truncated at 32 KB (142 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/laurel/refs/heads/main/agentic-access/laurel-agentic-access.yml