fireblocks Key Link API

The Key Link API from fireblocks — 5 operation(s) for key link.

OpenAPI Specification

fireblocks-key-link-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: Fireblocks Blockchains and Assets Approval Requests Key Link API
  description: 'Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain.


    - Visit our website for more information: [Fireblocks Website](https://fireblocks.com)

    - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com)

    '
  version: 1.8.0
  contact:
    email: developers@fireblocks.com
servers:
- url: https://api.fireblocks.io/v1
  description: Fireblocks Production Environment Base URL
- url: https://sandbox-api.fireblocks.io/v1
  description: Fireblocks Sandbox Environment Base URL
security: []
tags:
- name: Key Link
paths:
  /key_link/signing_keys:
    post:
      operationId: createSigningKey
      summary: Add a new signing key
      description: 'Adds a new signing key to the workspace. The added key will be linked to the specific Fireblocks agent user ID. The same user will receive the proof of ownership message to be signed, and upon successful proof, the key will become enabled.

        Please note that this endpoint is available only for Key Link enabled workspaces.

        </br>Endpoint Permission: Admin and Non-Signing Admin.'
      parameters:
      - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateSigningKeyDto'
      responses:
        '201':
          description: Newly created signing key
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SigningKeyDto'
        default:
          $ref: '#/components/responses/Error'
      tags:
      - Key Link
      x-readme:
        code-samples:
        - language: typescript
          code: 'const response: Promise<FireblocksResponse<SigningKeyDto>> = fireblocks.keyLinkBeta.createSigningKey(keyLinkBetaApiCreateSigningKeyRequest);'
          name: Fireblocks SDK TypeScript example
        - language: java
          code: CompletableFuture<ApiResponse<SigningKeyDto>> response = fireblocks.keyLinkBeta().createSigningKey(createSigningKeyDto, idempotencyKey);
          name: Fireblocks SDK Java example
        - language: python
          code: response = fireblocks.key_link_beta.create_signing_key(create_signing_key_dto, idempotency_key);
          name: Fireblocks SDK Python example
      x-codeSamples:
      - lang: TypeScript
        source: 'const response: Promise<FireblocksResponse<SigningKeyDto>> = fireblocks.keyLinkBeta.createSigningKey(keyLinkBetaApiCreateSigningKeyRequest);'
      - lang: Java
        source: CompletableFuture<ApiResponse<SigningKeyDto>> response = fireblocks.keyLinkBeta().createSigningKey(createSigningKeyDto, idempotencyKey);
      - lang: Python
        source: response = fireblocks.key_link_beta.create_signing_key(create_signing_key_dto, idempotency_key);
    get:
      operationId: getSigningKeysList
      summary: Get list of signing keys
      description: 'Returns the list of signing keys in the workspace

        Please note that this endpoint is available only for Key Link enabled workspaces.

        </br>Endpoint Permission: Admin and Non-Signing Admin.'
      parameters:
      - name: pageCursor
        required: false
        in: query
        description: Cursor to the next page
        example: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA==
        schema:
          type: string
      - name: pageSize
        required: false
        in: query
        description: Amount of results to return in the next page
        schema:
          minimum: 1
          maximum: 50
          default: 10
          type: number
      - name: sortBy
        required: false
        in: query
        description: Field(s) to use for sorting
        schema:
          default: createdAt
          enum:
          - createdAt
          type: string
      - name: order
        required: false
        in: query
        description: Is the order ascending or descending
        schema:
          default: ASC
          enum:
          - ASC
          - DESC
          type: string
      - name: vaultAccountId
        required: false
        in: query
        description: Return keys assigned to a specific vault
        example: 4
        schema:
          type: number
      - name: agentUserId
        required: false
        in: query
        description: Return keys associated with a specific agent user
        example: 12fed207-5bdf-4a0c-ab12-fcd2627f75d1
        schema:
          type: string
      - name: algorithm
        required: false
        in: query
        description: Return only keys with a specific algorithm
        example: ECDSA_SECP256K1
        schema:
          enum:
          - ECDSA_SECP256K1
          - EDDSA_ED25519
          type: string
      - name: enabled
        required: false
        in: query
        description: Return keys that have been proof of ownership
        schema:
          type: boolean
      - name: available
        required: false
        in: query
        description: Return keys that are proof of ownership but not assigned. Available filter can be used only when vaultAccountId and enabled filters are not set
        schema:
          type: boolean
      responses:
        '200':
          description: List of signing keys and a data that allows requesting the next page if applicable
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetSigningKeyResponseDto'
        default:
          $ref: '#/components/responses/Error'
      tags:
      - Key Link
      x-readme:
        code-samples:
        - language: typescript
          code: 'const response: Promise<FireblocksResponse<GetSigningKeyResponseDto>> = fireblocks.keyLinkBeta.getSigningKeysList(keyLinkBetaApiGetSigningKeysListRequest);'
          name: Fireblocks SDK TypeScript example
        - language: java
          code: CompletableFuture<ApiResponse<GetSigningKeyResponseDto>> response = fireblocks.keyLinkBeta().getSigningKeysList(pageCursor, pageSize, sortBy, order, vaultAccountId, agentUserId, algorithm, enabled, available);
          name: Fireblocks SDK Java example
        - language: python
          code: response = fireblocks.key_link_beta.get_signing_keys_list(page_cursor, page_size, sort_by, order, vault_account_id, agent_user_id, algorithm, enabled, available);
          name: Fireblocks SDK Python example
      x-codeSamples:
      - lang: TypeScript
        source: 'const response: Promise<FireblocksResponse<GetSigningKeyResponseDto>> = fireblocks.keyLinkBeta.getSigningKeysList(keyLinkBetaApiGetSigningKeysListRequest);'
      - lang: Java
        source: CompletableFuture<ApiResponse<GetSigningKeyResponseDto>> response = fireblocks.keyLinkBeta().getSigningKeysList(pageCursor, pageSize, sortBy, order, vaultAccountId, agentUserId, algorithm, enabled, available);
      - lang: Python
        source: response = fireblocks.key_link_beta.get_signing_keys_list(page_cursor, page_size, sort_by, order, vault_account_id, agent_user_id, algorithm, enabled, available);
  /key_link/signing_keys/{keyId}:
    get:
      operationId: getSigningKey
      summary: Get a signing key by `keyId`
      description: 'Returns a signing key if it exists, identified by the specified Fireblocks provided `keyId`.

        Please note that this endpoint is available only for Key Link enabled workspaces.

        </br>Endpoint Permission: Admin and Non-Signing Admin.'
      parameters:
      - name: keyId
        required: true
        in: path
        description: The unique identifier for the signing key provided by Fireblocks
        schema:
          type: string
          example: 46a92767-5f93-4a46-9eed-f012196bb4fc
      responses:
        '200':
          description: Requested signing key data
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SigningKeyDto'
        default:
          $ref: '#/components/responses/Error'
      tags:
      - Key Link
      x-readme:
        code-samples:
        - language: typescript
          code: 'const response: Promise<FireblocksResponse<SigningKeyDto>> = fireblocks.keyLinkBeta.getSigningKey(keyLinkBetaApiGetSigningKeyRequest);'
          name: Fireblocks SDK TypeScript example
        - language: java
          code: CompletableFuture<ApiResponse<SigningKeyDto>> response = fireblocks.keyLinkBeta().getSigningKey(keyId);
          name: Fireblocks SDK Java example
        - language: python
          code: response = fireblocks.key_link_beta.get_signing_key(key_id);
          name: Fireblocks SDK Python example
      x-codeSamples:
      - lang: TypeScript
        source: 'const response: Promise<FireblocksResponse<SigningKeyDto>> = fireblocks.keyLinkBeta.getSigningKey(keyLinkBetaApiGetSigningKeyRequest);'
      - lang: Java
        source: CompletableFuture<ApiResponse<SigningKeyDto>> response = fireblocks.keyLinkBeta().getSigningKey(keyId);
      - lang: Python
        source: response = fireblocks.key_link_beta.get_signing_key(key_id);
    patch:
      operationId: updateSigningKey
      summary: Modify the signing keyId
      description: 'Allows assigning the signing key to a vault account, if it hasn''t been assigned to any other vault accounts yet.

        Please note that this endpoint is available only for Key Link enabled workspaces.

        </br>Endpoint Permission: Admin and Non-Signing Admin.'
      parameters:
      - name: keyId
        required: true
        in: path
        description: The unique identifier for the signing key provided by Fireblocks
        schema:
          type: string
          example: 46a92767-5f93-4a46-9eed-f012196bb4fc
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ModifySigningKeyDto'
      responses:
        '200':
          description: Modified signing key data
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SigningKeyDto'
        default:
          $ref: '#/components/responses/Error'
      tags:
      - Key Link
      x-readme:
        code-samples:
        - language: typescript
          code: 'const response: Promise<FireblocksResponse<SigningKeyDto>> = fireblocks.keyLinkBeta.updateSigningKey(keyLinkBetaApiUpdateSigningKeyRequest);'
          name: Fireblocks SDK TypeScript example
        - language: java
          code: CompletableFuture<ApiResponse<SigningKeyDto>> response = fireblocks.keyLinkBeta().updateSigningKey(modifySigningKeyDto, keyId);
          name: Fireblocks SDK Java example
        - language: python
          code: response = fireblocks.key_link_beta.update_signing_key(modify_signing_key_dto, key_id);
          name: Fireblocks SDK Python example
      x-codeSamples:
      - lang: TypeScript
        source: 'const response: Promise<FireblocksResponse<SigningKeyDto>> = fireblocks.keyLinkBeta.updateSigningKey(keyLinkBetaApiUpdateSigningKeyRequest);'
      - lang: Java
        source: CompletableFuture<ApiResponse<SigningKeyDto>> response = fireblocks.keyLinkBeta().updateSigningKey(modifySigningKeyDto, keyId);
      - lang: Python
        source: response = fireblocks.key_link_beta.update_signing_key(modify_signing_key_dto, key_id);
  /key_link/signing_keys/{keyId}/agent_user_id:
    patch:
      operationId: setAgentId
      summary: Set agent user id
      description: 'Can modify existing signing key id if the key is not enabled. The change done in background and will be visible once applied. If key is already enabled (after proof of ownership) the user cannot be changed.

        Please note that this endpoint is available only for Key Link enabled workspaces.

        </br>Endpoint Permission: Admin and Non-Signing Admin.'
      parameters:
      - name: keyId
        required: true
        in: path
        description: The unique identifier for the signing key provided by Fireblocks
        schema:
          type: string
          example: 46a92767-5f93-4a46-9eed-f012196bb4fc
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ModifySigningKeyAgentIdDto'
      responses:
        '204':
          description: Agent user id modification process has started in background.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        default:
          $ref: '#/components/responses/Error'
      tags:
      - Key Link
      x-readme:
        code-samples:
        - language: typescript
          code: 'const response: Promise<FireblocksResponse<void>> = fireblocks.keyLinkBeta.setAgentId(keyLinkBetaApiSetAgentIdRequest);'
          name: Fireblocks SDK TypeScript example
        - language: java
          code: CompletableFuture<ApiResponse<Void>> response = fireblocks.keyLinkBeta().setAgentId(modifySigningKeyAgentIdDto, keyId);
          name: Fireblocks SDK Java example
        - language: python
          code: response = fireblocks.key_link_beta.set_agent_id(modify_signing_key_agent_id_dto, key_id);
          name: Fireblocks SDK Python example
      x-codeSamples:
      - lang: TypeScript
        source: 'const response: Promise<FireblocksResponse<void>> = fireblocks.keyLinkBeta.setAgentId(keyLinkBetaApiSetAgentIdRequest);'
      - lang: Java
        source: CompletableFuture<ApiResponse<Void>> response = fireblocks.keyLinkBeta().setAgentId(modifySigningKeyAgentIdDto, keyId);
      - lang: Python
        source: response = fireblocks.key_link_beta.set_agent_id(modify_signing_key_agent_id_dto, key_id);
  /key_link/validation_keys:
    post:
      operationId: createValidationKey
      summary: Add a new validation key
      description: 'Adds a new validation key used to validate signing keys. The new validation key will undergo an approval process by the workspace quorum.

        Please note that this endpoint is available only for Key Link enabled workspaces.

        </br>Endpoint Permission: Admin and Non-Signing Admin.'
      parameters:
      - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateValidationKeyDto'
      responses:
        '201':
          description: The validation key that was added and is pending approval.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateValidationKeyResponseDto'
        default:
          $ref: '#/components/responses/Error'
      tags:
      - Key Link
      x-readme:
        code-samples:
        - language: typescript
          code: 'const response: Promise<FireblocksResponse<CreateValidationKeyResponseDto>> = fireblocks.keyLinkBeta.createValidationKey(keyLinkBetaApiCreateValidationKeyRequest);'
          name: Fireblocks SDK TypeScript example
        - language: java
          code: CompletableFuture<ApiResponse<CreateValidationKeyResponseDto>> response = fireblocks.keyLinkBeta().createValidationKey(createValidationKeyDto, idempotencyKey);
          name: Fireblocks SDK Java example
        - language: python
          code: response = fireblocks.key_link_beta.create_validation_key(create_validation_key_dto, idempotency_key);
          name: Fireblocks SDK Python example
      x-codeSamples:
      - lang: TypeScript
        source: 'const response: Promise<FireblocksResponse<CreateValidationKeyResponseDto>> = fireblocks.keyLinkBeta.createValidationKey(keyLinkBetaApiCreateValidationKeyRequest);'
      - lang: Java
        source: CompletableFuture<ApiResponse<CreateValidationKeyResponseDto>> response = fireblocks.keyLinkBeta().createValidationKey(createValidationKeyDto, idempotencyKey);
      - lang: Python
        source: response = fireblocks.key_link_beta.create_validation_key(create_validation_key_dto, idempotency_key);
    get:
      operationId: getValidationKeysList
      summary: Get list of registered validation keys
      description: 'Returns the list of validation keys in the workspace

        Please note that this endpoint is available only for Key Link enabled workspaces.

        </br>Endpoint Permission: Admin and Non-Signing Admin.'
      parameters:
      - name: pageCursor
        required: false
        in: query
        description: Cursor to the next page
        example: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA==
        schema:
          type: string
      - name: pageSize
        required: false
        in: query
        description: Amount of results to return in the next page
        schema:
          minimum: 1
          maximum: 50
          default: 10
          type: number
      - name: sortBy
        required: false
        in: query
        description: Field(s) to use for sorting
        schema:
          default: createdAt
          enum:
          - createdAt
          type: string
      - name: order
        required: false
        in: query
        description: Is the order ascending or descending
        schema:
          default: ASC
          enum:
          - ASC
          - DESC
          type: string
      responses:
        '200':
          description: Validation keys list along with data required to request the next page if applicable
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetValidationKeyResponseDto'
        default:
          $ref: '#/components/responses/Error'
      tags:
      - Key Link
      x-readme:
        code-samples:
        - language: typescript
          code: 'const response: Promise<FireblocksResponse<GetValidationKeyResponseDto>> = fireblocks.keyLinkBeta.getValidationKeysList(keyLinkBetaApiGetValidationKeysListRequest);'
          name: Fireblocks SDK TypeScript example
        - language: java
          code: CompletableFuture<ApiResponse<GetValidationKeyResponseDto>> response = fireblocks.keyLinkBeta().getValidationKeysList(pageCursor, pageSize, sortBy, order);
          name: Fireblocks SDK Java example
        - language: python
          code: response = fireblocks.key_link_beta.get_validation_keys_list(page_cursor, page_size, sort_by, order);
          name: Fireblocks SDK Python example
      x-codeSamples:
      - lang: TypeScript
        source: 'const response: Promise<FireblocksResponse<GetValidationKeyResponseDto>> = fireblocks.keyLinkBeta.getValidationKeysList(keyLinkBetaApiGetValidationKeysListRequest);'
      - lang: Java
        source: CompletableFuture<ApiResponse<GetValidationKeyResponseDto>> response = fireblocks.keyLinkBeta().getValidationKeysList(pageCursor, pageSize, sortBy, order);
      - lang: Python
        source: response = fireblocks.key_link_beta.get_validation_keys_list(page_cursor, page_size, sort_by, order);
  /key_link/validation_keys/{keyId}:
    get:
      operationId: getValidationKey
      summary: Get a validation key by `keyId`
      description: 'Returns a validation key if it exists, identified by the specified `keyId`.

        Please note that this endpoint is available only for Key Link enabled workspaces.

        </br>Endpoint Permission: Admin and Non-Signing Admin.'
      parameters:
      - name: keyId
        required: true
        in: path
        schema:
          type: string
      responses:
        '200':
          description: The requested validation key data
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationKeyDto'
        default:
          $ref: '#/components/responses/Error'
      tags:
      - Key Link
      x-readme:
        code-samples:
        - language: typescript
          code: 'const response: Promise<FireblocksResponse<ValidationKeyDto>> = fireblocks.keyLinkBeta.getValidationKey(keyLinkBetaApiGetValidationKeyRequest);'
          name: Fireblocks SDK TypeScript example
        - language: java
          code: CompletableFuture<ApiResponse<ValidationKeyDto>> response = fireblocks.keyLinkBeta().getValidationKey(keyId);
          name: Fireblocks SDK Java example
        - language: python
          code: response = fireblocks.key_link_beta.get_validation_key(key_id);
          name: Fireblocks SDK Python example
      x-codeSamples:
      - lang: TypeScript
        source: 'const response: Promise<FireblocksResponse<ValidationKeyDto>> = fireblocks.keyLinkBeta.getValidationKey(keyLinkBetaApiGetValidationKeyRequest);'
      - lang: Java
        source: CompletableFuture<ApiResponse<ValidationKeyDto>> response = fireblocks.keyLinkBeta().getValidationKey(keyId);
      - lang: Python
        source: response = fireblocks.key_link_beta.get_validation_key(key_id);
    patch:
      operationId: disableValidationKey
      summary: Disables a validation key
      description: 'Allows disabling validation key even if it has not expired yet. It is not allowed to enable the validation key back. Another key has to be used for future validations.

        Please note that this endpoint is available only for Key Link enabled workspaces.

        </br>Endpoint Permission: Admin and Non-Signing Admin.'
      parameters:
      - name: keyId
        required: true
        in: path
        description: The unique identifier for the validation key provided by Fireblocks
        schema:
          type: string
          example: 46a92767-5f93-4a46-9eed-f012196bb4fc
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ModifyValidationKeyDto'
      responses:
        '200':
          description: Modified validation key data
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationKeyDto'
        default:
          $ref: '#/components/responses/Error'
      tags:
      - Key Link
      x-readme:
        code-samples:
        - language: typescript
          code: 'const response: Promise<FireblocksResponse<ValidationKeyDto>> = fireblocks.keyLinkBeta.disableValidationKey(keyLinkBetaApiDisableValidationKeyRequest);'
          name: Fireblocks SDK TypeScript example
        - language: java
          code: CompletableFuture<ApiResponse<ValidationKeyDto>> response = fireblocks.keyLinkBeta().disableValidationKey(modifyValidationKeyDto, keyId);
          name: Fireblocks SDK Java example
        - language: python
          code: response = fireblocks.key_link_beta.disable_validation_key(modify_validation_key_dto, key_id);
          name: Fireblocks SDK Python example
      x-codeSamples:
      - lang: TypeScript
        source: 'const response: Promise<FireblocksResponse<ValidationKeyDto>> = fireblocks.keyLinkBeta.disableValidationKey(keyLinkBetaApiDisableValidationKeyRequest);'
      - lang: Java
        source: CompletableFuture<ApiResponse<ValidationKeyDto>> response = fireblocks.keyLinkBeta().disableValidationKey(modifyValidationKeyDto, keyId);
      - lang: Python
        source: response = fireblocks.key_link_beta.disable_validation_key(modify_validation_key_dto, key_id);
