Cubist Users In Org API

The Users In Org API from Cubist — 9 operation(s) for users in org.

OpenAPI Specification

cubist-users-in-org-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: CubeSigner Account Users In Org API
  description: The CubeSigner management and signing service.
  contact:
    name: Cubist Inc.
    email: hello@cubist.dev
  version: v0.1.0
servers:
- url: https://gamma.signer.cubist.dev
  description: Testing and staging environment
- url: https://prod.signer.cubist.dev
  description: Production environment
security:
- Cognito: []
tags:
- name: Users In Org
paths:
  /v0/org/{org_id}/invitations:
    get:
      tags:
      - Users In Org
      summary: List pending invitations
      description: 'List pending invitations


        Returns all pending (not yet accepted) invitations for the organization.'
      operationId: listInvitations
      parameters:
      - name: org_id
        in: path
        description: Name or ID of the desired Org
        required: true
        schema:
          type: string
        example: Org#124dfe3e-3bbd-487d-80c0-53c55e8ab87a
      - name: page.size
        in: query
        description: 'Max number of items to return per page.


          If the actual number of returned items may be less that this, even if there exist more

          data in the result set. To reliably determine if more data is left in the result set,

          inspect the [UnencryptedLastEvalKey] value in the response object.'
        required: false
        schema:
          type: integer
          format: int32
          default: 1000
          maximum: 10001
          minimum: 1
        style: form
      - name: page.start
        in: query
        description: 'The start of the page.  Omit to start from the beginning; otherwise, only specify a

          the exact value previously returned as ''last_evaluated_key'' from the same endpoint.'
        required: false
        schema:
          type: string
          nullable: true
        style: form
      responses:
        '200':
          $ref: '#/components/responses/PaginatedListInvitationsResponse'
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
      - SignerAuth:
        - manage:org:invitation:list
    delete:
      tags:
      - Users In Org
      summary: Cancel a pending invitation
      description: 'Cancel a pending invitation


        Removes a pending invitation from the organization. If no pending invitation

        exists for the given email address, a not-found error is returned.'
      operationId: cancelInvitation
      parameters:
      - name: org_id
        in: path
        description: Name or ID of the desired Org
        required: true
        schema:
          type: string
        example: Org#124dfe3e-3bbd-487d-80c0-53c55e8ab87a
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CancelInvitationRequest'
        required: true
      responses:
        '200':
          $ref: '#/components/responses/EmptyImpl'
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
      - SignerAuth:
        - manage:org:invitation:cancel
  /v0/org/{org_id}/invite:
    post:
      tags:
      - Users In Org
      summary: Invite User
      description: 'Invite User


        Creates a new user in an existing org and sends that user an invite email.'
      operationId: invite
      parameters:
      - name: org_id
        in: path
        description: Name or ID of the desired Org
        required: true
        schema:
          type: string
        example: Org#124dfe3e-3bbd-487d-80c0-53c55e8ab87a
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InviteRequest'
        required: true
      responses:
        '200':
          $ref: '#/components/responses/EmptyImpl'
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
      - SignerAuth:
        - manage:org:inviteUser
  /v0/org/{org_id}/users:
    get:
      tags:
      - Users In Org
      summary: List users in organization
      description: 'List users in organization


        If a query is defined, the result will contain only the users whose name or

        email contain the query string. NOTE that if pagination is used and a page

        limit is set, the returned result set may contain FEWER elements than the

        requested page limit.

        '
      operationId: listUsersInOrg
      parameters:
      - name: org_id
        in: path
        description: Name or ID of the desired Org
        required: true
        schema:
          type: string
        example: Org#124dfe3e-3bbd-487d-80c0-53c55e8ab87a
      - name: page.size
        in: query
        description: 'Max number of items to return per page.


          If the actual number of returned items may be less that this, even if there exist more

          data in the result set. To reliably determine if more data is left in the result set,

          inspect the [UnencryptedLastEvalKey] value in the response object.'
        required: false
        schema:
          type: integer
          format: int32
          default: 1000
          maximum: 10001
          minimum: 1
        style: form
      - name: page.start
        in: query
        description: 'The start of the page.  Omit to start from the beginning; otherwise, only specify a

          the exact value previously returned as ''last_evaluated_key'' from the same endpoint.'
        required: false
        schema:
          type: string
          nullable: true
        style: form
      - name: q
        in: query
        description: A query string. If defined, all returned users will contain this string in their name or email.
        required: false
        schema:
          type: string
          nullable: true
        style: form
      responses:
        '200':
          $ref: '#/components/responses/PaginatedGetUsersInOrgResponse'
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
      - SignerAuth:
        - manage:org:user:list
    post:
      tags:
      - Users In Org
      summary: Add a third-party user to the org
      description: 'Add a third-party user to the org

        '
      operationId: createOidcUser
      parameters:
      - name: org_id
        in: path
        description: Name or ID of the desired Org
        required: true
        schema:
          type: string
        example: Org#124dfe3e-3bbd-487d-80c0-53c55e8ab87a
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddThirdPartyUserRequest'
        required: true
      responses:
        '200':
          $ref: '#/components/responses/AddThirdPartyUserResponse'
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
      - SignerAuth:
        - manage:org:addUser
  /v0/org/{org_id}/users/email/{email}:
    get:
      tags:
      - Users In Org
      summary: Get user by email.
      description: 'Get user by email.


        The search includes all users and their third-party identities.'
      operationId: getUserInOrgByEmail
      parameters:
      - name: org_id
        in: path
        description: Name or ID of the desired Org
        required: true
        schema:
          type: string
        example: Org#124dfe3e-3bbd-487d-80c0-53c55e8ab87a
      - name: email
        in: path
        description: The email associated with the user.
        required: true
        schema:
          type: string
      responses:
        '200':
          $ref: '#/components/responses/GetUserByEmailResponse'
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
      - SignerAuth:
        - manage:org:user:get
  /v0/org/{org_id}/users/oidc:
    delete:
      tags:
      - Users In Org
      summary: Remove a third-party user from the org
      description: 'Remove a third-party user from the org

        '
      operationId: deleteOidcUser
      parameters:
      - name: org_id
        in: path
        description: Name or ID of the desired Org
        required: true
        schema:
          type: string
        example: Org#124dfe3e-3bbd-487d-80c0-53c55e8ab87a
      - name: revoke_role_sessions_they_created
        in: query
        required: false
        schema:
          type: boolean
          nullable: true
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OidcIdentity'
        required: true
      responses:
        '200':
          $ref: '#/components/responses/EmptyImpl'
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
      - SignerAuth:
        - manage:org:deleteUser
  /v0/org/{org_id}/users/oidc/{iss}/{sub}:
    get:
      tags:
      - Users In Org
      summary: Get a user by their OIDC identity
      description: 'Get a user by their OIDC identity


        Retrieves a user in the organization by their OIDC issuer and subject.'
      operationId: getUserInOrgByOidc
      parameters:
      - name: org_id
        in: path
        description: Name or ID of the desired Org
        required: true
        schema:
          type: string
        example: Org#124dfe3e-3bbd-487d-80c0-53c55e8ab87a
      - name: iss
        in: path
        description: The OIDC issuer.
        required: true
        schema:
          type: string
      - name: sub
        in: path
        description: The OIDC subject.
        required: true
        schema:
          type: string
      responses:
        '200':
          $ref: '#/components/responses/GetUserByOidcResponse'
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
      - SignerAuth:
        - manage:org:user:get
  /v0/org/{org_id}/users/reset_mfa:
    post:
      tags:
      - Users In Org
      summary: Initialize MFA reset for user
      description: Initialize MFA reset for user
      operationId: resetMemberMfa
      parameters:
      - name: org_id
        in: path
        description: Name or ID of the desired Org
        required: true
        schema:
          type: string
        example: Org#124dfe3e-3bbd-487d-80c0-53c55e8ab87a
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MfaResetRequest'
        required: true
      responses:
        '200':
          $ref: '#/components/responses/EmptyImpl'
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
      - SignerAuth:
        - manage:org:resetMfa
    patch:
      tags:
      - Users In Org
      summary: Complete MFA reset for user
      description: Complete MFA reset for user
      operationId: completeResetMemberMfa
      parameters:
      - name: org_id
        in: path
        description: Name or ID of the desired Org
        required: true
        schema:
          type: string
        example: Org#124dfe3e-3bbd-487d-80c0-53c55e8ab87a
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CompleteMfaResetRequest'
        required: true
      responses:
        '200':
          $ref: '#/components/responses/EmptyImpl'
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
      - Oidc: []
  /v0/org/{org_id}/users/{user_id}:
    get:
      tags:
      - Users In Org
      summary: Get user by id
      description: 'Get user by id


        If the requesting user is an owner of the org, the response additionally

        includes the user''s OIDC identities.'
      operationId: getUserInOrg
      parameters:
      - name: org_id
        in: path
        description: Name or ID of the desired Org
        required: true
        schema:
          type: string
        example: Org#124dfe3e-3bbd-487d-80c0-53c55e8ab87a
      - name: user_id
        in: path
        description: ID of the desired User
        required: true
        schema:
          type: string
        example: User#124dfe3e-3bbd-487d-80c0-53c55e8ab87a
      responses:
        '200':
          $ref: '#/components/responses/UserInOrgInfoWithIdentity'
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
      - SignerAuth:
        - manage:org:user:get
    delete:
      tags:
      - Users In Org
      summary: Remove a user from the org
      description: 'Remove a user from the org

        '
      operationId: deleteUser
      parameters:
      - name: org_id
        in: path
        description: Name or ID of the desired Org
        required: true
        schema:
          type: string
        example: Org#124dfe3e-3bbd-487d-80c0-53c55e8ab87a
      - name: user_id
        in: path
        description: ID of the desired User
        required: true
        schema:
          type: string
        example: User#124dfe3e-3bbd-487d-80c0-53c55e8ab87a
      - name: revoke_role_sessions_they_created
        in: query
        required: false
        schema:
          type: boolean
          nullable: true
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Empty'
        required: true
      responses:
        '200':
          $ref: '#/components/responses/EmptyImpl'
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
      - SignerAuth:
        - manage:org:deleteUser
  /v0/org/{org_id}/users/{user_id}/membership:
    patch:
      tags:
      - Users In Org
      summary: Update a user's membership in the org
      description: 'Update a user''s membership in the org


        Enable/disable another user in the org, or change their membership role.'
      operationId: updateUserMembership
      parameters:
      - name: org_id
        in: path
        description: Name or ID of the desired Org
        required: true
        schema:
          type: string
        example: Org#124dfe3e-3bbd-487d-80c0-53c55e8ab87a
      - name: user_id
        in: path
        description: ID of the desired User
        required: true
        schema:
          type: string
        example: User#124dfe3e-3bbd-487d-80c0-53c55e8ab87a
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateUserMembershipRequest'
        required: true
      responses:
        '200':
          $ref: '#/components/responses/UserInOrgInfo'
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
      - SignerAuth:
        - manage:org:updateMembership
