Weavr Setup API

Register and manage the lifecycle of users that can access an identity, including authorised users invited by a Corporate or Consumer root user.

Operations 13

POST /users Register a user #
GET /users Get all users #
GET /users/{user_id} Get a user #
PATCH /users/{user_id} Update a user #
GET /identities Get linked identities #
POST /users/{user_id}/invite Invite a user to become an authorised user #
POST /users/{user_id}/invite/validate Validate a user's invite #
POST /users/{user_id}/invite/consume Consume a user's invite #
POST /users/verification/email/send Send an email verification code to a user #
POST /users/verification/email/verify Verify email of the authorised user #
POST /users/{user_id}/deactivate Deactivate an authorised user #
POST /users/{user_id}/activate Reactivate an authorised user #
POST /users/kyc Start KYC to elevate an authorised user to signatory #

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/weavr-setup-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 email required.

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

OpenAPI Specification

weavr-setup-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: v3
  title: Weavr Multi Product Setup API
  x-logo:
    url: https://storage.googleapis.com/weavr-cdn/weavr_logo-new.png
    backgroundColor: '#FFFFFF'
    altText: Weavr
  description: 'Weavr Multi API provides a simple and flexible way to issue cards and accounts to your customers.


    By integrating Weavr Multi API in your application you can embed banking capabilities within your app and provide a seamless experience for your customers.


    # Authentication


    Each request to the Multi API must include an `api-key` that represents your account. You can obtain an API Key by registering for a Multi account [here](https://portal.weavr.io).


    Almost all endpoints require a secondary authentication token `auth_token` that represents the user for whom the request is being executed.

    '
  contact:
    name: Weavr
    url: https://weavr.io
servers:
- description: Weavr Sandbox Environment
  url: https://sandbox.weavr.io/multi
tags:
- name: Setup
  description: 'Register and manage the lifecycle of users that can access an identity, including authorised users invited by a Corporate or Consumer root user.

    '
paths:
  /users:
    post:
      x-permissions:
      - i:users:create
      tags:
      - Setup
      description: "Creates a user linked to the logged-in corporate or consumer identity.\n\nOnce on-boarded, users have access to all instruments (cards and accounts) of the identity.\n\nApplication-specific permissions to limit what each user can view and do need to be implemented in your application.\n\nIn order to Create an Authorised User you would need a stepped-up token. Before calling `/multi/users` you need to step-up ( issue a challenge `multi/stepup/challenges/otp/{channel}` )\n\nMore details on how to step-up a token can be found here [Step-Up](/tag/Step-up#operation/stepupSCAChallenge ) \n"
      summary: Register a user
      operationId: userCreate
      parameters:
      - $ref: '#/components/parameters/idempotency-ref'
      requestBody:
        $ref: '#/components/requestBodies/UserCreateRequest'
      responses:
        '200':
          $ref: '#/components/responses/UserResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/UserForbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/UserCreateConflict'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/Error'
      security:
      - auth_token: []
        api-key: []
    get:
      tags:
      - Setup
      description: Fetches all users associated with the corporate or consumer identity the logged-in user belongs to.
      summary: Get all users
      operationId: usersGet
      x-permissions:
      - i:users:list
      parameters:
      - $ref: '#/components/parameters/offset'
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/active'
      - $ref: '#/components/parameters/email'
      - $ref: '#/components/parameters/tag'
      - name: roles
        in: query
        required: false
        explode: true
        schema:
          type: array
          items:
            $ref: '#/components/schemas/UserPredefinedRole'
        description: Filter users by role. Multiple roles use OR logic.
      responses:
        '200':
          $ref: '#/components/responses/UsersGetResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/Error'
      security:
      - auth_token: []
        api-key: []
  /users/{user_id}:
    get:
      tags:
      - Setup
      description: Retrieves the user identified by the `user_id` path parameter.
      summary: Get a user
      operationId: userGetById
      x-permissions:
      - i:users:get
      - i:users:get:own
      parameters:
      - $ref: '#/components/parameters/userId'
      responses:
        '200':
          $ref: '#/components/responses/UserResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/Error'
      security:
      - auth_token: []
        api-key: []
    patch:
      tags:
      - Setup
      description: 'Update the details of a user identified by the `user_id` in the the path parameter.


        Only the fields that are specified in the request body will be updated. All other fields will remain unchanged.


        When patching a mobile number, the new mobile number should be enrolled for Authentication Factors.

        '
      summary: Update a user
      operationId: userUpdate
      x-permissions:
      - i:users:update
      - i:users:update:own
      parameters:
      - $ref: '#/components/parameters/userId'
      - $ref: '#/components/parameters/idempotency-ref'
      requestBody:
        $ref: '#/components/requestBodies/UserPatchRequest'
      responses:
        '200':
          $ref: '#/components/responses/UserResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/UserPatchConflict'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/Error'
      security:
      - auth_token: []
        api-key: []
  /identities:
    get:
      tags:
      - Setup
      description: Retrieves a list of identities available to the holder of the token.
      summary: Get linked identities
      operationId: userIdentities
      parameters:
      - name: offset
        in: query
        required: false
        description: The number of results to skip from the beginning of the dataset.
        schema:
          type: integer
          minimum: 0
      - name: limit
        in: query
        required: false
        description: The maximum number of identities to return.
        schema:
          type: integer
          minimum: 1
          maximum: 100
      responses:
        '200':
          $ref: '#/components/responses/UserIdentitiesGetResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/UserIdentitiesConflict'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/Error'
      security:
      - auth_token: []
        api-key: []
      - api-key: []
  /users/{user_id}/invite:
    post:
      x-permissions:
      - i:users:send_invite
      tags:
      - Setup
      summary: Invite a user to become an authorised user
      operationId: userInviteSend
      description: 'Once a user is created using the _userCreate_ operation, the user needs to setup his/her password.


        An invitation needs to be sent to the user in order to be able to set up the password for the first time. The invitation email, which remains valid for 1 month, will contain a URL having all information required to setup the password via the _userInviteConsume_.

        '
      parameters:
      - $ref: '#/components/parameters/idempotency-ref'
      - $ref: '#/components/parameters/userIdExplode'
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/UserInviteSendConflict'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/Error'
      security:
      - auth_token: []
        api-key: []
  /users/{user_id}/invite/validate:
    post:
      tags:
      - Setup
      description: Check if a user's invite is still valid. This operation is useful to avoid having the user fill in a form only to be held by a validation issue (eg. expired invite).
      summary: Validate a user's invite
      operationId: userInviteValidate
      parameters:
      - $ref: '#/components/parameters/userIdExplode'
      requestBody:
        $ref: '#/components/requestBodies/UserInviteValidateRequest'
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/UserInviteValidateConflict'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/Error'
      security:
      - api-key: []
  /users/{user_id}/invite/consume:
    post:
      tags:
      - Setup
      description: 'Consumes an invitation perviously sent to the user via _userInviteSend_. This is needed so that the invited user sets up the password.


        _Note that on the Sandbox Environment, the `inviteCode` is always set to \"123456\"._

        '
      summary: Consume a user's invite
      operationId: userInviteConsume
      parameters:
      - $ref: '#/components/parameters/idempotency-ref'
      - $ref: '#/components/parameters/userIdExplode'
      requestBody:
        $ref: '#/components/requestBodies/UserInviteConsumeRequest'
      responses:
        '200':
          $ref: '#/components/responses/TokenResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFoundToken'
        '409':
          $ref: '#/components/responses/UserInviteConsumeConflict'
        '410':
          $ref: '#/components/responses/TokenExpired'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/Error'
      security:
      - api-key: []
  /users/verification/email/send:
    post:
      tags:
      - Setup
      description: 'The first step in verifying an authorised user''s email. The authorised user whose email address is to be verified is sent an email containing a randomly generated code.


        This code must then be provided in the _authorisedUserEmailVerify_ operation to verify the authorised user''s email address.


        _Note that on the Sandbox Environment, the `verificationCode` is always set to \"123456\"._

        '
      summary: Send an email verification code to a user
      operationId: authorisedUserEmailVerificationCodeSend
      parameters:
      - $ref: '#/components/parameters/idempotency-ref'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
              - email
              type: object
              properties:
                email:
                  $ref: '#/components/schemas/Email'
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                    enum:
                    - EMAIL_NOT_FOUND
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/Error'
      security:
      - api-key: []
  /users/verification/email/verify:
    post:
      tags:
      - Setup
      description: 'The second step in verifying the authorised user''s email. The randomly generated code sent to the authorised user via

        email, using the _authorisedUserEmailVerificationCodeSend_ operation, is submitted here to verify the authorised user''s email.


        This is needed as part of the verification process for basic due diligence.


        _Note that on the Sandbox Environment, the `verificationCode` is always set to \"123456\"._

        '
      summary: Verify email of the authorised user
      operationId: authorisedUserEmailVerify
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
              - email
              - verificationCode
              type: object
              properties:
                email:
                  $ref: '#/components/schemas/Email'
                verificationCode:
                  $ref: '#/components/schemas/VerificationCode'
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                    enum:
                    - VERIFICATION_CODE_INVALID
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - api-key: []
  /users/{user_id}/deactivate:
    post:
      tags:
      - Setup
      description: 'De-activate the user identified by the `user_id` path parameter.


        Deactivated users cannot log in or execute any operations with their credentials.


        This operations is not final and a user can be re-activated using the userActivate operation. Note that another active user would need to log in so as to re-activate the de-activated user.

        '
      summary: Deactivate an authorised user
      operationId: userDeactivate
      x-permissions:
      - i:users:deactivate
      parameters:
      - $ref: '#/components/parameters/userId'
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/Error'
      security:
      - auth_token: []
        api-key: []
  /users/{user_id}/activate:
    post:
      tags:
      - Setup
      description: 'Activate the user identified by the `user_id` path parameter.


        By default, any new users created will be automatically activated. This operation needs to be used only if the user was previously de-activated using the _userDeactivate_ operation, or if the user was de-activated automatically after multiple incorrect login attempts.

        '
      summary: Reactivate an authorised user
      operationId: userActivate
      x-permissions:
      - i:users:activate
      parameters:
      - $ref: '#/components/parameters/userId'
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/Error'
      security:
      - auth_token: []
        api-key: []
  /users/kyc:
    post:
      tags:
      - Setup
      description: 'Perform the kyc for a corporate user.

        '
      summary: Start KYC to elevate an authorised user to signatory
      operationId: userKyc
      responses:
        '200':
          description: Success
          headers:
            request-ref:
              $ref: '#/components/headers/request-ref'
          content:
            application/json:
              schema:
                required:
                - reference
                type: object
                properties:
                  reference:
                    type: string
                    pattern: ^[0-9]+$
                    description: The reference required to initialise the KYB UI Component.
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                    enum:
                    - EMAIL_NOT_VERIFIED
                    - MOBILE_NOT_VERIFIED
                    - KYC_ALREADY_APPROVED
                    - KYC_PENDING_REVIEW
                    - KYC_REJECTED
                    - KYB_IDENTITY_NOT_APPROVED
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - api-key: []
components:
  responses:
    InternalServerError:
      description: Internal Server Error - There is a problem with the server. Please try again later.
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
    TooManyRequests:
      description: Too many requests.
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
        x-ratelimit-limit:
          $ref: '#/components/headers/x-ratelimit-limit'
        x-ratelimit-reset:
          $ref: '#/components/headers/x-ratelimit-reset'
    Unauthorized:
      description: Unauthorized - Your credentials or access token are invalid.
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
    TokenResponse:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/TokenResponse'
    UserIdentitiesConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                - IDENTITY_TYPE_NOT_SUPPORTED
    Forbidden:
      description: Forbidden - Access to the requested resource or action is forbidden.
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                - INSUFFICIENT_PERMISSIONS
    NotFoundToken:
      description: Not found - The requested token couldn't be found.
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/TokenError'
    UsersGetResponse:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            type: object
            properties:
              users:
                type: array
                description: The list of users matching the criteria specified.
                items:
                  $ref: '#/components/schemas/User'
              count:
                type: integer
                description: The total number of records (excluding the paging limit).
                format: int32
              responseCount:
                type: integer
                description: The total number of records returned in this response (always capped at 100).
                format: int32
    UserPatchConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                - EMAIL_NOT_UNIQUE
                - MOBILE_OR_COUNTRY_CODE_INVALID
                - MOBILE_NO_CHANGE_LIMIT_EXCEEDED
                - TOO_FREQUENT_EMAIL_CHANGES
                - EMAIL_DOMAIN_NOT_ALLOWED
                - MOBILE_CHANGE_NOT_ALLOWED
                - UNSUPPORTED_CURRENCY
                - ROLE_NOT_FOUND
                - CANNOT_MODIFY_OWN_ROLES
                - ADMIN_ROLE_REMOVAL_NOT_ALLOWED
    UserResponse:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/User'
    UserInviteValidateConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                - INVITE_OR_INVITE_CODE_INVALID
    TokenExpired:
      description: Gone - The requested token is expired.
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/TokenError'
    UserForbidden:
      description: Forbidden - Access to the requested resource or action is forbidden.
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                - STEP_UP_REQUIRED
    NoContent:
      description: Success - No Content.
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
    UserInviteConsumeConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                - INVITE_OR_INVITE_CODE_INVALID
                - UNRESOLVED_IDENTITY
                - PASSWORD_ALREADY_USED
                - PASSWORD_PROFILE_NOT_CONFIGURED_FOR_CREDENTIAL_TYPE
                - PASSWORD_TOO_SHORT
                - PASSWORD_TOO_LONG
                - PASSWORD_TOO_SIMPLE
                - PASSWORD_KEY_ALREADY_IN_USE
                - PASSWORD_ALREADY_CREATED
    UserIdentitiesGetResponse:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/UserIdentitiesGetResponseSchema'
    NotFound:
      description: Not found - The requested resource couldn't be found.
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    UserInviteSendConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                - INVITE_ALREADY_CONSUMED
    BadRequestError:
      description: Bad Request Error - Your request is invalid.
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            type: object
            properties:
              message:
                maxLength: 255
                type: string
                description: When present helps to identify and fix the problem.
              syntaxErrors:
                $ref: '#/components/schemas/SyntaxError'
    Error:
      description: Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    UserCreateConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                - EMAIL_NOT_UNIQUE
                - MOBILE_OR_COUNTRY_CODE_INVALID
                - EMAIL_DOMAIN_NOT_ALLOWED
                - COUNTRY_OF_RESIDENCE_INVALID
                - ROLE_NOT_FOUND
                - CANNOT_MODIFY_OWN_ROLES
                - ADMIN_ROLE_REMOVAL_NOT_ALLOWED
    ServiceUnavailable:
      description: Service Unavailable - The requested service is temporarily unavailable. Please try again later.
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
  schemas:
    UserPredefinedRole:
      type: string
      enum:
      - CARD_ASSIGNEE
      - CARDS_MANAGEMENT_ROLE
      - FUNDS_MANAGEMENT_ROLE
      - ACCESS_MANAGEMENT_ROLE
      - ADMIN
    Brand:
      type: string
      pattern: ^[a-zA-Z0-9]+$
      description: 'Brand identifier used to determine the set of email and SMS user notification templates. Must be alphanumeric, up to 25 characters, and contain no spaces.

        '
      maxLength: 25
    VerificationCode:
      type: string
      description: A randomly generated one-time use code used to verify the user's email address or mobile number.
      pattern: ^[0-9]{6}$
    Mobile:
      required:
      - number
      - countryCode
      type: object
      properties:
        countryCode:
          maxLength: 4
          minLength: 1
          type: string
          pattern: ^\+[0-9]+$
          description: The country code of the user mobile number (e.g. +44).
        number:
          pattern: ^[0-9]{1,12}$
          type: string
          description: The mobile number of the user - excluding country code.
    UserIdentity:
      required:
      - id
      - name
      type: object
      properties:
        id:
          description: The unique identifier of the Corporate Identity.
          $ref: '#/components/schemas/IdentityId'
        name:
          type: string
          description: The name of the company.
    UserIdentitiesGetResponseSchema:
      required:
      - identities
      - count
      - responseCount
      type: object
      properties:
        identities:
          type: array
          description: The list of identities available to user.
          items:
            $ref: '#/components/schemas/UserIdentity'
        count:
          type: integer
          description: The total number of records (excluding the paging limit).
          format: int32
        responseCount:
          type: integer
          description: The total number of records returned in this response (always capped at 100).
          format: int32
    UserLocale:
      type: string
      pattern: ^[a-z]{2}(-[A-Z]{2})?$
      description: 'BCP47 locale code (e.g. en, en-US). The locale determines which email and SMS user notification templates are used.

        '
      maxLength: 5
      example: en-GB
    TokenError:
      description: The used token is expired or not found
      type: object
      properties:
        errorCode:
          type: string
          enum:
          - TOKEN_EXPIRED
          - TOKEN_NOT_FOUND
    SyntaxError:
      type: object
      description: Is returned as part of an HTTP error response whenever a syntax error is detected. A list of the fields together with their syntax error will be provided.
      properties:
        invalidFields:
          type: array
          items:
            type: object
            properties:
              params:
                type: array
                items:
                  type: string
              fieldName:
                type: string
              error:
                type: string
                enum:
                - REQUIRED
                - HAS_TEXT
                - REQUIRES
                - SIZE
                - RANGE
                - IN
                - NOT_IN
                - REGEX
                - EXACTLY
                - AT_LEAST
                - AT_MOST
                - ALL_OR_NONE
    UserId:
      type: string
      pattern: ^[0-9]+$
    Error:
      type: object
      properties:
        code:
          type: string
        message:
          type: string
    Date:
      required:
      - year
      - month
      - day
      type: object
      properties:
        year:
          type: integer
          format: int32
          maximum: 2100
          minimum: 1900
        month:
          type: integer
          format: int32
          maximum: 12
          minimum: 1
        day:
          type: integer
          format: int32
          maximum: 31
          minimum: 1
 

# --- truncated at 32 KB (43 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/weavr/refs/heads/main/openapi/weavr-setup-api-openapi.yml