Stannp · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for Stannp Direct Mail Campaigns API
10 actions
10 updates
phrasing
extends
openapi/stannp-campaigns-api-openapi.yml
Generated by API Evangelist
Written by API Evangelist tooling for Stannp's API. It is a proposal applied on top of the contract, not a document Stannp publishes.
What the actions change
x-apievangelist-phrasing
Targets 10
$.info
$.paths['/campaigns/list'].get
$.paths['/campaigns/get/{id}'].get
$.paths['/campaigns/create'].post
$.paths['/campaigns/sample'].post
$.paths['/campaigns/approve'].post
$.paths['/campaigns/cost'].post
$.paths['/campaigns/availableDates'].post
$.paths['/campaigns/book'].post
$.paths['/campaigns/delete'].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 Stannp Direct Mail Campaigns API
version: 1.0.0
extends: openapi/stannp-campaigns-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: 9
- target: $.paths['/campaigns/list'].get
update:
x-apievangelist-phrasing:
intent: List direct mail campaigns
effect: read
questions:
- What mail campaigns have I created so far?
- Can I see all my Stannp campaigns in one list?
instructions:
- text: List all my direct mail campaigns.
- text: Show every campaign on my account.
method: generated
generated: '2026-09-26'
- target: $.paths['/campaigns/get/{id}'].get
update:
x-apievangelist-phrasing:
intent: Look up a campaign
effect: read
questions:
- What are the settings and status of one particular campaign?
- Can I pull up a single campaign's details by its ID?
instructions:
- text: Show the details of campaign {id}.
slots:
id: path.id
- text: Check the current status of mail campaign {id}.
slots:
id: path.id
method: generated
generated: '2026-09-26'
- target: $.paths['/campaigns/create'].post
update:
x-apievangelist-phrasing:
intent: Create a direct mail campaign for a group
effect: write
questions:
- How do I set up a bulk mailing to everyone in one of my recipient groups?
- Can a campaign go only to the valid addresses in a group?
- Is it possible to save a new campaign as a draft rather than finish it now?
instructions:
- text: Create a {type} campaign named {name} for group {group_id} using template {template_id}.
slots:
type: requestBody.type
name: requestBody.name
group_id: requestBody.group_id
template_id: requestBody.template_id
- text: Start a letter campaign called {name} of type {type} to group {group_id} from the PDF at {file}.
slots:
name: requestBody.name
type: requestBody.type
group_id: requestBody.group_id
file: requestBody.file
- text: Set up postcard campaign {name} ({type}) for group {group_id} with front {front} and back {back}.
slots:
name: requestBody.name
type: requestBody.type
group_id: requestBody.group_id
front: requestBody.front
back: requestBody.back
method: generated
generated: '2026-09-26'
- target: $.paths['/campaigns/sample'].post
update:
x-apievangelist-phrasing:
intent: Generate a sample PDF of a campaign
effect: read
questions:
- Can I see a proof of what a campaign's mailpiece will look like before approving it?
- How long does a campaign's sample PDF link stay valid?
instructions:
- text: Generate a sample PDF proof for campaign {id}.
slots:
id: requestBody.id
- text: Give me a preview of the mailpiece in campaign {id}.
slots:
id: requestBody.id
method: generated
generated: '2026-09-26'
- target: $.paths['/campaigns/approve'].post
update:
x-apievangelist-phrasing:
intent: Approve a campaign for booking
effect: write
questions:
- What do I need to do before a campaign can be scheduled?
- How do I sign off on a campaign's design so it's ready to book?
instructions:
- text: Approve campaign {id} so it can be booked.
slots:
id: requestBody.id
- text: Mark campaign {id} as signed off and ready for booking.
slots:
id: requestBody.id
method: generated
generated: '2026-09-26'
- target: $.paths['/campaigns/cost'].post
update:
x-apievangelist-phrasing:
intent: Calculate what a campaign will cost
effect: read
questions:
- How much will it cost to send a campaign, including VAT?
- Can I see a per-recipient cost breakdown before I book a mailing?
instructions:
- text: Work out the total cost of campaign {id}.
slots:
id: requestBody.id
- text: Show the recipient breakdown and VAT for campaign {id}.
slots:
id: requestBody.id
method: generated
generated: '2026-09-26'
- target: $.paths['/campaigns/availableDates'].post
update:
x-apievangelist-phrasing:
intent: Find available campaign dispatch dates
effect: read
questions:
- Which dates can my campaign be sent out on?
- Is there an open dispatch slot for a mailing within a particular date range?
instructions:
- text: List the available dispatch dates between {start} and {end}.
slots:
start: requestBody.start
end: requestBody.end
- text: Show which upcoming days I can book a campaign to go out.
method: generated
generated: '2026-09-26'
- target: $.paths['/campaigns/book'].post
update:
x-apievangelist-phrasing:
intent: Schedule a campaign for dispatch
effect: write
questions:
- How do I schedule an approved campaign to go out on a specific day?
- What if the date I pick for my mailing is unavailable?
- Can I pay for a booked campaign from my account balance?
instructions:
- text: Book campaign {id} for dispatch on {send_date}.
slots:
id: requestBody.id
send_date: requestBody.send_date
- text: Schedule campaign {id} for {send_date}, falling back to the next available date, paid from my balance.
slots:
id: requestBody.id
send_date: requestBody.send_date
method: generated
generated: '2026-09-26'
- target: $.paths['/campaigns/delete'].post
update:
x-apievangelist-phrasing:
intent: Delete a campaign
effect: destructive
questions:
- Can I get rid of a campaign I no longer plan to send?
- Is deleting a mail campaign permanent?
instructions:
- text: Delete campaign {id} permanently.
slots:
id: requestBody.id
- text: Remove mail campaign {id} from my account.
slots:
id: requestBody.id
method: generated
generated: '2026-09-26'