Svix · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for Svix Sink API
17 actions
17 updates
phrasing
extends
openapi/svix-sink-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 17 · first 16 shown; the file carries all of them
$.info
$.paths['/api/v1/stream/{stream_id}/sink/{sink_id}/last-acked-event'].get
$.paths['/api/v1/stream/{stream_id}/sink/{sink_id}/next-event'].get
$.paths['/api/v1/stream/{stream_id}/sink'].get
$.paths['/api/v1/stream/{stream_id}/sink'].post
$.paths['/api/v1/stream/{stream_id}/sink/{sink_id}'].get
$.paths['/api/v1/stream/{stream_id}/sink/{sink_id}'].put
$.paths['/api/v1/stream/{stream_id}/sink/{sink_id}'].delete
$.paths['/api/v1/stream/{stream_id}/sink/{sink_id}'].patch
$.paths['/api/v1/stream/{stream_id}/sink/{sink_id}/transformation'].get
$.paths['/api/v1/stream/{stream_id}/sink/{sink_id}/transformation'].patch
$.paths['/api/v1/stream/{stream_id}/sink/{sink_id}/secret'].get
$.paths['/api/v1/stream/{stream_id}/sink/{sink_id}/secret/rotate'].post
$.paths['/api/v1/stream/{stream_id}/sink/{sink_id}/headers'].get
$.paths['/api/v1/stream/{stream_id}/sink/{sink_id}/headers'].patch
$.paths['/api/v1/stream/{stream_id}/sink/{sink_id}/force-retry'].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 Sink API
version: 1.0.0
extends: openapi/svix-sink-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: 16
- target: $.paths['/api/v1/stream/{stream_id}/sink/{sink_id}/last-acked-event'].get
update:
x-apievangelist-phrasing:
intent: Get the last event a sink acknowledged
effect: read
questions:
- How far has my stream sink gotten — what's the last event it acked?
- Can I see the most recent acknowledged event for a sink?
instructions:
- text: Get the last acked event for sink {sink_id} on stream {stream_id}.
slots:
sink_id: path.sink_id
stream_id: path.stream_id
- text: Show where sink {sink_id} in stream {stream_id} last acknowledged.
slots:
sink_id: path.sink_id
stream_id: path.stream_id
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/stream/{stream_id}/sink/{sink_id}/next-event'].get
update:
x-apievangelist-phrasing:
intent: Get a sink's oldest unacknowledged event
effect: read
questions:
- What's the next event my sink hasn't acked yet?
- Which is the oldest pending event waiting on a stream sink?
instructions:
- text: Get the next unacked event for sink {sink_id} on stream {stream_id}.
slots:
sink_id: path.sink_id
stream_id: path.stream_id
- text: Show the oldest event stream {stream_id} sink {sink_id} still has to acknowledge.
slots:
stream_id: path.stream_id
sink_id: path.sink_id
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/stream/{stream_id}/sink'].get
update:
x-apievangelist-phrasing:
intent: List a stream's sinks
effect: read
questions:
- Which sinks are attached to my stream?
- Can I page through all the destinations a stream delivers to?
instructions:
- text: List all sinks on stream {stream_id}.
slots:
stream_id: path.stream_id
- text: Show the first {limit} sinks for stream {stream_id}.
slots:
limit: query.limit
stream_id: path.stream_id
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/stream/{stream_id}/sink'].post
update:
x-apievangelist-phrasing:
intent: Create a sink on a stream
effect: write
questions:
- How do I add a new sink to a Svix stream?
- Can a new sink receive only certain event types and batch them?
instructions:
- text: Create a new sink on stream {stream_id}.
slots:
stream_id: path.stream_id
- text: Add a sink to stream {stream_id} for event types {eventTypes} with batch size {batchSize}.
slots:
stream_id: path.stream_id
eventTypes: requestBody.eventTypes
batchSize: requestBody.batchSize
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/stream/{stream_id}/sink/{sink_id}'].get
update:
x-apievangelist-phrasing:
intent: Get a sink's configuration
effect: read
questions:
- What is the configuration of a specific sink on my stream?
- Can I look up a sink by its uid instead of its id?
instructions:
- text: Get sink {sink_id} on stream {stream_id}.
slots:
sink_id: path.sink_id
stream_id: path.stream_id
- text: Show the settings for stream {stream_id}'s sink {sink_id}.
slots:
stream_id: path.stream_id
sink_id: path.sink_id
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/stream/{stream_id}/sink/{sink_id}'].put
update:
x-apievangelist-phrasing:
intent: Create or fully replace a sink
effect: write
questions:
- How do I upsert a sink so it's created if it doesn't exist yet?
- Can I replace a sink's whole configuration in one call?
instructions:
- text: Upsert sink {sink_id} on stream {stream_id}.
slots:
sink_id: path.sink_id
stream_id: path.stream_id
- text: Replace sink {sink_id} on {stream_id} with status {status} and max wait {maxWaitSecs} seconds.
slots:
sink_id: path.sink_id
stream_id: path.stream_id
status: requestBody.status
maxWaitSecs: requestBody.maxWaitSecs
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/stream/{stream_id}/sink/{sink_id}'].delete
update:
x-apievangelist-phrasing:
intent: Delete a sink
effect: destructive
questions:
- How do I remove a sink from a stream?
- What happens to a stream when I delete one of its sinks?
instructions:
- text: Delete sink {sink_id} from stream {stream_id}.
slots:
sink_id: path.sink_id
stream_id: path.stream_id
- text: Remove stream {stream_id}'s sink {sink_id} permanently.
slots:
stream_id: path.stream_id
sink_id: path.sink_id
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/stream/{stream_id}/sink/{sink_id}'].patch
update:
x-apievangelist-phrasing:
intent: Partially update a sink
effect: write
questions:
- How do I pause a sink by changing just its status?
- Can I tweak a sink's batch size without resending its full config?
instructions:
- text: Set sink {sink_id} on stream {stream_id} to status {status}.
slots:
sink_id: path.sink_id
stream_id: path.stream_id
status: requestBody.status
- text: Patch only the batch size of sink {sink_id} in {stream_id} to {batchSize}.
slots:
sink_id: path.sink_id
stream_id: path.stream_id
batchSize: requestBody.batchSize
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/stream/{stream_id}/sink/{sink_id}/transformation'].get
update:
x-apievangelist-phrasing:
intent: Get a sink's transformation code
effect: read
questions:
- What transformation code is running on my sink?
- Can I read back the script that reshapes events before a sink delivers them?
instructions:
- text: Get the transformation code for sink {sink_id} on stream {stream_id}.
slots:
sink_id: path.sink_id
stream_id: path.stream_id
- text: Show stream {stream_id} sink {sink_id}'s transformation.
slots:
stream_id: path.stream_id
sink_id: path.sink_id
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/stream/{stream_id}/sink/{sink_id}/transformation'].patch
update:
x-apievangelist-phrasing:
intent: Set or clear a sink's transformation code
effect: write
questions:
- How do I attach transformation code to a stream sink?
- Can I remove a sink's transformation so events pass through unchanged?
instructions:
- text: Set the transformation on sink {sink_id} in stream {stream_id} to {code}.
slots:
sink_id: path.sink_id
stream_id: path.stream_id
code: requestBody.code
- text: Unset the transformation code on stream {stream_id} sink {sink_id}.
slots:
stream_id: path.stream_id
sink_id: path.sink_id
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/stream/{stream_id}/sink/{sink_id}/secret'].get
update:
x-apievangelist-phrasing:
intent: Get an HTTP sink's signing secret
effect: read
questions:
- Where do I find the signing secret to verify deliveries from an HTTP sink?
- Does every sink type have a signing secret?
instructions:
- text: Get the signing secret for HTTP sink {sink_id} on stream {stream_id}.
slots:
sink_id: path.sink_id
stream_id: path.stream_id
- text: Show stream {stream_id} sink {sink_id}'s secret so I can verify its deliveries.
slots:
stream_id: path.stream_id
sink_id: path.sink_id
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/stream/{stream_id}/sink/{sink_id}/secret/rotate'].post
update:
x-apievangelist-phrasing:
intent: Rotate an HTTP sink's signing secret
effect: write
questions:
- How do I rotate the signing secret on an HTTP stream sink?
- Can the old sink secret stay valid for a grace period after rotation?
instructions:
- text: Rotate the signing secret for sink {sink_id} on stream {stream_id}.
slots:
sink_id: path.sink_id
stream_id: path.stream_id
- text: Rotate stream {stream_id} sink {sink_id}'s secret with a {gracePeriodSeconds}-second grace period.
slots:
stream_id: path.stream_id
sink_id: path.sink_id
gracePeriodSeconds: requestBody.gracePeriodSeconds
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/stream/{stream_id}/sink/{sink_id}/headers'].get
update:
x-apievangelist-phrasing:
intent: Get the HTTP headers a sink sends
effect: read
questions:
- Which custom HTTP headers does my sink send with deliveries?
- Can I view headers configured on an OpenTelemetry tracing sink?
instructions:
- text: Get the headers for sink {sink_id} on stream {stream_id}.
slots:
sink_id: path.sink_id
stream_id: path.stream_id
- text: Show the custom headers stream {stream_id} sink {sink_id} is sending.
slots:
stream_id: path.stream_id
sink_id: path.sink_id
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/stream/{stream_id}/sink/{sink_id}/headers'].patch
update:
x-apievangelist-phrasing:
intent: Update the HTTP headers a sink sends
effect: write
questions:
- How do I add an auth header to every delivery from an HTTP sink?
- Can I change headers on a sink that isn't http or otelTracing?
instructions:
- text: Update sink {sink_id} on stream {stream_id} to send headers {headers}.
slots:
sink_id: path.sink_id
stream_id: path.stream_id
headers: requestBody.headers
- text: Patch stream {stream_id} sink {sink_id}'s headers with {headers}.
slots:
stream_id: path.stream_id
sink_id: path.sink_id
headers: requestBody.headers
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/stream/{stream_id}/sink/{sink_id}/force-retry'].post
update:
x-apievangelist-phrasing:
intent: Force a retrying sink to dispatch now
effect: write
questions:
- My sink is backing off after failures — can I make it retry right away?
- How do I skip the wait on a sink that's currently retrying?
instructions:
- text: Force sink {sink_id} on stream {stream_id} to retry immediately.
slots:
sink_id: path.sink_id
stream_id: path.stream_id
- text: Kick stream {stream_id} sink {sink_id} out of its retry backoff now.
slots:
stream_id: path.stream_id
sink_id: path.sink_id
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/stream/{stream_id}/sink/{sink_id}/skip'].post
update:
x-apievangelist-phrasing:
intent: Skip a sink ahead past a given event
effect: destructive
questions:
- How do I make a sink skip events it's stuck on?
- Can I move a sink's position to just after a specific iterator?
instructions:
- text: Skip sink {sink_id} on stream {stream_id} to after iterator {iterator}.
slots:
sink_id: path.sink_id
stream_id: path.stream_id
iterator: requestBody.iterator
- text: Move stream {stream_id} sink {sink_id}'s consumer position past {iterator}, dropping earlier events.
slots:
stream_id: path.stream_id
sink_id: path.sink_id
iterator: requestBody.iterator
method: generated
generated: '2026-09-26'