# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand. overlay: 1.0.0 info: title: API Evangelist conversational phrasing for Boom Journeys API version: 1.0.0 extends: openapi/boom-ai-journeys-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: 21 - target: $.paths['/api/v1/journeys'].get update: x-apievangelist-phrasing: intent: List my journeys effect: read questions: - Which journeys has my organization built, and which ones are live? - Can I see only the journeys attached to one initiative? instructions: - text: List my journeys, newest first. - text: Show the journeys for initiative {initiativeId} with status {status}. slots: initiativeId: query.initiativeId status: query.status method: generated generated: '2026-09-26' - target: $.paths['/api/v1/journeys'].post update: x-apievangelist-phrasing: intent: Create a draft journey from a full graph effect: write questions: - How do I create a brand-new journey for an initiative from a complete node graph? - Do I have to give node positions when creating a journey, or are they laid out for me? instructions: - text: Create a new draft journey on initiative {initiativeId} with graph {definition}. slots: initiativeId: requestBody.initiativeId definition: requestBody.definition - text: 'Build a fresh journey for initiative {initiativeId} from this definition: {definition}.' slots: initiativeId: requestBody.initiativeId definition: requestBody.definition method: generated generated: '2026-09-26' - target: $.paths['/api/v1/journeys/{journeyId}'].get update: x-apievangelist-phrasing: intent: Get a journey's trigger and steps effect: read questions: - What triggers a journey and what steps do people move through in it? - Can I get a quick read-only summary of one journey's setup? instructions: - text: Show me journey {journeyId}. slots: journeyId: path.journeyId - text: Summarize the trigger and ordered steps of journey {journeyId}. slots: journeyId: path.journeyId method: generated generated: '2026-09-26' - target: $.paths['/api/v1/journeys/{journeyId}'].patch update: x-apievangelist-phrasing: intent: Replace a draft journey's whole graph effect: write questions: - How do I overwrite an existing draft journey's entire graph in one call? - Does saving a new graph over a draft wipe its environment pin? instructions: - text: Replace the graph of draft journey {journeyId} with {definition}. slots: journeyId: path.journeyId definition: requestBody.definition - text: 'Save this full definition back onto draft journey {journeyId}: {definition}.' slots: journeyId: path.journeyId definition: requestBody.definition method: generated generated: '2026-09-26' - target: $.paths['/api/v1/journeys/{journeyId}/definition'].get update: x-apievangelist-phrasing: intent: Get a journey's full editable graph effect: read questions: - Where do I get every node's config and connection so I can edit a journey and save it back? - What is the difference between a journey's public summary and its full authoring definition? instructions: - text: Fetch the full editable definition of journey {journeyId}. slots: journeyId: path.journeyId - text: Give me all nodes, config and edges of journey {journeyId}. slots: journeyId: path.journeyId method: generated generated: '2026-09-26' - target: $.paths['/api/v1/journeys/{journeyId}/edges'].post update: x-apievangelist-phrasing: intent: Connect two journey nodes effect: write questions: - How do I route a journey to the next step when someone replies? - Can one output handle on a node lead to more than one node? instructions: - text: In journey {journeyId}, connect node {from} to node {to} on the {sourceHandle} signal. slots: journeyId: path.journeyId from: requestBody.from to: requestBody.to sourceHandle: requestBody.sourceHandle - text: Wire the {sourceHandle} output of {from} to {to} in journey {journeyId}. slots: journeyId: path.journeyId from: requestBody.from to: requestBody.to sourceHandle: requestBody.sourceHandle method: generated generated: '2026-09-26' - target: $.paths['/api/v1/journeys/{journeyId}/edges'].delete update: x-apievangelist-phrasing: intent: Remove edges leaving a journey node effect: destructive questions: - How do I remove the connection between two steps in a journey? - What happens if I disconnect a node without naming a target or handle? instructions: - text: Remove all outgoing edges from node {from} in journey {journeyId}. slots: journeyId: path.journeyId from: query.from - text: Disconnect node {from} from node {to} in journey {journeyId}. slots: journeyId: path.journeyId from: query.from to: query.to method: generated generated: '2026-09-26' - target: $.paths['/api/v1/journeys/{journeyId}/fork'].post update: x-apievangelist-phrasing: intent: Fork a live journey into an editable draft effect: write questions: - How can I safely edit a journey that is already live? - Does copying a published journey into a draft stop the live one? instructions: - text: Fork published journey {journeyId} into a new draft. slots: journeyId: path.journeyId - text: Make an editable copy of live journey {journeyId}. slots: journeyId: path.journeyId method: generated generated: '2026-09-26' - target: $.paths['/api/v1/journeys/{journeyId}/message-variables'].get update: x-apievangelist-phrasing: intent: List variables a message template can use effect: read questions: - Which customer and person variables can I bind into a SEND_MESSAGE template for this journey? - What personalization fields actually resolve in a journey's WhatsApp messages? instructions: - text: List the message variables available in journey {journeyId}. slots: journeyId: path.journeyId - text: Show which template bindings resolve for journey {journeyId}. slots: journeyId: path.journeyId method: generated generated: '2026-09-26' - target: $.paths['/api/v1/journeys/{journeyId}/nodes'].post update: x-apievangelist-phrasing: intent: Add a node to a draft journey effect: write questions: - How do I add a single new step to a draft journey without resending the whole graph? - Does a newly added journey node get connected automatically? instructions: - text: Add node {node} to draft journey {journeyId}. slots: journeyId: path.journeyId node: requestBody.node - text: 'Insert this step into journey {journeyId}: {node}.' slots: journeyId: path.journeyId node: requestBody.node method: generated generated: '2026-09-26' - target: $.paths['/api/v1/journeys/{journeyId}/nodes/{nodeId}'].delete update: x-apievangelist-phrasing: intent: Delete a node from a draft journey effect: destructive questions: - How do I remove a step from a draft journey? - Are the edges attached to a node removed when I delete it? instructions: - text: Delete node {nodeId} from journey {journeyId}. slots: journeyId: path.journeyId nodeId: path.nodeId - text: Remove step {nodeId} and its connections from draft journey {journeyId}. slots: journeyId: path.journeyId nodeId: path.nodeId method: generated generated: '2026-09-26' - target: $.paths['/api/v1/journeys/{journeyId}/nodes/{nodeId}'].patch update: x-apievangelist-phrasing: intent: Update one journey node's config effect: write questions: - Can I rename or reconfigure a single step in a draft journey? - Are node inputs replaced or merged when I update a step? instructions: - text: Rename node {nodeId} in journey {journeyId} to {name}. slots: journeyId: path.journeyId nodeId: path.nodeId name: requestBody.name - text: Merge {inputs} into the config of node {nodeId} in journey {journeyId}. slots: journeyId: path.journeyId nodeId: path.nodeId inputs: requestBody.inputs method: generated generated: '2026-09-26' - target: $.paths['/api/v1/journeys/{journeyId}/publish'].post update: x-apievangelist-phrasing: intent: Publish a draft journey and start outreach effect: write questions: - How do I make a draft journey go live and start enrolling people? - When I publish a segment-triggered journey, can it also enroll people already in the segment? instructions: - text: Publish journey {journeyId}, confirming it will start real outreach. slots: journeyId: path.journeyId - text: Go live with journey {journeyId} and backfill existing segment members. slots: journeyId: path.journeyId method: generated generated: '2026-09-26' - target: $.paths['/api/v1/journeys/{journeyId}/stop'].post update: x-apievangelist-phrasing: intent: Stop and retire a live journey effect: destructive questions: - How do I halt a live journey so nobody else gets enrolled? - What happens to people already enrolled but not yet messaged when a journey is stopped? instructions: - text: Stop live journey {journeyId}, confirming the outreach halt. slots: journeyId: path.journeyId - text: Retire journey {journeyId} permanently. slots: journeyId: path.journeyId method: generated generated: '2026-09-26' - target: $.paths['/api/v1/journeys/{journeyId}/trigger'].patch update: x-apievangelist-phrasing: intent: Set how people enter a journey effect: write questions: - Can a journey start automatically when someone joins a segment or fires an event? - Is there a frequency cap on how often one person can enter a journey? instructions: - text: Trigger journey {journeyId} when people join segment {segmentId}. slots: journeyId: path.journeyId segmentId: requestBody.segmentId - text: Set journey {journeyId} to start on the {eventName} event. slots: journeyId: path.journeyId eventName: requestBody.eventName - text: Make journey {journeyId} use trigger {triggerType} with at most {maxEnrollments} entries per {enrollmentWindow}. slots: journeyId: path.journeyId triggerType: requestBody.triggerType maxEnrollments: requestBody.maxEnrollments enrollmentWindow: requestBody.enrollmentWindow method: generated generated: '2026-09-26' - target: $.paths['/api/v1/journeys/catalog'].get update: x-apievangelist-phrasing: intent: Describe every journey node kind effect: read questions: - What kinds of steps can a journey contain, and what signals does each one emit? - What are the rules for connecting journey nodes? instructions: - text: Show me the journey node catalog. - text: List every journey node kind with its inputs and output handles. method: generated generated: '2026-09-26' - target: $.paths['/api/v1/journeys/condition-catalog'].get update: x-apievangelist-phrasing: intent: List attributes usable in journey conditions effect: read questions: - Which person attributes and computed values can a journey decision branch on? - What operators are allowed in a DECISION condition for each attribute type? instructions: - text: Show the attributes and operators I can use in journey decision conditions. - text: List the condition catalog for building CASE branches. method: generated generated: '2026-09-26' - target: $.paths['/api/v1/journeys/event-catalog'].get update: x-apievangelist-phrasing: intent: List CDP event names seen for my org effect: read questions: - Which event names can I use to trigger a journey? - What behavioral events has Boom seen for my organization so far? instructions: - text: List the event names available for journey triggers. - text: Show the event catalog for event-based decisions and dispatch nodes. method: generated generated: '2026-09-26' - target: $.paths['/api/v1/journeys/message-channels'].get update: x-apievangelist-phrasing: intent: List WhatsApp channels a journey can send from effect: read questions: - Which WhatsApp channels can a send-message step use? - Where do I find the channel id to pin on a SEND_MESSAGE node? instructions: - text: List the WhatsApp channels journeys can send from. - text: Show me the message channel ids for journey send steps. method: generated generated: '2026-09-26' - target: $.paths['/api/v1/journeys/message-templates'].get update: x-apievangelist-phrasing: intent: List approved templates for a journey channel effect: read questions: - Which approved WhatsApp templates can a send-message step use on a given channel? - Why doesn't a template show up for my journey's send step on another channel? instructions: - text: List the approved templates a journey can send on channel {channelId}. slots: channelId: query.channelId - text: Show SEND_MESSAGE template options for channel {channelId}. slots: channelId: query.channelId method: generated generated: '2026-09-26' - target: $.paths['/api/v1/journeys/validate'].post update: x-apievangelist-phrasing: intent: Validate a journey before publishing effect: read questions: - Will my draft journey pass the publish checks, and what issues would block it? - Can I check a journey graph for errors without saving it? instructions: - text: Validate draft journey {journeyId}. slots: journeyId: requestBody.journeyId - text: 'Dry-run the publish checks on this graph: {definition}.' slots: definition: requestBody.definition method: generated generated: '2026-09-26'