Svix · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for Svix Message API
16 actions
16 updates
phrasing
extends
openapi/svix-message-api-openapi.yml
Generated by API Evangelist
Written by API Evangelist tooling for Svix's API. It is a proposal applied on top of the contract, not a document Svix publishes.
What the actions change
x-apievangelist-phrasing
Targets 16
$.info
$.paths['/api/v1/app/{app_id}/msg'].get
$.paths['/api/v1/app/{app_id}/msg'].post
$.paths['/api/v1/app/{app_id}/msg/precheck/active'].post
$.paths['/api/v1/app/{app_id}/events'].get
$.paths['/api/v1/app/{app_id}/msg/{msg_id}'].get
$.paths['/api/v1/app/{app_id}/msg/{msg_id}/content'].delete
$.paths['/api/v1/app/{app_id}/msg/search'].post
$.paths['/api/v1/app/{app_id}/msg/expunge-all-contents'].post
$.paths['/api/v1/app/{app_id}/msg/{msg_id}/raw'].get
$.paths['/api/v1/app/{app_id}/endpoint/{endpoint_id}/msg/test-attempt'].post
$.paths['/api/v1/app/{app_id}/poller/{sink_id}'].get
$.paths['/api/v1/app/{app_id}/poller/{sink_id}/consumer/{consumer_id}/seek'].post
$.paths['/api/v1/app/{app_id}/poller/{sink_id}/consumer/{consumer_id}'].get
$.paths['/api/v1/app/{app_id}/polling-endpoint/{sink_id}/consumer/{consumer_id}'].get
$.paths['/api/v1/app/{app_id}/polling-endpoint/{sink_id}/consumer/{consumer_id}/commit'].post
OpenAPI Overlay
# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand.
overlay: 1.0.0
info:
title: API Evangelist conversational phrasing for Svix Message API
version: 1.0.0
extends: openapi/svix-message-api-openapi.yml
actions:
- target: $.info
update:
x-apievangelist-phrasing:
method: generated
generated: '2026-09-26'
generator: build-phrasing.py
label: Generated by API Evangelist
operations: 15
- target: $.paths['/api/v1/app/{app_id}/msg'].get
update:
x-apievangelist-phrasing:
intent: List an application's messages
effect: read
questions:
- How do I list the webhook messages sent for one application?
- Can I list only messages created within a date window?
- Which messages went out with a given tag or event type?
instructions:
- text: List messages for application {app_id}.
slots:
app_id: path.app_id
- text: List app {app_id} messages created after {after} and before {before}.
slots:
app_id: path.app_id
after: query.after
before: query.before
- text: List app {app_id} messages of event types {event_types}, including their payloads.
slots:
app_id: path.app_id
event_types: query.event_types
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/app/{app_id}/msg'].post
update:
x-apievangelist-phrasing:
intent: Send a webhook message to an application
effect: write
questions:
- How do I send a webhook event to all of a customer's endpoints with Svix?
- Can I schedule a message to be delivered at a later time?
- What happens if I send a message with an eventId that already exists?
instructions:
- text: Send a {eventType} message to application {app_id} with payload {payload}.
slots:
eventType: requestBody.eventType
app_id: path.app_id
payload: requestBody.payload
- text: Send event {eventType} to app {app_id} with payload {payload}, delivered at {deliverAt}.
slots:
eventType: requestBody.eventType
app_id: path.app_id
payload: requestBody.payload
deliverAt: requestBody.deliverAt
- text: Dispatch {eventType} with payload {payload} to app {app_id} on channels {channels}.
slots:
eventType: requestBody.eventType
payload: requestBody.payload
app_id: path.app_id
channels: requestBody.channels
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/app/{app_id}/msg/precheck/active'].post
update:
x-apievangelist-phrasing:
intent: Check if any endpoint listens for an event
effect: read
questions:
- Is any active endpoint actually listening for this event type before I send it?
- Can I check whether a message would reach anyone on a given channel?
instructions:
- text: Check whether app {app_id} has active endpoints for event type {eventType}.
slots:
app_id: path.app_id
eventType: requestBody.eventType
- text: Precheck if a {eventType} message to app {app_id} on channels {channels} would be delivered.
slots:
eventType: requestBody.eventType
app_id: path.app_id
channels: requestBody.channels
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/app/{app_id}/events'].get
update:
x-apievangelist-phrasing:
intent: Read the stream of created messages for an app
effect: read
questions:
- How do I consume the feed of messages created for an application in order?
- Can I read an app's message event stream from a certain point in time?
instructions:
- text: Read the message event stream for application {app_id}.
slots:
app_id: path.app_id
- text: Read app {app_id}'s created-message feed from iterator {iterator}.
slots:
app_id: path.app_id
iterator: query.iterator
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/app/{app_id}/msg/{msg_id}'].get
update:
x-apievangelist-phrasing:
intent: Get a message by ID or event ID
effect: read
questions:
- How do I look up a single message I sent?
- Can I fetch a message using my own eventId instead of the Svix message id?
instructions:
- text: Get message {msg_id} in application {app_id}.
slots:
msg_id: path.msg_id
app_id: path.app_id
- text: Fetch message {msg_id} from app {app_id} with its content.
slots:
msg_id: path.msg_id
app_id: path.app_id
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/app/{app_id}/msg/{msg_id}/content'].delete
update:
x-apievangelist-phrasing:
intent: Delete one message's payload
effect: destructive
questions:
- I sent a message with sensitive data by mistake — how do I wipe its payload?
- Can a message still be replayed after its payload is deleted?
instructions:
- text: Delete the payload of message {msg_id} in application {app_id}.
slots:
msg_id: path.msg_id
app_id: path.app_id
- text: Wipe the sensitive content from app {app_id} message {msg_id}.
slots:
app_id: path.app_id
msg_id: path.msg_id
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/app/{app_id}/msg/search'].post
update:
x-apievangelist-phrasing:
intent: Search an application's messages
effect: read
questions:
- How do I search an app's messages by tag, channel and date range in one request?
- Can I search messages with criteria in a request body rather than query params?
instructions:
- text: Search app {app_id} messages tagged {tag}.
slots:
app_id: path.app_id
tag: requestBody.tag
- text: Search application {app_id} for messages on channel {channel} of event types {event_types}.
slots:
app_id: path.app_id
channel: requestBody.channel
event_types: requestBody.event_types
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/app/{app_id}/msg/expunge-all-contents'].post
update:
x-apievangelist-phrasing:
intent: Delete every message payload in an app
effect: destructive
questions:
- How do I purge all message payloads stored for an application?
- Which plan do I need to expunge all message contents at once?
instructions:
- text: Expunge all message contents for application {app_id}.
slots:
app_id: path.app_id
- text: Start a background task to wipe every message payload in app {app_id}.
slots:
app_id: path.app_id
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/app/{app_id}/msg/{msg_id}/raw'].get
update:
x-apievangelist-phrasing:
intent: Get a message's raw payload
effect: read
questions:
- How do I get the exact raw body that was sent for a message?
- Can I pull just the unparsed payload of a message by its eventId?
instructions:
- text: Get the raw payload of message {msg_id} in application {app_id}.
slots:
msg_id: path.msg_id
app_id: path.app_id
- text: Show the unparsed body for app {app_id} message {msg_id}.
slots:
app_id: path.app_id
msg_id: path.msg_id
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/app/{app_id}/endpoint/{endpoint_id}/msg/test-attempt'].post
update:
x-apievangelist-phrasing:
intent: Send a message to one endpoint and see the result
effect: write
questions:
- How do I send a test message to a single endpoint and get its response back?
- Can I deliver a message to just one endpoint instead of all of an app's endpoints?
instructions:
- text: Send a {eventType} test message with payload {payload} to endpoint {endpoint_id} in app {app_id}.
slots:
eventType: requestBody.eventType
payload: requestBody.payload
endpoint_id: path.endpoint_id
app_id: path.app_id
- text: Try delivering {payload} as {eventType} to only endpoint {endpoint_id} of app {app_id} and show the response.
slots:
payload: requestBody.payload
eventType: requestBody.eventType
endpoint_id: path.endpoint_id
app_id: path.app_id
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/app/{app_id}/poller/{sink_id}'].get
update:
x-apievangelist-phrasing:
intent: Poll messages from a polling endpoint
effect: read
questions:
- How do I pull messages from a polling endpoint instead of receiving pushes?
- Can I poll only one event type from a polling endpoint?
instructions:
- text: Poll messages from polling endpoint {sink_id} in app {app_id}.
slots:
sink_id: path.sink_id
app_id: path.app_id
- text: Poll app {app_id} polling endpoint {sink_id} for {event_type} messages from iterator {iterator}.
slots:
app_id: path.app_id
sink_id: path.sink_id
event_type: query.event_type
iterator: query.iterator
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/app/{app_id}/poller/{sink_id}/consumer/{consumer_id}/seek'].post
update:
x-apievangelist-phrasing:
intent: Set where a polling consumer starts reading
effect: write
questions:
- How do I rewind a polling consumer to read messages from an earlier time?
- Can I set the starting offset for a named consumer on a polling endpoint?
instructions:
- text: Seek consumer {consumer_id} on polling endpoint {sink_id} in app {app_id} to after {after}.
slots:
consumer_id: path.consumer_id
sink_id: path.sink_id
app_id: path.app_id
after: requestBody.after
- text: Reset app {app_id} poller {sink_id} consumer {consumer_id} to start from {after}.
slots:
app_id: path.app_id
sink_id: path.sink_id
consumer_id: path.consumer_id
after: requestBody.after
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/app/{app_id}/poller/{sink_id}/consumer/{consumer_id}'].get
update:
x-apievangelist-phrasing:
intent: Poll messages with a server-tracked consumer
effect: read
questions:
- How do I poll a polling endpoint and let the server remember my position?
- Can several named consumers each track their own place on one polling endpoint?
instructions:
- text: Poll as consumer {consumer_id} from polling endpoint {sink_id} in app {app_id}.
slots:
consumer_id: path.consumer_id
sink_id: path.sink_id
app_id: path.app_id
- text: Fetch the next {limit} messages for consumer {consumer_id} on app {app_id} poller {sink_id}.
slots:
limit: query.limit
consumer_id: path.consumer_id
app_id: path.app_id
sink_id: path.sink_id
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/app/{app_id}/polling-endpoint/{sink_id}/consumer/{consumer_id}'].get
update:
x-apievangelist-phrasing:
intent: Poll a sink with the v2 leased consumer
effect: read
questions:
- How do I poll messages with a lease so they're redelivered if I don't commit?
- Can the v2 polling endpoint start from the earliest or latest position?
instructions:
- text: Poll v2 polling endpoint {sink_id} in app {app_id} as consumer {consumer_id}.
slots:
sink_id: path.sink_id
app_id: path.app_id
consumer_id: path.consumer_id
- text: Lease messages for {lease_duration_ms} ms as consumer {consumer_id} on app {app_id} polling endpoint {sink_id}.
slots:
lease_duration_ms: query.lease_duration_ms
consumer_id: path.consumer_id
app_id: path.app_id
sink_id: path.sink_id
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/app/{app_id}/polling-endpoint/{sink_id}/consumer/{consumer_id}/commit'].post
update:
x-apievangelist-phrasing:
intent: Acknowledge an offset for a v2 polling consumer
effect: write
questions:
- How do I ack the messages I've processed from a v2 polling endpoint?
- Can I commit an offset so my consumer doesn't get those messages again?
instructions:
- text: Commit offset {offset} for consumer {consumer_id} on polling endpoint {sink_id} in app {app_id}.
slots:
offset: requestBody.offset
consumer_id: path.consumer_id
sink_id: path.sink_id
app_id: path.app_id
- text: Ack up to offset {offset} for app {app_id} v2 poller {sink_id} consumer {consumer_id}.
slots:
offset: requestBody.offset
app_id: path.app_id
sink_id: path.sink_id
consumer_id: path.consumer_id
method: generated
generated: '2026-09-26'