components:
  schemas:
    EpochDateTime:
      type: integer
      format: int64
      description: 'DateTime measured in seconds since unix epoch.

        A wrapper type for serialization that encodes a [`SystemTime`] as a [`u64`]

        representing the number of seconds since [`SystemTime::UNIX_EPOCH`].'
      minimum: 0
    InvitationInfo:
      type: object
      description: Information about a pending invitation
      required:
      - email
      - name
      - role
      - created
      - expiration
      properties:
        created:
          $ref: '#/components/schemas/EpochDateTime'
        email:
          type: string
          description: The email address the invitation was sent to
        expiration:
          $ref: '#/components/schemas/EpochDateTime'
        inviter:
          allOf:
          - $ref: '#/components/schemas/Id'
          nullable: true
        name:
          type: string
          description: The invited user's name
        role:
          $ref: '#/components/schemas/MemberRole'
    Empty:
      default: null
      nullable: true
    MfaRequiredArgs:
      type: object
      required:
      - id
      - ids
      - org_id
      properties:
        id:
          type: string
          description: Always set to first MFA id from `Self::ids`
        ids:
          type: array
          items:
            type: string
            minLength: 1
          description: Non-empty MFA request IDs
        org_id:
          type: string
          description: Organization id
        policy_eval_tree:
          description: Optional policy evaluation tree (included in signer responses, when requested)
          nullable: true
        session:
          allOf:
          - $ref: '#/components/schemas/NewSessionResponse'
          nullable: true
    B32:
      type: string
      description: Wrapper around a zeroizing 32-byte fixed-size array
    ConfiguredMfa:
      oneOf:
      - type: object
        required:
        - type
        properties:
          type:
            type: string
            enum:
            - totp
      - type: object
        description: Named FIDO device (multiple can be configured per user)
        required:
        - name
        - discoverable
        - id
        - created_at
        - last_used_at
        - aaguid
        - type
        properties:
          aaguid:
            type: string
            description: UUID of the device type
          created_at:
            type: integer
            format: int64
            description: Creation date
            minimum: 0
          discoverable:
            type: boolean
            description: Whether this key was requested to be discoverable.
          id:
            type: string
            description: A unique credential id
          last_used_at:
            type: integer
            format: int64
            description: Last used date
            minimum: 0
          name:
            type: string
            description: A human-readable name given to the key
          type:
            type: string
            enum:
            - fido
      discriminator:
        propertyName: type
    IdentityInfo:
      allOf:
      - $ref: '#/components/schemas/OidcIdentity'
      - $ref: '#/components/schemas/OidcUserInfo'
      - type: object
      description: 'Information about a linked OIDC identity including unique identifiers and user info

        (e.g., email)'
    AcceptedValue:
      oneOf:
      - type: object
        required:
        - SignDryRun
        properties:
          SignDryRun:
            $ref: '#/components/schemas/SignDryRunArgs'
      - type: object
        required:
        - BinanceDryRun
        properties:
          BinanceDryRun:
            $ref: '#/components/schemas/BinanceDryRunArgs'
      - type: object
        required:
        - BybitDryRun
        properties:
          BybitDryRun:
            $ref: '#/components/schemas/BybitDryRunArgs'
      - type: object
        required:
        - CoinbaseDryRun
        properties:
          CoinbaseDryRun:
            $ref: '#/components/schemas/CoinbaseDryRunArgs'
      - type: object
        required:
        - MfaRequired
        properties:
          MfaRequired:
            $ref: '#/components/schemas/MfaRequiredArgs'
      description: Different responses we return for success status codes.
    AddThirdPartyUserRequest:
      type: object
      required:
      - role
      properties:
        email:
          type: string
          description: Optional user email
          example: alice@example.com
          nullable: true
        identity:
          allOf:
          - $ref: '#/components/schemas/OidcIdentity'
          nullable: true
        mfa_policy:
          type: object
          description: Optional login MFA policy
          nullable: true
        name:
          type: string
          description: Optional user full name
          example: Alice Wonderland
          nullable: true
        proof:
          allOf:
          - $ref: '#/components/schemas/IdentityProof'
          nullable: true
        role:
          $ref: '#/components/schemas/MemberRole'
    NotFoundErrorCode:
      type: string
      enum:
      - UriSegmentMissing
      - UriSegmentInvalid
      - TotpNotConfigured
      - FidoKeyNotFound
      - FidoChallengeNotFound
      - TotpChallengeNotFound
      - UserExportRequestNotFound
      - UserExportCiphertextNotFound
      - OrgExportCiphertextNotFound
      - UploadObjectNotFound
      - PolicySecretNotFound
      - BucketMetaNotFound
      - TimestreamDisabled
      - CustomChainNotFound
      - InvitationNotFound
      - TransactionNotFound
      - EmailConfigNotFound
    HttpRequestCmp:
      oneOf:
      - type: string
        description: The requests must match exactly. Any given MFA receipt can be used at most once.
        enum:
        - Eq
      - type: object
        required:
        - EvmTx
        properties:
          EvmTx:
            $ref: '#/components/schemas/EvmTxCmp'
      - type: object
        required:
        - SolanaTx
        properties:
          SolanaTx:
            $ref: '#/components/schemas/SolanaTxCmp'
      description: How to compare HTTP requests when verifying MFA receipt (see [MfaRequest::verify_request])
    BadGatewayErrorCode:
      type: string
      enum:
      - Generic
      - CustomChainRpcError
      - EsploraApiError
      - SentryApiError
      - CallWebhookError
      - OAuthProviderError
      - OidcDisoveryFailed
      - OidcIssuerJwkEndpointUnavailable
      - SmtpServerUnavailable
    MembershipStatus:
      type: string
      enum:
      - enabled
      - disabled
    UpdateUserMembershipRequest:
      type: object
      description: Request to update an existing user
      properties:
        disabled:
          type: boolean
          description: Enable or disable user
          nullable: true
        role:
          allOf:
          - $ref: '#/components/schemas/MemberRole'
          nullable: true
    SolanaTxCmp:
      type: object
      properties:
        ignore_blockhash:
          type: boolean
          description: Whether the 'recent_blockhash' property of the Solana transaction is allowed to be different.
    InternalErrorCode:
      type: string
      enum:
      - NoMaterialId
      - InvalidAuditLogEntry
      - UnexpectedCheckerRule
      - UnresolvedPolicyReference
      - UnexpectedAclAction
      - FidoKeyAssociatedWithMultipleUsers
      - ClaimsParseError
      - InvalidThrottleId
      - InvalidEmailAddress
      - EmailTemplateRender
      - OidcIdentityHeaderMissing
      - OidcIdentityParseError
      - SystemTimeError
      - PasswordHashParseError
      - SendMailError
      - ReqwestError
      - EmailConstructionError
      - TsWriteError
      - TsQueryError
      - DbQueryError
      - DbGetError
      - DbDeleteError
      - DbPutError
      - DbUpdateError
      - SerdeError
      - TestAndSetError
      - DbGetItemsError
      - DbWriteError
      - CubistSignerError
      - CwListMetricsError
      - CwPutMetricDataError
      - GetAwsSecretError
      - SecretNotFound
      - KmsGenerateRandomError
      - MalformedTotpBytes
      - KmsGenerateRandomNoResponseError
      - CreateKeyError
      - ParseDerivationPathError
      - SplitSignerError
      - CreateImportKeyError
      - CreateEotsNoncesError
      - EotsSignError
      - BabylonCovSignError
      - CognitoDeleteUserError
      - CognitoListUsersError
      - CognitoGetUserError
      - MissingUserEmail
      - CognitoResendUserInvitation
      - CognitoSetUserPasswordError
      - GenericInternalError
      - AssumeRoleWithoutEvidence
      - OidcAuthWithoutOrg
      - MissingKeyMetadata
      - KmsEnableKeyError
      - KmsDisableKeyError
      - LambdaInvokeError
      - LambdaNoResponseError
      - LambdaFailure
      - LambdaUnparsableResponse
      - SerializeEncryptedExportKeyError
      - DeserializeEncryptedExportKeyError
      - ReEncryptUserExport
      - S3UploadError
      - S3DownloadError
      - S3CopyError
      - S3ListObjectsError
      - S3DeleteObjectsError
      - S3BuildError
      - S3PresignedUrlError
      - ManagedStateMissing
      - InternalHeaderMissing
      - InvalidInternalHeaderValue
      - RequestLocalStateAlreadySet
      - OidcOrgMismatch
      - OidcIssuerInvalidJwk
      - InvalidPkForMaterialId
      - SegwitTweakFailed
      - UncheckedOrg
      - SessionOrgIdMissing
      - AvaSignCredsMissing
      - AvaSignSignatureMissing
      - ExpectedRoleSession
      - InvalidThirdPartyIdentity
      - CognitoGetUser
      - SnsSubscribeError
      - SnsUnsubscribeError
      - SnsGetSubscriptionAttributesError
      - SnsSubscriptionAttributesMissing
      - SnsSetSubscriptionAttributesError
      - SnsPublishBatchError
      - InconsistentMultiValueTestAndSet
      - MaterialIdError
      - InvalidBtcAddress
      - HistoricalTxBodyMissing
      - InvalidOperation
      - ParentOrgNotFound
      - OrgParentLoop
      - ResolvedParentOrgWithNoScopeCeiling
      - InvalidUploadObjectId
      - PolicyEngineNotFound
      - PolicyEngineError
      - PolicySecretsEncryptionError
      - CreatePolicyImportKeyError
      - InvalidAlias
      - EmptyUpdateModifiedObject
      - EmptyUpdateModifiedActions
      - DbContactAddressesInvalid
      - InvalidEvmSigedRlp
      - InvalidErc20Data
      - InvalidRpcUrl
    IdentityProof:
      allOf:
      - type: object
        description: 'Evidence is used in non-custodial deployments to prove to a third-party that

          a user has indeed authenticated with CubeSigner.


          This evidence can be obtained by either logging in with an OIDC token or with

          a CubeSigner session token. In the latter case, no [Proof::aud] is set.'
        required:
        - exp_epoch
        properties:
          aud:
            allOf:
            - $ref: '#/components/schemas/Aud'
            nullable: true
          email:
            type: string
            description: The email associated with the user
            example: user@email.com
            nullable: true
          exp_epoch:
            $ref: '#/components/schemas/EpochDateTime'
          identity:
            allOf:
            - $ref: '#/components/schemas/OidcIdentity'
            nullable: true
          preferred_username:
            type: string
            description: The username (if any) associated with the user
            example: cubistdev
            nullable: true
          user_info:
            allOf:
            - $ref: '#/components/schemas/CubeSignerUserInfo'
            nullable: true
      - type: object
        required:
        - id
        properties:
          id:
            type: string
            description: An opaque identifier for the proof
      description: 'Proof that an end-user provided CubeSigner with a valid auth token

        (either an OIDC token or a CubeSigner session token)'
    Aud:
      oneOf:
      - type: string
      - type: array
        items:
          type: string
      description: 'Audience(s) that this ID Token is intended for. It MUST contain the

        OAuth 2.0 client_id of the Relying Party as an audience value. It MAY also contain

        identifiers for other audiences. In the general case, the aud value is an array of

        case-sensitive strings. In the common special case when there is one audience,

        the aud value MAY be a single case-sensitive string.'
    SignerErrorCode:
      oneOf:
      - $ref: '#/components/schemas/SignerErrorOwnCodes'
      - $ref: '#/components/schemas/AcceptedValueCode'
      - $ref: '#/components/schemas/BadRequestErrorCode'
      - $ref: '#/components/schemas/BadGatewayErrorCode'
      - $ref: '#/components/schemas/NotFoundErrorCode'
      - $ref: '#/components/schemas/ForbiddenErrorCode'
      - $ref: '#/components/schemas/UnauthorizedErrorCode'
      - $ref: '#/components/schemas/PreconditionErrorCode'
      - $ref: '#/components/schemas/TimeoutErrorCode'
      - $ref: '#/components/schemas/ConflictErrorCode'
      - $ref: '#/components/schemas/InternalErrorCode'
    EvmTxCmp:
      type: object
      properties:
        grace:
          type: integer
          format: int64
          description: 'To prevent replay attacks, any given MFA receipt is normally allowed to be used only once.


            In this case, however, because EVM transactions already have a replay prevention mechanism

            (namely the ''nonce'' property), we allow the user to specify a grace period (in seconds) to

            indicate how long an MFA receipt should remain valid after its first use.


            Note that we allow both ''grace'' and ''ignore_nonce'' to be set because once an MFA request

            enters its grace period we unconditionally set its ''ignore_nonce'' property to ''false'' to

            ensure that any subsequent requests that claim the same receipt must sign for the same

            nonce as the request we signed originally with that receipt.


            Also note that the grace period cannot extend the lifetime of an MFA request beyond its

            original expiration date.


            The grace period must not be greater than 30 days.'
          nullable: true
          minimum: 0
        ignore_gas:
          type: boolean
          description: Whether the 'gas' property of the EVM transaction is allowed to be different.
        ignore_nonce:
          type: boolean
          description: Whether the 'nonce' property of the EVM transaction is allowed to be different.
    EvmTxDepositErrorCode:
      type: string
      enum:
      - EvmTxDepositReceiverMismatch
      - EvmTxDepositEmptyData
      - EvmTxDepositEmptyChainId
      - EvmTxDepositEmptyReceiver
      - EvmTxDepositUnexpectedValue
      - EvmTxDepositUnexpectedDataLength
      - EvmTxDepositNoAbi
      - EvmTxDepositNoDepositFunction
      - EvmTxDepositUnexpectedFunctionName
      - EvmTxDepositUnexpectedValidatorKey
      - EvmTxDepositInvalidValidatorKey
      - EvmTxDepositMissingDepositArg
      - EvmTxDepositWrongDepositArgType
      - EvmTxDepositValidatorKeyNotInRole
      - EvmTxDepositUnexpectedWithdrawalCredentials
      - EvmTxDepositUnresolvedRole
      - EvmTxDepositInvalidDepositEncoding
    OidcUserInfo:
      type: object
      properties:
        email:
          type: string
          description: The email associated with the user
          example: user@email.com
          nullable: true
        preferred_username:
          type: string
          description: The user name (if any) associated with the user
          example: dril
          nullable: true
    CubeSignerUserInfo:
      type: object
      required:
      - user_id
      - initialized
      - configured_mfa
      properties:
        configured_mfa:
          type: array
          items:
            $ref: '#/components/schemas/ConfiguredMfa'
          description: All multi-factor authentication methods configured for this user
        initialized:
          type: boolean
          description: Set once the user successfully logs into CubeSigner
        name:
          type: string
          description: Optional human name for the user
          nullable: true
        user_id:
          type: string
          description: CubeSigner's user identifier
    ErrorResponse:
      type: object
      description: The structure of ErrorResponse must match the response template that AWS uses
      required:
      - message
      - error_code
      properties:
        accepted:
          allOf:
          - $ref: '#/components/schemas/AcceptedValue'
          nullable: true
        error_code:
          $ref: '#/components/schemas/SignerErrorCode'
        message:
 

# --- truncated at 32 KB (66 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/cubist/refs/heads/main/openapi/cubist-users-in-org-api-openapi.yml