Omnisend · OpenAPI Overlay 1.0.0

API Evangelist conversational phrasing for Campaigns API

15 actions 15 updates phrasing extends openapi/omnisend-campaigns-api-openapi.yml
Generated by API Evangelist Written by API Evangelist tooling for Omnisend's API. It is a proposal applied on top of the contract, not a document Omnisend publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-apievangelist-phrasing

Targets 15

$.info
$.paths['/campaigns'].get
$.paths['/campaigns'].post
$.paths['/campaigns/{id}'].get
$.paths['/campaigns/{id}'].delete
$.paths['/campaigns/{id}'].patch
$.paths['/campaigns/{id}/ab-test/resume'].post
$.paths['/campaigns/{id}/ab-test/stop'].post
$.paths['/campaigns/{id}/ab-test/winner'].post
$.paths['/campaigns/{id}/cancel'].post
$.paths['/campaigns/{id}/copy'].post
$.paths['/campaigns/{id}/send'].post
$.paths['/campaigns/{id}/test-email'].post
$.paths['/campaigns/{id}/utm'].get
$.paths['/campaigns/{id}/utm'].put

OpenAPI Overlay

Raw ↑
# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand.
overlay: 1.0.0
info:
  title: API Evangelist conversational phrasing for Campaigns API
  version: 1.0.0
extends: openapi/omnisend-campaigns-api-openapi.yml
actions:
- target: $.info
  update:
    x-apievangelist-phrasing:
      method: generated
      generated: '2026-10-02'
      generator: build-phrasing.py
      label: Generated by API Evangelist
      operations: 14
- target: $.paths['/campaigns'].get
  update:
    x-apievangelist-phrasing:
      intent: List campaigns
      effect: read
      questions:
      - Which of my campaigns are still drafts?
      - Can I list only SMS campaigns created this month?
      - What booster campaigns belong to a specific parent campaign?
      instructions:
      - text: List campaigns with status {status}.
        slots:
          status: query.status
      - text: List {channel} campaigns whose name contains {nameContains}.
        slots:
          channel: query.channel
          nameContains: query.nameContains
      - text: List the campaigns whose parent campaign is {parentCampaignID}.
        slots:
          parentCampaignID: query.parentCampaignID
      method: generated
      generated: '2026-10-02'
- target: $.paths['/campaigns'].post
  update:
    x-apievangelist-phrasing:
      intent: Create a campaign draft
      effect: write
      questions:
      - How do I create a new email campaign draft?
      - Can I set up a booster resend for a campaign that was already sent?
      - What's needed to create an A/B test campaign?
      instructions:
      - text: Create a {channel} campaign draft of type {type} named {name}.
        slots:
          channel: requestBody.channel
          type: requestBody.type
          name: requestBody.name
      - text: Create a {type} campaign on channel {channel} with booster settings {boosterSettings}.
        slots:
          type: requestBody.type
          channel: requestBody.channel
          boosterSettings: requestBody.boosterSettings
      method: generated
      generated: '2026-10-02'
- target: $.paths['/campaigns/{id}'].get
  update:
    x-apievangelist-phrasing:
      intent: Get one campaign
      effect: read
      questions:
      - What content and audience does one particular campaign have?
      - Can I check a single campaign's current status by its ID?
      instructions:
      - text: Show campaign {id}.
        slots:
          id: path.id
      - text: Fetch the settings, audience and status of campaign {id}.
        slots:
          id: path.id
      method: generated
      generated: '2026-10-02'
