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.
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
# 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'