# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand. overlay: 1.0.0 info: title: API Evangelist conversational phrasing for Optimizely Customers API version: 1.0.0 extends: openapi/optimizely-customers-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: 35 - target: $.paths['/commerce/customers/{customerId}'].get update: x-apievangelist-phrasing: intent: Get a commerce customer account effect: read questions: - How do I look up a commerce customer account by its customer ID? - What account details come back for a single commerce customer? instructions: - text: Get the commerce customer account {customerId}. slots: customerId: path.customerId - text: Show me the storefront account details for commerce customer {customerId}. slots: customerId: path.customerId method: generated generated: '2026-09-26' - target: $.paths['/api/v1/admin/Customers'].get update: x-apievangelist-phrasing: intent: List and filter customer records effect: read questions: - How can I list every customer record in the Optimizely commerce admin? - Can I filter the admin customer list, say to only bill-to customers on credit hold? - Is there a way to page through customers and get a total count? instructions: - text: List all customers in the admin console. - text: List customers matching the filter {filter}, sorted by {orderby}. slots: filter: query.$filter orderby: query.$orderby - text: Return the first {top} customers with a total count. slots: top: query.$top method: generated generated: '2026-09-26' - target: $.paths['/api/v1/admin/Customers'].post update: x-apievangelist-phrasing: intent: Create a customer record effect: write questions: - How do I add a new B2B customer account through the admin API? - What fields must I supply when creating a customer, like customer number and company name? instructions: - text: Create a customer {customerNumber} for company {companyName} with email {email}. slots: customerNumber: requestBody.customerNumber companyName: requestBody.companyName email: requestBody.email - text: Add a new customer with ERP number {erpNumber} and a credit limit of {creditLimit}. slots: erpNumber: requestBody.erpNumber creditLimit: requestBody.creditLimit method: generated generated: '2026-09-26' - target: $.paths['/api/v1/admin/Customers({id})'].get update: x-apievangelist-phrasing: intent: Get an admin customer record by ID effect: read questions: - Is there a call to fetch one customer record from the admin API by its ID? - Can I expand related data when retrieving a single admin customer? instructions: - text: Get admin customer record {id}. slots: id: path.id - text: Fetch customer {id} and expand {expand}. slots: id: path.id expand: query.$expand method: generated generated: '2026-09-26' - target: $.paths['/api/v1/admin/Customers({id})'].put update: x-apievangelist-phrasing: intent: Replace a customer record effect: write questions: - What's the call to overwrite an entire customer record with a full new version? - Which customer fields do I need to resend when replacing the whole record? instructions: - text: Replace customer {id} entirely, with company name {companyName} and email {email}. slots: id: path.id companyName: requestBody.companyName email: requestBody.email - text: Overwrite the full record of customer {id} using customer number {customerNumber}. slots: id: path.id customerNumber: requestBody.customerNumber method: generated generated: '2026-09-26' - target: $.paths['/api/v1/admin/Customers({id})'].delete update: x-apievangelist-phrasing: intent: Delete one customer record effect: destructive questions: - How do I permanently delete a single customer by ID? - Can I guard a customer delete with an ETag so I don't remove a changed record? instructions: - text: Delete customer {id}. slots: id: path.id - text: Delete customer {id} only if its ETag still matches {etag}. slots: id: path.id etag: header.If-Match method: generated generated: '2026-09-26' - target: $.paths['/api/v1/admin/Customers({id})'].patch update: x-apievangelist-phrasing: intent: Update fields on a customer effect: write questions: - How do I change just a few fields on an existing customer, like the credit limit? - Can I put a customer on credit hold without resending the whole record? instructions: - text: Set the credit limit of customer {id} to {creditLimit}. slots: id: path.id creditLimit: requestBody.creditLimit - text: Put customer {id} on credit hold ({creditHold}). slots: id: path.id creditHold: requestBody.creditHold - text: Update the email on customer {id} to {email}. slots: id: path.id email: requestBody.email method: generated generated: '2026-09-26' - target: $.paths['/api/v1/admin/Customers/Default.Default()'].get update: x-apievangelist-phrasing: intent: Get the default customer template effect: read questions: - What does a blank default customer look like before I fill it in? - Where do I get the default values for a new customer record? instructions: - text: Get the default customer record template. - text: Show me the default field values for a new customer. method: generated generated: '2026-09-26' - target: $.paths['/api/v1/admin/Customers/Default.archive'].post update: x-apievangelist-phrasing: intent: Archive customers by ID list effect: write questions: - How do I archive several customers at once instead of deleting them? - Can I archive customers through the archive action by passing their IDs? instructions: - text: Archive customers {ids} using the archive action. slots: ids: query.ids - text: Run the customer archive action for IDs {ids}. slots: ids: query.ids method: generated generated: '2026-09-26' - target: $.paths['/api/v1/admin/Customers({id})/Default.userProfilesWithRolesFilter()'].get update: x-apievangelist-phrasing: intent: List a customer's users filtered by role effect: read questions: - Which user profiles with roles belong to a customer, via the userProfilesWithRolesFilter function? - How do I call the role-filtered user profile function on a customer ID? instructions: - text: Call userProfilesWithRolesFilter for customer {id}. slots: id: path.id - text: List role-filtered user profiles on customer {id} through the OData function. slots: id: path.id method: generated generated: '2026-09-26' - target: $.paths['/api/v1/admin/customers/formessage(messageId={messageId})'].get update: x-apievangelist-phrasing: intent: List customers available for a message effect: read questions: - Which customers can a given site message be targeted to? - How do I see the customers available for a message ID? instructions: - text: List the customers available for message {messageId}. slots: messageId: path.messageId - text: Show which customers message {messageId} can be assigned to. slots: messageId: path.messageId method: generated generated: '2026-09-26' - target: $.paths['/api/v1/admin/customers({key})/userProfilesWithRolesFilter'].get update: x-apievangelist-phrasing: intent: Get role-filtered users via customer key route effect: read questions: - Is there a plain route, not the OData function, for a customer's users with roles? - How do I get user profiles with roles using the customer key path? instructions: - text: Get users with roles for customer key {key} via the userProfilesWithRolesFilter route. slots: key: path.key - text: Fetch the role-filtered user list on the customers({key}) route. slots: key: path.key method: generated generated: '2026-09-26' - target: $.paths['/api/v1/admin/customers/archive'].delete update: x-apievangelist-phrasing: intent: Archive customers through the archive route effect: destructive questions: - Can I archive a batch of customers with a DELETE call on the archive route? - What happens to customers sent to the customers/archive endpoint? instructions: - text: Archive customers {ids} via the DELETE archive route. slots: ids: query.ids - text: Send customer IDs {ids} to the customers/archive endpoint. slots: ids: query.ids method: generated generated: '2026-09-26' - target: $.paths['/api/v1/admin/customers/delete'].delete update: x-apievangelist-phrasing: intent: Bulk delete customers by ID effect: destructive questions: - How do I delete many customers in one request? - Can I bulk remove customer records by passing a list of IDs? instructions: - text: Bulk delete customers {ids}. slots: ids: query.ids - text: 'Permanently remove all of these customers: {ids}.' slots: ids: query.ids method: generated generated: '2026-09-26' - target: $.paths['/api/v1/admin/customers({key})/budgetcalendars({budgetcalendarKey})'].get update: x-apievangelist-phrasing: intent: Get a customer's budget calendar effect: read questions: - Is there a call to read one budget calendar attached to a customer? - Which budget periods does a customer's budget calendar define? instructions: - text: Get budget calendar {item} for customer {customer}. slots: customer: path.key item: path.budgetcalendarKey - text: Show the budget periods in calendar {item} on customer {customer}. slots: customer: path.key item: path.budgetcalendarKey method: generated generated: '2026-09-26' - target: $.paths['/api/v1/admin/customers({key})/carriers({carrierKey})'].get update: x-apievangelist-phrasing: intent: Get a carrier assigned to a customer effect: read questions: - Can I check a specific shipping carrier linked to a customer? - Is a given carrier allowed for this customer account? instructions: - text: Get carrier {item} assigned to customer {customer}. slots: customer: path.key item: path.carrierKey - text: Show shipping carrier {item} details for customer {customer}. slots: customer: path.key item: path.carrierKey method: generated generated: '2026-09-26' - target: $.paths['/api/v1/admin/customers({key})/customercostcodes({customercostcodeKey})'].get update: x-apievangelist-phrasing: intent: Get a customer's cost code effect: read questions: - Where do I look up a cost code defined for a customer? - What does a particular customer cost code describe? instructions: - text: Get cost code {item} for customer {customer}. slots: customer: path.key item: path.customercostcodeKey - text: Show the description of cost code {item} on customer {customer}. slots: customer: path.key item: path.customercostcodeKey method: generated generated: '2026-09-26' - target: $.paths['/api/v1/admin/customers({key})/customerorders({customerorderKey})'].get update: x-apievangelist-phrasing: intent: Get one order placed by a customer effect: read questions: - Can I pull a specific order that a customer placed? - Can I read an order through its customer's record? instructions: - text: Get order {item} placed by customer {customer}. slots: customer: path.key item: path.customerorderKey - text: Show order {item} from customer {customer}'s order history. slots: customer: path.key item: path.customerorderKey method: generated generated: '2026-09-26' - target: $.paths['/api/v1/admin/customers({key})/customerproducts({customerproductKey})'].get update: x-apievangelist-phrasing: intent: Get a customer-specific product entry effect: read questions: - Where can I see a customer-specific product entry, like their own part number? - Where are customer product settings stored for one account? instructions: - text: Get customer product entry {item} for customer {customer}. slots: customer: path.key item: path.customerproductKey - text: Show the customer-specific product setting {item} on customer {customer}. slots: customer: path.key item: path.customerproductKey method: generated generated: '2026-09-26' - target: $.paths['/api/v1/admin/customers({key})/customerproductsets({customerproductsetKey})'].get update: x-apievangelist-phrasing: intent: Get a product set assigned to a customer effect: read questions: - Where do I find a product set assigned to a customer? - Which product set is linked to this customer account? instructions: - text: Get product set {item} for customer {customer}. slots: customer: path.key item: path.customerproductsetKey - text: Show product set {item} assigned to customer {customer}. slots: customer: path.key item: path.customerproductsetKey method: generated generated: '2026-09-26' - target: $.paths['/api/v1/admin/customers({key})/customproperties({custompropertyKey})'].get update: x-apievangelist-phrasing: intent: Get a custom property on a customer effect: read questions: - Where would I read a custom property stored on a customer? - Can I fetch one extra attribute I added to a customer record? instructions: - text: Get custom property {item} on customer {customer}. slots: customer: path.key item: path.custompropertyKey - text: Show the value of custom field {item} for customer {customer}. slots: customer: path.key item: path.custompropertyKey method: generated generated: '2026-09-26' - target: $.paths['/api/v1/admin/customers({key})/globalwishlists({wishlistKey})'].get update: x-apievangelist-phrasing: intent: Get a global wish list for a customer effect: read questions: - Can I open a global wish list shared with a customer? - Which global lists are available to a customer account? instructions: - text: Get global wish list {item} for customer {customer}. slots: customer: path.key item: path.wishlistKey - text: Show shared global list {item} on customer {customer}. slots: customer: path.key item: path.wishlistKey method: generated generated: '2026-09-26' - target: $.paths['/api/v1/admin/customers({key})/productvisibilityadditions({productKey})'].get update: x-apievangelist-phrasing: intent: Check a product made visible to a customer effect: read questions: - How do I confirm a product was explicitly added to a customer's visible catalog? - Is a given product in the visibility additions for this customer? instructions: - text: Get visibility addition for product {item} on customer {customer}. slots: customer: path.key item: path.productKey - text: Check whether product {item} was added to customer {customer}'s visible products. slots: customer: path.key item: path.productKey method: generated generated: '2026-09-26' - target: $.paths['/api/v1/admin/customers({key})/productvisibilityexceptions({productKey})'].get update: x-apievangelist-phrasing: intent: Check a product hidden from a customer effect: read questions: - Can I see if a product is excluded from what a customer can view? - Is a product on a customer's visibility exception list? instructions: - text: Get visibility exception for product {item} on customer {customer}. slots: customer: path.key item: path.productKey - text: Check whether product {item} is hidden from customer {customer}. slots: customer: path.key item: path.productKey method: generated generated: '2026-09-26' - target: $.paths['/api/v1/admin/customers({key})/restrictiongroupadditions({restrictiongroupKey})'].get update: x-apievangelist-phrasing: intent: Get a restriction group added to a customer effect: read questions: - How do I check a restriction group added to a customer? - Which catalog restriction group additions apply to this account? instructions: - text: Get restriction group addition {item} for customer {customer}. slots: customer: path.key item: path.restrictiongroupKey - text: Show added restriction group {item} on customer {customer}. slots: customer: path.key item: path.restrictiongroupKey method: generated generated: '2026-09-26' - target: $.paths['/api/v1/admin/customers({key})/restrictiongroupcustomers({restrictiongroupcustomerKey})'].get update: x-apievangelist-phrasing: intent: Get a customer's restriction group membership effect: read questions: - Where is the membership row linking a customer to a restriction group? - Is this customer a member of a particular restriction group? instructions: - text: Get restriction group membership {item} for customer {customer}. slots: customer: path.key item: path.restrictiongroupcustomerKey - text: Show the restriction group customer link {item} on customer {customer}. slots: customer: path.key item: path.restrictiongroupcustomerKey method: generated generated: '2026-09-26' - target: $.paths['/api/v1/admin/customers({key})/restrictiongroupexceptions({restrictiongroupKey})'].get update: x-apievangelist-phrasing: intent: Get a restriction group excepted for a customer effect: read questions: - Where can I see a restriction group a customer is exempted from? - Which restriction group exceptions are set on this customer? instructions: - text: Get restriction group exception {item} for customer {customer}. slots: customer: path.key item: path.restrictiongroupKey - text: Show exempted restriction group {item} on customer {customer}. slots: customer: path.key item: path.restrictiongroupKey method: generated generated: '2026-09-26' - target: $.paths['/api/v1/admin/customers({key})/ruleclauses({ruleclauseKey})'].get update: x-apievangelist-phrasing: intent: Get a rule clause tied to a customer effect: read questions: - Where do I read a rule clause attached to a customer? - What conditions does a customer's rule clause contain? instructions: - text: Get rule clause {item} for customer {customer}. slots: customer: path.key item: path.ruleclauseKey - text: Show the conditions in rule clause {item} on customer {customer}. slots: customer: path.key item: path.ruleclauseKey method: generated generated: '2026-09-26' - target: $.paths['/api/v1/admin/customers({key})/userprofiles({userprofileKey})'].get update: x-apievangelist-phrasing: intent: Get a user profile under a customer effect: read questions: - Is there a call to fetch one buyer user profile belonging to a customer? - Can I read a specific user's profile through their customer account? instructions: - text: Get user profile {item} under customer {customer}. slots: customer: path.key item: path.userprofileKey - text: Show buyer user {item} on customer account {customer}. slots: customer: path.key item: path.userprofileKey method: generated generated: '2026-09-26' - target: $.paths['/api/v1/admin/customers({key})/websites({websiteKey})'].get update: x-apievangelist-phrasing: intent: Get a website assigned to a customer effect: read questions: - Which website is a customer assigned to? - Can I read a storefront website through its customer link? instructions: - text: Get website {item} assigned to customer {customer}. slots: customer: path.key item: path.websiteKey - text: Show storefront site {item} linked to customer {customer}. slots: customer: path.key item: path.websiteKey method: generated generated: '2026-09-26' - target: $.paths['/api/v1/admin/customers({key})/wishlistadditions({wishlistKey})'].get update: x-apievangelist-phrasing: intent: Get a wish list added to a customer effect: read questions: - Can I read a wish list explicitly added to a customer? - Which wish list additions are granted to this customer? instructions: - text: Get wish list addition {item} for customer {customer}. slots: customer: path.key item: path.wishlistKey - text: Show added wish list {item} granted to customer {customer}. slots: customer: path.key item: path.wishlistKey method: generated generated: '2026-09-26' - target: $.paths['/api/v1/admin/customers({key})/wishlistexceptions({wishlistKey})'].get update: x-apievangelist-phrasing: intent: Get a wish list excluded for a customer effect: read questions: - Where can I see a wish list a customer is excluded from? - Is a shared wish list on this customer's exception list? instructions: - text: Get wish list exception {item} for customer {customer}. slots: customer: path.key item: path.wishlistKey - text: Show excluded wish list {item} on customer {customer}. slots: customer: path.key item: path.wishlistKey method: generated generated: '2026-09-26' - target: $.paths['/api/v1/admin/customers({key})/wishlists({wishlistKey})'].get update: x-apievangelist-phrasing: intent: Get a customer's own wish list effect: read questions: - Is there a call to read one of a customer's own saved wish lists? - What products are in a particular wish list a customer owns? instructions: - text: Get wish list {item} owned by customer {customer}. slots: customer: path.key item: path.wishlistKey - text: Show the products saved in customer {customer}'s list {item}. slots: customer: path.key item: path.wishlistKey method: generated generated: '2026-09-26' - target: $.paths['/profiles'].get update: x-apievangelist-phrasing: intent: Look up a customer profile's attributes effect: read questions: - How do I get the attributes and identifiers stored for a customer profile? - Which identifiers are linked to a customer, like email or customer ID? instructions: - text: Look up the customer profile matching {params}. slots: params: query.params - text: Get attributes and identifiers for the customer identified by {params}. slots: params: query.params method: generated generated: '2026-09-26' - target: $.paths['/profiles'].post update: x-apievangelist-phrasing: intent: Create or update customer attributes effect: write questions: - How do I create or update customer profiles with new attributes? - Can I send updated identifiers for a customer in one call? instructions: - text: Create or update customer profiles with the attributes I provide. - text: Upsert these customer identifiers and attributes into the profiles store. method: generated generated: '2026-09-26'