Scope3 · OpenAPI Overlay 1.0.0

API Evangelist conversational phrasing for Scope3 Storefront Storefront Ad Server Buyer Routing API

15 actions 15 updates phrasing extends openapi/scope3-storefront-ad-server-buyer-routing-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.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-apievangelist-phrasing

Targets 15

$.info
$.paths['/esa/{esaId}/sandbox-account'].get
$.paths['/esa/{esaId}/sandbox-account/ensure'].post
$.paths['/esa/{esaId}/advertisers'].get
$.paths['/esa/{esaId}/gam/advertisers'].get
$.paths['/esa/{esaId}/gam/advertisers/ensure'].post
$.paths['/esa/{esaId}/default-advertiser'].put
$.paths['/esa/{esaId}/gam/default-advertiser'].put
$.paths['/esa/{esaId}/gam-custom-targeting-keys/ensure'].post
$.paths['/esa/{esaId}/axe-keys'].put
$.paths['/esa/{esaId}/buyer-advertiser-mappings'].get
$.paths['/esa/{esaId}/buyer-advertiser-mappings'].post
$.paths['/esa/{esaId}/buyer-advertiser-mappings/{mappingId}'].delete
$.paths['/esa/{esaId}/buyer-advertiser-mappings/{mappingId}'].patch
$.paths['/esa/{esaId}/recent-buyers'].get

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 Scope3 Storefront Storefront Ad Server Buyer Routing API
  version: 1.0.0
extends: openapi/scope3-storefront-ad-server-buyer-routing-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: 14
- target: $.paths['/esa/{esaId}/sandbox-account'].get
  update:
    x-apievangelist-phrasing:
      intent: Check ad server sandbox account readiness
      effect: read
      questions:
      - Is the sandbox advertiser account ready for no-spend tests on my ad server source?
      - Can I check sandbox readiness before running buyer-stack tests?
      instructions:
      - text: Check sandbox account readiness for ad server source {esaId}.
        slots:
          esaId: path.esaId
      - text: Show the sandbox account status on source {esaId}.
        slots:
          esaId: path.esaId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/esa/{esaId}/sandbox-account/ensure'].post
  update:
    x-apievangelist-phrasing:
      intent: Create or repair the ad server sandbox account
      effect: write
      questions:
      - How do I make sure a sandbox advertiser account exists for no-spend testing?
      - Can a broken sandbox account mapping be repaired automatically?
      instructions:
      - text: Ensure the sandbox account exists on ad server source {esaId}.
        slots:
          esaId: path.esaId
      - text: Create or repair the no-spend sandbox account for source {esaId}.
        slots:
          esaId: path.esaId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/esa/{esaId}/advertisers'].get
  update:
    x-apievangelist-phrasing:
      intent: List ad server advertisers for any adapter
      effect: read
      questions:
      - Which advertisers exist in my connected ad server, whatever platform it is?
      - How can I tell if the advertiser roster read was complete?
      instructions:
      - text: List advertisers on ad server source {esaId}.
        slots:
          esaId: path.esaId
      - text: Read up to {limit} advertisers from the ad server behind {esaId}.
        slots:
          limit: query.limit
          esaId: path.esaId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/esa/{esaId}/gam/advertisers'].get
  update:
    x-apievangelist-phrasing:
      intent: List cached Google Ad Manager advertisers
      effect: read
      questions:
      - Which Google Ad Manager advertisers are cached for my source?
      - Can I search cached GAM advertisers by name?
      instructions:
      - text: List cached GAM advertisers for source {esaId}.
        slots:
          esaId: path.esaId
      - text: Search cached GAM advertisers on {esaId} for {q}.
        slots:
          esaId: path.esaId
          q: query.q
      method: generated
      generated: '2026-10-01'
- target: $.paths['/esa/{esaId}/gam/advertisers/ensure'].post
  update:
    x-apievangelist-phrasing:
      intent: Find or create a GAM advertiser by name
      effect: write
      questions:
      - How do I create a Google Ad Manager advertiser to route buyers to?
      - Can I dry-run creating a GAM advertiser first?
      instructions:
      - text: Ensure a GAM advertiser named {name} exists on source {esaId}.
        slots:
          name: requestBody.name
          esaId: path.esaId
      - text: Find or create GAM advertiser {name} for {esaId}, dry run {dryRun}.
        slots:
          name: requestBody.name
          esaId: path.esaId
          dryRun: requestBody.dryRun
      method: generated
      generated: '2026-10-01'
