Punchh · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for POS Point Of Sale API
9 actions
9 updates
phrasing
extends
openapi/punchh-point-of-sale-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 9
$.info
$.paths['/api/pos/locations/configuration'].get
$.paths['/api/pos/meta'].get
$.paths['/api/pos/users'].post
$.paths['/api/pos/users/search'].get
$.paths['/api/pos/checkins'].post
$.paths['/receipt_details'].post
$.paths['/api/pos/transactions'].post
$.paths['/api/pos/users/balance'].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 POS Point Of Sale API
version: 1.0.0
extends: openapi/punchh-point-of-sale-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: 8
- target: $.paths['/api/pos/locations/configuration'].get
update:
x-apievangelist-phrasing:
intent: Get a store location's POS configuration
effect: read
questions:
- How does a POS terminal pull the loyalty settings for its own store location?
- What keys does the register need to send to read its location configuration?
instructions:
- text: Fetch the loyalty configuration for this store location.
- text: Get the POS location settings in language {Accept-Language}.
slots:
Accept-Language: header.Accept-Language
method: generated
generated: '2026-10-01'
- target: $.paths['/api/pos/meta'].get
update:
x-apievangelist-phrasing:
intent: Get loyalty program details for the POS
effect: read
questions:
- What program type and redeemables does the register need to know about this loyalty program?
- How quickly do program configuration changes show up at the POS?
instructions:
- text: Show the loyalty program meta for the POS.
- text: Get the program type and redeemable list for the register.
method: generated
generated: '2026-10-01'
- target: $.paths['/api/pos/users'].post
update:
x-apievangelist-phrasing:
intent: Enroll a new loyalty member at the register
effect: write
questions:
- Can a cashier sign a guest up for loyalty right at the POS with just a phone number?
- Can the POS trigger an opt-in SMS when enrolling a new member?
instructions:
- text: Enroll a new loyalty member with phone {phone}.
slots:
phone: requestBody.phone
- text: Sign up {first_name} {last_name} at the register with phone {phone} and email {email}.
slots:
first_name: requestBody.first_name
last_name: requestBody.last_name
phone: requestBody.phone
email: requestBody.email
method: generated
generated: '2026-10-01'
- target: $.paths['/api/pos/users/search'].get
update:
x-apievangelist-phrasing:
intent: Look up a loyalty guest and their balance at the POS
effect: read
questions:
- How does the register find a guest's loyalty account by phone, email or QR code?
- Can a cashier look up a guest with a drive-thru short code?
instructions:
- text: Look up the loyalty guest with phone {phone} and show their balance.
slots:
phone: query.phone
- text: Find the guest for drive-thru code {drive_thru_code}.
slots:
drive_thru_code: query.drive_thru_code
- text: Identify the guest by redemption code {redemption_code}.
slots:
redemption_code: query.redemption_code
method: generated
generated: '2026-10-01'
- target: $.paths['/api/pos/checkins'].post
update:
x-apievangelist-phrasing:
intent: Award loyalty for an in-store check
effect: write
questions:
- How does the POS credit a guest with points for a purchase they just made in store?
- Is email required for a POS check-in when using the single-scan flow?
instructions:
- text: 'Create a POS check-in for {email} on transaction {transaction_no}: {receipt_amount} at {receipt_datetime}.'
slots:
email: requestBody.email
transaction_no: requestBody.transaction_no
receipt_amount: requestBody.receipt_amount
receipt_datetime: requestBody.receipt_datetime
- text: Check in single-scan code {single_scan_code} for transaction {transaction_no} paying {payable}.
slots:
single_scan_code: requestBody.single_scan_code
transaction_no: requestBody.transaction_no
payable: requestBody.payable
method: generated
generated: '2026-10-01'
- target: $.paths['/receipt_details'].post
update:
x-apievangelist-phrasing:
intent: Send receipt details from the POS
effect: write
questions:
- How do I push every receipt from my POS so guests can scan it later for points?
- Can I void a receipt I already sent or mark one as a test?
instructions:
- text: Store receipt {transaction_no} with Punchh key {punchh_key} for {amount}.
slots:
transaction_no: requestBody.transaction_no
punchh_key: requestBody.punchh_key
amount: requestBody.amount
- text: Void stored receipt {transaction_no} by sending status {status}.
slots:
transaction_no: requestBody.transaction_no
status: requestBody.status
method: generated
generated: '2026-10-01'
- target: $.paths['/api/pos/transactions'].post
update:
x-apievangelist-phrasing:
intent: Record a visit without earning loyalty
effect: write
questions:
- Can I log a guest's store visit without giving them any points?
- Which identifiers can tie a non-earning transaction to a guest?
instructions:
- text: Record a non-earning transaction {transaction_no} for {email} totaling {receipt_amount}.
slots:
transaction_no: requestBody.transaction_no
email: requestBody.email
receipt_amount: requestBody.receipt_amount
- text: Register a visit for phone {phone} on transaction {transaction_no} without awarding loyalty.
slots:
phone: requestBody.phone
transaction_no: requestBody.transaction_no
method: generated
generated: '2026-10-01'
- target: $.paths['/api/pos/users/balance'].get
update:
x-apievangelist-phrasing:
intent: Fetch a guest's account balance and subscriptions
effect: read
questions:
- What points, rewards and subscription benefits does a guest have available at the register?
- Can I filter the balance response to a specific discount type?
instructions:
- text: Fetch the account balance for user {user_id}.
slots:
user_id: requestBody.user_id
- text: Show user {user_id}'s balance with discounts of type {discount_type}.
slots:
user_id: requestBody.user_id
discount_type: requestBody.discount_type
method: generated
generated: '2026-10-01'