# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand. overlay: 1.0.0 info: title: API Evangelist conversational phrasing for Storefront API V1 Accounts API version: 1.0.0 extends: openapi/optimizely-accounts-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: 12 - target: $.paths['/api/v1/accounts/{accountId}/shiptos'].patch update: x-apievangelist-phrasing: intent: Update an account's ship-to assignments effect: write questions: - How do I change which ship-to addresses a user account can order to? - Can I update the cost codes attached to an account's ship-tos? instructions: - text: Update ship-to assignments for account {accountId} to {userShipToCollection}. slots: accountId: path.accountId userShipToCollection: requestBody.userShipToCollection - text: Set cost codes {costCodeCollection} on account {accountId}'s ship-tos. slots: accountId: path.accountId costCodeCollection: requestBody.costCodeCollection method: generated generated: '2026-09-26' - target: $.paths['/api/v1/accounts'].get update: x-apievangelist-phrasing: intent: List user accounts effect: read questions: - How do I search the user accounts in my Optimizely B2B storefront by name? - Can I list accounts that have a certain role while excluding others? - What paging options exist when listing accounts? instructions: - text: Search accounts for {searchText}. slots: searchText: query.parameter.searchText - text: List accounts with roles {roles}, excluding roles {excludeRoles}. slots: roles: query.parameter.roles excludeRoles: query.parameter.excludeRoles - text: Show page {page} of accounts, {pageSize} per page. slots: page: query.parameter.page pageSize: query.parameter.pageSize method: generated generated: '2026-09-26' - target: $.paths['/api/v1/accounts'].post update: x-apievangelist-phrasing: intent: Create a user account effect: write questions: - How do I register a new user account with an email and password? - Can I create a guest account for checkout? instructions: - text: Create an account for {email} with username {userName} and password {password}. slots: email: requestBody.email userName: requestBody.userName password: requestBody.password - text: Create a guest account with isGuest {isGuest}. slots: isGuest: requestBody.isGuest method: generated generated: '2026-09-26' - target: $.paths['/api/v1/accounts/{accountId}'].get update: x-apievangelist-phrasing: intent: Get a user account effect: read questions: - What role and default ship-to does a specific user account have? - Can I fetch a single account by its id? instructions: - text: Get account {accountId}. slots: accountId: path.accountId - text: Show the role and approval rights of account {accountId}. slots: accountId: path.accountId method: generated generated: '2026-09-26' - target: $.paths['/api/v1/accounts/{accountId}'].patch update: x-apievangelist-phrasing: intent: Update a user account effect: write questions: - How do I change a user's role or name on their account? - Can I give an existing account permission to approve orders? instructions: - text: Change account {accountId}'s role to {role}. slots: accountId: path.accountId role: requestBody.role - text: Set canApproveOrders to {canApproveOrders} on account {accountId}. slots: accountId: path.accountId canApproveOrders: requestBody.canApproveOrders - text: Update account {accountId} name to {firstName} {lastName}. slots: accountId: path.accountId firstName: requestBody.firstName lastName: requestBody.lastName method: generated generated: '2026-09-26' - target: $.paths['/api/v1/accounts/vmi/import'].post update: x-apievangelist-phrasing: intent: Import VMI users effect: write questions: - How do I bulk import vendor managed inventory users? - Can I load a list of VMI users in one request? instructions: - text: Import VMI users {vmiUsers}. slots: vmiUsers: requestBody.vmiUsers - text: Bulk-load the vendor managed inventory user list {vmiUsers}. slots: vmiUsers: requestBody.vmiUsers method: generated generated: '2026-09-26' - target: $.paths['/api/v1/accounts/vmi/{vmiUserId}'].patch update: x-apievangelist-phrasing: intent: Update a VMI user's role and locations effect: write questions: - How do I change which VMI locations a vendor managed inventory user can access? - Can I strip VMI permissions from a user? instructions: - text: Give VMI user {vmiUserId} access to locations {vmiLocationIds}. slots: vmiUserId: path.vmiUserId vmiLocationIds: requestBody.vmiLocationIds - text: Set VMI user {vmiUserId}'s VMI role to {role}. slots: vmiUserId: path.vmiUserId role: requestBody.role - text: Remove VMI permissions from VMI user {vmiUserId} with removeVmiPermissions {removeVmiPermissions}. slots: vmiUserId: path.vmiUserId removeVmiPermissions: requestBody.removeVmiPermissions method: generated generated: '2026-09-26' - target: $.paths['/api/v1/accounts/current/paymentprofiles'].get update: x-apievangelist-phrasing: intent: List my saved payment profiles effect: read questions: - Which saved cards are on the current user's account? - Can I page through my stored payment profiles? instructions: - text: List the saved payment profiles for my account. - text: Search my saved payment profiles for {query}. slots: query: query.parameter.query method: generated generated: '2026-09-26' - target: $.paths['/api/v1/accounts/current/paymentprofiles'].post update: x-apievangelist-phrasing: intent: Save a new payment card to my account effect: write questions: - How do I store a new credit card on the current user's account? - Can I mark a newly saved card as my default payment method? instructions: - text: Save card {cardIdentifier} for {cardHolderName} expiring {expirationDate} to my account. slots: cardIdentifier: requestBody.cardIdentifier cardHolderName: requestBody.cardHolderName expirationDate: requestBody.expirationDate - text: Add a {cardType} payment profile described as {description} and set isDefault {isDefault}. slots: cardType: requestBody.cardType description: requestBody.description isDefault: requestBody.isDefault method: generated generated: '2026-09-26' - target: $.paths['/api/v1/accounts/current/paymentprofiles/{AccountPaymentProfileId}'].get update: x-apievangelist-phrasing: intent: Get one saved payment profile effect: read questions: - What are the masked card number and expiry of one of my saved cards? - Can I fetch a single saved payment profile by id? instructions: - text: Get payment profile {AccountPaymentProfileId}. slots: AccountPaymentProfileId: path.AccountPaymentProfileId - text: Show the masked card number on saved payment profile {AccountPaymentProfileId}. slots: AccountPaymentProfileId: path.AccountPaymentProfileId method: generated generated: '2026-09-26' - target: $.paths['/api/v1/accounts/current/paymentprofiles/{AccountPaymentProfileId}'].delete update: x-apievangelist-phrasing: intent: Remove a saved payment card effect: destructive questions: - How do I delete a stored card from my account? - Can I remove an expired payment profile? instructions: - text: Delete payment profile {AccountPaymentProfileId}. slots: AccountPaymentProfileId: path.AccountPaymentProfileId - text: Remove saved card {AccountPaymentProfileId} from my account. slots: AccountPaymentProfileId: path.AccountPaymentProfileId method: generated generated: '2026-09-26' - target: $.paths['/api/v1/accounts/current/paymentprofiles/{AccountPaymentProfileId}'].patch update: x-apievangelist-phrasing: intent: Update a saved payment profile effect: write questions: - How do I update the billing address on a saved card? - Can I change the expiration date of a stored payment profile? instructions: - text: Update payment profile {AccountPaymentProfileId} expiration to {expirationDate}. slots: AccountPaymentProfileId: path.AccountPaymentProfileId expirationDate: requestBody.expirationDate - text: Change the billing address on payment profile {AccountPaymentProfileId} to {address1}, {city} {postalCode}. slots: AccountPaymentProfileId: path.AccountPaymentProfileId address1: requestBody.address1 city: requestBody.city postalCode: requestBody.postalCode - text: Make payment profile {AccountPaymentProfileId} my default card. slots: AccountPaymentProfileId: path.AccountPaymentProfileId method: generated generated: '2026-09-26'