Optimizely · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for Storefront API V1 Accounts API
13 actions
13 updates
phrasing
extends
openapi/optimizely-accounts-api-openapi.yml
Generated by API Evangelist
Written by API Evangelist tooling for Optimizely's API. It is a proposal applied on top of the contract, not a document Optimizely publishes.
What the actions change
x-apievangelist-phrasing
Targets 13
$.info
$.paths['/api/v1/accounts/{accountId}/shiptos'].patch
$.paths['/api/v1/accounts'].get
$.paths['/api/v1/accounts'].post
$.paths['/api/v1/accounts/{accountId}'].get
$.paths['/api/v1/accounts/{accountId}'].patch
$.paths['/api/v1/accounts/vmi/import'].post
$.paths['/api/v1/accounts/vmi/{vmiUserId}'].patch
$.paths['/api/v1/accounts/current/paymentprofiles'].get
$.paths['/api/v1/accounts/current/paymentprofiles'].post
$.paths['/api/v1/accounts/current/paymentprofiles/{AccountPaymentProfileId}'].get
$.paths['/api/v1/accounts/current/paymentprofiles/{AccountPaymentProfileId}'].delete
$.paths['/api/v1/accounts/current/paymentprofiles/{AccountPaymentProfileId}'].patch
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 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'