Edge Impulse User API

The User API from Edge Impulse — 43 operation(s) for user.

Operations 48

POST /api-user-create Create user #
POST /api-user-create-evaluate Create evaluation user #
POST /api-create-pro-user Create Professional Tier user #
POST /api-user-create-enterprise-trial Create enterprise trial user #
GET /api-user-need-to-set-password/{usernameOrEmail} Get user registration state #
GET /api/user Get current user #
POST /api/user Update current user #
DELETE /api/user Delete current user #
GET /api/user/projects Get current user projects #
POST /api/user/convert Convert current evaluation user #
POST /api/user/activate Activate current user #
POST /api/user/request-activation Request activation code #
POST /api/user/create-developer-profile Create developer profile #
POST /api/user/trial Start enterprise trial #
GET /api/user/emails List emails #
POST /api/user/photo Upload photo #
DELETE /api/user/photo Delete photo #
POST /api/user/change-password Change password current user #
GET /api/user/organizations Get organizations #
GET /api/users/buckets Get buckets current user #
POST /api/user/by-third-party-activation-code Get user by third party activation code #
POST /api/user/activate-by-third-party-activation-code Activate user by third party activation code #
POST /api/user/accept-tos Accept Terms of Service #
POST /api/user/dismiss-notification Dismiss a notification #
POST /api/user/mfa/totp/create-key Generate a new TOTP MFA key #
POST /api/user/mfa/totp/set-key Set TOTP MFA key #
POST /api/user/mfa/totp/clear Remove TOTP MFA key #
POST /api/user/subscription/upgrade Upgrade subscription #
POST /api/user/subscription/cancel Cancel subscription #
POST /api/user/subscription/undo-cancel Undo subscription cancellation #
GET /api/user/subscription/metrics Get user billable compute metrics #
GET /api/users/{userId} Get user #
POST /api/users/{userId} Update user #
DELETE /api/users/{userId} Delete user #
POST /api/users/{userId}/activate Activate user #
POST /api/users/{userId}/request-activation Request activation code #
GET /api/users/{userId}/emails List emails #
POST /api/users/{userId}/photo Upload photo #
POST /api/users/{userId}/change-password Change password #
POST /api/users/{userId}/set-password Set password for SSO user #
GET /api/users/{userId}/organizations Get organizations #
GET /api/users/{userId}/buckets Get buckets #
POST /api/users/{userId}/feedback Send feedback #
POST /api/users/{userId}/upgrade Send upgrade request #
GET /api/users/{userId}/trials Get enterprise trials #
POST /api-user-request-reset-password Request reset password #
POST /api-user-reset-password Reset password #
POST /api-user-verify-reset-password-code Verify reset password code #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/edge-impulse-user-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

edge-impulse-user-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Edge Impulse User API
  version: 1.0.0
