Novu Agentic Access
Novu exposes 135 API operations that an AI agent could call, of which 92 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: 43 read and 92 safety-critical.
92 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.
By consequence
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.
| Method | Path | Consequence | Human-in-loop |
|---|---|---|---|
| POST | /v1/channel-connections | safety-critical | required |
| PATCH | /v1/channel-connections/{identifier} | safety-critical | required |
| DELETE | /v1/channel-connections/{identifier} | safety-critical | required |
| POST | /v1/channel-endpoints | safety-critical | required |
| PATCH | /v1/channel-endpoints/{identifier} | safety-critical | required |
| DELETE | /v1/channel-endpoints/{identifier} | safety-critical | required |
| POST | /v1/domains | safety-critical | required |
| PATCH | /v1/domains/{domain} | safety-critical | required |
| DELETE | /v1/domains/{domain} | safety-critical | required |
| POST | /v1/domains/{domain}/auto-configure/start | safety-critical | required |
| POST | /v1/domains/{domain}/diagnose | safety-critical | required |
| POST | /v1/domains/{domain}/routes | safety-critical | required |
| PATCH | /v1/domains/{domain}/routes/{address} | safety-critical | required |
| DELETE | /v1/domains/{domain}/routes/{address} | safety-critical | required |
| POST | /v1/domains/{domain}/routes/{address}/test | safety-critical | required |
| POST | /v1/domains/{domain}/verify | safety-critical | required |
| POST | /v1/environment-variables | safety-critical | required |
| PATCH | /v1/environment-variables/{variableKey} | safety-critical | required |
| DELETE | /v1/environment-variables/{variableKey} | safety-critical | required |
| POST | /v1/environments | safety-critical | required |
| PUT | /v1/environments/{environmentId} | safety-critical | required |
| DELETE | /v1/environments/{environmentId} | safety-critical | required |
| POST | /v1/events/trigger | safety-critical | required |
| POST | /v1/events/trigger/broadcast | safety-critical | required |
| POST | /v1/events/trigger/bulk | safety-critical | required |
Source
Agentic Access
generated: '2026-07-15'
method: generated
source: openapi/novu-openapi.yml
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/.
summary:
operations: 135
by_action_class:
acting: 92
connected: 43
by_consequence:
safety-critical: 92
read: 43
human_in_the_loop_required: 92
operations:
- path: /v1/environments
method: post
operationId: EnvironmentsControllerV1_createEnvironment
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: /v1/environments
method: get
operationId: EnvironmentsControllerV1_listMyEnvironments
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v1/environments/{environmentId}
method: put
operationId: EnvironmentsControllerV1_updateMyEnvironment
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: /v1/environments/{environmentId}
method: delete
operationId: EnvironmentsControllerV1_deleteEnvironment
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: /v1/events/trigger
method: post
operationId: EventsController_trigger
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: /v1/events/trigger/bulk
method: post
operationId: EventsController_triggerBulk
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: /v1/events/trigger/broadcast
method: post
operationId: EventsController_broadcastEventToAll
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: /v1/events/trigger/{transactionId}
method: delete
operationId: EventsController_cancel
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: /v1/notifications
method: get
operationId: NotificationsController_listNotifications
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v1/notifications/{notificationId}
method: get
operationId: NotificationsController_getNotification
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v1/domains
method: get
operationId: DomainsController_listDomains
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v1/domains
method: post
operationId: DomainsController_createDomain
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: /v1/domains/{domain}
method: get
operationId: DomainsController_getDomain
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v1/domains/{domain}
method: patch
operationId: DomainsController_updateDomain
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: /v1/domains/{domain}
method: delete
operationId: DomainsController_deleteDomain
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: /v1/domains/{domain}/verify
method: post
operationId: DomainsController_verifyDomain
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: /v1/domains/{domain}/diagnose
method: post
operationId: DomainsController_diagnoseDomain
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: /v1/domains/{domain}/routes
method: get
operationId: DomainsController_listDomainRoutes
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v1/domains/{domain}/routes
method: post
operationId: DomainsController_createDomainRoute
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: /v1/domains/{domain}/routes/{address}
method: get
operationId: DomainsController_getDomainRoute
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v1/domains/{domain}/routes/{address}
method: patch
operationId: DomainsController_updateDomainRoute
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: /v1/domains/{domain}/routes/{address}
method: delete
operationId: DomainsController_deleteDomainRoute
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: /v1/domains/{domain}/routes/{address}/test
method: post
operationId: DomainsController_testDomainRoute
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: /v1/domains/{domain}/auto-configure
method: get
operationId: DomainsController_getDomainAutoConfigure
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v1/domains/{domain}/auto-configure/start
method: post
operationId: DomainsController_startDomainAutoConfigure
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: /v1/integrations
method: get
operationId: IntegrationsController_listIntegrations
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v1/integrations
method: post
operationId: IntegrationsController_createIntegration
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: /v1/integrations/active
method: get
operationId: IntegrationsController_getActiveIntegrations
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v1/integrations/{integrationId}
method: put
operationId: IntegrationsController_updateIntegrationById
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: /v1/integrations/{integrationId}
method: delete
operationId: IntegrationsController_removeIntegration
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: /v1/integrations/{integrationId}/auto-configure
method: post
operationId: IntegrationsController_autoConfigureIntegration
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: /v1/integrations/{integrationId}/set-primary
method: post
operationId: IntegrationsController_setIntegrationAsPrimary
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: /v1/integrations/chat/oauth
method: post
operationId: IntegrationsController_getChatOAuthUrl
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: /v1/integrations/channel-connections/oauth
method: post
operationId: IntegrationsController_generateConnectOAuthUrl
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: /v1/integrations/channel-endpoints/oauth
method: post
operationId: IntegrationsController_generateLinkUserOAuthUrl
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: /v2/contexts
method: post
operationId: ContextsController_createContext
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: /v2/contexts
method: get
operationId: ContextsController_listContexts
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/contexts/{type}/{id}
method: patch
operationId: ContextsController_updateContext
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: /v2/contexts/{type}/{id}
method: get
operationId: ContextsController_getContext
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/contexts/{type}/{id}
method: delete
operationId: ContextsController_deleteContext
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: /v1/subscribers/bulk
method: post
operationId: SubscribersV1Controller_bulkCreateSubscribers
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: /v1/subscribers/{subscriberId}/credentials
method: put
operationId: SubscribersV1Controller_updateSubscriberChannel
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: /v1/subscribers/{subscriberId}/credentials
method: patch
operationId: SubscribersV1Controller_modifySubscriberChannel
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: /v1/subscribers/{subscriberId}/credentials/{providerId}
method: delete
operationId: SubscribersV1Controller_deleteSubscriberCredentials
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: /v1/subscribers/{subscriberId}/online-status
method: patch
operationId: SubscribersV1Controller_updateSubscriberOnlineFlag
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: /v1/subscribers/{subscriberId}/notifications/feed
method: get
operationId: SubscribersV1Controller_getNotificationsFeed
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v1/subscribers/{subscriberId}/notifications/unseen
method: get
operationId: SubscribersV1Controller_getUnseenCount
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v1/subscribers/{subscriberId}/messages/mark-as
method: post
operationId: SubscribersV1Controller_markMessagesAs
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: /v1/subscribers/{subscriberId}/messages/mark-all
method: post
operationId: SubscribersV1Controller_markAllUnreadAsRead
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: /v1/subscribers/{subscriberId}/messages/{messageId}/actions/{type}
method: post
operationId: SubscribersV1Controller_markActionAsSeen
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: /v2/subscribers
method: get
operationId: SubscribersController_searchSubscribers
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/subscribers
method: post
operationId: SubscribersController_createSubscriber
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: /v2/subscribers/{subscriberId}
method: get
operationId: SubscribersController_getSubscriber
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/subscribers/{subscriberId}
method: patch
operationId: SubscribersController_patchSubscriber
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: /v2/subscribers/{subscriberId}
method: delete
operationId: SubscribersController_removeSubscriber
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: /v2/subscribers/{subscriberId}/preferences
method: get
operationId: SubscribersController_getSubscriberPreferences
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/subscribers/{subscriberId}/preferences
method: patch
operationId: SubscribersController_updateSubscriberPreferences
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: /v2/subscribers/{subscriberId}/preferences/bulk
method: patch
operationId: SubscribersController_bulkUpdateSubscriberPreferences
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: /v2/subscribers/{subscriberId}/subscriptions
method: get
operationId: SubscribersController_listSubscriberTopics
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/subscribers/{subscriberId}/notifications
method: get
operationId: SubscribersController_getSubscriberNotifications
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/subscribers/{subscriberId}/notifications/count
method: get
operationId: SubscribersController_getSubscriberNotificationsCount
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/subscribers/{subscriberId}/notifications/{notificationId}/read
method: patch
operationId: SubscribersController_markNotificationAsRead
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: /v2/subscribers/{subscriberId}/notifications/{notificationId}/unread
method: patch
operationId: SubscribersController_markNotificationAsUnread
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: /v2/subscribers/{subscriberId}/notifications/{notificationId}/archive
method: patch
operationId: SubscribersController_archiveNotification
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: /v2/subscribers/{subscriberId}/notifications/{notificationId}/unarchive
method: patch
operationId: SubscribersController_unarchiveNotification
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: /v2/subscribers/{subscriberId}/notifications/{notificationId}/snooze
method: patch
operationId: SubscribersController_snoozeNotification
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: /v2/subscribers/{subscriberId}/notifications/{notificationId}/unsnooze
method: patch
operationId: SubscribersController_unsnoozeNotification
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: /v2/subscribers/{subscriberId}/notifications/{notificationId}
method: delete
operationId: SubscribersController_deleteNotification
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: /v2/subscribers/{subscriberId}/notifications/{notificationId}/actions/{actionType}/complete
method: patch
operationId: SubscribersController_completeNotificationAction
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: /v2/subscribers/{subscriberId}/notifications/{notificationId}/actions/{actionType}/revert
method: patch
operationId: SubscribersController_revertNotificationAction
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: /v2/subscribers/{subscriberId}/notifications/seen
method: post
operationId: SubscribersController_markNotificationsAsSeen
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: /v2/subscribers/{subscriberId}/notifications/read
method: post
operationId: SubscribersController_markAllNotificationsAsRead
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: /v2/subscribers/{subscriberId}/notifications/archive
method: post
operationId: SubscribersController_archiveAllNotifications
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: /v2/subscribers/{subscriberId}/notifications/read-archive
method: post
operationId: SubscribersController_archiveAllReadNotifications
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: /v2/subscribers/{subscriberId}/notifications/delete
method: post
operationId: SubscribersController_deleteAllNotifications
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: /v2/layouts
method: post
operationId: LayoutsController_create
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: /v2/layouts
method: get
operationId: LayoutsController_list
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/layouts/{layoutId}
method: put
operationId: LayoutsController_update
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: /v2/layouts/{layoutId}
method: get
operationId: LayoutsController_get
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/layouts/{layoutId}
method: delete
operationId: LayoutsController__delete
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: /v2/layouts/{layoutId}/duplicate
method: post
operationId: LayoutsController_duplicate
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: /v2/layouts/{layoutId}/preview
method: post
operationId: LayoutsController_generatePreview
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: /v2/layouts/{layoutId}/usage
method: get
operationId: LayoutsController_getUsage
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v1/messages
method: get
operationId: MessagesController_getMessages
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v1/messages/{messageId}
method: delete
operationId: MessagesController_deleteMessage
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: /v1/messages/transaction/{transactionId}
method: delete
operationId: MessagesController_deleteMessagesByTransactionId
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: /v1/topics/{topicKey}/subscribers/{externalSubscriberId}
method: get
operationId: TopicsV1Controller_getTopicSubscriber
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/topics
method: get
operationId: TopicsController_listTopics
x-agentic-access:
action-class: connected
conse
# --- truncated at 32 KB (48 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/novu/refs/heads/main/agentic-access/novu-agentic-access.yml