Punchh · OpenAPI Overlay 1.0.0

API Evangelist conversational phrasing for Mobile Challenges API

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

What the actions change

x-apievangelist-phrasing

Targets 6

$.info
$.paths['/api2/mobile/challenges'].get
$.paths['/api2/mobile/challenges/{id}'].get
$.paths['/api2/mobile/users/challenges_listing'].get
$.paths['/api2/mobile/challenge_opt_in'].put
$.paths['/api2/mobile/challenge_opt_out'].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 Mobile Challenges API
  version: 1.0.0
extends: openapi/punchh-challenges-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: 5
- target: $.paths['/api2/mobile/challenges'].get
  update:
    x-apievangelist-phrasing:
      intent: List the business's challenges
      effect: read
      questions:
      - What challenges is the brand running for loyalty members right now?
      - Why would listing challenges return a 422 error?
      instructions:
      - text: List all challenges the business offers.
      - text: Show every challenge campaign for app client {client}.
        slots:
          client: requestBody.client
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api2/mobile/challenges/{id}'].get
  update:
    x-apievangelist-phrasing:
      intent: Get details of one challenge
      effect: read
      questions:
      - What are the rules and rewards of a specific challenge?
      - Can I look up a single challenge by its ID?
      instructions:
      - text: Show the details of challenge {id}.
        slots:
          id: path.id
      - text: What does challenge {id} require? Fetch it.
        slots:
          id: path.id
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api2/mobile/users/challenges_listing'].get
  update:
    x-apievangelist-phrasing:
      intent: List a guest's available, active and past challenges
      effect: read
      questions:
      - Which challenges has this guest joined and how far along are they?
      - Can I show only a guest's past challenges, page by page?
      instructions:
      - text: List my challenges in the {filter} category.
        slots:
          filter: requestBody.filter
      - text: Show page {page} of the guest's challenge progress, {per_page} per page.
        slots:
          page: requestBody.page
          per_page: requestBody.per_page
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api2/mobile/challenge_opt_in'].put
  update:
    x-apievangelist-phrasing:
      intent: Opt a guest into a challenge
      effect: write
      questions:
      - How does a guest explicitly join a challenge campaign?
      - Is challenge opt-in turned on by default?
      instructions:
      - text: Opt me in to challenge {id}.
        slots:
          id: requestBody.id
      - text: Enroll the guest in challenge {id}.
        slots:
          id: requestBody.id
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api2/mobile/challenge_opt_out'].put
  update:
    x-apievangelist-phrasing:
      intent: Opt a guest out of a challenge
      effect: write
      questions:
      - Can a guest leave a challenge they already joined?
      - How does a guest withdraw from an enrolled challenge campaign?
      instructions:
      - text: Opt me out of challenge {id}.
        slots:
          id: requestBody.id
      - text: Withdraw the guest from challenge {id}.
        slots:
          id: requestBody.id
      method: generated
      generated: '2026-10-01'