servers:
- url: https://studio.edgeimpulse.com/v1
security:
- ApiKeyAuthentication: []
- JWTAuthentication: []
- JWTHttpHeaderAuthentication: []
tags:
- name: User
paths:
  /api-user-create:
    post:
      summary: Create user
      security: []
      description: Create a new user and project
      tags:
      - User
      operationId: createUser
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateUserRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateUserResponse'
  /api-user-create-evaluate:
    post:
      summary: Create evaluation user
      security: []
      description: Creates an evaluation user and a new project, and redirects the user to the new project.
      tags:
      - User
      operationId: createEvaluationUser
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateEvaluationUserResponse'
  /api-create-pro-user:
    post:
      summary: Create Professional Tier user
      security: []
      description: Create a new user for the Professional Plan and a new project. Note that the Professional plan will not be enabled until the payment is successful.
      tags:
      - User
      operationId: createProTierUser
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateProTierUserRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateUserResponse'
  /api-user-create-enterprise-trial:
    post:
      summary: Create enterprise trial user
      security: []
      description: Creates an enterprise trial user and a new trial organization, and redirects the user to the new organization.
      tags:
      - User
      operationId: createEnterpriseTrialUser
      requestBody:
        description: Trial request
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateEnterpriseTrialUserRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateEnterpriseTrialResponse'
  /api-user-need-to-set-password/{usernameOrEmail}:
    get:
      summary: Get user registration state
      security: []
      description: Tells whether a user is registered and whether it needs to set its password.
      tags:
      - User
      operationId: getUserNeedToSetPassword
      parameters:
      - $ref: '#/components/parameters/UsernameOrEmailParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetUserNeedToSetPasswordResponse'
  /api/user:
    get:
      summary: Get current user
      description: Get information about the current user. This function is only available through a JWT token.
      tags:
      - User
      operationId: getCurrentUser
      parameters:
      - $ref: '#/components/parameters/UserExcludeProjectsParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetUserResponse'
    post:
      summary: Update current user
      description: Update user properties such as name. This function is only available through a JWT token.
      tags:
      - User
      operationId: updateCurrentUser
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateUserRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericApiResponse'
    delete:
      summary: Delete current user
      description: Delete a user. This function is only available through a JWT token, and can only remove the current user.
      tags:
      - User
      operationId: deleteCurrentUser
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeleteUserRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericApiResponse'
  /api/user/projects:
    get:
      summary: Get current user projects
      description: Get projects for the current user. This returns all projects regardless of whitelabel. This function is only available through a JWT token.
      tags:
      - User
      operationId: getCurrentUserProjects
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetUserProjectsResponse'
  /api/user/convert:
    post:
      summary: Convert current evaluation user
      description: Convert current evaluation user account to regular account.
      tags:
      - User
      operationId: convertCurrentUser
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConvertUserRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericApiResponse'
  /api/user/activate:
    post:
      summary: Activate current user
      description: Activate the current user account (requires an activation code). This function is only available through a JWT token.
      tags:
      - User
      operationId: activateCurrentUser
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ActivateUserOrVerifyEmailRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericApiResponse'
  /api/user/request-activation:
    post:
      summary: Request activation code
      description: Request a new activation code for the current user. This function is only available through a JWT token.
      tags:
      - User
      operationId: requestActivationCodeCurrentUser
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericApiResponse'
  /api/user/create-developer-profile:
    post:
      summary: Create developer profile
      description: Create a developer profile for the current active user.
      tags:
      - User
      operationId: createDeveloperProfile
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateDeveloperProfileResponse'
  /api/user/trial:
    post:
      summary: Start enterprise trial
      description: Create an enterprise trial for the current user. Users can only go through a trial once.
      tags:
      - User
      operationId: startEnterpriseTrial
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StartEnterpriseTrialRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateEnterpriseTrialResponse'
  /api/user/emails:
    get:
      summary: List emails
      description: Get a list of all emails sent by Edge Impulse to the current user. This function is only available through a JWT token, and is not available for all users.
      security:
      - permissions:
        - users:emails:read
      tags:
      - User
      operationId: listEmailsCurrentUser
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListEmailResponse'
  /api/user/photo:
    post:
      summary: Upload photo
      description: Upload a photo for the current user. This function is only available through a JWT token.
      tags:
      - User
      operationId: uploadPhotoCurrentUser
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/UploadUserPhotoRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UploadUserPhotoResponse'
    delete:
      summary: Delete photo
      description: Delete user profile photo. This function is only available through a JWT token.
      tags:
      - User
      operationId: deletePhotoCurrentUser
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericApiResponse'
  /api/user/change-password:
    post:
      summary: Change password current user
      description: Change the password for the current user account. This function is only available through a JWT token.
      tags:
      - User
      operationId: changePasswordCurrentUser
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ChangePasswordRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericApiResponse'
  /api/user/organizations:
    get:
      summary: Get organizations
      description: List all organizations that the current user is a member of. This function is only available through a JWT token.
      tags:
      - User
      operationId: listOrganizationsCurrentUser
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListOrganizationsResponse'
  /api/users/buckets:
    get:
      summary: Get buckets current user
      description: List all organizational storage buckets that the current user has access to. This function is only available through a JWT token.
      tags:
      - User
      operationId: listOrganizationBucketsCurrentUser
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListOrganizationBucketsUserResponse'
  /api/user/by-third-party-activation-code:
    post:
      summary: Get user by third party activation code
      description: Get information about a user through an activation code. This function is only available through a JWT token.
      tags:
      - User
      operationId: getUserByThirdPartyActivationCode
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserByThirdPartyActivationRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetUserResponse'
  /api/user/activate-by-third-party-activation-code:
    post:
      summary: Activate user by third party activation code
      description: Activate a user that was created by a third party. This function is only available through a JWT token.
      tags:
      - User
      operationId: activateUserByThirdPartyActivationCode
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ActivateUserByThirdPartyActivationCodeRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetJWTResponse'
  /api/user/accept-tos:
    post:
      summary: Accept Terms of Service
      description: Accept Terms of Service.
      tags:
      - User
      operationId: acceptTermsOfService
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericApiResponse'
  /api/user/dismiss-notification:
    post:
      summary: Dismiss a notification
      description: Dismiss a notification
      tags:
      - User
      operationId: userDismissNotification
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserDismissNotificationRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericApiResponse'
  /api/user/mfa/totp/create-key:
    post:
      summary: Generate a new TOTP MFA key
      description: Creates a new MFA key, only allowed if the user has no MFA configured. TOTP tokens use SHA-1 algorithm.
      tags:
      - User
      operationId: userGenerateNewTotpMfaKey
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserGenerateNewMfaKeyResponse'
  /api/user/mfa/totp/set-key:
    post:
      summary: Set TOTP MFA key
      description: Enable MFA on this account using an TOTP token. First create a new key via `userGenerateNewTotpMfaKey`.
      tags:
      - User
      operationId: userSetTotpMfaKey
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserSetTotpMfaKeyRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserSetTotpMfaKeyResponse'
  /api/user/mfa/totp/clear:
    post:
      summary: Remove TOTP MFA key
      description: Disable MFA on this account using an TOTP token.
      tags:
      - User
      operationId: userDeleteTotpMfaKey
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserDeleteTotpMfaKeyRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericApiResponse'
  /api/user/subscription/upgrade:
    post:
      summary: Upgrade subscription
      description: Upgrade the current subscription.
      tags:
      - User
      operationId: userUpgradeSubscription
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpgradeSubscriptionRequest'
      responses:
        '302':
          description: A redirect to the payment portal
  /api/user/subscription/cancel:
    post:
      summary: Cancel subscription
      description: Cancel the current subscription.
      tags:
      - User
      operationId: userCancelSubscription
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DowngradeSubscriptionRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericApiResponse'
  /api/user/subscription/undo-cancel:
    post:
      summary: Undo subscription cancellation
      description: 'Stop a pending cancellation. If you schedule a subscription to be canceled, and

        the subscription hasn''t yet reached the end of the billing period, you can stop

        the cancellation. After a subscription has been canceled, you can''t reactivate it.

        '
      tags:
      - User
      operationId: userUndoCancelSubscription
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericApiResponse'
  /api/user/subscription/metrics:
    get:
      summary: Get user billable compute metrics
      description: Get billable compute metrics for a user. This function is only available to users with an active subscription.
      tags:
      - User
      operationId: userGetSubscriptionMetrics
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserSubscriptionMetricsResponse'
  /api/users/{userId}:
    get:
      summary: Get user
      description: Get information about a user. This function is only available through a JWT token.
      tags:
      - User
      parameters:
      - $ref: '#/components/parameters/UserIdParameter'
      operationId: getUser
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetUserResponse'
    post:
      summary: Update user
      description: Update user properties such as name. This function is only available through a JWT token.
      tags:
      - User
      parameters:
      - $ref: '#/components/parameters/UserIdParameter'
      operationId: updateUser
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateUserRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericApiResponse'
    delete:
      summary: Delete user
      description: Delete a user. This function is only available through a JWT token, and can only remove the current user.
      tags:
      - User
      parameters:
      - $ref: '#/components/parameters/UserIdParameter'
      operationId: deleteUser
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeleteUserRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericApiResponse'
  /api/users/{userId}/activate:
    post:
      summary: Activate user
      description: Activate a user account (requires an activation code). This function is only available through a JWT token.
      tags:
      - User
      parameters:
      - $ref: '#/components/parameters/UserIdParameter'
      operationId: activateUser
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ActivateUserOrVerifyEmailRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericApiResponse'
  /api/users/{userId}/request-activation:
    post:
      summary: Request activation code
      description: Request a new activation code. This function is only available through a JWT token.
      tags:
      - User
      parameters:
      - $ref: '#/components/parameters/UserIdParameter'
      operationId: requestActivationCodeUser
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericApiResponse'
  /api/users/{userId}/emails:
    get:
      summary: List emails
      description: Get a list of all emails sent by Edge Impulse to a user. This function is only available through a JWT token, and is not available for all users.
      security:
      - permissions:
        - users:emails:read
      tags:
      - User
      parameters:
      - $ref: '#/components/parameters/UserIdParameter'
      operationId: listEmailsUser
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListEmailResponse'
  /api/users/{userId}/photo:
    post:
      summary: Upload photo
      description: Upload a photo for a user. This function is only available through a JWT token, and is not available for all users.
      tags:
      - User
      parameters:
      - $ref: '#/components/parameters/UserIdParameter'
      operationId: uploadPhotoUser
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/UploadUserPhotoRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UploadUserPhotoResponse'
  /api/users/{userId}/change-password:
    post:
      summary: Change password
      description: Change the password for a user account. This function is only available through a JWT token.
      tags:
      - User
      parameters:
      - $ref: '#/components/parameters/UserIdParameter'
      operationId: changePasswordUser
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ChangePasswordRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericApiResponse'
  /api/users/{userId}/set-password:
    post:
      summary: Set password for SSO user
      description: Set the password for a new SSO user. This function is only available through an SSO access token.
      security: []
      tags:
      - User
      parameters:
      - $ref: '#/components/parameters/UserIdParameter'
      operationId: setUserPassword
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetUserPasswordRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericApiResponse'
  /api/users/{userId}/organizations:
    get:
      summary: Get organizations
      description: List all organizations for a user. This function is only available through a JWT token.
      tags:
      - User
      operationId: listOrganizationsUser
      parameters:
      - $ref: '#/components/parameters/UserIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListOrganizationsResponse'
  /api/users/{userId}/buckets:
    get:
      summary: Get buckets
      description: List all organizational storage buckets that a user has access to. This function is only available through a JWT token.
      tags:
      - User
      operationId: listOrganizationBucketsUser
      parameters:
      - $ref: '#/components/parameters/UserIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListOrganizationBucketsUserResponse'
  /api/users/{userId}/feedback:
    post:
      summary: Send feedback
      description: Send feedback to Edge Impulse or get in touch with sales.
      tags:
      - User
      operationId: sendUserFeedback
      parameters:
      - $ref: '#/components/parameters/UserIdParameter'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SendUserFeedbackRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericApiResponse'
  /api/users/{userId}/upgrade:
    post:
      summary: Send upgrade request
      description: Send an upgrade to Enterprise request to Edge Impulse.
      tags:
      - User
      operationId: sendUserUpgradeRequest
      parameters:
      - $ref: '#/components/parameters/UserIdParameter'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EnterpriseUpgradeOrTrialExtensionRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericApiResponse'
  /api/users/{userId}/trials:
    get:
      summary: Get enterprise trials
      description: Get a list of all enterprise trials for a user. This function is only available through a JWT token.
      tags:
      - User
      operationId: listEnterpriseTrialsUser
      parameters:
      - $ref: '#/components/parameters/UserIdParameter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListEnterpriseTrialsResponse'
  /api-user-request-reset-password:
    post:
      summary: Request reset password
      security: []
      description: Request a password reset link for a user.
      tags:
      - User
      operationId: requestResetPassword
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestResetPasswordRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericApiResponse'
  /api-user-reset-password:
    post:
      summary: Reset password
      security: []
      description: Reset the password for a user.
      tags:
      - User
      operationId: resetPassword
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResetPasswordRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericApiResponse'
  /api-user-verify-reset-password-code:
    post:
      summary: Verify reset password code
      security: []
      description: Verify whether the reset password code for the user is valid.
      tags:
      - User
      operationId: verifyResetPassword
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VerifyResetPasswordRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericApiResponse'
components:
  schemas:
    UserSubscriptionMetricsResponse:
      allOf:
      - $ref: '#/components/schemas/GenericApiResponse'
      - type: object
        properties:
          metrics:
            type: object
            required:
            - computeMinutesCpu
            - computeMinutesGpu
            - computeMinutesTotal
            - computeMinutesLimit
            properties:
              computeMinutesCpu:
                type: number
                description: Total compute of all user jobs, running on CPU, in the current billing period.
              computeMinutesGpu:
                type: number
                description: Total compute of all user jobs, running on GPU, in the current billing period.
              computeMinutesTotal:
                type: number
                description: Total compute of all user jobs in the current billing period, calculated as CPU + 3*GPU compute.
              computeMinutesLimit:
                type: number
                description: Overall compute limit for the current billing period.
              computeResetDate:
                type: string
                format: date-time
                description: The date at which the current compute billing period will reset.
    User:
      type: object
      required:
      - id
      - username
      - name
      - email
      - created
      - staffInfo
      - pending
      - activated
      - mfaConfigured
      properties:
        id:
          type: integer
          example: 1
        username:
          type: string
          example: janjongboom
        name:
          type: string
          example: Jan Jongboom
        email:
          type: string
          example: quijote@edgeimpulse.com
        photo:
          type: string
          example: https://usercdn.edgeimpulse.com/photos/1.jpg
        created:
          type: string
          format: date-time
          example: '2019-08-31T17:32:28Z'
        lastSeen:
          type: string
          format: date-time
          example: '2019-08-31T17:32:28Z'
        staffInfo:
          $ref: '#/components/schemas/StaffInfo'
        pending:
          type: boolean
        lastTosAcceptanceDate:
          type: string
          format: date-time
          example: '2019-08-31T17:32:28Z'
        jobTitle:
          type: string
          example: Software Engineer
        permissions:
          description: List of permissions the user has
          type: array
          items:
            $ref: '#/components/schemas/Permission'
        companyName:
          type: string
          example: Edge Impulse Inc.
        activated:
          type: boolean
          description: Whether the user has activated their account or not.
        mfaConfigured:
          type: boolean
          description: Whether the user has configured multi-factor authentication
        stripeCustomerId:
          type: string
          description: Stripe customer ID, if any.
        hasPendingPayments:
          type: boolean
          description: Whether the user has pending payments.
        tier:
          $ref: '#/components/schemas/UserTierEnum'
    ActivateUserOrVerifyEmailRequest:
      type: object
      required:
      - code
      properties:
        code:
          type: string
          description: Activation or verification code (sent via email)
    UserDeleteTotpMfaKeyRequest:
      type: object
      required:
      - totpToken
      properties:
        totpToken:
          type: string
          description: Valid TOTP token
    CreateUserResponse:
      allOf:
      - $ref: '#/components/schemas/GenericApiResponse'
      - type: object
        properties:
          redirectUrl:
            type: string
            description: URL to redirect user to.
          id:
            type: integer
            description: User unique identifier
    ListOrganizationBucketsUserResponse:
      allOf:
      - $ref: '#/components/schemas/GenericApiResponse'
      - type: object
        required:
        - buckets
        properties:
          buckets:
            type: array
            items:
              type: object
              required:
              - id
              - organizationId
              - organizationName
              - bucket
              - region
              - whitelabelId
              properties:
                id:
                  type: integer
                organizationId:
                  type: integer
                organizationName:
                  type: string
                bucket:
                  type: string
                  description: S3 bucket
                region:
                  type:

# --- truncated at 32 KB (73 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/edge-impulse/refs/heads/main/openapi/edge-impulse-user-api-openapi.yml