- target: $.paths['/campaigns/{id}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Delete a campaign
      effect: destructive
      questions:
      - Can I delete a campaign I don't need anymore?
      - What's the way to get rid of an existing booster so I can replace it?
      instructions:
      - text: Delete campaign {id}.
        slots:
          id: path.id
      - text: Remove the existing booster campaign {id} so I can create a new one.
        slots:
          id: path.id
      method: generated
      generated: '2026-10-02'
- target: $.paths['/campaigns/{id}'].patch
  update:
    x-apievangelist-phrasing:
      intent: Edit a draft campaign
      effect: write
      questions:
      - Why does editing my campaign return a conflict once it's scheduled?
      - Can I change the audience or content of a campaign that is still a draft?
      instructions:
      - text: Rename draft campaign {id} to {name}.
        slots:
          id: path.id
          name: requestBody.name
      - text: Update the audience of draft campaign {id} to {audience}.
        slots:
          id: path.id
          audience: requestBody.audience
      - text: Change the sending settings of draft campaign {id} to {sendingSettings}.
        slots:
          id: path.id
          sendingSettings: requestBody.sendingSettings
      method: generated
      generated: '2026-10-02'
- target: $.paths['/campaigns/{id}/ab-test/resume'].post
  update:
    x-apievangelist-phrasing:
      intent: Resume a stopped A/B test
      effect: write
      questions:
      - Can I restart automatic winner selection on an A/B test I stopped earlier?
      - What does resuming a stopped A/B test campaign do?
      instructions:
      - text: Resume the stopped A/B test on campaign {id}.
        slots:
          id: path.id
      - text: Let automatic winner selection consider campaign {id} again.
        slots:
          id: path.id
      method: generated
      generated: '2026-10-02'
- target: $.paths['/campaigns/{id}/ab-test/stop'].post
  update:
    x-apievangelist-phrasing:
      intent: Stop a running A/B test
      effect: write
      questions:
      - How do I halt automatic winner picking on a running A/B test?
      - Can I freeze an A/B test while the campaign is in started status?
      instructions:
      - text: Stop the A/B test on campaign {id}.
        slots:
          id: path.id
      - text: Halt the winner-selection phase of A/B campaign {id}.
        slots:
          id: path.id
      method: generated
      generated: '2026-10-02'
- target: $.paths['/campaigns/{id}/ab-test/winner'].post
  update:
    x-apievangelist-phrasing:
      intent: Pick an A/B test winner manually
      effect: write
      questions:
      - Can I manually choose which A/B variant wins and gets sent?
      - What happens right after I pick an A/B test winner myself?
      instructions:
      - text: Pick variant {variantID} as the winner of campaign {id}'s A/B test.
        slots:
          variantID: requestBody.variantID
          id: path.id
      - text: Send variant {variantID} of A/B campaign {id} as the winner now.
        slots:
          variantID: requestBody.variantID
          id: path.id
      method: generated
      generated: '2026-10-02'
- target: $.paths['/campaigns/{id}/cancel'].post
  update:
    x-apievangelist-phrasing:
      intent: Cancel a campaign
      effect: destructive
      questions:
      - Can I cancel a scheduled campaign before it goes out?
      - Which campaign statuses can be canceled, and can an SMS campaign be canceled once started?
      instructions:
      - text: Cancel campaign {id}.
        slots:
          id: path.id
      - text: Cancel the scheduled or paused send of campaign {id}.
        slots:
          id: path.id
      method: generated
      generated: '2026-10-02'
- target: $.paths['/campaigns/{id}/copy'].post
  update:
    x-apievangelist-phrasing:
      intent: Copy a campaign into a new draft
      effect: write
      questions:
      - How do I reuse a sent campaign by making an editable draft copy?
      - Does duplicating a campaign change the original one?
      instructions:
      - text: Copy campaign {id} into a new draft.
        slots:
          id: path.id
      - text: Duplicate campaign {id} with its content, audience and settings.
        slots:
          id: path.id
      method: generated
      generated: '2026-10-02'
- target: $.paths['/campaigns/{id}/send'].post
  update:
    x-apievangelist-phrasing:
      intent: Send a draft campaign
      effect: write
      questions:
      - How do I send a draft campaign out to its audience?
      - Can I send the same campaign a second time after it has gone out?
      instructions:
      - text: Send campaign {id}.
        slots:
          id: path.id
      - text: Submit draft campaign {id} for sending on its schedule.
        slots:
          id: path.id
      method: generated
      generated: '2026-10-02'
- target: $.paths['/campaigns/{id}/test-email'].post
  update:
    x-apievangelist-phrasing:
      intent: Send a test email of a campaign
      effect: write
      questions:
      - Can I email myself a preview of a draft campaign before sending it?
      - How many addresses can receive a campaign test email?
      instructions:
      - text: Send a test of campaign {id} to {recipients}.
        slots:
          id: path.id
          recipients: requestBody.recipients
      - text: Email a preview of draft campaign {id} to {recipients}.
        slots:
          id: path.id
          recipients: requestBody.recipients
      method: generated
      generated: '2026-10-02'
- target: $.paths['/campaigns/{id}/utm'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a campaign's UTM settings
      effect: read
      questions:
      - What UTM tags are set on my campaign's links?
      - Can I see the per-variant UTM settings of an A/B campaign?
      instructions:
      - text: Show UTM settings for campaign {id}.
        slots:
          id: path.id
      - text: Get the UTM tags of each variant in A/B campaign {id}.
        slots:
          id: path.id
      method: generated
      generated: '2026-10-02'
- target: $.paths['/campaigns/{id}/utm'].put
  update:
    x-apievangelist-phrasing:
      intent: Replace a campaign's UTM settings
      effect: write
      questions:
      - How do I change the UTM tags on a draft campaign?
      - Can I set different UTM tags for each A/B test variant?
      instructions:
      - text: Set UTM tags {tags} on campaign {id}.
        slots:
          tags: requestBody.tags
          id: path.id
      - text: Set per-variant UTM tags {variants} on A/B campaign {id}.
        slots:
          variants: requestBody.variants
          id: path.id
      method: generated
      generated: '2026-10-02'