- target: $.paths['/esa/{esaId}/default-advertiser'].put
  update:
    x-apievangelist-phrasing:
      intent: Set the catch-all advertiser for any ad server
      effect: write
      questions:
      - Where do unmatched buyers get routed in my ad server?
      - Can I set a default advertiser without caring which ad server backs the agent?
      instructions:
      - text: Set the default advertiser on source {esaId} to {advertiserId}.
        slots:
          esaId: path.esaId
          advertiserId: requestBody.advertiserId
      - text: Route all unmatched buyers on {esaId} to advertiser {advertiserId}.
        slots:
          esaId: path.esaId
          advertiserId: requestBody.advertiserId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/esa/{esaId}/gam/default-advertiser'].put
  update:
    x-apievangelist-phrasing:
      intent: Set the default GAM advertiser
      effect: write
      questions:
      - Can I set the Google Ad Manager-specific default advertiser for buyer routing?
      - Is there a GAM-only way to pick the fallback advertiser?
      instructions:
      - text: Set the default GAM advertiser for {esaId} to {gamAdvertiserId}.
        slots:
          esaId: path.esaId
          gamAdvertiserId: requestBody.gamAdvertiserId
      - text: Use GAM advertiser {gamAdvertiserId} as the fallback on GAM source {esaId}.
        slots:
          gamAdvertiserId: requestBody.gamAdvertiserId
          esaId: path.esaId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/esa/{esaId}/gam-custom-targeting-keys/ensure'].post
  update:
    x-apievangelist-phrasing:
      intent: Create GAM custom-targeting keys
      effect: write
      questions:
      - How do I add custom-targeting keys in Google Ad Manager through my source?
      - Will existing GAM keys be duplicated if I ensure them again?
      instructions:
      - text: Ensure GAM custom-targeting keys {keys} exist on {esaId}.
        slots:
          keys: requestBody.keys
          esaId: path.esaId
      - text: Create missing custom-targeting keys {keys} in GAM for source {esaId}.
        slots:
          keys: requestBody.keys
          esaId: path.esaId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/esa/{esaId}/axe-keys'].put
  update:
    x-apievangelist-phrasing:
      intent: Configure AXE targeting key names
      effect: write
      questions:
      - Which GAM keys carry Scope3 include, exclude and emissions macro targeting?
      - Does the AXE macro key have to be a specific value?
      instructions:
      - text: 'Configure AXE keys on {esaId}: include {axeIncludeKey}, exclude {axeExcludeKey}, macro {axeMacroKey}.'
        slots:
          esaId: path.esaId
          axeIncludeKey: requestBody.axeIncludeKey
          axeExcludeKey: requestBody.axeExcludeKey
          axeMacroKey: requestBody.axeMacroKey
      - text: Set AXE include key {axeIncludeKey}, exclude key {axeExcludeKey} and macro key {axeMacroKey} for source {esaId}.
        slots:
          axeIncludeKey: requestBody.axeIncludeKey
          axeExcludeKey: requestBody.axeExcludeKey
          axeMacroKey: requestBody.axeMacroKey
          esaId: path.esaId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/esa/{esaId}/buyer-advertiser-mappings'].get
  update:
    x-apievangelist-phrasing:
      intent: List buyer-to-advertiser routing mappings
      effect: read
      questions:
      - Which buyers are mapped to specific GAM advertisers?
      - Can I look up the routing mapping for one buyer's operator domain?
      instructions:
      - text: List buyer advertiser mappings on {esaId}.
        slots:
          esaId: path.esaId
      - text: Show the mapping for operator domain {operatorDomain} on {esaId}.
        slots:
          operatorDomain: query.operatorDomain
          esaId: path.esaId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/esa/{esaId}/buyer-advertiser-mappings'].post
  update:
    x-apievangelist-phrasing:
      intent: Map a buyer to a GAM advertiser
      effect: write
      questions:
      - How do I route a specific buyer to its own GAM advertiser?
      - Can a buyer mapping be scoped to one brand?
      instructions:
      - text: Map buyer {operatorDomain} to GAM advertiser {gamAdvertiserId} on {esaId}.
        slots:
          operatorDomain: requestBody.operatorDomain
          gamAdvertiserId: requestBody.gamAdvertiserId
          esaId: path.esaId
      - text: Route {operatorDomain} brand {brandId} to GAM advertiser {gamAdvertiserId} on source {esaId}.
        slots:
          operatorDomain: requestBody.operatorDomain
          brandId: requestBody.brandId
          gamAdvertiserId: requestBody.gamAdvertiserId
          esaId: path.esaId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/esa/{esaId}/buyer-advertiser-mappings/{mappingId}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Delete a buyer routing mapping
      effect: destructive
      questions:
      - Can I remove a buyer-specific advertiser mapping?
      - What happens to a buyer once its mapping is deleted?
      instructions:
      - text: Delete buyer mapping {mappingId} on {esaId}.
        slots:
          mappingId: path.mappingId
          esaId: path.esaId
      - text: Remove routing mapping {mappingId} from source {esaId}.
        slots:
          mappingId: path.mappingId
          esaId: path.esaId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/esa/{esaId}/buyer-advertiser-mappings/{mappingId}'].patch
  update:
    x-apievangelist-phrasing:
      intent: Update a buyer routing mapping
      effect: write
      questions:
      - Can I point an existing buyer mapping at a different GAM advertiser?
      - How do I change the brand on a buyer mapping?
      instructions:
      - text: Point mapping {mappingId} on {esaId} to GAM advertiser {gamAdvertiserId}.
        slots:
          mappingId: path.mappingId
          esaId: path.esaId
          gamAdvertiserId: requestBody.gamAdvertiserId
      - text: Change the brand of mapping {mappingId} on {esaId} to {brandId}.
        slots:
          mappingId: path.mappingId
          esaId: path.esaId
          brandId: requestBody.brandId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/esa/{esaId}/recent-buyers'].get
  update:
    x-apievangelist-phrasing:
      intent: List recent buyers and how they routed
      effect: read
      questions:
      - Which buyers have hit my ad server source recently?
      - Did recent buyers go to the default advertiser or a specific mapping?
      instructions:
      - text: List recent buyers on {esaId}.
        slots:
          esaId: path.esaId
      - text: Show buyers seen on {esaId} in the last {days} days.
        slots:
          esaId: path.esaId
          days: query.days
      method: generated
      generated: '2026-10-01'