Boom Ai · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for Boom Initiatives API
24 actions
24 updates
phrasing
extends
openapi/boom-ai-initiatives-api-openapi.yml
Generated by API Evangelist
Written by API Evangelist tooling for Boom Ai's API. It is a proposal applied on top of the contract, not a document Boom Ai publishes.
What the actions change
x-apievangelist-phrasing
Targets 24 · first 16 shown; the file carries all of them
$.info
$.paths['/api/v1/initiatives'].get
$.paths['/api/v1/initiatives'].post
$.paths['/api/v1/initiatives/{id}'].get
$.paths['/api/v1/initiatives/{id}'].patch
$.paths['/api/v1/initiatives/{id}/archive'].post
$.paths['/api/v1/initiatives/{id}/cancel'].post
$.paths['/api/v1/initiatives/{id}/data/summary'].get
$.paths['/api/v1/initiatives/{id}/extraction-schema'].get
$.paths['/api/v1/initiatives/{id}/extraction-schema'].post
$.paths['/api/v1/initiatives/{id}/launch'].post
$.paths['/api/v1/initiatives/{id}/participants'].get
$.paths['/api/v1/initiatives/{id}/participants'].post
$.paths['/api/v1/initiatives/{id}/participants/{participantId}'].get
$.paths['/api/v1/initiatives/{id}/participants/{participantId}/messages'].get
$.paths['/api/v1/initiatives/{id}/participants/{participantId}/steps'].get
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 Boom Initiatives API
version: 1.0.0
extends: openapi/boom-ai-initiatives-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: 23
- target: $.paths['/api/v1/initiatives'].get
update:
x-apievangelist-phrasing:
intent: List my initiatives
effect: read
questions:
- Which initiatives does my organization have running right now?
- Can I list only the active initiatives and leave out the drafts?
instructions:
- text: List my initiatives, newest first.
- text: Show me every initiative with status {status}.
slots:
status: query.status
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/initiatives'].post
update:
x-apievangelist-phrasing:
intent: Create a draft initiative
effect: write
questions:
- How do I start a new WhatsApp outreach initiative in Boom?
- What is the minimum I need to create a draft initiative — just a name?
- Can a new initiative keep enrolling people on a schedule instead of ending after one batch?
instructions:
- text: Create a draft initiative called {name}.
slots:
name: requestBody.name
- text: Create a new initiative named {name} whose objective is {objective}, asking {guidingQuestions}.
slots:
name: requestBody.name
objective: requestBody.objective
guidingQuestions: requestBody.guidingQuestions
- text: Set up a recurring initiative {name} that makes at most {maxAttempts} outreach attempts per person.
slots:
name: requestBody.name
maxAttempts: requestBody.maxAttempts
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/initiatives/{id}'].get
update:
x-apievangelist-phrasing:
intent: Get one initiative's details
effect: read
questions:
- What is the current status and objective of a specific initiative?
- Can I look up one initiative by its id to see how it is configured?
instructions:
- text: Show me initiative {id}.
slots:
id: path.id
- text: Pull up the settings of initiative {id}.
slots:
id: path.id
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/initiatives/{id}'].patch
update:
x-apievangelist-phrasing:
intent: Edit a draft initiative
effect: write
questions:
- Can I change the objective or guiding context of an initiative that is still a draft?
- Why can't I edit an initiative after it has launched?
- How do I change the bot-disclosure reply on a draft initiative?
instructions:
- text: Rename draft initiative {id} to {name}.
slots:
id: path.id
name: requestBody.name
- text: Change the flag condition on draft initiative {id} to {flagCondition}.
slots:
id: path.id
flagCondition: requestBody.flagCondition
- text: Update the objective of draft initiative {id} to {objective}.
slots:
id: path.id
objective: requestBody.objective
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/initiatives/{id}/archive'].post
update:
x-apievangelist-phrasing:
intent: Archive a finished initiative
effect: write
questions:
- How do I hide a completed initiative from my initiatives list?
- Can I archive an initiative that was canceled?
instructions:
- text: Archive initiative {id}.
slots:
id: path.id
- text: Move completed initiative {id} out of the default list by archiving it.
slots:
id: path.id
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/initiatives/{id}/cancel'].post
update:
x-apievangelist-phrasing:
intent: Cancel an initiative for good
effect: destructive
questions:
- How do I permanently cancel an initiative and stop all its conversations?
- Is canceling an initiative reversible, and who is allowed to do it?
instructions:
- text: Cancel initiative {id} and stop every conversation it is running.
slots:
id: path.id
- text: Terminate initiative {id} permanently.
slots:
id: path.id
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/initiatives/{id}/data/summary'].get
update:
x-apievangelist-phrasing:
intent: Get an initiative's data summary
effect: read
questions:
- How many participants does an initiative have, and how well is each captured variable covered?
- What does the rollup of answers look like across an initiative?
instructions:
- text: Summarize the captured data for initiative {id}.
slots:
id: path.id
- text: Give me participant count and per-variable coverage for initiative {id}.
slots:
id: path.id
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/initiatives/{id}/extraction-schema'].get
update:
x-apievangelist-phrasing:
intent: Read an initiative's extraction schema
effect: read
questions:
- Which typed fields is an initiative currently pulling out of each conversation?
- Does this initiative have an extraction schema configured at all?
instructions:
- text: Show me the extraction schema for initiative {id}.
slots:
id: path.id
- text: Fetch the current extraction fields of initiative {id} so I can edit them.
slots:
id: path.id
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/initiatives/{id}/extraction-schema'].post
update:
x-apievangelist-phrasing:
intent: Replace an initiative's extraction schema
effect: write
questions:
- How do I define which yes/no, number or choice answers get extracted from conversations?
- Do I send only the changed fields or the whole extraction schema when replacing it?
instructions:
- text: Set the extraction schema of initiative {id} to {schema}.
slots:
id: path.id
schema: requestBody.schema
- text: Replace initiative {id}'s extraction fields with {schema} and note {notes} on the new version.
slots:
id: path.id
schema: requestBody.schema
notes: requestBody.notes
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/initiatives/{id}/launch'].post
update:
x-apievangelist-phrasing:
intent: Launch a draft initiative
effect: write
questions:
- What has to be in place before a WhatsApp initiative can go live?
- Does launching an initiative start messaging people straight away?
instructions:
- text: Launch initiative {id} and start outreach.
slots:
id: path.id
- text: Take draft initiative {id} live.
slots:
id: path.id
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/initiatives/{id}/participants'].get
update:
x-apievangelist-phrasing:
intent: List an initiative's participants
effect: read
questions:
- Who has been enrolled in an initiative and what did Boom capture from each of them?
- Can I find every run a particular person has had in an initiative, including the live one?
instructions:
- text: List the participants of initiative {id}.
slots:
id: path.id
- text: Find the runs for person {personExternalId} in initiative {id}.
slots:
id: path.id
personExternalId: query.personExternalId
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/initiatives/{id}/participants'].post
update:
x-apievangelist-phrasing:
intent: Enroll people in a WhatsApp initiative
effect: write
questions:
- How do I add contacts to an active initiative so they get the WhatsApp outreach?
- Will people on the do-not-contact list be messaged if I add them to an initiative?
instructions:
- text: Add {people} to initiative {id} and start messaging them.
slots:
id: path.id
people: requestBody.people
- text: 'Enroll these contacts in active initiative {id}: {people}.'
slots:
id: path.id
people: requestBody.people
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/initiatives/{id}/participants/{participantId}'].get
update:
x-apievangelist-phrasing:
intent: Get one participant's status and answers
effect: read
questions:
- What status is a single participant in, and what answers have they given so far?
- Can I check one person's captured answers without pulling the whole participant list?
instructions:
- text: Show participant {participantId} in initiative {id}.
slots:
id: path.id
participantId: path.participantId
- text: Get the captured answers for participant {participantId} of initiative {id}.
slots:
id: path.id
participantId: path.participantId
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/initiatives/{id}/participants/{participantId}/messages'].get
update:
x-apievangelist-phrasing:
intent: Read a participant's conversation transcript
effect: read
questions:
- Did this person ever reply to us, in any initiative?
- Where can I read the full WhatsApp back-and-forth with one participant?
instructions:
- text: Show me the messages exchanged with participant {participantId} in initiative {id}.
slots:
id: path.id
participantId: path.participantId
- text: Get everything participant {participantId} of initiative {id} has said to us, using scope {scope}.
slots:
id: path.id
participantId: path.participantId
scope: query.scope
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/initiatives/{id}/participants/{participantId}/steps'].get
update:
x-apievangelist-phrasing:
intent: Trace a participant's journey run steps
effect: read
questions:
- Which journey nodes ran for a participant and what signal did each one emit?
- Why did a participant's journey run stop or error at a certain node?
instructions:
- text: Show the node-by-node run timeline for participant {participantId} in initiative {id}.
slots:
id: path.id
participantId: path.participantId
- text: List the last {limit} journey steps for participant {participantId} of initiative {id}.
slots:
id: path.id
participantId: path.participantId
limit: query.limit
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/initiatives/{id}/participants/{participantId}/stop'].post
update:
x-apievangelist-phrasing:
intent: Stop messaging one participant
effect: destructive
questions:
- How do I stop all messages to one person and close their conversation?
- If I stop a participant, do I lose their answers and transcript?
instructions:
- text: Stop messaging participant {participantId} in initiative {id}.
slots:
id: path.id
participantId: path.participantId
- text: Close the conversation with participant {participantId} of initiative {id}.
slots:
id: path.id
participantId: path.participantId
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/initiatives/{id}/pause'].post
update:
x-apievangelist-phrasing:
intent: Pause enrollment into an initiative
effect: write
questions:
- Can I stop new people from being enrolled while ongoing conversations keep going?
- What happens to people already enrolled when an initiative is paused?
instructions:
- text: Pause initiative {id}.
slots:
id: path.id
- text: Stop enrolling new people into initiative {id} for now.
slots:
id: path.id
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/initiatives/{id}/reextract'].post
update:
x-apievangelist-phrasing:
intent: Re-run extraction over past conversations
effect: write
questions:
- How do I pull answers out of conversations that happened before I wrote the extraction schema?
- Can I see how many conversations would be re-extracted before spending anything?
- Why do some conversations produce nothing when re-extracted?
instructions:
- text: Re-extract the conversations of initiative {id}.
slots:
id: path.id
- text: Do a dry run of re-extraction on initiative {id} and tell me the counts.
slots:
id: path.id
- text: Re-extract initiative {id} conversations created since {fromDate}.
slots:
id: path.id
fromDate: requestBody.fromDate
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/initiatives/{id}/resume'].post
update:
x-apievangelist-phrasing:
intent: Resume a paused initiative
effect: write
questions:
- How do I get a paused initiative enrolling people again?
- Can a paused initiative be restarted?
instructions:
- text: Resume initiative {id}.
slots:
id: path.id
- text: Start enrolling people into paused initiative {id} again.
slots:
id: path.id
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/initiatives/{id}/templates'].get
update:
x-apievangelist-phrasing:
intent: See which templates each outreach round sends
effect: read
questions:
- Which WhatsApp template is linked to each outreach round of an initiative?
- Is round 1 linked yet, so my initiative can launch?
instructions:
- text: Show the round-by-round templates linked to initiative {id}.
slots:
id: path.id
- text: Check which outreach templates initiative {id} will send.
slots:
id: path.id
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/initiatives/{id}/templates'].post
update:
x-apievangelist-phrasing:
intent: Link a WhatsApp template to an outreach round
effect: write
questions:
- How do I attach an approved WhatsApp template as an initiative's first message?
- Can I use a different template for the follow-up outreach rounds?
instructions:
- text: Link template {templateId} to initiative {id} as its first outreach message.
slots:
id: path.id
templateId: requestBody.templateId
- text: Use template {templateId} for outreach round {round} of initiative {id}.
slots:
id: path.id
templateId: requestBody.templateId
round: requestBody.round
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/initiatives/{id}/transcripts'].get
update:
x-apievangelist-phrasing:
intent: Export all conversation transcripts
effect: read
questions:
- How can I export every conversation from an initiative without fetching participants one at a time?
- What is the most participants' transcripts I can get per page?
instructions:
- text: Export all conversation transcripts for initiative {id}.
slots:
id: path.id
- text: Get the next page of transcripts for initiative {id} after cursor {cursor}.
slots:
id: path.id
cursor: query.cursor
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/initiatives/{id}/unarchive'].post
update:
x-apievangelist-phrasing:
intent: Unarchive an initiative
effect: write
questions:
- How do I bring an archived initiative back into my list?
- Does unarchiving an initiative change its status?
instructions:
- text: Unarchive initiative {id}.
slots:
id: path.id
- text: Restore archived initiative {id} to the default list.
slots:
id: path.id
method: generated
generated: '2026-09-26'