Tray.ai · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for Tray Ai Users API
20 actions
20 updates
phrasing
extends
openapi/tray-ai-users-api-openapi.yml
Generated by API Evangelist
Written by API Evangelist tooling for Tray.ai's API. It is a proposal applied on top of the contract, not a document Tray.ai publishes.
What the actions change
x-apievangelist-phrasing
Targets 20 · first 16 shown; the file carries all of them
$.info
$.paths['/graphql'].post
$.paths['/graphql#getUsers'].post
$.paths['/graphql#updateExternalUser'].post
$.paths['/graphql#removeUser'].post
$.paths['/'].post
$.paths['/ '].post
$.paths['/ '].post
$.paths['/ '].post
$.paths['/ '].post
$.paths['/ '].post
$.paths['/users'].get
$.paths['/users/invite'].post
$.paths['/core/v1/invites'].post
$.paths['/core/v1/roles'].get
$.paths['/core/v1/users'].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 Tray Ai Users API
version: 1.0.0
extends: openapi/tray-ai-users-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: 19
- target: $.paths['/graphql'].post
update:
x-apievangelist-phrasing:
intent: Create an external user for embedded
effect: write
questions:
- How do I add one of my customers as an external user with the GraphQL createExternalUser mutation?
- Can I mark a new external user as a test user so they are excluded from billing?
instructions:
- text: Run the createExternalUser GraphQL mutation with name and externalUserId in {variables}.
slots:
variables: requestBody.variables
- text: Send GraphQL mutation {mutation} to create an external test user.
slots:
mutation: requestBody.query
method: generated
generated: '2026-09-26'
- target: $.paths['/graphql#getUsers'].post
update:
x-apievangelist-phrasing:
intent: Query external users via GraphQL
effect: read
questions:
- Which external users exist in my embedded application, queried over GraphQL?
- Does the GraphQL getUsers query return a pagination cursor?
instructions:
- text: Run the getUsers GraphQL query {query} with my master token.
slots:
query: requestBody.query
- text: Query GraphQL for external users after cursor {variables}.
slots:
variables: requestBody.variables
method: generated
generated: '2026-09-26'
- target: $.paths['/graphql#updateExternalUser'].post
update:
x-apievangelist-phrasing:
intent: Update an external user's properties
effect: write
questions:
- Can I flag an existing external user as a test user after creating them?
- Which GraphQL mutation changes an external user's properties?
instructions:
- text: Run the updateExternalUser GraphQL mutation with {variables}.
slots:
variables: requestBody.variables
- text: Send GraphQL mutation {mutation} to mark an external user as a test user.
slots:
mutation: requestBody.query
method: generated
generated: '2026-09-26'
- target: $.paths['/graphql#removeUser'].post
update:
x-apievangelist-phrasing:
intent: Remove an external user and their data
effect: destructive
questions:
- Does removing an external user with the GraphQL removeUser mutation also delete their solution instances and authentications?
- How do I offboard a customer from my embedded application completely?
instructions:
- text: Run the removeUser GraphQL mutation for external user {user}.
slots:
user: requestBody.variables
- text: Send GraphQL mutation {mutation} to remove an external user with all their instances and auths.
slots:
mutation: requestBody.query
method: generated
generated: '2026-09-26'
- target: $.paths['/'].post
update:
x-apievangelist-phrasing:
intent: Get users via the embedded root endpoint
effect: read
questions:
- Can I list embedded users by posting to the embedded root endpoint with a master token?
- Which embedded root call returns my end users?
instructions:
- text: Post a get-users request to the embedded root with {variables}.
slots:
variables: requestBody.variables
- text: Fetch end users through the embedded root endpoint using my master token.
method: generated
generated: '2026-09-26'
- target: $.paths['/ '].post
update:
x-apievangelist-phrasing:
intent: Create an end user via the embedded root
effect: write
questions:
- Is there an embedded root call that creates a new end user with a master token?
- Which master-token request posted to the embedded root adds an end user?
instructions:
- text: Post a create-new-user request to the embedded root with {variables}.
slots:
variables: requestBody.variables
- text: Add a new end user through the embedded root endpoint.
method: generated
generated: '2026-09-26'
- target: $.paths['/ '].post
update:
x-apievangelist-phrasing:
intent: Create a user token via the embedded root
effect: write
questions:
- Can I mint a user token by posting to the embedded root with a master token?
- Which embedded root call gives me a bearer token scoped to one end user?
instructions:
- text: Post a create-user-token request to the embedded root for user {variables}.
slots:
variables: requestBody.variables
- text: Mint a user-scoped token through the embedded root endpoint.
method: generated
generated: '2026-09-26'
- target: $.paths['/ '].post
update:
x-apievangelist-phrasing:
intent: Create an auth code for the config wizard
effect: write
questions:
- How do I get an authorization code to open the Auth or Config dialog for an end user?
- What do I need before showing the configuration wizard to a user?
instructions:
- text: Create a config wizard authorization code for user {variables}.
slots:
variables: requestBody.variables
- text: Generate an Auth/Config dialog code using my master token.
method: generated
generated: '2026-09-26'
- target: $.paths['/ '].post
update:
x-apievangelist-phrasing:
intent: Update an end user via the embedded root
effect: write
questions:
- Can I update an end user by posting to the embedded root with a master token?
- Which embedded root call edits an existing end user?
instructions:
- text: Post an update-user request to the embedded root with {variables}.
slots:
variables: requestBody.variables
- text: Edit an end user through the embedded root endpoint.
method: generated
generated: '2026-09-26'
- target: $.paths['/ '].post
update:
x-apievangelist-phrasing:
intent: Delete an end user via the embedded root
effect: destructive
questions:
- Is there an embedded root call that deletes an end user with a master token?
- Which master-token request posted to the embedded root deletes a user?
instructions:
- text: Post a delete-user request to the embedded root for {variables}.
slots:
variables: requestBody.variables
- text: Delete an end user through the embedded root endpoint.
method: generated
generated: '2026-09-26'
- target: $.paths['/users'].get
update:
x-apievangelist-phrasing:
intent: List organization users with roles (unversioned)
effect: read
questions:
- Who are the members of my Tray organization and what roles do they have?
- Can I see members' emails and roles on the unversioned /users endpoint?
instructions:
- text: List users in my organization from the unversioned users endpoint.
- text: Show each organization member's name, email and role.
method: generated
generated: '2026-09-26'
- target: $.paths['/users/invite'].post
update:
x-apievangelist-phrasing:
intent: Invite a user by email (unversioned)
effect: write
questions:
- How do I invite a teammate to my organization by email?
- Can an invite on the unversioned endpoint also put the person in a specific workspace?
instructions:
- text: Invite {email} to the organization with role {role}.
slots:
email: requestBody.email
role: requestBody.role
- text: Send an unversioned invite to {email} for workspace {workspace}.
slots:
email: requestBody.email
workspace: requestBody.workspaceId
method: generated
generated: '2026-09-26'
- target: $.paths['/core/v1/invites'].post
update:
x-apievangelist-phrasing:
intent: Invite a user to the organization (core v1)
effect: write
questions:
- Does a core v1 invite email the person a link to create their account?
- Which organization role id do I need to invite someone through core v1?
instructions:
- text: Send a core v1 invite to {email} with organization role {role}.
slots:
email: requestBody.email
role: requestBody.organizationRoleId
- text: Email {email} an account-creation link and give them role {role}.
slots:
email: requestBody.email
role: requestBody.organizationRoleId
method: generated
generated: '2026-09-26'
- target: $.paths['/core/v1/roles'].get
update:
x-apievangelist-phrasing:
intent: List organization roles
effect: read
questions:
- Which organization roles can I assign to users?
- Where do I find the role id to give a new user?
instructions:
- text: List the roles in my organization.
- text: Show the first {count} organization roles.
slots:
count: query.first
method: generated
generated: '2026-09-26'
- target: $.paths['/core/v1/users'].get
update:
x-apievangelist-phrasing:
intent: List or find organization users (core v1)
effect: read
questions:
- Can I look up an organization user by email address?
- How many users are in my organization, according to core v1?
instructions:
- text: Find the organization user with email {email}.
slots:
email: query.email
- text: List organization users via core v1, {count} per page.
slots:
count: query.first
method: generated
generated: '2026-09-26'
- target: $.paths['/core/v1/users'].post
update:
x-apievangelist-phrasing:
intent: Create an organization user without an invite
effect: write
questions:
- How do I add a user when my organization uses SSO and I don't want an invite email sent?
- Can I create an organization user directly with a name, email and role?
instructions:
- text: Create organization user {name} with email {email} and role {role}, no invitation.
slots:
name: requestBody.name
email: requestBody.email
role: requestBody.organizationRoleId
- text: Add SSO user {email} named {name} as role {role}.
slots:
email: requestBody.email
name: requestBody.name
role: requestBody.organizationRoleId
method: generated
generated: '2026-09-26'
- target: $.paths['/core/v1/users/{userId}'].get
update:
x-apievangelist-phrasing:
intent: Get an organization user by id
effect: read
questions:
- What details does Tray hold for a specific organization user?
- Can I fetch one user record if I know its id?
instructions:
- text: Get organization user {user}.
slots:
user: path.userId
- text: Show the profile of user id {user}.
slots:
user: path.userId
method: generated
generated: '2026-09-26'
- target: $.paths['/core/v1/users/{userId}'].delete
update:
x-apievangelist-phrasing:
intent: Delete an organization user
effect: destructive
questions:
- Can I delete someone from my organization by user id?
- Which call removes an organization user entirely?
instructions:
- text: Delete organization user {user}.
slots:
user: path.userId
- text: Remove user {user} from the organization entirely.
slots:
user: path.userId
method: generated
generated: '2026-09-26'
- target: $.paths['/core/v1/users/{userId}/roles'].put
update:
x-apievangelist-phrasing:
intent: Change a user's organization role
effect: write
questions:
- How do I promote or demote a user's role across the organization?
- Can I change someone's organization-level role without touching workspace roles?
instructions:
- text: Change the organization role of user {user} to {role}.
slots:
user: path.userId
role: requestBody.roleId
- text: Set user {user}'s org-wide role to {role}.
slots:
user: path.userId
role: requestBody.roleId
method: generated
generated: '2026-09-26'