Optimizely · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for Admin API V1 User Profiles API
34 actions
34 updates
phrasing
extends
openapi/optimizely-user-profiles-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 34 · first 16 shown; the file carries all of them
$.info
$.paths['/api/v1/admin/UserProfiles'].get
$.paths['/api/v1/admin/UserProfiles'].post
$.paths['/api/v1/admin/UserProfiles({id})'].get
$.paths['/api/v1/admin/UserProfiles({id})'].put
$.paths['/api/v1/admin/UserProfiles({id})'].delete
$.paths['/api/v1/admin/UserProfiles({id})'].patch
$.paths['/api/v1/admin/UserProfiles/Default.Default()'].get
$.paths['/api/v1/admin/UserProfiles({id})/Default.Roles()'].get
$.paths['/api/v1/admin/UserProfiles/Default.Current()'].get
$.paths['/api/v1/admin/userprofiles/current'].get
$.paths['/api/v1/admin/userprofiles({key})/roles'].get
$.paths['/api/v1/admin/userprofiles({key})/roles'].put
$.paths['/api/v1/admin/userprofiles({key})/roles'].post
$.paths['/api/v1/admin/userprofiles({key})/roles'].delete
$.paths['/api/v1/admin/userprofiles({key})/allowedwebsites'].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 Admin API V1 User Profiles API
version: 1.0.0
extends: openapi/optimizely-user-profiles-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: 33
- target: $.paths['/api/v1/admin/UserProfiles'].get
update:
x-apievangelist-phrasing:
intent: List user profiles
effect: read
questions:
- How do I pull a list of every user profile in the commerce admin?
- Can I filter user profiles by last name or activation status and page through them?
instructions:
- text: List all user profiles.
- text: List user profiles matching {filter}, sorted by {orderby}, first {top} only.
slots:
filter: query.$filter
orderby: query.$orderby
top: query.$top
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/admin/UserProfiles'].post
update:
x-apievangelist-phrasing:
intent: Create a user profile
effect: write
questions:
- What fields are required to add a new user profile to the storefront admin?
- Can I create a buyer account with a default customer and warehouse already set?
instructions:
- text: Create a user profile for {firstName} {lastName} with email {email} and username {userName}.
slots:
firstName: requestBody.firstName
lastName: requestBody.lastName
email: requestBody.email
userName: requestBody.userName
- text: Add a new user {userName} at company {company} linked to customer {defaultCustomerId}.
slots:
userName: requestBody.userName
company: requestBody.company
defaultCustomerId: requestBody.defaultCustomerId
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/admin/UserProfiles({id})'].get
update:
x-apievangelist-phrasing:
intent: Get a user profile by id
effect: read
questions:
- How can I look up a single user profile when I know its id?
- Can I expand related records inline when fetching one user profile?
instructions:
- text: Get user profile {id}.
slots:
id: path.id
- text: Fetch user profile {id} and expand {expand}.
slots:
id: path.id
expand: query.$expand
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/admin/UserProfiles({id})'].put
update:
x-apievangelist-phrasing:
intent: Replace a user profile
effect: write
questions:
- Is there a way to overwrite an entire user profile record in one call?
- What happens to fields I leave out when I fully replace a user profile?
instructions:
- text: Replace user profile {id} entirely with a new record for {email}.
slots:
id: path.id
email: requestBody.email
- text: Overwrite the whole user profile {id}, setting position to {position}.
slots:
id: path.id
position: requestBody.position
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/admin/UserProfiles({id})'].delete
update:
x-apievangelist-phrasing:
intent: Delete a user profile
effect: destructive
questions:
- Can I permanently remove one user profile by its id?
- Does deleting a single user profile support an If-Match concurrency check?
instructions:
- text: Delete user profile {id}.
slots:
id: path.id
- text: Delete user profile {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/UserProfiles({id})'].patch
update:
x-apievangelist-phrasing:
intent: Update fields on a user profile
effect: write
questions:
- How do I change just a user's phone number without resending the whole profile?
- Can I deactivate a user by patching their profile?
instructions:
- text: Change the phone number on user profile {id} to {phone}.
slots:
id: path.id
phone: requestBody.phone
- text: 'Mark user profile {id} as deactivated: {isDeactivated}.'
slots:
id: path.id
isDeactivated: requestBody.isDeactivated
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/admin/UserProfiles/Default.Default()'].get
update:
x-apievangelist-phrasing:
intent: Get a blank user profile template
effect: read
questions:
- What default values does a brand-new user profile start with?
- Is there an empty user profile template I can fill in before creating one?
instructions:
- text: Get the default user profile template.
- text: Show me the default field values for a new user profile.
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/admin/UserProfiles({id})/Default.Roles()'].get
update:
x-apievangelist-phrasing:
intent: Get a user's roles via the Roles function
effect: read
questions:
- Which roles are attached to a user profile, using the Default.Roles() function?
- Can I call the OData Roles function on a user profile id to see its permissions?
instructions:
- text: Call the Roles function for user profile {id}.
slots:
id: path.id
- text: Run Default.Roles() on user {id} and filter to {filter}.
slots:
id: path.id
filter: query.$filter
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/admin/UserProfiles/Default.Current()'].get
update:
x-apievangelist-phrasing:
intent: Get the signed-in user via the Current function
effect: read
questions:
- Which user profile am I signed in as, using the Default.Current() OData function?
- Can the Current function tell me the calling admin's own profile?
instructions:
- text: Call Default.Current() to get my own user profile.
- text: Run the Current function and select only {select}.
slots:
select: query.$select
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/admin/userprofiles/current'].get
update:
x-apievangelist-phrasing:
intent: Get the signed-in user from the current route
effect: read
questions:
- Is there a plain /userprofiles/current route that returns my own profile?
- What does the lowercase current-user route return for the caller?
instructions:
- text: Fetch my profile from the userprofiles/current route.
- text: Get the current user record from the current route and expand {expand}.
slots:
expand: query.$expand
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/admin/userprofiles({key})/roles'].get
update:
x-apievangelist-phrasing:
intent: List roles assigned to a user
effect: read
questions:
- Where can I read the role list for a user from the roles sub-route?
- Can I see which admin roles a specific user currently holds?
instructions:
- text: List the roles on user profile {key} from its roles route.
slots:
key: path.key
- text: Show roles for user {key}, first {top}.
slots:
key: path.key
top: query.$top
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/admin/userprofiles({key})/roles'].put
update:
x-apievangelist-phrasing:
intent: Replace a user's roles (PUT)
effect: write
questions:
- Can I overwrite the full set of roles a user has with a PUT?
- How are a user's roles replaced rather than appended?
instructions:
- text: Replace the role set on user profile {key} using PUT.
slots:
key: path.key
- text: PUT a new role list onto user {key}.
slots:
key: path.key
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/admin/userprofiles({key})/roles'].post
update:
x-apievangelist-phrasing:
intent: Assign roles to a user (POST)
effect: write
questions:
- Is there a POST route for assigning roles to a user?
- Can I grant roles to a user profile by posting to its roles endpoint?
instructions:
- text: POST roles to user profile {key}.
slots:
key: path.key
- text: Grant roles to user {key} through the POST roles route.
slots:
key: path.key
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/admin/userprofiles({key})/roles'].delete
update:
x-apievangelist-phrasing:
intent: Remove roles from a user
effect: destructive
questions:
- Can I strip roles off a user profile?
- What removes the roles a user has been granted?
instructions:
- text: Remove the roles from user profile {key}.
slots:
key: path.key
- text: Revoke role assignments for user {key}.
slots:
key: path.key
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/admin/userprofiles({key})/allowedwebsites'].get
update:
x-apievangelist-phrasing:
intent: List websites a user may access
effect: read
questions:
- Which storefront websites is a given user allowed to sign in to?
- Can I check the allowed websites for a user profile?
instructions:
- text: List the allowed websites for user {key}.
slots:
key: path.key
- text: Show which websites user {key} can access, filtered by {filter}.
slots:
key: path.key
filter: query.$filter
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/admin/userprofiles({key})/approvers'].get
update:
x-apievangelist-phrasing:
intent: List a user's order approvers
effect: read
questions:
- Who can approve orders for a particular user?
- What approvers are available to a buyer's user profile?
instructions:
- text: List the approvers for user profile {key}.
slots:
key: path.key
- text: Show possible order approvers for user {key}.
slots:
key: path.key
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/admin/userprofiles({key})/availablecustomers'].get
update:
x-apievangelist-phrasing:
intent: List customers a user can be assigned to
effect: read
questions:
- Which customers could still be assigned to this user?
- Can I get the available bill-to customers for a user profile?
instructions:
- text: List available customers for user {key}.
slots:
key: path.key
- text: Show the first {top} customers user {key} could be linked to.
slots:
key: path.key
top: query.$top
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/admin/userprofiles/delete'].delete
update:
x-apievangelist-phrasing:
intent: Bulk delete user profiles
effect: destructive
questions:
- Can I delete several user profiles at once by passing a list of ids?
- Is there a bulk delete route for user accounts?
instructions:
- text: Bulk delete user profiles {ids}.
slots:
ids: query.ids
- text: 'Remove all of these users in one call: {ids}.'
slots:
ids: query.ids
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/admin/userprofiles({key})/customers({customerKey})'].get
update:
x-apievangelist-phrasing:
intent: Get a customer linked to a user
effect: read
questions:
- Can I read one specific customer assigned to a user profile?
- Is a given customer account attached to this user?
instructions:
- text: Get customer {customerKey} assigned to user {key}.
slots:
customerKey: path.customerKey
key: path.key
- text: Show the customer record {customerKey} under user profile {key}.
slots:
customerKey: path.customerKey
key: path.key
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/admin/userprofiles({key})/customproperties({custompropertyKey})'].get
update:
x-apievangelist-phrasing:
intent: Get a custom property on a user
effect: read
questions:
- How do I read a custom property stored on a user profile?
- Can I fetch one extended attribute from a user record?
instructions:
- text: Get custom property {custompropertyKey} on user {key}.
slots:
custompropertyKey: path.custompropertyKey
key: path.key
- text: Read user {key}'s custom field {custompropertyKey}.
slots:
key: path.key
custompropertyKey: path.custompropertyKey
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/admin/userprofiles({key})/dashboardpanelpositions({dashboardpanelpositionKey})'].get
update:
x-apievangelist-phrasing:
intent: Get a user's dashboard panel position
effect: read
questions:
- Where is a given dashboard panel placed for a user?
- Can I read one saved dashboard layout position for a user profile?
instructions:
- text: Get dashboard panel position {dashboardpanelpositionKey} for user {key}.
slots:
dashboardpanelpositionKey: path.dashboardpanelpositionKey
key: path.key
- text: Show where user {key} placed dashboard panel {dashboardpanelpositionKey}.
slots:
key: path.key
dashboardpanelpositionKey: path.dashboardpanelpositionKey
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/admin/userprofiles({key})/emaillists({emaillistKey})'].get
update:
x-apievangelist-phrasing:
intent: Get an email list a user is on
effect: read
questions:
- Is a user subscribed to a particular email list?
- Can I look up one email list membership on a user profile?
instructions:
- text: Get email list {emaillistKey} for user {key}.
slots:
emaillistKey: path.emaillistKey
key: path.key
- text: Check user {key}'s membership in email list {emaillistKey}.
slots:
key: path.key
emaillistKey: path.emaillistKey
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/admin/userprofiles({key})/messagestatuses({messagestatusKey})'].get
update:
x-apievangelist-phrasing:
intent: Get a message status for a user
effect: read
questions:
- Has a user read a particular site message?
- What is the status of one message delivered to a user profile?
instructions:
- text: Get message status {messagestatusKey} for user {key}.
slots:
messagestatusKey: path.messagestatusKey
key: path.key
- text: Show whether user {key} has seen message status {messagestatusKey}.
slots:
key: path.key
messagestatusKey: path.messagestatusKey
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/admin/userprofiles({key})/odppersonas({personaKey})'].get
update:
x-apievangelist-phrasing:
intent: Get a user's ODP persona
effect: read
questions:
- Which Optimizely Data Platform persona is attached to a user?
- Can I read one ODP persona record from a user profile?
instructions:
- text: Get ODP persona {personaKey} for user {key}.
slots:
personaKey: path.personaKey
key: path.key
- text: Show the data platform persona {personaKey} linked to user {key}.
slots:
personaKey: path.personaKey
key: path.key
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/admin/userprofiles({key})/salespersons({salespersonKey})'].get
update:
x-apievangelist-phrasing:
intent: Get a salesperson tied to a user
effect: read
questions:
- Who is the sales rep assigned to a user profile?
- Can I read one salesperson record linked to a user?
instructions:
- text: Get salesperson {salespersonKey} for user {key}.
slots:
salespersonKey: path.salespersonKey
key: path.key
- text: Show sales rep {salespersonKey} associated with user {key}.
slots:
salespersonKey: path.salespersonKey
key: path.key
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/admin/userprofiles({key})/userpaymentprofiles({userpaymentprofileKey})'].get
update:
x-apievangelist-phrasing:
intent: Get a user's saved payment profile
effect: read
questions:
- Can I see a stored payment method saved on a user's profile?
- What does one saved payment profile for a user contain?
instructions:
- text: Get payment profile {userpaymentprofileKey} for user {key}.
slots:
userpaymentprofileKey: path.userpaymentprofileKey
key: path.key
- text: Show user {key}'s saved card {userpaymentprofileKey}.
slots:
key: path.key
userpaymentprofileKey: path.userpaymentprofileKey
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/admin/userprofiles({key})/userprofilepasswords({userprofilepasswordKey})'].get
update:
x-apievangelist-phrasing:
intent: Get a user's password history record
effect: read
questions:
- Can I read a stored password history entry for a user?
- Where is one previous-password record for a user profile kept?
instructions:
- text: Get password record {userprofilepasswordKey} for user {key}.
slots:
userprofilepasswordKey: path.userprofilepasswordKey
key: path.key
- text: Show password history entry {userprofilepasswordKey} of user {key}.
slots:
userprofilepasswordKey: path.userprofilepasswordKey
key: path.key
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/admin/userprofiles({key})/userprofilewishlistfavorites({userprofilewishlistfavoriteKey})'].get
update:
x-apievangelist-phrasing:
intent: Get a user's favorited wish list
effect: read
questions:
- Which wish lists has a user marked as favorite?
- Can I read one wish list favorite flag for a user profile?
instructions:
- text: Get wish list favorite {userprofilewishlistfavoriteKey} for user {key}.
slots:
userprofilewishlistfavoriteKey: path.userprofilewishlistfavoriteKey
key: path.key
- text: Show favorited list entry {userprofilewishlistfavoriteKey} of user {key}.
slots:
userprofilewishlistfavoriteKey: path.userprofilewishlistfavoriteKey
key: path.key
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/admin/userprofiles({key})/userprofilewishlisthides({userprofilewishlisthideKey})'].get
update:
x-apievangelist-phrasing:
intent: Get a wish list a user has hidden
effect: read
questions:
- Has a user hidden a shared wish list from view?
- Can I look up one hidden wish list record for a user?
instructions:
- text: Get hidden wish list record {userprofilewishlisthideKey} for user {key}.
slots:
userprofilewishlisthideKey: path.userprofilewishlisthideKey
key: path.key
- text: Show wish list hide entry {userprofilewishlisthideKey} of user {key}.
slots:
userprofilewishlisthideKey: path.userprofilewishlisthideKey
key: path.key
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/admin/userprofiles({key})/userprofilewishlisttags({userprofilewishlisttagKey})'].get
update:
x-apievangelist-phrasing:
intent: Get a wish list tag on a user
effect: read
questions:
- What tags has a user applied to their wish lists?
- Can I fetch one wish list tag belonging to a user profile?
instructions:
- text: Get wish list tag {userprofilewishlisttagKey} for user {key}.
slots:
userprofilewishlisttagKey: path.userprofilewishlisttagKey
key: path.key
- text: Show list tag {userprofilewishlisttagKey} created by user {key}.
slots:
userprofilewishlisttagKey: path.userprofilewishlisttagKey
key: path.key
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/admin/userprofiles({key})/websites({websiteKey})'].get
update:
x-apievangelist-phrasing:
intent: Get a website assigned to a user
effect: read
questions:
- Is a specific website assigned to this user profile?
- Can I read one website record from a user's assigned sites?
instructions:
- text: Get website {websiteKey} assigned to user {key}.
slots:
websiteKey: path.websiteKey
key: path.key
- text: Show assigned site {websiteKey} on user profile {key}.
slots:
websiteKey: path.websiteKey
key: path.key
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/admin/userprofiles({key})/wishlistproducts({wishlistproductKey})'].get
update:
x-apievangelist-phrasing:
intent: Get a wish list product for a user
effect: read
questions:
- Can I read one product a user has saved to a wish list?
- What quantity and details does a user's wish list item have?
instructions:
- text: Get wish list product {wishlistproductKey} for user {key}.
slots:
wishlistproductKey: path.wishlistproductKey
key: path.key
- text: Show saved item {wishlistproductKey} on user {key}'s lists.
slots:
wishlistproductKey: path.wishlistproductKey
key: path.key
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/admin/userprofiles({key})/wishlists({wishlistKey})'].get
update:
x-apievangelist-phrasing:
intent: Get a wish list owned by a user
effect: read
questions:
- Can I pull up one of a user's wish lists by its id?
- What does a single wish list belonging to a user look like?
instructions:
- text: Get wish list {wishlistKey} owned by user {key}.
slots:
wishlistKey: path.wishlistKey
key: path.key
- text: Open user {key}'s wish list {wishlistKey}.
slots:
key: path.key
wishlistKey: path.wishlistKey
method: generated
generated: '2026-09-26'