Birdeye · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for Birdeye Contact API
12 actions
12 updates
phrasing
extends
openapi/birdeye-contact-api-openapi.yml
Generated by API Evangelist
Written by API Evangelist tooling for Birdeye's API. It is a proposal applied on top of the contract, not a document Birdeye publishes.
What the actions change
x-apievangelist-phrasing
Targets 12
$.info
$.paths['/v1/customer-v2/external/saveCustomer'].post
$.paths['/v1/customer-v2/external/getCustomer'].post
$.paths['/v1/customer-v2/external/deleteCustomer'].post
$.paths['/v1/customer/checkin'].post
$.paths['/v1/customer/history/{customerId}'].get
$.paths['/v1/customer/id/{customerId}'].delete
$.paths['/v1/customer-v2/change-permission'].post
$.paths['/v2/customer/list'].post
$.paths['/v1/contact/details'].post
$.paths['/v1/contactUs/{businessId}'].post
$.paths['/v1/contact/{businessId}/update-feed'].post
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 Birdeye Contact API
version: 1.0.0
extends: openapi/birdeye-contact-api-openapi.yml
actions:
- target: $.info
update:
x-apievangelist-phrasing:
method: generated
generated: '2026-09-26'
generator: build-phrasing.py
label: Generated by API Evangelist
operations: 11
- target: $.paths['/v1/customer-v2/external/saveCustomer'].post
update:
x-apievangelist-phrasing:
intent: Create or update a contact
effect: write
questions:
- Can I add a new contact or update an existing one in a single call?
- Can I set a contact's SMS and email opt-in when saving them?
instructions:
- text: Save contact {firstName} {lastName} with email {email} to business {businessId}.
slots:
firstName: requestBody.firstName
lastName: requestBody.lastName
email: requestBody.email
businessId: query.businessId
- text: Update contact {id} in business {businessId} with phone {phone}.
slots:
id: requestBody.id
businessId: query.businessId
phone: requestBody.phone
method: generated
generated: '2026-09-26'
- target: $.paths['/v1/customer-v2/external/getCustomer'].post
update:
x-apievangelist-phrasing:
intent: Look up a contact
effect: read
questions:
- Can I look up a contact by email or phone number?
- Does fetching a contact also return their experience score?
instructions:
- text: Find the contact with email {email} in business {businessId}.
slots:
email: requestBody.email
businessId: query.businessId
- text: Get contact {id} from business {businessId}.
slots:
id: requestBody.id
businessId: query.businessId
method: generated
generated: '2026-09-26'
- target: $.paths['/v1/customer-v2/external/deleteCustomer'].post
update:
x-apievangelist-phrasing:
intent: Delete a contact from locations
effect: destructive
questions:
- Can I delete a contact from one or more locations?
- Is it possible to remove a contact from only some of my businesses?
instructions:
- text: Delete contact {id} from business {businessId}.
slots:
id: requestBody.id
businessId: query.businessId
- text: Remove contact {id} from locations {businessIds} under {businessId}.
slots:
id: requestBody.id
businessIds: requestBody.businessIds
businessId: query.businessId
method: generated
generated: '2026-09-26'
- target: $.paths['/v1/customer/checkin'].post
update:
x-apievangelist-phrasing:
intent: Record a customer check-in
effect: write
questions:
- Can I record a customer check-in at a location with their name and phone?
- Can a check-in credit the employees who served the customer?
instructions:
- text: Check in customer {name} with phone {phone} at business {bid}.
slots:
name: requestBody.name
phone: requestBody.phone
bid: query.bid
- text: Record a check-in for {emailId} at business {bid} served by {employees}.
slots:
emailId: requestBody.emailId
bid: query.bid
employees: requestBody.employees
method: generated
generated: '2026-09-26'
- target: $.paths['/v1/customer/history/{customerId}'].get
update:
x-apievangelist-phrasing:
intent: Get a customer's activity history
effect: read
questions:
- Can I see a customer's activity history for a date range?
- Where can I find everything logged against one customer?
instructions:
- text: Get the activity log for customer {customerId} in business {businessId}.
slots:
customerId: path.customerId
businessId: query.businessId
- text: Show customer {customerId}'s history in {businessId} from {startDate} to {endDate}.
slots:
customerId: path.customerId
businessId: query.businessId
startDate: query.startDate
endDate: query.endDate
method: generated
generated: '2026-09-26'
- target: $.paths['/v1/customer/id/{customerId}'].delete
update:
x-apievangelist-phrasing:
intent: Delete an enterprise customer by ID
effect: destructive
questions:
- Can I delete an enterprise customer record by its customer ID?
- Is there a single call to erase a customer using only the customer ID?
instructions:
- text: Delete customer {customerId}.
slots:
customerId: path.customerId
- text: Erase enterprise customer record {customerId}.
slots:
customerId: path.customerId
method: generated
generated: '2026-09-26'
- target: $.paths['/v1/customer-v2/change-permission'].post
update:
x-apievangelist-phrasing:
intent: Subscribe or unsubscribe a customer
effect: write
questions:
- Can I unsubscribe a customer from messages by email or phone?
- Can I re-subscribe a customer who opted out?
instructions:
- text: Set permission {permission} for {email} on account {accountNumber}.
slots:
permission: requestBody.permission
email: requestBody.email
accountNumber: requestBody.accountNumber
- text: Change messaging permission for phone {phone} on account {accountNumber} to {permission}.
slots:
phone: requestBody.phone
accountNumber: requestBody.accountNumber
permission: requestBody.permission
method: generated
generated: '2026-09-26'
- target: $.paths['/v2/customer/list'].post
update:
x-apievangelist-phrasing:
intent: List a business's contacts
effect: read
questions:
- Can I page through all contacts of a business sorted my way?
- Can I list contacts added within a date range?
instructions:
- text: List contacts for business {businessId}, page {page} of size {size}, sorted by {sortby}.
slots:
businessId: query.businessId
page: query.page
size: query.size
sortby: query.sortby
- text: Get contacts for {businessId} between {startDate} and {endDate}, page {page}, size {size}, sort {sortby}.
slots:
businessId: query.businessId
startDate: requestBody.startDate
endDate: requestBody.endDate
page: query.page
size: query.size
sortby: query.sortby
method: generated
generated: '2026-09-26'
- target: $.paths['/v1/contact/details'].post
update:
x-apievangelist-phrasing:
intent: List customers or leads for a period
effect: read
questions:
- Can I pull only leads rather than customers for a date range?
- Can the customer or lead list include tags and custom field values?
instructions:
- text: List {contactType} records for business {businessId} from {startDateUtc} to {endDateUtc}, page {page}, size {size}.
slots:
contactType: requestBody.contactType
businessId: requestBody.businessId
startDateUtc: requestBody.startDateUtc
endDateUtc: requestBody.endDateUtc
page: requestBody.page
size: requestBody.size
- text: Get leads with their tags for business {businessId} between {startDateUtc} and {endDateUtc}.
slots:
businessId: requestBody.businessId
startDateUtc: requestBody.startDateUtc
endDateUtc: requestBody.endDateUtc
method: generated
generated: '2026-09-26'
- target: $.paths['/v1/contactUs/{businessId}'].post
update:
x-apievangelist-phrasing:
intent: Submit a contact-us request
effect: write
questions:
- Can I submit a contact-us inquiry to a business on behalf of a customer?
- Can a website form's message be sent into Birdeye as a contact request?
instructions:
- text: Send a contact-us request from {customer} to business {businessId}.
slots:
customer: requestBody.customer
businessId: path.businessId
- text: Submit contact-us comment {customerComment} from {customer} to {businessId}.
slots:
customerComment: requestBody.customerComment
customer: requestBody.customer
businessId: path.businessId
method: generated
generated: '2026-09-26'
- target: $.paths['/v1/contact/{businessId}/update-feed'].post
update:
x-apievangelist-phrasing:
intent: Get a location's opt-out contact feed
effect: read
questions:
- Which contacts unsubscribed from a business during a period?
- Can I get a feed of subscription status changes for one location?
instructions:
- text: Get contacts with status {subscriptionStatus} for business {businessId} from {start} to {end}.
slots:
subscriptionStatus: requestBody.subscriptionStatus
businessId: path.businessId
start: requestBody.start
end: requestBody.end
- text: Show opt-out changes for {businessId} between {start} and {end}, status {subscriptionStatus}.
slots:
businessId: path.businessId
start: requestBody.start
end: requestBody.end
subscriptionStatus: requestBody.subscriptionStatus
method: generated
generated: '2026-09-26'