# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand. overlay: 1.0.0 info: title: API Evangelist conversational phrasing for Edge Impulse User API version: 1.0.0 extends: openapi/edge-impulse-user-api-openapi.yml actions: - target: $.info update: x-apievangelist-phrasing: method: generated generated: '2026-10-01' generator: build-phrasing.py label: Generated by API Evangelist operations: 49 - target: $.paths['/api-user-create'].post update: x-apievangelist-phrasing: intent: Sign up a new user with a first project effect: write questions: - How do I register a new Edge Impulse account and get a starter project? - Can I name the first project when creating a user account? instructions: - text: 'Create user {username} named {name} with email {email}, accepting the privacy policy: {privacyPolicy}.' slots: username: requestBody.username name: requestBody.name email: requestBody.email privacyPolicy: requestBody.privacyPolicy - text: Sign up {email} as a free user and create a first project called {projectName}. slots: email: requestBody.email projectName: requestBody.projectName method: generated generated: '2026-10-01' - target: $.paths['/api-user-create-evaluate'].post update: x-apievangelist-phrasing: intent: Create a throwaway evaluation account effect: write questions: - Can I try the platform with an evaluation account without filling in my details? - What creates a temporary evaluation user and drops me straight into a new project? instructions: - text: Create an evaluation user and open its new project. - text: Spin up an anonymous evaluation account so I can try things out. method: generated generated: '2026-10-01' - target: $.paths['/api-create-pro-user'].post update: x-apievangelist-phrasing: intent: Sign up a user on the Professional plan effect: write questions: - How do I sign up directly for the Professional plan? - When does a new Professional tier account actually get its paid features? instructions: - text: 'Create Professional plan user {username} named {name} with email {email}, privacy policy accepted: {privacyPolicy}.' slots: username: requestBody.username name: requestBody.name email: requestBody.email privacyPolicy: requestBody.privacyPolicy - text: Register {email} on the paid Professional tier and send them back to {redirectUrlOrigin} after checkout. slots: email: requestBody.email redirectUrlOrigin: requestBody.redirectUrlOrigin method: generated generated: '2026-10-01' - target: $.paths['/api-user-create-enterprise-trial'].post update: x-apievangelist-phrasing: intent: Sign up a new user with an enterprise trial effect: write questions: - Can a brand-new user sign up and get an enterprise trial organization at the same time? - What company details are collected when someone registers for an enterprise trial? instructions: - text: 'Create enterprise trial user {username} named {name} with organization {organizationName}, privacy policy accepted: {privacyPolicy}.' slots: username: requestBody.username name: requestBody.name organizationName: requestBody.organizationName privacyPolicy: requestBody.privacyPolicy - text: Register new user {username} for an enterprise trial for company {companyName} in {country}. slots: username: requestBody.username companyName: requestBody.companyName country: requestBody.country method: generated generated: '2026-10-01' - target: $.paths['/api-user-need-to-set-password/{usernameOrEmail}'].get update: x-apievangelist-phrasing: intent: Check whether a user is registered and needs a password effect: read questions: - Is there already an account for this email, and does it still need a password set? - Can I tell if a username is registered before showing a login form? instructions: - text: Check whether {usernameOrEmail} is registered and needs to set a password. slots: usernameOrEmail: path.usernameOrEmail - text: Look up the registration state of {usernameOrEmail}. slots: usernameOrEmail: path.usernameOrEmail method: generated generated: '2026-10-01' - target: $.paths['/api/user'].get update: x-apievangelist-phrasing: intent: Get my own user profile effect: read questions: - What account details does Edge Impulse have for me? - Can I fetch my profile without the long list of projects? instructions: - text: Show my user profile. - text: Get my account info and set exclude projects to {excludeProjects}. slots: excludeProjects: query.excludeProjects method: generated generated: '2026-10-01' - target: $.paths['/api/user'].post update: x-apievangelist-phrasing: intent: Update my own profile details effect: write questions: - How do I change my display name or job title on my own account? - Can I set my timezone and project sort order on my profile? instructions: - text: Change my name to {name}. slots: name: requestBody.name - text: Set my own job title to {jobTitle} and company to {companyName}. slots: jobTitle: requestBody.jobTitle companyName: requestBody.companyName - text: Set my account timezone to {timezone}. slots: timezone: requestBody.timezone method: generated generated: '2026-10-01' - target: $.paths['/api/user'].delete update: x-apievangelist-phrasing: intent: Delete my own account effect: destructive questions: - How do I permanently close my own account? - Do I need my password or an MFA code to delete my account? instructions: - text: Delete my account, confirming with password {password}. slots: password: requestBody.password - text: Close my own account using MFA code {totpToken}. slots: totpToken: requestBody.totpToken method: generated generated: '2026-10-01' - target: $.paths['/api/user/projects'].get update: x-apievangelist-phrasing: intent: List all my projects effect: read questions: - Which projects do I have access to across every whitelabel? - Can I get just my project list without the rest of my profile? instructions: - text: List all my projects. - text: Show every project on my account regardless of whitelabel. method: generated generated: '2026-10-01' - target: $.paths['/api/user/convert'].post update: x-apievangelist-phrasing: intent: Convert my evaluation account to a regular one effect: write questions: - I've been using an evaluation account — how do I keep it as a real account? - Can I turn my trial evaluation login into a permanent user with my own username? instructions: - text: 'Convert my evaluation account to user {username} named {name}, email {email}, password {password}, privacy policy accepted: {privacyPolicy}.' slots: username: requestBody.username name: requestBody.name email: requestBody.email password: requestBody.password privacyPolicy: requestBody.privacyPolicy - text: Upgrade my evaluation login to a regular account under {email}. slots: email: requestBody.email method: generated generated: '2026-10-01' - target: $.paths['/api/user/activate'].post update: x-apievangelist-phrasing: intent: Activate my account with a code effect: write questions: - Where do I enter the activation code I got by email for my own account? - What's needed to activate my newly created account? instructions: - text: Activate my account with code {code}. slots: code: requestBody.code - text: Use activation code {code} to activate the account I'm logged in with. slots: code: requestBody.code method: generated generated: '2026-10-01' - target: $.paths['/api/user/request-activation'].post update: x-apievangelist-phrasing: intent: Resend my account activation code effect: write questions: - I never received my activation email — can I get a new code? - What resends the activation code for the account I'm signed in with? instructions: - text: Send me a new activation code. - text: Resend the activation email for my own account. method: generated generated: '2026-10-01' - target: $.paths['/api/user/create-developer-profile'].post update: x-apievangelist-phrasing: intent: Create a developer profile for my account effect: write questions: - How do I set up a developer profile on my Edge Impulse account? - Can I add a developer profile to the user I'm logged in as? instructions: - text: Create a developer profile for me. - text: Set up my developer profile now. method: generated generated: '2026-10-01' - target: $.paths['/api/user/trial'].post update: x-apievangelist-phrasing: intent: Start an enterprise trial for my account effect: write questions: - Can I start an enterprise trial from my existing account? - Is it possible to run more than one enterprise trial on the same account? instructions: - text: Start an enterprise trial for me with organization {organizationName}. slots: organizationName: requestBody.organizationName - text: Begin my enterprise trial for {companyName}, use case {useCase}. slots: companyName: requestBody.companyName useCase: requestBody.useCase method: generated generated: '2026-10-01' - target: $.paths['/api/user/emails'].get update: x-apievangelist-phrasing: intent: List emails sent to me effect: read questions: - What emails has Edge Impulse sent to my account? - Can I check whether my activation email was actually sent to me? instructions: - text: List the emails Edge Impulse has sent me. - text: Show my own account's email history. method: generated generated: '2026-10-01' - target: $.paths['/api/user/photo'].post update: x-apievangelist-phrasing: intent: Upload my profile photo effect: write questions: - How do I set a profile picture on my own account? - Can I replace my avatar with a new photo? instructions: - text: Upload {photo} as my profile photo. slots: photo: requestBody.photo - text: Set my avatar to {photo}. slots: photo: requestBody.photo method: generated generated: '2026-10-01' - target: $.paths['/api/user/photo'].delete update: x-apievangelist-phrasing: intent: Remove my profile photo effect: destructive questions: - Can I remove my profile picture entirely? - What deletes the avatar on my account? instructions: - text: Delete my profile photo. - text: Remove my avatar. method: generated generated: '2026-10-01' - target: $.paths['/api/user/change-password'].post update: x-apievangelist-phrasing: intent: Change my own password effect: write questions: - How do I change my password if I know my current one? - Do I need my old password to set a new one on my account? instructions: - text: Change my password from {currentPassword} to {newPassword}. slots: currentPassword: requestBody.currentPassword newPassword: requestBody.newPassword - text: Update the password on my account to {newPassword}, current one is {currentPassword}. slots: newPassword: requestBody.newPassword currentPassword: requestBody.currentPassword method: generated generated: '2026-10-01' - target: $.paths['/api/user/organizations'].get update: x-apievangelist-phrasing: intent: List organizations I belong to effect: read questions: - Which organizations am I a member of? - Can I see all the teams my account is part of? instructions: - text: List my organizations. - text: Show every organization I'm a member of. method: generated generated: '2026-10-01' - target: $.paths['/api/users/buckets'].get update: x-apievangelist-phrasing: intent: List storage buckets I can access effect: read questions: - Which organizational storage buckets do I have access to? - Can I see all the data buckets available to my account? instructions: - text: List the storage buckets I can access. - text: Show me every organization bucket available to my account. method: generated generated: '2026-10-01' - target: $.paths['/api/user/by-third-party-activation-code'].post update: x-apievangelist-phrasing: intent: Look up a user by third-party activation code effect: read questions: - Can I find out which user a third-party activation code belongs to? - What user details come back for a partner-issued activation code? instructions: - text: Look up the user for third-party activation code {activationCode}. slots: activationCode: requestBody.activationCode - text: Find who third-party activation code {activationCode} was issued to. slots: activationCode: requestBody.activationCode method: generated generated: '2026-10-01' - target: $.paths['/api/user/activate-by-third-party-activation-code'].post update: x-apievangelist-phrasing: intent: Activate a third-party-created user effect: write questions: - A partner created my account — how do I activate it with their code? - What do I need to set when activating an account created by a third party? instructions: - text: Activate the third-party account with code {activationCode}, username {username} and password {password}. slots: activationCode: requestBody.activationCode username: requestBody.username password: requestBody.password - text: Claim partner-created account {activationCode} as {username}. slots: activationCode: requestBody.activationCode username: requestBody.username method: generated generated: '2026-10-01' - target: $.paths['/api/user/accept-tos'].post update: x-apievangelist-phrasing: intent: Accept the Terms of Service effect: write questions: - How do I accept the updated Terms of Service on my account? - What records my agreement to the Terms of Service? instructions: - text: Accept the Terms of Service for my account. - text: Record that I agree to the latest Terms of Service. method: generated generated: '2026-10-01' - target: $.paths['/api/user/dismiss-notification'].post update: x-apievangelist-phrasing: intent: Dismiss a notification effect: write questions: - Can I hide a notification banner so it stops showing on my account? - What dismisses one of my account notifications? instructions: - text: Dismiss notification {notification}. slots: notification: requestBody.notification - text: Stop showing me the {notification} notice. slots: notification: requestBody.notification method: generated generated: '2026-10-01' - target: $.paths['/api/user/mfa/totp/create-key'].post update: x-apievangelist-phrasing: intent: Generate a new TOTP key for MFA setup effect: write questions: - How do I get a secret to add Edge Impulse to my authenticator app? - Can I generate an MFA key if I already have MFA turned on? instructions: - text: Generate a new TOTP MFA key for my account. - text: Create an authenticator secret so I can begin setting up two-factor login. method: generated generated: '2026-10-01' - target: $.paths['/api/user/mfa/totp/set-key'].post update: x-apievangelist-phrasing: intent: Enable MFA with a TOTP key effect: write questions: - How do I turn on two-factor authentication after scanning the key? - What code do I need to confirm when enabling MFA? instructions: - text: Enable MFA with key {key} and code {totpToken}. slots: key: requestBody.key totpToken: requestBody.totpToken - text: Turn on two-factor login using authenticator code {totpToken} for key {key}. slots: totpToken: requestBody.totpToken key: requestBody.key method: generated generated: '2026-10-01' - target: $.paths['/api/user/mfa/totp/clear'].post update: x-apievangelist-phrasing: intent: Disable MFA on my account effect: destructive questions: - How do I turn off two-factor authentication? - Do I need a current authenticator code to remove MFA? instructions: - text: Disable MFA on my account using code {totpToken}. slots: totpToken: requestBody.totpToken - text: Remove my TOTP key, confirming with {totpToken}. slots: totpToken: requestBody.totpToken method: generated generated: '2026-10-01' - target: $.paths['/api/user/subscription/upgrade'].post update: x-apievangelist-phrasing: intent: Upgrade my subscription effect: write questions: - How do I upgrade my plan and choose monthly or yearly billing? - Where does the checkout send me after a subscription upgrade succeeds or is cancelled? instructions: - text: Upgrade my subscription with {billingCycle} billing, returning to {successUrl} on success or {cancelUrl} on cancel. slots: billingCycle: requestBody.billingCycle successUrl: requestBody.successUrl cancelUrl: requestBody.cancelUrl - text: Start a {billingCycle} plan upgrade checkout that redirects to {successUrl} or {cancelUrl}. slots: billingCycle: requestBody.billingCycle successUrl: requestBody.successUrl cancelUrl: requestBody.cancelUrl method: generated generated: '2026-10-01' - target: $.paths['/api/user/subscription/cancel'].post update: x-apievangelist-phrasing: intent: Cancel my subscription effect: destructive questions: - How do I cancel my paid plan? - Can I tell Edge Impulse why I'm downgrading when I cancel? instructions: - text: Cancel my subscription. - text: Cancel my plan with the reason {downgradeReason}. slots: downgradeReason: requestBody.downgradeReason method: generated generated: '2026-10-01' - target: $.paths['/api/user/subscription/undo-cancel'].post update: x-apievangelist-phrasing: intent: Undo a pending subscription cancellation effect: write questions: - I cancelled my plan by mistake — can I keep it before the billing period ends? - Is it too late to reverse a cancellation once the billing period has ended? instructions: - text: Undo my pending subscription cancellation. - text: Keep my subscription active and stop the scheduled cancellation. method: generated generated: '2026-10-01' - target: $.paths['/api/user/subscription/metrics'].get update: x-apievangelist-phrasing: intent: Get my billable compute usage effect: read questions: - How much billable compute have I used on my subscription? - Where can I see compute metrics that count toward my bill? instructions: - text: Show my billable compute metrics. - text: Get the compute usage on my active subscription. method: generated generated: '2026-10-01' - target: $.paths['/api/users/{userId}'].get update: x-apievangelist-phrasing: intent: Get a user by ID effect: read questions: - What profile information is stored for a given user ID? - Can I look up another account's details by its user ID? instructions: - text: Get user {userId}. slots: userId: path.userId - text: Show the profile of user ID {userId}. slots: userId: path.userId method: generated generated: '2026-10-01' - target: $.paths['/api/users/{userId}'].post update: x-apievangelist-phrasing: intent: Update a user's profile by ID effect: write questions: - Can I change the name or job title of a user identified by their ID? - Which profile fields can be edited for a specific user ID? instructions: - text: Rename user {userId} to {name}. slots: userId: path.userId name: requestBody.name - text: Set the timezone of user {userId} to {timezone}. slots: userId: path.userId timezone: requestBody.timezone method: generated generated: '2026-10-01' - target: $.paths['/api/users/{userId}'].delete update: x-apievangelist-phrasing: intent: Delete a user by ID effect: destructive questions: - Can I delete an account by passing its user ID? - Is deleting a user by ID limited to my own account? instructions: - text: Delete user {userId}, confirming with password {password}. slots: userId: path.userId password: requestBody.password - text: Remove the account with ID {userId}. slots: userId: path.userId method: generated generated: '2026-10-01' - target: $.paths['/api/users/{userId}/activate'].post update: x-apievangelist-phrasing: intent: Activate a user by ID with a code effect: write questions: - Can I activate an account by user ID using its activation code? - What activates a specific user rather than the one I'm logged in as? instructions: - text: Activate user {userId} with code {code}. slots: userId: path.userId code: requestBody.code - text: Use code {code} to activate account ID {userId}. slots: code: requestBody.code userId: path.userId method: generated generated: '2026-10-01' - target: $.paths['/api/users/{userId}/request-activation'].post update: x-apievangelist-phrasing: intent: Resend the activation code for a user effect: write questions: - Can I trigger a new activation code for a specific user ID? - What resends activation for another account rather than my own? instructions: - text: Request a new activation code for user {userId}. slots: userId: path.userId - text: Resend the activation email to account ID {userId}. slots: userId: path.userId method: generated generated: '2026-10-01' - target: $.paths['/api/users/{userId}/emails'].get update: x-apievangelist-phrasing: intent: List emails sent to a user effect: read questions: - Which emails were sent to a given user ID? - Can I check the email history of a specific account? instructions: - text: List emails sent to user {userId}. slots: userId: path.userId - text: Show the email history for account ID {userId}. slots: userId: path.userId method: generated generated: '2026-10-01' - target: $.paths['/api/users/{userId}/photo'].post update: x-apievangelist-phrasing: intent: Upload a profile photo for a user effect: write questions: - Can I set the profile photo of a user by their ID? - What uploads an avatar for a specific account rather than mine? instructions: - text: Upload {photo} as the profile photo of user {userId}. slots: photo: requestBody.photo userId: path.userId - text: Set account {userId}'s avatar to {photo}. slots: userId: path.userId photo: requestBody.photo method: generated generated: '2026-10-01' - target: $.paths['/api/users/{userId}/change-password'].post update: x-apievangelist-phrasing: intent: Change a user's password by ID effect: write questions: - Can I change the password of a user identified by ID? - Does changing a user's password by ID still require the current password? instructions: - text: Change the password of user {userId} from {currentPassword} to {newPassword}. slots: userId: path.userId currentPassword: requestBody.currentPassword newPassword: requestBody.newPassword - text: Set account {userId}'s password to {newPassword}, current password {currentPassword}. slots: userId: path.userId newPassword: requestBody.newPassword currentPassword: requestBody.currentPassword method: generated generated: '2026-10-01' - target: $.paths['/api/users/{userId}/set-password'].post update: x-apievangelist-phrasing: intent: Set a password for a new SSO user effect: write questions: - I signed up through single sign-on — how do I also set a password? - What does a new SSO user need to provide to add a password? instructions: - text: Set password {password} for SSO user {userId} using {identityProvider} access token {accessToken}. slots: password: requestBody.password userId: path.userId identityProvider: requestBody.identityProvider accessToken: requestBody.accessToken - text: Give SSO account {userId} the password {password}, verified by token {accessToken} from {identityProvider}. slots: userId: path.userId password: requestBody.password accessToken: requestBody.accessToken identityProvider: requestBody.identityProvider method: generated generated: '2026-10-01' - target: $.paths['/api/users/{userId}/organizations'].get update: x-apievangelist-phrasing: intent: List a user's organizations effect: read questions: - Which organizations is a given user a member of? - Can I see the organizations for a specific user ID? instructions: - text: List organizations for user {userId}. slots: userId: path.userId - text: Show which teams account {userId} belongs to. slots: userId: path.userId method: generated generated: '2026-10-01' - target: $.paths['/api/users/{userId}/buckets'].get update: x-apievangelist-phrasing: intent: List storage buckets a user can access effect: read questions: - Which organizational storage buckets can a particular user reach? - Can I audit bucket access for a specific user ID? instructions: - text: List the storage buckets user {userId} can access. slots: userId: path.userId - text: Show organization buckets available to account {userId}. slots: userId: path.userId method: generated generated: '2026-10-01' - target: $.paths['/api/users/{userId}/feedback'].post update: x-apievangelist-phrasing: intent: Send feedback or contact sales effect: write questions: - How do I send product feedback to Edge Impulse? - Can I get in touch with sales from my account with my company details? instructions: - text: Send {type} feedback from user {userId} with subject {subject} and message {body}. slots: type: requestBody.type userId: path.userId subject: requestBody.subject body: requestBody.body - text: 'Contact sales as user {userId} about {subject}: {body}, type {type}, work email {workEmail}.' slots: userId: path.userId subject: requestBody.subject body: requestBody.body type: requestBody.type workEmail: requestBody.workEmail method: generated generated: '2026-10-01' - target: $.paths['/api/users/{userId}/upgrade'].post update: x-apievangelist-phrasing: intent: Request an upgrade to Enterprise effect: write questions: - How do I ask to move my account to the Enterprise plan? - Can I include my use case and timeline in an Enterprise upgrade request? instructions: - text: Send an Enterprise upgrade request for user {userId}. slots: userId: path.userId - text: Request Enterprise for user {userId} with use case {useCase} and timeline {timeline}. slots: userId: path.userId useCase: requestBody.useCase timeline: requestBody.timeline method: generated generated: '2026-10-01' - target: $.paths['/api/users/{userId}/trials'].get update: x-apievangelist-phrasing: intent: List a user's enterprise trials effect: read questions: - Which enterprise trials has a user started? - Has a given user already used up their enterprise trial? instructions: - text: List enterprise trials for user {userId}. slots: userId: path.userId - text: Show the trial history of account {userId}. slots: userId: path.userId method: generated generated: '2026-10-01' - target: $.paths['/api-user-request-reset-password'].post update: x-apievangelist-phrasing: intent: Send a password reset link effect: write questions: - I forgot my password — how do I get a reset link? - Can a password reset email be sent to any registered address? instructions: - text: Send a password reset link to {email}. slots: email: requestBody.email - text: Email {email} a link to reset their forgotten password. slots: email: requestBody.email method: generated generated: '2026-10-01' - target: $.paths['/api-user-reset-password'].post update: x-apievangelist-phrasing: intent: Reset a password with a reset code effect: write questions: - What do I do with the reset code once I've received it? - Can I set a new password using the code from the reset email? instructions: - text: Reset the password for {email} to {newPassword} using code {code}. slots: email: requestBody.email newPassword: requestBody.newPassword code: requestBody.code - text: Use reset code {code} to give {email} the new password {newPassword}. slots: code: requestBody.code email: requestBody.email newPassword: requestBody.newPassword method: generated generated: '2026-10-01' - target: $.paths['/api-user-verify-reset-password-code'].post update: x-apievangelist-phrasing: intent: Check that a password reset code is valid effect: read questions: - Is the reset code I received still valid before I choose a new password? - Can I validate a reset code without actually changing the password? instructions: - text: Verify reset code {code} for {email}. slots: code: requestBody.code email: requestBody.email - text: Check whether password reset code {code} works for {email}. slots: code: requestBody.code email: requestBody.email method: generated generated: '2026-10-01' - target: $.paths['/api/user/accept-eula'].post update: x-apievangelist-phrasing: intent: Accept an End-User License Agreement effect: write questions: - Some models require a license agreement — how do I accept it? - Which EULA do I need to accept to unlock certain tooling? instructions: - text: Accept the {name} EULA. slots: name: requestBody.name - text: Agree to the license agreement {name} so I can use that model. slots: name: requestBody.name method: generated generated: '2026-10-01'