Punchh · OpenAPI Overlay 1.0.0

API Evangelist conversational phrasing for Punchh Auth API

17 actions 17 updates phrasing extends openapi/punchh-auth-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 17 · first 16 shown; the file carries all of them

$.info
$.paths['/api/auth/redemptions/online_order'].post
$.paths['/api/auth/redemptions'].post
$.paths['/api/auth/redemptions'].delete
$.paths['/api/auth/redemptions/applicable_offers'].get
$.paths['/api/auth/discounts/auto_select'].post
$.paths['/api/auth/discounts/select'].post
$.paths['/api/auth/discounts/unselect'].delete
$.paths['/api/auth/discounts/active'].get
$.paths['/api/auth/batch_redemptions'].post
$.paths['/api/auth/batch_redemptions/{redemption_ref}'].delete
$.paths['/api/auth/discounts/unlock'].put
$.paths['/api/auth/subscriptions'].get
$.paths['/api/auth/subscriptions'].post
$.paths['/api/auth/subscriptions/cancel'].put
$.paths['/api/auth/user_subscriptions'].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 Punchh Auth API
  version: 1.0.0
extends: openapi/punchh-auth-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: 16
- target: $.paths['/api/auth/redemptions/online_order'].post
  update:
    x-apievangelist-phrasing:
      intent: Redeem a reward against an online order receipt
      effect: write
      questions:
      - How does an online ordering site apply a guest's reward or redemption code to a checkout under the older Redemptions 1.0 flow?
      - Which discount types can be redeemed against an online order receipt?
      instructions:
      - text: Redeem reward {reward_id} on online order {transaction_no} at store {store_number} for {receipt_amount} at {receipt_datetime}.
        slots:
          reward_id: requestBody.reward_id
          transaction_no: requestBody.transaction_no
          store_number: requestBody.store_number
          receipt_amount: requestBody.receipt_amount
          receipt_datetime: requestBody.receipt_datetime
      - text: Apply coupon code {redemption_code} as discount type {discount_type} to online order {transaction_no} at store {store_number}.
        slots:
          redemption_code: requestBody.redemption_code
          discount_type: requestBody.discount_type
          transaction_no: requestBody.transaction_no
          store_number: requestBody.store_number
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/auth/redemptions'].post
  update:
    x-apievangelist-phrasing:
      intent: Generate a redemption code to use at the POS
      effect: write
      questions:
      - How do I get a tracking code a guest can show at the register to redeem a reward?
      - Can a redemption code be created from banked currency instead of a specific reward?
      instructions:
      - text: Fetch a POS redemption code for reward {reward_id}.
        slots:
          reward_id: requestBody.reward_id
      - text: Generate a redemption code worth {redeemed_points} of banked currency at store {store_number}.
        slots:
          redeemed_points: requestBody.redeemed_points
          store_number: requestBody.store_number
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/auth/redemptions'].delete
  update:
    x-apievangelist-phrasing:
      intent: Void a processed Redemptions 1.0 redemption
      effect: destructive
      questions:
      - Can I reverse a redemption that has already been processed and give the offer back to the guest?
      - Are there time limits on voiding a coupon or promo redemption?
      instructions:
      - text: Void processed redemption {redemption_id} because {reason}.
        slots:
          redemption_id: requestBody.redemption_id
          reason: requestBody.reason
      - text: Void the redemption tied to code {redemption_code} and return the offer to the guest.
        slots:
          redemption_code: requestBody.redemption_code
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/auth/redemptions/applicable_offers'].get
  update:
    x-apievangelist-phrasing:
      intent: List rewards that apply to an online check
      effect: read
      questions:
      - Which of the guest's rewards can be used on the items in this online order?
      - Does the ordering channel affect which rewards qualify for a check?
      instructions:
      - text: List rewards applicable to a {receipt_amount} check on channel {channel} placed at {receipt_datetime}.
        slots:
          receipt_amount: requestBody.receipt_amount
          channel: requestBody.channel
          receipt_datetime: requestBody.receipt_datetime
      - text: Show which rewards apply to this check at store {store_number}.
        slots:
          store_number: requestBody.store_number
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/auth/discounts/auto_select'].post
  update:
    x-apievangelist-phrasing:
      intent: Auto-fill the discount basket for an order
      effect: write
      questions:
      - Can the best discount be queued in the guest's basket automatically when auto-redemption is on?
      - How does auto redemption decide which discount to pick for a check?
      instructions:
      - text: Auto-select discounts for a {receipt_amount} order at {receipt_datetime}.
        slots:
          receipt_amount: requestBody.receipt_amount
          receipt_datetime: requestBody.receipt_datetime
      - text: Run auto redemption on order {transaction_no} and lock the basket with {external_uid}.
        slots:
          transaction_no: requestBody.transaction_no
          external_uid: requestBody.external_uid
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/auth/discounts/select'].post
  update:
    x-apievangelist-phrasing:
      intent: Add chosen discounts to the guest's basket
      effect: write
      questions:
      - How does an online ordering site add a guest's chosen reward to their discount basket?
      - Is a new discount basket created if the guest doesn't have an active one?
      instructions:
      - text: Add discounts {discount_basket_items_attributes} to the guest's online discount basket.
        slots:
          discount_basket_items_attributes: requestBody.discount_basket_items_attributes
      - text: Select discounts {discount_basket_items_attributes} into the basket locked by {external_uid}.
        slots:
          discount_basket_items_attributes: requestBody.discount_basket_items_attributes
          external_uid: requestBody.external_uid
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/auth/discounts/unselect'].delete
  update:
    x-apievangelist-phrasing:
      intent: Remove discounts from the online discount basket
      effect: destructive
      questions:
      - Can a guest drop a reward from their discount basket before checking out online?
      - Do I need the lock ID to remove items from a locked discount basket?
      instructions:
      - text: Remove items {discount_basket_item_ids} from the guest's discount basket.
        slots:
          discount_basket_item_ids: requestBody.discount_basket_item_ids
      - text: Unselect basket items {discount_basket_item_ids} using lock {external_uid}.
        slots:
          discount_basket_item_ids: requestBody.discount_basket_item_ids
          external_uid: requestBody.external_uid
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/auth/discounts/active'].get
  update:
    x-apievangelist-phrasing:
      intent: View the guest's current discount basket
      effect: read
      questions:
      - What rewards has the guest already put in their discount basket?
      - Will an expired discount still show up in the active basket?
      instructions:
      - text: Show the guest's active discount basket.
      - text: Get the active discount basket locked with {external_uid}.
        slots:
          external_uid: requestBody.external_uid
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/auth/batch_redemptions'].post
  update:
    x-apievangelist-phrasing:
      intent: Commit the discount basket against a receipt
      effect: write
      questions:
      - How do I finalize all the discounts in a guest's basket when the order is placed?
      - Can I preview possible redemptions before committing the batch?
      instructions:
      - text: 'Commit the batch redemption for order {transaction_no} at store {store_number}: {line_items}, {receipt_amount} at {receipt_datetime}.'
        slots:
          transaction_no: requestBody.transaction_no
          store_number: requestBody.store_number
          line_items: requestBody.line_items
          receipt_amount: requestBody.receipt_amount
          receipt_datetime: requestBody.receipt_datetime
      - text: Process the discount basket redemption at store {store_number} for line items {line_items}.
        slots:
          store_number: requestBody.store_number
          line_items: requestBody.line_items
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/auth/batch_redemptions/{redemption_ref}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Void an entire discount basket redemption
      effect: destructive
      questions:
      - How do I void every discount redeemed in a Redemptions 2.0 basket at once?
      - Where do I get the redemption reference needed to void a batch?
      instructions:
      - text: Void the whole discount basket with reference {redemption_ref}.
        slots:
          redemption_ref: path.redemption_ref
      - text: Reverse batch redemption {redemption_ref} for the guest.
        slots:
          redemption_ref: path.redemption_ref
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/auth/discounts/unlock'].put
  update:
    x-apievangelist-phrasing:
      intent: Unlock a locked discount basket
      effect: write
      questions:
      - How do I release a guest's discount basket that another channel locked?
      - What does it mean when a discount basket is locked by reward locking?
      instructions:
      - text: Unlock the discount basket held by {external_uid}.
        slots:
          external_uid: requestBody.external_uid
      - text: Release the basket lock {external_uid} so other channels can edit it.
        slots:
          external_uid: requestBody.external_uid
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/auth/subscriptions'].get
  update:
    x-apievangelist-phrasing:
      intent: List subscription plans for sale online
      effect: read
      questions:
      - What subscription plans can my online ordering site offer for purchase?
      - Which plans are currently purchasable for this business?
      instructions:
      - text: List the subscription plans available to purchase online.
      - text: Show the purchasable plans for client {client}.
        slots:
          client: requestBody.client
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/auth/subscriptions'].post
  update:
    x-apievangelist-phrasing:
      intent: Buy a subscription plan for a signed-in guest
      effect: write
      questions:
      - How does an online ordering vendor purchase a subscription for a guest?
      - Can a guest pay for a subscription with a saved card?
      instructions:
      - text: Purchase plan {plan_id} for {purchase_price} from {start_time} to {end_time}, auto renew {auto_renewal}, for guest token {authentication_token}.
        slots:
          plan_id: requestBody.plan_id
          purchase_price: requestBody.purchase_price
          start_time: requestBody.start_time
          end_time: requestBody.end_time
          auto_renewal: requestBody.auto_renewal
          authentication_token: requestBody.authentication_token
      - text: Buy subscription plan {plan_id} with saved card {payment_card_uuid}.
        slots:
          plan_id: requestBody.plan_id
          payment_card_uuid: requestBody.payment_card_uuid
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/auth/subscriptions/cancel'].put
  update:
    x-apievangelist-phrasing:
      intent: Cancel a guest's subscription renewal online
      effect: destructive
      questions:
      - How can a guest turn off auto renewal for a subscription from the ordering site?
      - Can the guest choose between a soft and hard cancellation?
      instructions:
      - text: Cancel subscription {subscription_id} as {cancellation_type} with reason {cancellation_reason_id} and feedback {cancellation_feedback}.
        slots:
          subscription_id: requestBody.subscription_id
          cancellation_type: requestBody.cancellation_type
          cancellation_reason_id: requestBody.cancellation_reason_id
          cancellation_feedback: requestBody.cancellation_feedback
      - text: 'Soft-cancel subscription {subscription_id} using reason {cancellation_reason_id}; feedback: {cancellation_feedback}; type {cancellation_type}.'
        slots:
          subscription_id: requestBody.subscription_id
          cancellation_reason_id: requestBody.cancellation_reason_id
          cancellation_feedback: requestBody.cancellation_feedback
          cancellation_type: requestBody.cancellation_type
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/auth/user_subscriptions'].get
  update:
    x-apievangelist-phrasing:
      intent: List a guest's subscriptions
      effect: read
      questions:
      - Which subscriptions are attached to this guest's profile?
      - Can I include past subscriptions when listing a guest's plans?
      instructions:
      - text: Show the subscriptions held by the guest.
      - text: List the guest's subscriptions with filter {filter}.
        slots:
          filter: query.filter
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/auth/subscription_meta'].get
  update:
    x-apievangelist-phrasing:
      intent: Get subscription cancellation reasons
      effect: read
      questions:
      - What cancellation reasons can a guest pick from when ending a subscription?
      - Why would subscription meta return no cancellation reasons?
      instructions:
      - text: Get the configured subscription cancellation reasons.
      - text: Fetch subscription meta for client {client}.
        slots:
          client: requestBody. client
      method: generated
      generated: '2026-10-01'