components:
  schemas:
    GetSigningKeyResponseDto:
      type: object
      properties:
        data:
          description: Response object for getting external signing keys.
          type: array
          items:
            $ref: '#/components/schemas/SigningKeyDto'
        next:
          type: string
          description: The ID of the next page
      required:
      - data
    GetValidationKeyResponseDto:
      type: object
      properties:
        data:
          description: Response object for getting external validation keys.
          type: array
          items:
            $ref: '#/components/schemas/ValidationKeyDto'
        next:
          type: string
          description: The ID of the next page
      required:
      - data
    ModifyValidationKeyDto:
      type: object
      properties:
        enabled:
          type: boolean
          example: false
          description: Disable validation key
      required:
      - enabled
    CreateValidationKeyResponseDto:
      type: object
      properties:
        validationKey:
          description: Created validation key
          allOf:
          - $ref: '#/components/schemas/ValidationKeyDto'
        admins:
          description: Admins who have to approve the validation key addition
          type: array
          items:
            type: string
        approvalThreshold:
          type: number
          minimum: 0
          example: 0
          description: Minimal number of approvers required. 0 for all
        requestId:
          type: number
          example: 1234
          description: Approval request id. Can be cancelled
      required:
      - validationKey
      - admins
      - approvalThreshold
      - requestId
    CreateSigningKeyDto:
      type: object
      properties:
        signingDeviceKeyId:
          type: string
          example: MyKey1
          maxLength: 256
          description: The ID, name or label of the key specified on the customer's signing device.
        signedCertPem:
          type: string
          example: '-----BEGIN CERTIFICATE ... END CERTIFICATE-----'
          description: The signed certificate that includes the public key PEM of the signing key, signed by a validation key.
        agentUserId:
          type: string
          minLength: 36
          maxLength: 36
          example: d18847b5-1df6-4c46-8f99-5cce47284529
          description: Id of user to which this key belongs
        proofOfOwnership:
          type: object
          description: An object containing proof of ownership for the signing key.
          properties:
            message:
              description: The message to be signed by the key as proof of ownership. 64 to 1024 bytes in hexadecimal format.
              type: string
              minLength: 64
              maxLength: 2048
            signature:
              description: The signature of the message. 64 bytes in hexadecimal format.
              type: string
              minLength: 64
              maxLength: 128
          required:
          - message
          - signature
      required:
      - signingDeviceKeyId
      - signedCertPem
      - agentUserId
    SigningKeyDto:
      type: object
      properties:
        keyId:
          type: string
          minLength: 36
          maxLength: 36
          example: 46a92767-5f93-4a46-9eed-f012196bb4fc
          description: External signing key id set by Fireblocks.
        signingDeviceKeyId:
          type: string
          maxLength: 256
          example: MyKey1
          description: The ID, name or label of the key specified on the customer's signing device.
        publicKeyPem:
          type: string
          example: '-----BEGIN PUBLIC KEY ... END PUBLIC KEY-----'
          description: PEM encoded public key
        algorithm:
          type: string
          example: ECDSA_SECP256K1
          description: 'Algorithm and curve used for the signature. Can be: ECDSA_SECP256K1 or EDDSA_ED25519'
        enabled:
          type: boolean
          example: true
          description: True if the signing key is enabled
        vaultAccountId:
          type: number
          nullable: true
          example: 10
          description: Id of the vault account which this key is linked to
        agentUserId:
          type: string
          minLength: 36
          maxLength: 36
          example: d18847b5-1df6-4c46-8f99-5cce47284529
          description: Id of user that represent agent servers that can sign with the key
        createdAt:
          type: number
          example: 124757537
          description: Creation date (timestamp) in milliseconds.
      required:
      - keyId
      - signingDeviceKeyId
      - publicKeyPem
      - algorithm
      - enabled
      - vaultAccountId
      - agentUserId
      - createdAt
    ModifySigningKeyAgentIdDto:
      type: object
      properties:
        agentUserId:
          type: string
          minLength: 36
          maxLength: 36
          example: d18847b5-1df6-4c46-8f99-5cce47284529
          description: Id of user that represent agent servers which signs with the key
      required:
      - agentUserId
    CreateValidationKeyDto:
      type: object
      properties:
        publicKeyPem:
          type: string
          example: '-----BEGIN PUBLIC KEY ...  END PUBLIC KEY-----'
          description: The PEM encoded public key of the validation key being added
        daysTillExpired:
          type: number
          minimum: 1
          example: 365
          description: The number of days from the date the validation key was added until it expires
      required:
      - publicKeyPem
      - daysTillExpired
    ValidationKeyDto:
      type: object
      properties:
        keyId:
          type: string
          minLength: 36
          maxLength: 36
          example: 46a92767-5f93-4a46-9eed-f012196bb4fc
          description: External validation key id set by Fireblocks.
        publicKeyPem:
          type: string
          example: '-----BEGIN PUBLIC KEY ...  END PUBLIC KEY-----'
          description: PEM encoded public key used for the validation.
        daysTillExpired:
          type: number
          minimum: 1
          example: 365
        enabled:
          type: boolean
          example: false
          description: True if the validation key is enabled.
        createdAt:
          type: number
          example: 12345633
          description: Creation date (timestamp) in milliseconds.
      required:
      - keyId
      - publicKeyPem
      - daysTillExpired
      - enabled
      - createdAt
    ModifySigningKeyDto:
      type: object
      properties:
        vaultAccountId:
          type: number
          minimum: 1
          example: 123
      required:
      - vaultAccountId
  parameters:
    X-Idempotency-Key:
      name: Idempotency-Key
      in: header
      description: A unique identifier for the request. If the request is sent multiple times with the same idempotency key, the server will return the same response as the first request. The idempotency key is valid for 24 hours.
      required: false
      schema:
        type: string
        example: some-unique-id
  responses:
    Error:
      description: Error Response
      headers:
        X-Request-ID:
          $ref: '#/components/headers/X-Request-ID'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorSchema'
  securitySchemes:
    bearerTokenAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key