Scope3 · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for Scope3 Buyer Campaigns API
22 actions
22 updates
phrasing
extends
openapi/scope3-campaigns-api-openapi.yml
Generated by API Evangelist
Written by API Evangelist tooling for Scope3's API. It is a proposal applied on top of the contract, not a document Scope3 publishes.
What the actions change
x-apievangelist-phrasing
Targets 22 · first 16 shown; the file carries all of them
$.info
$.paths['/campaigns'].get
$.paths['/campaigns'].post
$.paths['/campaigns/{campaignId}'].get
$.paths['/campaigns/{campaignId}'].put
$.paths['/campaigns/{campaignId}'].delete
$.paths['/campaigns/{campaignId}/delivery'].get
$.paths['/campaigns/{campaignId}/execute'].post
$.paths['/campaigns/{campaignId}/pause'].post
$.paths['/campaigns/{campaignId}/reactivate'].post
$.paths['/campaigns/{campaignId}/auto-select-products'].post
$.paths['/campaigns/{campaignId}/media-buy-status'].get
$.paths['/media-buys/{mediaBuyId}'].get
$.paths['/media-buys/{mediaBuyId}'].patch
$.paths['/media-buys/{mediaBuyId}/packages'].get
$.paths['/media-buys/{mediaBuyId}/pause'].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 Scope3 Buyer Campaigns API
version: 1.0.0
extends: openapi/scope3-campaigns-api-openapi.yml
actions:
- target: $.info
update:
x-apievangelist-phrasing:
method: generated
generated: '2026-10-01'
generator: build-phrasing.py
label: Generated by API Evangelist
operations: 21
- target: $.paths['/campaigns'].get
update:
x-apievangelist-phrasing:
intent: List campaigns
effect: read
questions:
- Which campaigns are running for a particular advertiser?
- Can I include archived campaigns when listing?
- How do I find campaigns by media buy status?
instructions:
- text: List campaigns for advertiser {advertiserId}.
slots:
advertiserId: query.advertiserId
- text: Show campaigns with status {status}.
slots:
status: query.status
- text: Find campaigns named {name}, including archived ones.
slots:
name: query.name
method: generated
generated: '2026-10-01'
- target: $.paths['/campaigns'].post
update:
x-apievangelist-phrasing:
intent: Create a campaign
effect: write
questions:
- How do I start a new ad campaign?
- Will my campaign brief be screened by content moderation when I create it?
instructions:
- text: Create a new campaign.
- text: Draft a new campaign with a brief for my advertiser.
method: generated
generated: '2026-10-01'
- target: $.paths['/campaigns/{campaignId}'].get
update:
x-apievangelist-phrasing:
intent: Get a campaign's details
effect: read
questions:
- Can I see the full detail of one campaign including its property lists?
- Is there a way to fetch fresh campaign data rather than cached?
instructions:
- text: Get campaign {id}.
slots:
id: path.id
- text: Show campaign {id} with product details.
slots:
id: path.id
method: generated
generated: '2026-10-01'
- target: $.paths['/campaigns/{campaignId}'].put
update:
x-apievangelist-phrasing:
intent: Update a campaign
effect: write
questions:
- Can I edit a campaign's name or brief after creating it?
- What happens if my updated campaign brief violates moderation policy?
instructions:
- text: Update campaign {id}.
slots:
id: path.id
- text: Change the brief on campaign {id}.
slots:
id: path.id
method: generated
generated: '2026-10-01'
- target: $.paths['/campaigns/{campaignId}'].delete
update:
x-apievangelist-phrasing:
intent: Delete a campaign
effect: destructive
questions:
- Can I delete a campaign I no longer need?
- Is deleting a campaign permanent?
instructions:
- text: Delete campaign {id}.
slots:
id: path.id
- text: Remove campaign {id} entirely.
slots:
id: path.id
method: generated
generated: '2026-10-01'
- target: $.paths['/campaigns/{campaignId}/delivery'].get
update:
x-apievangelist-phrasing:
intent: Get live campaign delivery
effect: read
questions:
- How is my tracked campaign actually delivering right now?
- Can I break campaign delivery down by placement?
instructions:
- text: Get live delivery for campaign {campaignId}.
slots:
campaignId: path.campaignId
- text: Show delivery for campaign {campaignId} from {startDate} to {endDate} broken down by placement.
slots:
campaignId: path.campaignId
startDate: query.startDate
endDate: query.endDate
method: generated
generated: '2026-10-01'
- target: $.paths['/campaigns/{campaignId}/execute'].post
update:
x-apievangelist-phrasing:
intent: Launch a campaign
effect: write
questions:
- How do I launch a campaign so it starts delivering ads?
- Can I get debug details when a campaign launch fails?
instructions:
- text: Launch campaign {id}.
slots:
id: path.id
- text: Execute campaign {id} with debug output {debug}.
slots:
id: path.id
debug: requestBody.debug
method: generated
generated: '2026-10-01'
- target: $.paths['/campaigns/{campaignId}/pause'].post
update:
x-apievangelist-phrasing:
intent: Pause a campaign
effect: write
questions:
- Does pausing a campaign also pause all of its media buys?
- Can I stop a running campaign temporarily?
instructions:
- text: Pause campaign {id}.
slots:
id: path.id
- text: Pause all delivery on campaign {id}.
slots:
id: path.id
method: generated
generated: '2026-10-01'
- target: $.paths['/campaigns/{campaignId}/reactivate'].post
update:
x-apievangelist-phrasing:
intent: Reactivate a paused campaign
effect: write
questions:
- How do I resume a campaign I paused?
- Does reactivating a campaign restart its paused media buys too?
instructions:
- text: Reactivate campaign {id}.
slots:
id: path.id
- text: Resume paused campaign {id} and its media buys.
slots:
id: path.id
method: generated
generated: '2026-10-01'
- target: $.paths['/campaigns/{campaignId}/auto-select-products'].post
update:
x-apievangelist-phrasing:
intent: Auto-select products for a campaign
effect: write
questions:
- Can Scope3 pick products automatically for my draft performance campaign?
- Is there a cap on how many products auto-selection chooses?
instructions:
- text: Auto-select products for campaign {id}.
slots:
id: path.id
- text: Auto-select up to {maxProducts} products for campaign {id}.
slots:
maxProducts: requestBody.maxProducts
id: path.id
method: generated
generated: '2026-10-01'
- target: $.paths['/campaigns/{campaignId}/media-buy-status'].get
update:
x-apievangelist-phrasing:
intent: Poll live ADCP status of a campaign's media buys
effect: read
questions:
- What is the live seller-side status of every media buy in my campaign?
- Can I sync media buy statuses from the sales agents for a campaign?
instructions:
- text: Poll ADCP status for all media buys in campaign {id}.
slots:
id: path.id
- text: Check live sales-agent status of campaign {id}'s media buys.
slots:
id: path.id
method: generated
generated: '2026-10-01'
- target: $.paths['/media-buys/{mediaBuyId}'].get
update:
x-apievangelist-phrasing:
intent: Get a media buy and why it isn't delivering
effect: read
questions:
- Why is my media buy not delivering yet?
- What error code and pending reason does a single media buy have?
instructions:
- text: Get media buy {mediaBuyId}.
slots:
mediaBuyId: path.mediaBuyId
- text: Explain why media buy {mediaBuyId} is pending.
slots:
mediaBuyId: path.mediaBuyId
method: generated
generated: '2026-10-01'
- target: $.paths['/media-buys/{mediaBuyId}'].patch
update:
x-apievangelist-phrasing:
intent: Update a media buy
effect: write
questions:
- Can I change the end date or creatives of one media buy?
- Is it possible to edit a media buy's packages without touching the campaign?
instructions:
- text: Change the end time of media buy {mediaBuyId} to {end_time}.
slots:
mediaBuyId: path.mediaBuyId
end_time: requestBody.end_time
- text: Swap the creatives on media buy {mediaBuyId} to {creative_ids}.
slots:
mediaBuyId: path.mediaBuyId
creative_ids: requestBody.creative_ids
- text: Rename media buy {mediaBuyId} to {name}.
slots:
mediaBuyId: path.mediaBuyId
name: requestBody.name
method: generated
generated: '2026-10-01'
- target: $.paths['/media-buys/{mediaBuyId}/packages'].get
update:
x-apievangelist-phrasing:
intent: List a media buy's packages
effect: read
questions:
- Which packages make up a media buy and what are their flight dates?
- Can I see each package's pacing period?
instructions:
- text: List packages in media buy {mediaBuyId}.
slots:
mediaBuyId: path.mediaBuyId
- text: Show products and pacing for each package of media buy {mediaBuyId}.
slots:
mediaBuyId: path.mediaBuyId
method: generated
generated: '2026-10-01'
- target: $.paths['/media-buys/{mediaBuyId}/pause'].post
update:
x-apievangelist-phrasing:
intent: Pause a single media buy
effect: write
questions:
- Can I pause one media buy without pausing the whole campaign?
- Will pausing a media buy affect its sibling buys?
instructions:
- text: Pause media buy {mediaBuyId}.
slots:
mediaBuyId: path.mediaBuyId
- text: Pause only media buy {mediaBuyId}, leaving the rest running.
slots:
mediaBuyId: path.mediaBuyId
method: generated
generated: '2026-10-01'
- target: $.paths['/media-buys/{mediaBuyId}/reactivate'].post
update:
x-apievangelist-phrasing:
intent: Reactivate a single media buy
effect: write
questions:
- Can I resume one paused media buy on its own?
- Does reactivating a media buy touch other buys in the campaign?
instructions:
- text: Reactivate media buy {mediaBuyId}.
slots:
mediaBuyId: path.mediaBuyId
- text: Resume paused media buy {mediaBuyId} only.
slots:
mediaBuyId: path.mediaBuyId
method: generated
generated: '2026-10-01'
- target: $.paths['/campaigns/{campaignId}/products'].get
update:
x-apievangelist-phrasing:
intent: List products staged on a campaign
effect: read
questions:
- What products are queued on my campaign before launch?
- Which discovery run found each product on a campaign?
instructions:
- text: List products staged on campaign {id}.
slots:
id: path.id
- text: Show the queued products and their media buys for campaign {id}.
slots:
id: path.id
method: generated
generated: '2026-10-01'
- target: $.paths['/targeting/dimensions'].get
update:
x-apievangelist-phrasing:
intent: List supported targeting dimensions
effect: read
questions:
- What targeting dimensions can I use in campaign constraints?
- Can I get targeting dimension names in another language?
instructions:
- text: List the supported targeting dimensions.
- text: Show targeting dimensions in locale {locale}.
slots:
locale: query.locale
method: generated
generated: '2026-10-01'
- target: $.paths['/targeting/dimensions/{system}'].get
update:
x-apievangelist-phrasing:
intent: List codes for a targeting dimension
effect: read
questions:
- Which codes are valid for a given targeting dimension?
- Can I get all code-name pairs for one targeting system?
instructions:
- text: List the values for targeting dimension {system}.
slots:
system: path.system
- text: Show code-name pairs for {system} in locale {locale}.
slots:
system: path.system
locale: query.locale
method: generated
generated: '2026-10-01'
- target: $.paths['/targeting/dimensions/{system}/resolve'].get
update:
x-apievangelist-phrasing:
intent: Resolve text to targeting codes
effect: read
questions:
- How do I turn a place or label typed in plain text into a targeting code?
- Can I tell when a targeting text match is ambiguous?
instructions:
- text: Resolve {q} to a code in targeting dimension {system}.
slots:
q: query.q
system: path.system
- text: Look up targeting code candidates for {q} within {system}.
slots:
q: query.q
system: path.system
method: generated
generated: '2026-10-01'
- target: $.paths['/targeting/geo-metros'].get
update:
x-apievangelist-phrasing:
intent: List geo metro targeting codes
effect: read
questions:
- Which metro area codes can I target?
- Are geo metro codes numeric strings?
instructions:
- text: List the geo metro codes.
- text: Show geo metros for system {system}.
slots:
system: query.system
method: generated
generated: '2026-10-01'