Compose-ready workspace: packages/zappier (rate card, portal, Stripe), packages/verae-zapier-middleware (timestamp + NATS), packages/verae-zapier (CLI app), vendor/zapier-platform, and research/zapier vendor corpus. Gate 0 structure checks pass. Product code and research are not yet wired.
1928 lines
65 KiB
YAML
1928 lines
65 KiB
YAML
openapi: 3.1.0
|
|
info:
|
|
title: Trigger Inbox API
|
|
description: Manage trigger inboxes and their messages — create, pause, resume,
|
|
and delete inboxes; list, lease, and acknowledge messages.
|
|
version: 1.0.0
|
|
contact:
|
|
url: https://docs.zapier.com
|
|
servers:
|
|
- url: https://api.zapier.com
|
|
description: Production
|
|
tags:
|
|
- name: Inbox Messages
|
|
description: Lease, acknowledge, and release inbox messages
|
|
- name: Inboxes
|
|
description: Create and manage trigger inboxes
|
|
security:
|
|
- OAuth: []
|
|
paths:
|
|
/trigger-inbox/v1/inboxes:
|
|
get:
|
|
operationId: listTriggerInboxes
|
|
description: List all inboxes for the authenticated user.
|
|
summary: List all inboxes
|
|
parameters:
|
|
- in: query
|
|
name: key
|
|
schema:
|
|
type: string
|
|
- name: limit
|
|
required: false
|
|
in: query
|
|
description: Number of results to return per page.
|
|
schema:
|
|
type: integer
|
|
- in: query
|
|
name: name
|
|
schema:
|
|
type: string
|
|
deprecated: true
|
|
- name: offset
|
|
required: false
|
|
in: query
|
|
description: The initial index from which to return the results.
|
|
schema:
|
|
type: integer
|
|
- in: query
|
|
name: status
|
|
schema:
|
|
type: string
|
|
enum:
|
|
- active
|
|
- deleting
|
|
- initialization_failure
|
|
- initializing
|
|
- paused
|
|
description: '* `initializing` - initializing
|
|
|
|
* `active` - active
|
|
|
|
* `paused` - paused
|
|
|
|
* `deleting` - deleting
|
|
|
|
* `initialization_failure` - initialization_failure'
|
|
tags:
|
|
- Inboxes
|
|
security:
|
|
- OAuth:
|
|
- external
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/PaginatedInboxList'
|
|
description: 'An inbox: a durable, user-scoped queue for a trigger subscription,
|
|
|
|
identified by its natural `key`.'
|
|
headers:
|
|
X-RateLimit-Limit:
|
|
$ref: '#/components/headers/X-RateLimit-Limit'
|
|
X-RateLimit-Remaining:
|
|
$ref: '#/components/headers/X-RateLimit-Remaining'
|
|
X-RateLimit-Reset:
|
|
$ref: '#/components/headers/X-RateLimit-Reset'
|
|
'400':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Errors'
|
|
description: 'Validation Error: Return fields with errors.'
|
|
headers:
|
|
X-RateLimit-Limit:
|
|
$ref: '#/components/headers/X-RateLimit-Limit'
|
|
X-RateLimit-Remaining:
|
|
$ref: '#/components/headers/X-RateLimit-Remaining'
|
|
X-RateLimit-Reset:
|
|
$ref: '#/components/headers/X-RateLimit-Reset'
|
|
'429':
|
|
headers:
|
|
Retry-After:
|
|
$ref: '#/components/headers/Retry-After'
|
|
X-RateLimit-Limit:
|
|
$ref: '#/components/headers/X-RateLimit-Limit'
|
|
X-RateLimit-Remaining:
|
|
$ref: '#/components/headers/X-RateLimit-Remaining'
|
|
X-RateLimit-Reset:
|
|
$ref: '#/components/headers/X-RateLimit-Reset'
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Errors'
|
|
description: Too many requests.
|
|
x-zapier-collection-response-exempt: true
|
|
post:
|
|
operationId: createTriggerInbox
|
|
description: Create a new inbox. If a key is provided and an inbox with that
|
|
key already exists for this user, returns 409 Conflict. name remains accepted
|
|
as a deprecated alias for key. Use PUT for idempotent get-or-create semantics.
|
|
summary: Create an inbox
|
|
parameters:
|
|
- in: header
|
|
name: Zapier-Causation-Id
|
|
schema:
|
|
type: string
|
|
description: Optional UUID identifying the event or action that caused this
|
|
request.
|
|
- in: header
|
|
name: Zapier-Correlation-Id
|
|
schema:
|
|
type: string
|
|
description: Optional UUID to trace this request through downstream systems.
|
|
tags:
|
|
- Inboxes
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Inbox'
|
|
examples:
|
|
WithKey:
|
|
value:
|
|
key: example_inbox
|
|
subscription:
|
|
app_key: SlackCLIAPI@1.0.0
|
|
action_key: example_action
|
|
connection_id: 029a64f8-ced3-889b-aa1a-9d37bcd59ddb
|
|
inputs:
|
|
channel: C1234567890
|
|
summary: with_key
|
|
WithNameDeprecated:
|
|
value:
|
|
name: example_inbox
|
|
subscription:
|
|
app_key: SlackCLIAPI@1.0.0
|
|
action_key: example_action
|
|
connection_id: 029a64f8-ced3-889b-aa1a-9d37bcd59ddb
|
|
inputs:
|
|
channel: C1234567890
|
|
summary: with_name_deprecated
|
|
description: Uses the deprecated name alias for key.
|
|
WithoutKey:
|
|
value:
|
|
subscription:
|
|
app_key: SlackCLIAPI@1.0.0
|
|
action_key: example_action
|
|
connection_id: 5678
|
|
inputs:
|
|
channel: C1234567890
|
|
summary: without_key
|
|
WithSlugAppKey:
|
|
value:
|
|
key: example_inbox
|
|
subscription:
|
|
app_key: slack
|
|
action_key: example_action
|
|
connection_id: 029a64f8-ced3-889b-aa1a-9d37bcd59ddb
|
|
inputs:
|
|
channel: C1234567890
|
|
summary: Resolve app_key from a slug
|
|
description: A versionless slug is resolved to the latest version;
|
|
the response's subscription.app_key is the fully-versioned form.
|
|
required: true
|
|
security:
|
|
- OAuth:
|
|
- external
|
|
responses:
|
|
'201':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Inbox'
|
|
description: 'An inbox: a durable, user-scoped queue for a trigger subscription,
|
|
|
|
identified by its natural `key`.'
|
|
headers:
|
|
X-RateLimit-Limit:
|
|
$ref: '#/components/headers/X-RateLimit-Limit'
|
|
X-RateLimit-Remaining:
|
|
$ref: '#/components/headers/X-RateLimit-Remaining'
|
|
X-RateLimit-Reset:
|
|
$ref: '#/components/headers/X-RateLimit-Reset'
|
|
'400':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Errors'
|
|
description: Validation error, e.g. the app_key could not be resolved to
|
|
a single app (unknown or ambiguous), or a claim input was invalid.
|
|
headers:
|
|
X-RateLimit-Limit:
|
|
$ref: '#/components/headers/X-RateLimit-Limit'
|
|
X-RateLimit-Remaining:
|
|
$ref: '#/components/headers/X-RateLimit-Remaining'
|
|
X-RateLimit-Reset:
|
|
$ref: '#/components/headers/X-RateLimit-Reset'
|
|
'409':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Errors'
|
|
description: Conflict error when an inbox with the same key already exists
|
|
for the user.
|
|
headers:
|
|
X-RateLimit-Limit:
|
|
$ref: '#/components/headers/X-RateLimit-Limit'
|
|
X-RateLimit-Remaining:
|
|
$ref: '#/components/headers/X-RateLimit-Remaining'
|
|
X-RateLimit-Reset:
|
|
$ref: '#/components/headers/X-RateLimit-Reset'
|
|
'429':
|
|
headers:
|
|
Retry-After:
|
|
$ref: '#/components/headers/Retry-After'
|
|
X-RateLimit-Limit:
|
|
$ref: '#/components/headers/X-RateLimit-Limit'
|
|
X-RateLimit-Remaining:
|
|
$ref: '#/components/headers/X-RateLimit-Remaining'
|
|
X-RateLimit-Reset:
|
|
$ref: '#/components/headers/X-RateLimit-Reset'
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Errors'
|
|
description: Too many requests.
|
|
put:
|
|
operationId: ensureTriggerInbox
|
|
description: Idempotently ensure an inbox exists for the provided key. Returns
|
|
the existing inbox if one with the same key and matching configuration already
|
|
exists, or creates a new one. name remains accepted as a deprecated alias
|
|
for key. Returns 409 if an inbox with the same key but different configuration
|
|
exists.
|
|
summary: Ensure an inbox exists
|
|
parameters:
|
|
- in: header
|
|
name: Zapier-Causation-Id
|
|
schema:
|
|
type: string
|
|
description: Optional UUID identifying the event or action that caused this
|
|
request.
|
|
- in: header
|
|
name: Zapier-Correlation-Id
|
|
schema:
|
|
type: string
|
|
description: Optional UUID to trace this request through downstream systems.
|
|
tags:
|
|
- Inboxes
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/InboxEnsure'
|
|
examples:
|
|
EnsureInbox:
|
|
value:
|
|
key: example_inbox
|
|
subscription:
|
|
app_key: SlackCLIAPI@1.0.0
|
|
action_key: example_action
|
|
connection_id: 029a64f8-ced3-889b-aa1a-9d37bcd59ddb
|
|
inputs:
|
|
channel: C1234567890
|
|
summary: ensure_inbox
|
|
required: true
|
|
security:
|
|
- OAuth:
|
|
- external
|
|
responses:
|
|
'201':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Inbox'
|
|
description: 'An inbox: a durable, user-scoped queue for a trigger subscription,
|
|
|
|
identified by its natural `key`.'
|
|
headers:
|
|
X-RateLimit-Limit:
|
|
$ref: '#/components/headers/X-RateLimit-Limit'
|
|
X-RateLimit-Remaining:
|
|
$ref: '#/components/headers/X-RateLimit-Remaining'
|
|
X-RateLimit-Reset:
|
|
$ref: '#/components/headers/X-RateLimit-Reset'
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Inbox'
|
|
description: 'An inbox: a durable, user-scoped queue for a trigger subscription,
|
|
|
|
identified by its natural `key`.'
|
|
headers:
|
|
X-RateLimit-Limit:
|
|
$ref: '#/components/headers/X-RateLimit-Limit'
|
|
X-RateLimit-Remaining:
|
|
$ref: '#/components/headers/X-RateLimit-Remaining'
|
|
X-RateLimit-Reset:
|
|
$ref: '#/components/headers/X-RateLimit-Reset'
|
|
'400':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Errors'
|
|
description: Validation error, e.g. missing required key field (name is
|
|
accepted as a deprecated alias for key), or the app_key could not be resolved
|
|
to a single app (unknown or ambiguous).
|
|
headers:
|
|
X-RateLimit-Limit:
|
|
$ref: '#/components/headers/X-RateLimit-Limit'
|
|
X-RateLimit-Remaining:
|
|
$ref: '#/components/headers/X-RateLimit-Remaining'
|
|
X-RateLimit-Reset:
|
|
$ref: '#/components/headers/X-RateLimit-Reset'
|
|
'409':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Errors'
|
|
description: Conflict error when an inbox with the same key and a different
|
|
subscription already exists for the user.
|
|
headers:
|
|
X-RateLimit-Limit:
|
|
$ref: '#/components/headers/X-RateLimit-Limit'
|
|
X-RateLimit-Remaining:
|
|
$ref: '#/components/headers/X-RateLimit-Remaining'
|
|
X-RateLimit-Reset:
|
|
$ref: '#/components/headers/X-RateLimit-Reset'
|
|
'429':
|
|
headers:
|
|
Retry-After:
|
|
$ref: '#/components/headers/Retry-After'
|
|
X-RateLimit-Limit:
|
|
$ref: '#/components/headers/X-RateLimit-Limit'
|
|
X-RateLimit-Remaining:
|
|
$ref: '#/components/headers/X-RateLimit-Remaining'
|
|
X-RateLimit-Reset:
|
|
$ref: '#/components/headers/X-RateLimit-Reset'
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Errors'
|
|
description: Too many requests.
|
|
/trigger-inbox/v1/inboxes/{id}:
|
|
get:
|
|
operationId: getTriggerInbox
|
|
description: Return the details of an inbox by unique ID.
|
|
summary: Get inbox details
|
|
parameters:
|
|
- in: path
|
|
name: id
|
|
schema:
|
|
type: string
|
|
format: uuid
|
|
required: true
|
|
tags:
|
|
- Inboxes
|
|
security:
|
|
- OAuth:
|
|
- external
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Inbox'
|
|
description: 'An inbox: a durable, user-scoped queue for a trigger subscription,
|
|
|
|
identified by its natural `key`.'
|
|
headers:
|
|
X-RateLimit-Limit:
|
|
$ref: '#/components/headers/X-RateLimit-Limit'
|
|
X-RateLimit-Remaining:
|
|
$ref: '#/components/headers/X-RateLimit-Remaining'
|
|
X-RateLimit-Reset:
|
|
$ref: '#/components/headers/X-RateLimit-Reset'
|
|
'400':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Errors'
|
|
description: 'Validation Error: Return fields with errors.'
|
|
headers:
|
|
X-RateLimit-Limit:
|
|
$ref: '#/components/headers/X-RateLimit-Limit'
|
|
X-RateLimit-Remaining:
|
|
$ref: '#/components/headers/X-RateLimit-Remaining'
|
|
X-RateLimit-Reset:
|
|
$ref: '#/components/headers/X-RateLimit-Reset'
|
|
'429':
|
|
headers:
|
|
Retry-After:
|
|
$ref: '#/components/headers/Retry-After'
|
|
X-RateLimit-Limit:
|
|
$ref: '#/components/headers/X-RateLimit-Limit'
|
|
X-RateLimit-Remaining:
|
|
$ref: '#/components/headers/X-RateLimit-Remaining'
|
|
X-RateLimit-Reset:
|
|
$ref: '#/components/headers/X-RateLimit-Reset'
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Errors'
|
|
description: Too many requests.
|
|
patch:
|
|
operationId: patchTriggerInbox
|
|
description: Partially update an inbox. Currently only notification_url can
|
|
be updated.
|
|
summary: Update inbox settings
|
|
parameters:
|
|
- in: path
|
|
name: id
|
|
schema:
|
|
type: string
|
|
format: uuid
|
|
required: true
|
|
tags:
|
|
- Inboxes
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/PatchedInboxPatch'
|
|
examples:
|
|
SetNotificationUrl:
|
|
value:
|
|
notification_url: https://example.com/webhook
|
|
summary: set_notification_url
|
|
security:
|
|
- OAuth:
|
|
- external
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Inbox'
|
|
description: 'An inbox: a durable, user-scoped queue for a trigger subscription,
|
|
|
|
identified by its natural `key`.'
|
|
headers:
|
|
X-RateLimit-Limit:
|
|
$ref: '#/components/headers/X-RateLimit-Limit'
|
|
X-RateLimit-Remaining:
|
|
$ref: '#/components/headers/X-RateLimit-Remaining'
|
|
X-RateLimit-Reset:
|
|
$ref: '#/components/headers/X-RateLimit-Reset'
|
|
'400':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Errors'
|
|
description: 'Validation Error: Return fields with errors.'
|
|
headers:
|
|
X-RateLimit-Limit:
|
|
$ref: '#/components/headers/X-RateLimit-Limit'
|
|
X-RateLimit-Remaining:
|
|
$ref: '#/components/headers/X-RateLimit-Remaining'
|
|
X-RateLimit-Reset:
|
|
$ref: '#/components/headers/X-RateLimit-Reset'
|
|
'429':
|
|
headers:
|
|
Retry-After:
|
|
$ref: '#/components/headers/Retry-After'
|
|
X-RateLimit-Limit:
|
|
$ref: '#/components/headers/X-RateLimit-Limit'
|
|
X-RateLimit-Remaining:
|
|
$ref: '#/components/headers/X-RateLimit-Remaining'
|
|
X-RateLimit-Reset:
|
|
$ref: '#/components/headers/X-RateLimit-Reset'
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Errors'
|
|
description: Too many requests.
|
|
delete:
|
|
operationId: deleteTriggerInbox
|
|
description: Mark an inbox for deletion for the authenticated user.
|
|
summary: Mark an inbox for deletion
|
|
parameters:
|
|
- in: path
|
|
name: id
|
|
schema:
|
|
type: string
|
|
format: uuid
|
|
required: true
|
|
tags:
|
|
- Inboxes
|
|
security:
|
|
- OAuth:
|
|
- external
|
|
responses:
|
|
'202':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Inbox'
|
|
description: 'An inbox: a durable, user-scoped queue for a trigger subscription,
|
|
|
|
identified by its natural `key`.'
|
|
headers:
|
|
X-RateLimit-Limit:
|
|
$ref: '#/components/headers/X-RateLimit-Limit'
|
|
X-RateLimit-Remaining:
|
|
$ref: '#/components/headers/X-RateLimit-Remaining'
|
|
X-RateLimit-Reset:
|
|
$ref: '#/components/headers/X-RateLimit-Reset'
|
|
'409':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Errors'
|
|
description: Conflict error when an inbox cannot be marked for deletion.
|
|
headers:
|
|
X-RateLimit-Limit:
|
|
$ref: '#/components/headers/X-RateLimit-Limit'
|
|
X-RateLimit-Remaining:
|
|
$ref: '#/components/headers/X-RateLimit-Remaining'
|
|
X-RateLimit-Reset:
|
|
$ref: '#/components/headers/X-RateLimit-Reset'
|
|
'400':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Errors'
|
|
description: 'Validation Error: Return fields with errors.'
|
|
headers:
|
|
X-RateLimit-Limit:
|
|
$ref: '#/components/headers/X-RateLimit-Limit'
|
|
X-RateLimit-Remaining:
|
|
$ref: '#/components/headers/X-RateLimit-Remaining'
|
|
X-RateLimit-Reset:
|
|
$ref: '#/components/headers/X-RateLimit-Reset'
|
|
'429':
|
|
headers:
|
|
Retry-After:
|
|
$ref: '#/components/headers/Retry-After'
|
|
X-RateLimit-Limit:
|
|
$ref: '#/components/headers/X-RateLimit-Limit'
|
|
X-RateLimit-Remaining:
|
|
$ref: '#/components/headers/X-RateLimit-Remaining'
|
|
X-RateLimit-Reset:
|
|
$ref: '#/components/headers/X-RateLimit-Reset'
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Errors'
|
|
description: Too many requests.
|
|
/trigger-inbox/v1/inboxes/{id}/pause:
|
|
post:
|
|
operationId: pauseTriggerInbox
|
|
description: Pause an inbox for the authenticated user resulting in messages
|
|
collection being temporarily halted.
|
|
summary: Pause an inbox
|
|
parameters:
|
|
- in: path
|
|
name: id
|
|
schema:
|
|
type: string
|
|
format: uuid
|
|
required: true
|
|
tags:
|
|
- Inboxes
|
|
security:
|
|
- OAuth:
|
|
- external
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Inbox'
|
|
description: 'An inbox: a durable, user-scoped queue for a trigger subscription,
|
|
|
|
identified by its natural `key`.'
|
|
headers:
|
|
X-RateLimit-Limit:
|
|
$ref: '#/components/headers/X-RateLimit-Limit'
|
|
X-RateLimit-Remaining:
|
|
$ref: '#/components/headers/X-RateLimit-Remaining'
|
|
X-RateLimit-Reset:
|
|
$ref: '#/components/headers/X-RateLimit-Reset'
|
|
'409':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Errors'
|
|
description: Conflict error when an inbox cannot be paused.
|
|
headers:
|
|
X-RateLimit-Limit:
|
|
$ref: '#/components/headers/X-RateLimit-Limit'
|
|
X-RateLimit-Remaining:
|
|
$ref: '#/components/headers/X-RateLimit-Remaining'
|
|
X-RateLimit-Reset:
|
|
$ref: '#/components/headers/X-RateLimit-Reset'
|
|
'400':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Errors'
|
|
description: 'Validation Error: Return fields with errors.'
|
|
headers:
|
|
X-RateLimit-Limit:
|
|
$ref: '#/components/headers/X-RateLimit-Limit'
|
|
X-RateLimit-Remaining:
|
|
$ref: '#/components/headers/X-RateLimit-Remaining'
|
|
X-RateLimit-Reset:
|
|
$ref: '#/components/headers/X-RateLimit-Reset'
|
|
'429':
|
|
headers:
|
|
Retry-After:
|
|
$ref: '#/components/headers/Retry-After'
|
|
X-RateLimit-Limit:
|
|
$ref: '#/components/headers/X-RateLimit-Limit'
|
|
X-RateLimit-Remaining:
|
|
$ref: '#/components/headers/X-RateLimit-Remaining'
|
|
X-RateLimit-Reset:
|
|
$ref: '#/components/headers/X-RateLimit-Reset'
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Errors'
|
|
description: Too many requests.
|
|
/trigger-inbox/v1/inboxes/{id}/resume:
|
|
post:
|
|
operationId: resumeTriggerInbox
|
|
description: Resume an inbox for the authenticated user resulting in messages
|
|
collection being resumed.
|
|
summary: Resume an inbox
|
|
parameters:
|
|
- in: path
|
|
name: id
|
|
schema:
|
|
type: string
|
|
format: uuid
|
|
required: true
|
|
tags:
|
|
- Inboxes
|
|
security:
|
|
- OAuth:
|
|
- external
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Inbox'
|
|
description: 'An inbox: a durable, user-scoped queue for a trigger subscription,
|
|
|
|
identified by its natural `key`.'
|
|
headers:
|
|
X-RateLimit-Limit:
|
|
$ref: '#/components/headers/X-RateLimit-Limit'
|
|
X-RateLimit-Remaining:
|
|
$ref: '#/components/headers/X-RateLimit-Remaining'
|
|
X-RateLimit-Reset:
|
|
$ref: '#/components/headers/X-RateLimit-Reset'
|
|
'202':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Inbox'
|
|
description: 'An inbox: a durable, user-scoped queue for a trigger subscription,
|
|
|
|
identified by its natural `key`.'
|
|
headers:
|
|
X-RateLimit-Limit:
|
|
$ref: '#/components/headers/X-RateLimit-Limit'
|
|
X-RateLimit-Remaining:
|
|
$ref: '#/components/headers/X-RateLimit-Remaining'
|
|
X-RateLimit-Reset:
|
|
$ref: '#/components/headers/X-RateLimit-Reset'
|
|
'409':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Errors'
|
|
description: Conflict error when an inbox cannot be resumed.
|
|
headers:
|
|
X-RateLimit-Limit:
|
|
$ref: '#/components/headers/X-RateLimit-Limit'
|
|
X-RateLimit-Remaining:
|
|
$ref: '#/components/headers/X-RateLimit-Remaining'
|
|
X-RateLimit-Reset:
|
|
$ref: '#/components/headers/X-RateLimit-Reset'
|
|
'400':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Errors'
|
|
description: 'Validation Error: Return fields with errors.'
|
|
headers:
|
|
X-RateLimit-Limit:
|
|
$ref: '#/components/headers/X-RateLimit-Limit'
|
|
X-RateLimit-Remaining:
|
|
$ref: '#/components/headers/X-RateLimit-Remaining'
|
|
X-RateLimit-Reset:
|
|
$ref: '#/components/headers/X-RateLimit-Reset'
|
|
'429':
|
|
headers:
|
|
Retry-After:
|
|
$ref: '#/components/headers/Retry-After'
|
|
X-RateLimit-Limit:
|
|
$ref: '#/components/headers/X-RateLimit-Limit'
|
|
X-RateLimit-Remaining:
|
|
$ref: '#/components/headers/X-RateLimit-Remaining'
|
|
X-RateLimit-Reset:
|
|
$ref: '#/components/headers/X-RateLimit-Reset'
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Errors'
|
|
description: Too many requests.
|
|
/trigger-inbox/v1/inboxes/{inbox_id}/events:
|
|
get:
|
|
operationId: getTriggerInboxEvents
|
|
tags:
|
|
- Inboxes
|
|
summary: Subscribe to inbox notifications over SSE
|
|
description: 'Opens a Server-Sent Events stream that emits one frame per batch
|
|
of newly-available messages on the inbox. The connection stays open until
|
|
the JWT expires, at which point the server closes it.
|
|
|
|
|
|
Two kinds of frames are emitted:
|
|
|
|
|
|
- **Data frames** (`data: {...}\n\n`) signal availability only, they do not
|
|
include message content. Consumers should call the lease endpoint to retrieve
|
|
messages. The JSON payload is described by the response schema below.
|
|
|
|
- **Heartbeat frames** (`: keep-alive\n\n`) are SSE comment lines sent when
|
|
no notification has arrived within the heartbeat interval. They are ignored
|
|
by EventSource clients and exist only to keep intermediaries from closing
|
|
the connection as idle.'
|
|
security:
|
|
- OAuth:
|
|
- external
|
|
parameters:
|
|
- name: inbox_id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
format: uuid
|
|
description: The unique identifier of the inbox to subscribe to.
|
|
responses:
|
|
'200':
|
|
description: SSE stream opened. The response body is an open-ended sequence
|
|
of `text/event-stream` frames.
|
|
content:
|
|
text/event-stream:
|
|
schema:
|
|
type: object
|
|
description: JSON payload carried by each `data:` frame. Heartbeat
|
|
frames carry no payload.
|
|
properties:
|
|
inbox_id:
|
|
type: string
|
|
format: uuid
|
|
description: The unique identifier of the inbox that has new messages.
|
|
count:
|
|
type: integer
|
|
minimum: 1
|
|
description: The number of notifications coalesced into this frame.
|
|
required:
|
|
- inbox_id
|
|
- count
|
|
'401':
|
|
description: Missing or invalid JWT in the Authorization header.
|
|
'404':
|
|
description: No inbox with the given id is visible to the authenticated
|
|
user.
|
|
'503':
|
|
description: The notification backend was not reachable in time. Clients
|
|
should retry.
|
|
/trigger-inbox/v1/inboxes/{inbox_id}/messages:
|
|
get:
|
|
operationId: listTriggerInboxMessages
|
|
description: List messages from an inbox for the authenticated user.
|
|
summary: List messages from an inbox
|
|
parameters:
|
|
- name: cursor
|
|
required: false
|
|
in: query
|
|
description: The pagination cursor value.
|
|
schema:
|
|
type: string
|
|
- in: path
|
|
name: inbox_id
|
|
schema:
|
|
type: string
|
|
format: uuid
|
|
required: true
|
|
tags:
|
|
- Inbox Messages
|
|
security:
|
|
- OAuth:
|
|
- external
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/PaginatedMessageList'
|
|
description: ''
|
|
headers:
|
|
X-RateLimit-Limit:
|
|
$ref: '#/components/headers/X-RateLimit-Limit'
|
|
X-RateLimit-Remaining:
|
|
$ref: '#/components/headers/X-RateLimit-Remaining'
|
|
X-RateLimit-Reset:
|
|
$ref: '#/components/headers/X-RateLimit-Reset'
|
|
'400':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Errors'
|
|
description: 'Validation Error: Return fields with errors.'
|
|
headers:
|
|
X-RateLimit-Limit:
|
|
$ref: '#/components/headers/X-RateLimit-Limit'
|
|
X-RateLimit-Remaining:
|
|
$ref: '#/components/headers/X-RateLimit-Remaining'
|
|
X-RateLimit-Reset:
|
|
$ref: '#/components/headers/X-RateLimit-Reset'
|
|
'429':
|
|
headers:
|
|
Retry-After:
|
|
$ref: '#/components/headers/Retry-After'
|
|
X-RateLimit-Limit:
|
|
$ref: '#/components/headers/X-RateLimit-Limit'
|
|
X-RateLimit-Remaining:
|
|
$ref: '#/components/headers/X-RateLimit-Remaining'
|
|
X-RateLimit-Reset:
|
|
$ref: '#/components/headers/X-RateLimit-Reset'
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Errors'
|
|
description: Too many requests.
|
|
x-zapier-collection-response-exempt: true
|
|
/trigger-inbox/v1/inboxes/{inbox_id}/messages/lease:
|
|
post:
|
|
operationId: leaseTriggerInboxMessages
|
|
description: Lease messages from an inbox for the authenticated user.
|
|
summary: Lease messages from an inbox
|
|
parameters:
|
|
- in: path
|
|
name: inbox_id
|
|
schema:
|
|
type: string
|
|
format: uuid
|
|
required: true
|
|
tags:
|
|
- Inbox Messages
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/LeaseRequest'
|
|
examples:
|
|
LeaseMessage:
|
|
value:
|
|
lease_limit: 1
|
|
summary: lease_message
|
|
description: Lease a single message for 60 seconds.
|
|
LeaseMessages:
|
|
value:
|
|
lease_limit: 10
|
|
lease_seconds: 60
|
|
summary: lease_messages
|
|
description: Lease up to 10 messages for 60 seconds.
|
|
security:
|
|
- OAuth:
|
|
- external
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/LeaseResponse'
|
|
examples:
|
|
LeaseEmpty:
|
|
value:
|
|
lease_id: null
|
|
leased_until: null
|
|
results: []
|
|
inbox_attributes:
|
|
status: active
|
|
paused_reason: null
|
|
summary: lease_empty
|
|
description: An empty lease when no messages are available.
|
|
description: Response for a message lease request to an inbox.
|
|
headers:
|
|
X-RateLimit-Limit:
|
|
$ref: '#/components/headers/X-RateLimit-Limit'
|
|
X-RateLimit-Remaining:
|
|
$ref: '#/components/headers/X-RateLimit-Remaining'
|
|
X-RateLimit-Reset:
|
|
$ref: '#/components/headers/X-RateLimit-Reset'
|
|
'201':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/LeaseResponse'
|
|
examples:
|
|
LeaseMessages:
|
|
value:
|
|
lease_id: 019ce2fe-5ed1-7318-8a60-33dffd911f6a
|
|
leased_until: '2026-03-12T17:00:47.185Z'
|
|
results:
|
|
- id: 019ce2fe-5ed1-7318-8a60-33dffd911f6b
|
|
created_at: '2026-03-12T16:59:47.185Z'
|
|
status: leased
|
|
payload:
|
|
key: value
|
|
message_attributes:
|
|
lease_count: 1
|
|
error_message: null
|
|
possible_duplicate_data: false
|
|
inbox_attributes:
|
|
status: active
|
|
paused_reason: null
|
|
summary: lease_messages
|
|
description: Lease a single message for 60 seconds.
|
|
LeaseMessagesWithError:
|
|
value:
|
|
lease_id: 019ce2fe-5ed1-7318-8a60-33dffd911f6a
|
|
leased_until: '2026-03-12T17:00:47.185Z'
|
|
results:
|
|
- id: 019ce2fe-5ed1-7318-8a60-33dffd911f6b
|
|
created_at: '2026-03-12T16:59:47.185Z'
|
|
status: leased
|
|
payload:
|
|
key: value
|
|
message_attributes:
|
|
lease_count: 1
|
|
error_message: 'Error while hydrating data from Slack (1.24.0):
|
|
Your Slack account on Zapier is expired/invalid. Please
|
|
reconnect it to fix this.'
|
|
possible_duplicate_data: false
|
|
inbox_attributes:
|
|
status: active
|
|
paused_reason: null
|
|
summary: lease_messages_with_error
|
|
description: Lease a message from a batch that had a hydration error.
|
|
LeaseMessagesWithPossibleDuplicates:
|
|
value:
|
|
lease_id: 019ce2fe-5ed1-7318-8a60-33dffd911f6a
|
|
leased_until: '2026-03-12T17:00:47.185Z'
|
|
results:
|
|
- id: 019ce2fe-5ed1-7318-8a60-33dffd911f6b
|
|
created_at: '2026-03-12T16:59:47.185Z'
|
|
status: leased
|
|
payload:
|
|
key: value
|
|
message_attributes:
|
|
lease_count: 1
|
|
error_message: null
|
|
possible_duplicate_data: true
|
|
inbox_attributes:
|
|
status: active
|
|
paused_reason: null
|
|
summary: lease_messages_with_possible_duplicates
|
|
description: Lease a message that may contain duplicate data due
|
|
to a dedupe key change.
|
|
description: Response for a message lease request to an inbox.
|
|
headers:
|
|
X-RateLimit-Limit:
|
|
$ref: '#/components/headers/X-RateLimit-Limit'
|
|
X-RateLimit-Remaining:
|
|
$ref: '#/components/headers/X-RateLimit-Remaining'
|
|
X-RateLimit-Reset:
|
|
$ref: '#/components/headers/X-RateLimit-Reset'
|
|
'409':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/LeaseConflictResponse'
|
|
examples:
|
|
LeaseConflict:
|
|
value:
|
|
detail: Inbox is paused and fully drained.
|
|
inbox_attributes:
|
|
status: paused
|
|
paused_reason: authentication
|
|
paused_at: '2026-03-12T16:59:47.185Z'
|
|
summary: lease_conflict
|
|
description: Inbox is paused and fully drained — no more messages.
|
|
description: Response when leasing from a paused and fully drained inbox.
|
|
headers:
|
|
X-RateLimit-Limit:
|
|
$ref: '#/components/headers/X-RateLimit-Limit'
|
|
X-RateLimit-Remaining:
|
|
$ref: '#/components/headers/X-RateLimit-Remaining'
|
|
X-RateLimit-Reset:
|
|
$ref: '#/components/headers/X-RateLimit-Reset'
|
|
'400':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Errors'
|
|
description: 'Validation Error: Return fields with errors.'
|
|
headers:
|
|
X-RateLimit-Limit:
|
|
$ref: '#/components/headers/X-RateLimit-Limit'
|
|
X-RateLimit-Remaining:
|
|
$ref: '#/components/headers/X-RateLimit-Remaining'
|
|
X-RateLimit-Reset:
|
|
$ref: '#/components/headers/X-RateLimit-Reset'
|
|
'429':
|
|
headers:
|
|
Retry-After:
|
|
$ref: '#/components/headers/Retry-After'
|
|
X-RateLimit-Limit:
|
|
$ref: '#/components/headers/X-RateLimit-Limit'
|
|
X-RateLimit-Remaining:
|
|
$ref: '#/components/headers/X-RateLimit-Remaining'
|
|
X-RateLimit-Reset:
|
|
$ref: '#/components/headers/X-RateLimit-Reset'
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Errors'
|
|
description: Too many requests.
|
|
/trigger-inbox/v1/inboxes/{inbox_id}/messages/ack:
|
|
post:
|
|
operationId: acknowledgeTriggerInboxMessages
|
|
description: Acknowledge messages from an inbox for the authenticated user.
|
|
summary: Acknowledge messages from an inbox
|
|
parameters:
|
|
- in: path
|
|
name: inbox_id
|
|
schema:
|
|
type: string
|
|
format: uuid
|
|
required: true
|
|
tags:
|
|
- Inbox Messages
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/AckRequest'
|
|
examples:
|
|
Ack:
|
|
value:
|
|
lease_id: 019ce2fe-5ed1-7318-8a60-33dffd911f6a
|
|
summary: ack
|
|
description: Acknowledge an entire lease.
|
|
AckMessageIds:
|
|
value:
|
|
lease_id: 019ce2fe-5ed1-7318-8a60-33dffd911f6a
|
|
message_ids:
|
|
- 019ce303-cf30-7efb-aa91-89488a407dc2
|
|
summary: ack_message_ids
|
|
description: Acknowledge specific messages within a lease.
|
|
required: true
|
|
security:
|
|
- OAuth:
|
|
- external
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/AckResponse'
|
|
examples:
|
|
AckEmpty:
|
|
value:
|
|
acked_id: null
|
|
results: []
|
|
summary: ack_empty
|
|
description: An empty acknowledgment when no messages are acknowledged.
|
|
description: Response for a message acknowledge request to an inbox.
|
|
headers:
|
|
X-RateLimit-Limit:
|
|
$ref: '#/components/headers/X-RateLimit-Limit'
|
|
X-RateLimit-Remaining:
|
|
$ref: '#/components/headers/X-RateLimit-Remaining'
|
|
X-RateLimit-Reset:
|
|
$ref: '#/components/headers/X-RateLimit-Reset'
|
|
'201':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/AckResponse'
|
|
examples:
|
|
AckMessages:
|
|
value:
|
|
acked_id: 019ce305-35be-764b-bcae-70ba567b7357
|
|
results:
|
|
- id: 019ce2fe-5ed1-7318-8a60-33dffd911f6b
|
|
created_at: '2026-03-12T16:59:47.185Z'
|
|
status: acked
|
|
message_attributes:
|
|
lease_count: 1
|
|
error_message: null
|
|
possible_duplicate_data: false
|
|
summary: ack_messages
|
|
description: Acknowledgement of leased messages.
|
|
description: Response for a message acknowledge request to an inbox.
|
|
headers:
|
|
X-RateLimit-Limit:
|
|
$ref: '#/components/headers/X-RateLimit-Limit'
|
|
X-RateLimit-Remaining:
|
|
$ref: '#/components/headers/X-RateLimit-Remaining'
|
|
X-RateLimit-Reset:
|
|
$ref: '#/components/headers/X-RateLimit-Reset'
|
|
'400':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Errors'
|
|
description: 'Validation Error: Return fields with errors.'
|
|
headers:
|
|
X-RateLimit-Limit:
|
|
$ref: '#/components/headers/X-RateLimit-Limit'
|
|
X-RateLimit-Remaining:
|
|
$ref: '#/components/headers/X-RateLimit-Remaining'
|
|
X-RateLimit-Reset:
|
|
$ref: '#/components/headers/X-RateLimit-Reset'
|
|
'429':
|
|
headers:
|
|
Retry-After:
|
|
$ref: '#/components/headers/Retry-After'
|
|
X-RateLimit-Limit:
|
|
$ref: '#/components/headers/X-RateLimit-Limit'
|
|
X-RateLimit-Remaining:
|
|
$ref: '#/components/headers/X-RateLimit-Remaining'
|
|
X-RateLimit-Reset:
|
|
$ref: '#/components/headers/X-RateLimit-Reset'
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Errors'
|
|
description: Too many requests.
|
|
/trigger-inbox/v1/inboxes/{inbox_id}/messages/release:
|
|
post:
|
|
operationId: releaseTriggerInboxMessages
|
|
description: Release the lease on one or more leased messages without acknowledging
|
|
them. The messages become immediately available for leasing again. The original
|
|
lease still counts against the per-message lease limit; releasing does not
|
|
refund the attempt.
|
|
summary: Release leased messages without acknowledging
|
|
parameters:
|
|
- in: path
|
|
name: inbox_id
|
|
schema:
|
|
type: string
|
|
format: uuid
|
|
required: true
|
|
tags:
|
|
- Inbox Messages
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ReleaseRequest'
|
|
examples:
|
|
Release:
|
|
value:
|
|
lease_id: 019ce2fe-5ed1-7318-8a60-33dffd911f6a
|
|
summary: release
|
|
description: Release every message held under a lease.
|
|
ReleaseMessageIds:
|
|
value:
|
|
lease_id: 019ce2fe-5ed1-7318-8a60-33dffd911f6a
|
|
message_ids:
|
|
- 019ce303-cf30-7efb-aa91-89488a407dc2
|
|
summary: release_message_ids
|
|
description: Release specific messages within a lease.
|
|
required: true
|
|
security:
|
|
- OAuth:
|
|
- external
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ReleaseResponse'
|
|
examples:
|
|
ReleaseEmpty:
|
|
value:
|
|
released_id: null
|
|
results: []
|
|
summary: release_empty
|
|
description: An empty release when no messages match the lease.
|
|
description: Response for a message release request to an inbox.
|
|
headers:
|
|
X-RateLimit-Limit:
|
|
$ref: '#/components/headers/X-RateLimit-Limit'
|
|
X-RateLimit-Remaining:
|
|
$ref: '#/components/headers/X-RateLimit-Remaining'
|
|
X-RateLimit-Reset:
|
|
$ref: '#/components/headers/X-RateLimit-Reset'
|
|
'201':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ReleaseResponse'
|
|
examples:
|
|
ReleaseMessages:
|
|
value:
|
|
released_id: 019ce305-35be-764b-bcae-70ba567b7357
|
|
results:
|
|
- id: 019ce2fe-5ed1-7318-8a60-33dffd911f6b
|
|
created_at: '2026-03-12T16:59:47.185Z'
|
|
status: available
|
|
message_attributes:
|
|
lease_count: 1
|
|
error_message: null
|
|
possible_duplicate_data: false
|
|
summary: release_messages
|
|
description: Release of leased messages.
|
|
description: Response for a message release request to an inbox.
|
|
headers:
|
|
X-RateLimit-Limit:
|
|
$ref: '#/components/headers/X-RateLimit-Limit'
|
|
X-RateLimit-Remaining:
|
|
$ref: '#/components/headers/X-RateLimit-Remaining'
|
|
X-RateLimit-Reset:
|
|
$ref: '#/components/headers/X-RateLimit-Reset'
|
|
'400':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Errors'
|
|
description: 'Validation Error: Return fields with errors.'
|
|
headers:
|
|
X-RateLimit-Limit:
|
|
$ref: '#/components/headers/X-RateLimit-Limit'
|
|
X-RateLimit-Remaining:
|
|
$ref: '#/components/headers/X-RateLimit-Remaining'
|
|
X-RateLimit-Reset:
|
|
$ref: '#/components/headers/X-RateLimit-Reset'
|
|
'429':
|
|
headers:
|
|
Retry-After:
|
|
$ref: '#/components/headers/Retry-After'
|
|
X-RateLimit-Limit:
|
|
$ref: '#/components/headers/X-RateLimit-Limit'
|
|
X-RateLimit-Remaining:
|
|
$ref: '#/components/headers/X-RateLimit-Remaining'
|
|
X-RateLimit-Reset:
|
|
$ref: '#/components/headers/X-RateLimit-Reset'
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Errors'
|
|
description: Too many requests.
|
|
components:
|
|
headers:
|
|
Retry-After:
|
|
schema:
|
|
type: number
|
|
description: The number of seconds to wait before making a new request.
|
|
required: true
|
|
X-RateLimit-Limit:
|
|
schema:
|
|
type: string
|
|
description: The rate limit ceiling for that given request.
|
|
required: true
|
|
X-RateLimit-Remaining:
|
|
schema:
|
|
type: string
|
|
description: The number of requests left for the window.
|
|
required: true
|
|
X-RateLimit-Reset:
|
|
schema:
|
|
type: string
|
|
description: The time at which the current rate limit window resets in seconds.
|
|
required: true
|
|
schemas:
|
|
AckRequest:
|
|
type: object
|
|
description: Request to acknowledge a leased message from an inbox.
|
|
properties:
|
|
lease_id:
|
|
type: string
|
|
format: uuid
|
|
description: The unique identifier for the lease.
|
|
message_ids:
|
|
type: array
|
|
items:
|
|
type: string
|
|
format: uuid
|
|
description: The list of message IDs to acknowledge. If not specified all
|
|
messages matching the lease_id will be acknowledged.
|
|
maxItems: 100
|
|
minItems: 1
|
|
required:
|
|
- lease_id
|
|
AckResponse:
|
|
type: object
|
|
description: Response for a message acknowledge request to an inbox.
|
|
properties:
|
|
acked_id:
|
|
type:
|
|
- string
|
|
- 'null'
|
|
format: uuid
|
|
description: The unique identifier for the acknowledged messages.
|
|
results:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Message'
|
|
description: The list of messages acknowledged.
|
|
required:
|
|
- acked_id
|
|
- results
|
|
BlankEnum:
|
|
enum:
|
|
- ''
|
|
ErrorDetail:
|
|
type: object
|
|
description: 'Per the schema defined in the engineering index.
|
|
|
|
|
|
https://engineering.zapier.com/guides/api-design-guidelines/error-handling/'
|
|
properties:
|
|
code:
|
|
type: string
|
|
description: A unique identifier for this particular occurrence of the problem.
|
|
detail:
|
|
type: string
|
|
description: A human-readable explanation specific to this occurrence of
|
|
the problem.
|
|
status:
|
|
type: integer
|
|
description: HTTP status code for that error.
|
|
title:
|
|
type: string
|
|
description: A short summary of the problem.
|
|
source:
|
|
type: object
|
|
additionalProperties: {}
|
|
description: An object containing references to the primary source of the
|
|
error.
|
|
required:
|
|
- code
|
|
- detail
|
|
Errors:
|
|
type: object
|
|
properties:
|
|
errors:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/ErrorDetail'
|
|
description: An array of error objects.
|
|
required:
|
|
- errors
|
|
Inbox:
|
|
type: object
|
|
description: 'An inbox: a durable, user-scoped queue for a trigger subscription,
|
|
|
|
identified by its natural `key`.'
|
|
properties:
|
|
id:
|
|
type: string
|
|
format: uuid
|
|
readOnly: true
|
|
description: The unique identifier for the inbox.
|
|
created_at:
|
|
type: string
|
|
format: date-time
|
|
readOnly: true
|
|
description: Creation timestamp in ISO 8601 format.
|
|
key:
|
|
type: string
|
|
description: The inbox's natural key. Set at creation, immutable, unique
|
|
per user.
|
|
maxLength: 100
|
|
name:
|
|
type: string
|
|
maxLength: 100
|
|
deprecated: true
|
|
description: Deprecated alias for `key`. Use `key` instead.
|
|
status:
|
|
type: string
|
|
readOnly: true
|
|
description: The status of the inbox.
|
|
paused_reason:
|
|
description: 'The reason the inbox was paused, if applicable.
|
|
|
|
|
|
* `user` - user
|
|
|
|
* `authentication` - authentication
|
|
|
|
* `authentication_access_revoked` - authentication_access_revoked
|
|
|
|
* `partner_revoked` - partner_revoked
|
|
|
|
* `subscribe_failed` - subscribe_failed
|
|
|
|
* `migrate_failed` - migrate_failed
|
|
|
|
* `abandoned` - abandoned
|
|
|
|
* `unknown` - unknown
|
|
|
|
* `upstream_failures` - upstream_failures'
|
|
oneOf:
|
|
- $ref: '#/components/schemas/PausedReasonEnum'
|
|
- $ref: '#/components/schemas/BlankEnum'
|
|
- $ref: '#/components/schemas/NullEnum'
|
|
notification_url:
|
|
type:
|
|
- string
|
|
- 'null'
|
|
format: uri
|
|
description: URL to POST notifications to when messages become available.
|
|
maxLength: 2048
|
|
subscription:
|
|
$ref: '#/components/schemas/TriggerSubscription'
|
|
required:
|
|
- created_at
|
|
- id
|
|
- status
|
|
- subscription
|
|
InboxAttributes:
|
|
type: object
|
|
description: Inbox state surfaced alongside lease responses.
|
|
properties:
|
|
status:
|
|
type: string
|
|
readOnly: true
|
|
description: The current status of the inbox.
|
|
paused_reason:
|
|
readOnly: true
|
|
description: 'The reason the inbox was paused, if applicable.
|
|
|
|
|
|
* `user` - user
|
|
|
|
* `authentication` - authentication
|
|
|
|
* `authentication_access_revoked` - authentication_access_revoked
|
|
|
|
* `partner_revoked` - partner_revoked
|
|
|
|
* `subscribe_failed` - subscribe_failed
|
|
|
|
* `migrate_failed` - migrate_failed
|
|
|
|
* `abandoned` - abandoned
|
|
|
|
* `unknown` - unknown
|
|
|
|
* `upstream_failures` - upstream_failures'
|
|
oneOf:
|
|
- $ref: '#/components/schemas/PausedReasonEnum'
|
|
- $ref: '#/components/schemas/NullEnum'
|
|
required:
|
|
- paused_reason
|
|
- status
|
|
InboxEnsure:
|
|
type: object
|
|
description: 'Request to idempotently ensure an inbox exists. A `key` is required
|
|
|
|
(`name` is accepted as a deprecated alias).'
|
|
properties:
|
|
id:
|
|
type: string
|
|
format: uuid
|
|
readOnly: true
|
|
description: The unique identifier for the inbox.
|
|
created_at:
|
|
type: string
|
|
format: date-time
|
|
readOnly: true
|
|
description: Creation timestamp in ISO 8601 format.
|
|
key:
|
|
type: string
|
|
description: The inbox's natural key. Set at creation, immutable, unique
|
|
per user.
|
|
maxLength: 100
|
|
name:
|
|
type: string
|
|
maxLength: 100
|
|
deprecated: true
|
|
description: Deprecated alias for `key`. Use `key` instead.
|
|
status:
|
|
type: string
|
|
readOnly: true
|
|
description: The status of the inbox.
|
|
paused_reason:
|
|
description: 'The reason the inbox was paused, if applicable.
|
|
|
|
|
|
* `user` - user
|
|
|
|
* `authentication` - authentication
|
|
|
|
* `authentication_access_revoked` - authentication_access_revoked
|
|
|
|
* `partner_revoked` - partner_revoked
|
|
|
|
* `subscribe_failed` - subscribe_failed
|
|
|
|
* `migrate_failed` - migrate_failed
|
|
|
|
* `abandoned` - abandoned
|
|
|
|
* `unknown` - unknown
|
|
|
|
* `upstream_failures` - upstream_failures'
|
|
oneOf:
|
|
- $ref: '#/components/schemas/PausedReasonEnum'
|
|
- $ref: '#/components/schemas/BlankEnum'
|
|
- $ref: '#/components/schemas/NullEnum'
|
|
notification_url:
|
|
type:
|
|
- string
|
|
- 'null'
|
|
format: uri
|
|
description: URL to POST notifications to when messages become available.
|
|
maxLength: 2048
|
|
subscription:
|
|
$ref: '#/components/schemas/TriggerSubscription'
|
|
required:
|
|
- created_at
|
|
- id
|
|
- status
|
|
- subscription
|
|
LeaseConflictAttributes:
|
|
type: object
|
|
description: Inbox attributes included in a 409 conflict response, with paused_at.
|
|
properties:
|
|
status:
|
|
type: string
|
|
readOnly: true
|
|
description: The current status of the inbox.
|
|
paused_reason:
|
|
readOnly: true
|
|
description: 'The reason the inbox was paused, if applicable.
|
|
|
|
|
|
* `user` - user
|
|
|
|
* `authentication` - authentication
|
|
|
|
* `authentication_access_revoked` - authentication_access_revoked
|
|
|
|
* `partner_revoked` - partner_revoked
|
|
|
|
* `subscribe_failed` - subscribe_failed
|
|
|
|
* `migrate_failed` - migrate_failed
|
|
|
|
* `abandoned` - abandoned
|
|
|
|
* `unknown` - unknown
|
|
|
|
* `upstream_failures` - upstream_failures'
|
|
oneOf:
|
|
- $ref: '#/components/schemas/PausedReasonEnum'
|
|
- $ref: '#/components/schemas/NullEnum'
|
|
paused_at:
|
|
type:
|
|
- string
|
|
- 'null'
|
|
format: date-time
|
|
readOnly: true
|
|
description: When the inbox was paused, in ISO 8601 format.
|
|
required:
|
|
- paused_at
|
|
- paused_reason
|
|
- status
|
|
LeaseConflictResponse:
|
|
type: object
|
|
description: Response when leasing from a paused and fully drained inbox.
|
|
properties:
|
|
detail:
|
|
type: string
|
|
readOnly: true
|
|
description: A human-readable explanation of why the lease was rejected.
|
|
inbox_attributes:
|
|
allOf:
|
|
- $ref: '#/components/schemas/LeaseConflictAttributes'
|
|
readOnly: true
|
|
description: Current inbox state including pause details.
|
|
required:
|
|
- detail
|
|
- inbox_attributes
|
|
LeaseRequest:
|
|
type: object
|
|
description: Request to lease message from an inbox.
|
|
properties:
|
|
lease_seconds:
|
|
type: integer
|
|
maximum: 3600
|
|
minimum: 1
|
|
default: 300
|
|
description: The number of seconds to lease the message for.
|
|
lease_limit:
|
|
type: integer
|
|
maximum: 100
|
|
minimum: 1
|
|
default: 10
|
|
description: The number of messages to lease.
|
|
LeaseResponse:
|
|
type: object
|
|
description: Response for a message lease request to an inbox.
|
|
properties:
|
|
lease_id:
|
|
type:
|
|
- string
|
|
- 'null'
|
|
format: uuid
|
|
description: The unique identifier for the lease.
|
|
leased_until:
|
|
type:
|
|
- string
|
|
- 'null'
|
|
format: date-time
|
|
description: The timestamp until which the messages are leased in ISO 8601
|
|
format.
|
|
results:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/LeasedMessage'
|
|
description: The list of messages leased.
|
|
inbox_attributes:
|
|
allOf:
|
|
- $ref: '#/components/schemas/InboxAttributes'
|
|
readOnly: true
|
|
description: Current inbox state surfaced alongside the lease.
|
|
required:
|
|
- inbox_attributes
|
|
- lease_id
|
|
- leased_until
|
|
- results
|
|
LeasedMessage:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
format: uuid
|
|
readOnly: true
|
|
description: The unique identifier for the message.
|
|
created_at:
|
|
type: string
|
|
format: date-time
|
|
readOnly: true
|
|
description: Creation timestamp in ISO 8601 format.
|
|
status:
|
|
allOf:
|
|
- $ref: '#/components/schemas/StatusEnum'
|
|
description: The status of the message.
|
|
readOnly: true
|
|
message_attributes:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MessageAttributes'
|
|
readOnly: true
|
|
description: Attributes associated with the message, such as lease count
|
|
and error information.
|
|
payload:
|
|
type: object
|
|
additionalProperties: {}
|
|
description: The payload of the message.
|
|
readOnly: true
|
|
required:
|
|
- created_at
|
|
- id
|
|
- message_attributes
|
|
- payload
|
|
- status
|
|
Message:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
format: uuid
|
|
readOnly: true
|
|
description: The unique identifier for the message.
|
|
created_at:
|
|
type: string
|
|
format: date-time
|
|
readOnly: true
|
|
description: Creation timestamp in ISO 8601 format.
|
|
status:
|
|
allOf:
|
|
- $ref: '#/components/schemas/StatusEnum'
|
|
description: The status of the message.
|
|
readOnly: true
|
|
message_attributes:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MessageAttributes'
|
|
readOnly: true
|
|
description: Attributes associated with the message, such as lease count
|
|
and error information.
|
|
required:
|
|
- created_at
|
|
- id
|
|
- message_attributes
|
|
- status
|
|
MessageAttributes:
|
|
type: object
|
|
properties:
|
|
lease_count:
|
|
type: integer
|
|
readOnly: true
|
|
description: Number of times this message has been leased.
|
|
error_message:
|
|
type:
|
|
- string
|
|
- 'null'
|
|
readOnly: true
|
|
description: Error message from the batch that produced this message, if
|
|
any.
|
|
possible_duplicate_data:
|
|
type: boolean
|
|
readOnly: true
|
|
description: True when the message may contain duplicate data due to a change
|
|
in the deduplication key. Consumers should treat this data with caution
|
|
and may want to apply their own deduplication logic.
|
|
required:
|
|
- error_message
|
|
- lease_count
|
|
- possible_duplicate_data
|
|
NullEnum:
|
|
type: 'null'
|
|
PaginatedInboxList:
|
|
type: object
|
|
required:
|
|
- count
|
|
- results
|
|
properties:
|
|
count:
|
|
type: integer
|
|
description: Total number of results across all pages.
|
|
example: 123
|
|
next:
|
|
type: string
|
|
description: Link to next page of results if any.
|
|
nullable: true
|
|
format: uri
|
|
example: https://api.example.org/accounts/?offset=400&limit=100
|
|
previous:
|
|
type: string
|
|
description: Link to previous page of results if any.
|
|
nullable: true
|
|
format: uri
|
|
example: https://api.example.org/accounts/?offset=200&limit=100
|
|
results:
|
|
description: Array of results for the current page.
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Inbox'
|
|
PaginatedMessageList:
|
|
type: object
|
|
required:
|
|
- next
|
|
- previous
|
|
- results
|
|
properties:
|
|
next:
|
|
type: string
|
|
description: Link to next page of results if any.
|
|
nullable: true
|
|
format: uri
|
|
example: https://api.example.org/accounts/?cursor=cD00ODY%3D
|
|
previous:
|
|
type: string
|
|
description: Link to previous page of results if any.
|
|
nullable: true
|
|
format: uri
|
|
example: https://api.example.org/accounts/?cursor=cj0xJnA9NDg3
|
|
results:
|
|
description: Array of results for the current page.
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Message'
|
|
PatchedInboxPatch:
|
|
type: object
|
|
properties:
|
|
notification_url:
|
|
type:
|
|
- string
|
|
- 'null'
|
|
format: uri
|
|
description: URL to POST notifications to when messages become available.
|
|
maxLength: 2048
|
|
PausedReasonEnum:
|
|
enum:
|
|
- user
|
|
- authentication
|
|
- authentication_access_revoked
|
|
- partner_revoked
|
|
- subscribe_failed
|
|
- migrate_failed
|
|
- abandoned
|
|
- unknown
|
|
- upstream_failures
|
|
type: string
|
|
description: '* `user` - user
|
|
|
|
* `authentication` - authentication
|
|
|
|
* `authentication_access_revoked` - authentication_access_revoked
|
|
|
|
* `partner_revoked` - partner_revoked
|
|
|
|
* `subscribe_failed` - subscribe_failed
|
|
|
|
* `migrate_failed` - migrate_failed
|
|
|
|
* `abandoned` - abandoned
|
|
|
|
* `unknown` - unknown
|
|
|
|
* `upstream_failures` - upstream_failures'
|
|
ReleaseRequest:
|
|
type: object
|
|
description: Request to release a leased message back to the inbox without acknowledging
|
|
it.
|
|
properties:
|
|
lease_id:
|
|
type: string
|
|
format: uuid
|
|
description: The unique identifier for the lease.
|
|
message_ids:
|
|
type: array
|
|
items:
|
|
type: string
|
|
format: uuid
|
|
description: The list of message IDs to release. If not specified all messages
|
|
matching the lease_id will be released.
|
|
maxItems: 100
|
|
minItems: 1
|
|
required:
|
|
- lease_id
|
|
ReleaseResponse:
|
|
type: object
|
|
description: Response for a message release request to an inbox.
|
|
properties:
|
|
released_id:
|
|
type:
|
|
- string
|
|
- 'null'
|
|
format: uuid
|
|
description: The unique identifier for the released messages.
|
|
results:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Message'
|
|
description: The list of messages whose leases were released.
|
|
required:
|
|
- released_id
|
|
- results
|
|
StatusEnum:
|
|
enum:
|
|
- available
|
|
- leased
|
|
- acked
|
|
- quarantined
|
|
type: string
|
|
TriggerSubscription:
|
|
type: object
|
|
description: Trigger subscription configuration for an inbox.
|
|
properties:
|
|
connection_id:
|
|
oneOf:
|
|
- type: string
|
|
format: uuid
|
|
- type: integer
|
|
format: integer
|
|
- type: 'null'
|
|
description: The ID of the connection associated with this inbox.
|
|
app_key:
|
|
type: string
|
|
description: App identifier. Accepts a fully-versioned selected_api (`SlackCLIAPI@1.0.0`,
|
|
used as-is), a versionless selected_api (`SlackCLIAPI`), the `@latest`
|
|
sentinel (`SlackCLIAPI@latest`), or a service slug (`slack`). Versionless,
|
|
`@latest`, and slug forms are resolved to the latest published version
|
|
at creation time; the inbox always stores and returns the fully-versioned
|
|
form. Returns 400 if the identifier matches no app or is ambiguous (matches
|
|
more than one).
|
|
action_key:
|
|
type: string
|
|
description: The key of the app action associated with this inbox.
|
|
inputs:
|
|
type: object
|
|
additionalProperties: {}
|
|
description: The inputs provided to the app action associated with this
|
|
inbox.
|
|
required:
|
|
- action_key
|
|
- app_key
|
|
- inputs
|
|
securitySchemes:
|
|
OAuth:
|
|
type: oauth2
|
|
description: OAuth 2.0 authentication.
|
|
flows:
|
|
authorizationCode:
|
|
authorizationUrl: https://zapier.com/oauth/authorize
|
|
tokenUrl: https://zapier.com/oauth/token
|
|
scopes:
|
|
external: Scope that gives access to all Public APIs
|
|
clientCredentials:
|
|
tokenUrl: https://zapier.com/oauth/token
|
|
scopes:
|
|
external: Scope that gives access to all Public APIs
|