fireblocks Policy Editor (Beta) API

The Policy Editor (Beta) API from fireblocks — 3 operation(s) for policy editor (beta).

OpenAPI Specification

fireblocks-policy-editor-beta-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: Fireblocks Blockchains and Assets Approval Requests Policy Editor (Beta) 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: Policy Editor (Beta)
paths:
  /tap/active_policy:
    get:
      operationId: getActivePolicy
      summary: Get the active policy and its validation
      description: 'Returns the active policy and its validation. </br>

        **Note:** These endpoints are currently in beta and might be subject to changes.

        If you want to participate and learn more about the Fireblocks TAP, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.

        </br>Endpoint Permission: Admin, Non-Signing Admin.'
      tags:
      - Policy Editor (Beta)
      x-readme:
        code-samples:
        - language: javascript
          code: const policy = await fireblocks.getActivePolicy();
          name: Fireblocks SDK Javascript example
        - language: typescript
          code: 'const response: Promise<FireblocksResponse<PolicyAndValidationResponse>> = fireblocks.policyEditorBeta.getActivePolicy();'
          name: Fireblocks SDK TypeScript example
        - language: java
          code: CompletableFuture<ApiResponse<PolicyAndValidationResponse>> response = fireblocks.policyEditorBeta().getActivePolicy();
          name: Fireblocks SDK Java example
        - language: python
          code: response = fireblocks.policy_editor_beta.get_active_policy();
          name: Fireblocks SDK Python example
      responses:
        '200':
          description: A policy object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PolicyAndValidationResponse'
        default:
          $ref: '#/components/responses/Error'
      x-codeSamples:
      - lang: TypeScript
        source: 'const response: Promise<FireblocksResponse<PolicyAndValidationResponse>> = fireblocks.policyEditorBeta.getActivePolicy();'
      - lang: Java
        source: CompletableFuture<ApiResponse<PolicyAndValidationResponse>> response = fireblocks.policyEditorBeta().getActivePolicy();
      - lang: Python
        source: response = fireblocks.policy_editor_beta.get_active_policy();
  /tap/draft:
    get:
      operationId: getDraft
      summary: Get the active draft
      description: 'Returns the active draft and its validation. </br>

        **Note:** These endpoints are currently in beta and might be subject to changes.

        If you want to participate and learn more about the Fireblocks TAP, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.

        </br>Endpoint Permission: Admin, Non-Signing Admin.'
      tags:
      - Policy Editor (Beta)
      x-readme:
        code-samples:
        - language: javascript
          code: const policy = await fireblocks.getDraft();
          name: Fireblocks SDK Javascript example
        - language: typescript
          code: 'const response: Promise<FireblocksResponse<DraftReviewAndValidationResponse>> = fireblocks.policyEditorBeta.getDraft();'
          name: Fireblocks SDK TypeScript example
        - language: java
          code: CompletableFuture<ApiResponse<DraftReviewAndValidationResponse>> response = fireblocks.policyEditorBeta().getDraft();
          name: Fireblocks SDK Java example
        - language: python
          code: response = fireblocks.policy_editor_beta.get_draft();
          name: Fireblocks SDK Python example
      responses:
        '200':
          description: A draft validation response object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DraftReviewAndValidationResponse'
        default:
          $ref: '#/components/responses/Error'
      x-codeSamples:
      - lang: TypeScript
        source: 'const response: Promise<FireblocksResponse<DraftReviewAndValidationResponse>> = fireblocks.policyEditorBeta.getDraft();'
      - lang: Java
        source: CompletableFuture<ApiResponse<DraftReviewAndValidationResponse>> response = fireblocks.policyEditorBeta().getDraft();
      - lang: Python
        source: response = fireblocks.policy_editor_beta.get_draft();
    put:
      operationId: updateDraft
      summary: Update the draft with a new set of rules
      description: 'Update the draft and return its validation. </br>

        **Note:** These endpoints are currently in beta and might be subject to changes.

        If you want to participate and learn more about the Fireblocks TAP, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.

        Learn more about Fireblocks Transaction Authorization Policy in the following [guide](https://developers.fireblocks.com/docs/set-transaction-authorization-policy).

        </br>Endpoint Permission: Admin, Non-Signing Admin.'
      tags:
      - Policy Editor (Beta)
      parameters:
      - $ref: '#/components/parameters/X-Idempotency-Key'
      x-readme:
        code-samples:
        - language: javascript
          code: const policy = await fireblocks.updateDraft();
          name: Fireblocks SDK Javascript example
        - language: typescript
          code: 'const response: Promise<FireblocksResponse<DraftReviewAndValidationResponse>> = fireblocks.policyEditorBeta.updateDraft(policyEditorBetaApiUpdateDraftRequest);'
          name: Fireblocks SDK TypeScript example
        - language: java
          code: CompletableFuture<ApiResponse<DraftReviewAndValidationResponse>> response = fireblocks.policyEditorBeta().updateDraft(policyRules, idempotencyKey);
          name: Fireblocks SDK Java example
        - language: python
          code: response = fireblocks.policy_editor_beta.update_draft(policy_rules, idempotency_key);
          name: Fireblocks SDK Python example
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PolicyRules'
      responses:
        '200':
          description: A draft validation response object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DraftReviewAndValidationResponse'
        default:
          $ref: '#/components/responses/Error'
      x-codeSamples:
      - lang: TypeScript
        source: 'const response: Promise<FireblocksResponse<DraftReviewAndValidationResponse>> = fireblocks.policyEditorBeta.updateDraft(policyEditorBetaApiUpdateDraftRequest);'
      - lang: Java
        source: CompletableFuture<ApiResponse<DraftReviewAndValidationResponse>> response = fireblocks.policyEditorBeta().updateDraft(policyRules, idempotencyKey);
      - lang: Python
        source: response = fireblocks.policy_editor_beta.update_draft(policy_rules, idempotency_key);
    post:
      operationId: publishDraft
      summary: Send publish request for a certain draft id
      description: 'Send publish request of certain draft id and returns the response. </br>

        **Note:** These endpoints are currently in beta and might be subject to changes.

        If you want to participate and learn more about the Fireblocks TAP, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.

        </br>Endpoint Permission: Admin, Non-Signing Admin.'
      tags:
      - Policy Editor (Beta)
      x-readme:
        code-samples:
        - language: javascript
          code: const policy = await fireblocks.publishDraft();
          name: Fireblocks SDK Javascript example
        - language: typescript
          code: 'const response: Promise<FireblocksResponse<PublishResult>> = fireblocks.policyEditorBeta.publishDraft(policyEditorBetaApiPublishDraftRequest);'
          name: Fireblocks SDK TypeScript example
        - language: java
          code: CompletableFuture<ApiResponse<PublishResult>> response = fireblocks.policyEditorBeta().publishDraft(publishDraftRequest, idempotencyKey);
          name: Fireblocks SDK Java example
        - language: python
          code: response = fireblocks.policy_editor_beta.publish_draft(publish_draft_request, idempotency_key);
          name: Fireblocks SDK Python example
      parameters:
      - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PublishDraftRequestV2'
      responses:
        '201':
          description: A policy publish result object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublishResult'
        default:
          $ref: '#/components/responses/Error'
      x-codeSamples:
      - lang: TypeScript
        source: 'const response: Promise<FireblocksResponse<PublishResult>> = fireblocks.policyEditorBeta.publishDraft(policyEditorBetaApiPublishDraftRequest);'
      - lang: Java
        source: CompletableFuture<ApiResponse<PublishResult>> response = fireblocks.policyEditorBeta().publishDraft(publishDraftRequest, idempotencyKey);
      - lang: Python
        source: response = fireblocks.policy_editor_beta.publish_draft(publish_draft_request, idempotency_key);
  /tap/publish:
    post:
      operationId: publishPolicyRules
      summary: Send publish request for a set of policy rules
      description: 'Send publish request of set of policy rules and returns the response. </br>

        **Note:** These endpoints are currently in beta and might be subject to changes.

        If you want to participate and learn more about the Fireblocks TAP, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.

        </br>Endpoint Permission: Admin, Non-Signing Admin.'
      tags:
      - Policy Editor (Beta)
      x-readme:
        code-samples:
        - language: javascript
          code: const policy = await fireblocks.publishRules();
          name: Fireblocks SDK Javascript example
        - language: typescript
          code: 'const response: Promise<FireblocksResponse<PublishResult>> = fireblocks.policyEditorBeta.publishPolicyRules(policyEditorBetaApiPublishPolicyRulesRequest);'
          name: Fireblocks SDK TypeScript example
        - language: java
          code: CompletableFuture<ApiResponse<PublishResult>> response = fireblocks.policyEditorBeta().publishPolicyRules(policyRules, idempotencyKey);
          name: Fireblocks SDK Java example
        - language: python
          code: response = fireblocks.policy_editor_beta.publish_policy_rules(policy_rules, idempotency_key);
          name: Fireblocks SDK Python example
      parameters:
      - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PolicyRules'
      responses:
        '201':
          description: A policy publish result object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublishResult'
        default:
          $ref: '#/components/responses/Error'
      x-codeSamples:
      - lang: TypeScript
        source: 'const response: Promise<FireblocksResponse<PublishResult>> = fireblocks.policyEditorBeta.publishPolicyRules(policyEditorBetaApiPublishPolicyRulesRequest);'
      - lang: Java
        source: CompletableFuture<ApiResponse<PublishResult>> response = fireblocks.policyEditorBeta().publishPolicyRules(policyRules, idempotencyKey);
      - lang: Python
        source: response = fireblocks.policy_editor_beta.publish_policy_rules(policy_rules, idempotency_key);
components:
  schemas:
    PolicyValidation:
      type: object
      description: Policy validation object
      properties:
        status:
          type: string
          description: Validation status
        checkResult:
          $ref: '#/components/schemas/PolicyCheckResult'
      required:
      - status
      - checkResult
    PolicyRules:
      type: object
      properties:
        rules:
          description: Policy rules
          type: array
          items:
            $ref: '#/components/schemas/PolicyRule'
    DraftResponse:
      type: object
      description: Response object for draft operations
      properties:
        status:
          type: string
          description: Operation status
        rules:
          type: array
          description: Draft rules
          items:
            $ref: '#/components/schemas/PolicyRule'
        draftId:
          type: string
          description: Draft unique id
        metadata:
          $ref: '#/components/schemas/PolicyMetadata'
      required:
      - draftId
      - status
      - rules
      - metadata
    AmountAggregationTimePeriodMethod:
      type: string
      enum:
      - PER_SINGLE_MATCH
      - ACROSS_ALL_MATCHES
      description: '* PER_SINGLE_MATCH - Apply the limit to each listed entity

        * ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities

        '
    PolicySrcOrDestId:
      type: string
      description: 'Defines the account id, options are

        * "*" - All accounts

        * Specific account id

        '
    PolicySrcOrDestSubType:
      type: string
      enum:
      - EXTERNAL
      - INTERNAL
      - CONTRACT
      - EXCHANGETEST
      - '*'
      description: '* EXTERNAL - A whitelisted wallet assigned as external is typically used for addresses managed by your clients and counterparties

        * INTERNAL - A whitelisted wallet assigned as internal, is typically used for addresses that you control outside of your Fireblocks workspace

        * CONTRACT - A whitelisted wallet assigned as contract is for identifying and managing external smart contracts

        * EXCHANGETEST - Exchanges which operate only on testnet assets

        * "*" - All subtypes

        '
    PolicyTypeV2:
      type: string
      enum:
      - TRANSFER
      - STAKE
      - CONTRACT_CALL
      - TYPED_MESSAGE
      - APPROVE
      - MINT
      - BURN
      - RAW
      - COMPLIANCE
      - DEPLOYMENT
      - PROGRAM_CALL
      - DAPP_CONNECTION
      - UPGRADE
      - ORDER
      - AML_CHAINALYSIS_V2_SCREENING
      - AML_CHAINALYSIS_V2_POST_SCREENING
      - AML_ELLIPTIC_HOLISTIC_SCREENING
      - AML_ELLIPTIC_HOLISTIC_POST_SCREENING
      - TR_NOTABENE_SCREENING
      - TR_NOTABENE_POST_SCREENING
      description: Policy type enumeration
      example: TRANSFER
    PolicyAndValidationResponse:
      type: object
      description: Policy validation
      properties:
        policy:
          $ref: '#/components/schemas/PolicyResponse'
        validation:
          $ref: '#/components/schemas/PolicyValidation'
      required:
      - policy
      - validation
    ErrorSchema:
      type: object
      properties:
        message:
          type: string
        code:
          type: number
    PolicyMetadata:
      type: object
      description: Policy related metadata
      properties:
        editedBy:
          type: string
          description: The user id of the user who last edited the policy
        editedAt:
          type: string
          description: The timestamp of the last edit of the policy
        publishedBy:
          type: string
          description: The user id of the user who last published the policy
        publishedAt:
          type: string
          description: The timestamp of the last publish of the policy
    PolicyStatus:
      type: string
      enum:
      - SUCCESS
      - UNVALIDATED
      - INVALID_CONFIGURATION
      - PENDING
      - PENDING_CONSOLE_APPROVAL
      - AWAITING_QUORUM
      - UNHANDLED_ERROR
      description: '* SUCCESS - success

        * UNVALIDATED - not validated yet

        * INVALID_CONFIGURATION - at least one rule is invalid

        * PENDING - pending approval

        * PENDING_CONSOLE_APPROVAL - pending approval from the console app

        * AWAITING_QUORUM - pending quorum approval

        * UNHANDLED_ERROR - unhandled error

        '
    PolicyRule:
      type: object
      description: Policy rule which is enforced on transactions
      properties:
        operator:
          type: string
          description: (deprecated - replaced by "operators")  | Defines users who can initiate the type of transaction to which the rule applies. options are * "*" - All users are allowed * Specific User id
          deprecated: true
        operators:
          type: object
          description: Defines users/groups who can initiate the type of transaction to which the rule applies.
          properties:
            wildcard:
              type: string
              enum:
              - '*'
              description: 'If used then this property should appear as the only child property

                * "*" - All users are allowed

                '
            users:
              type: array
              description: Set of users ids
              items:
                type: string
            usersGroups:
              type: array
              description: Set of group ids
              items:
                type: string
            services:
              type: array
              description: set of services to initiate transactions
              items:
                type: string
        transactionType:
          type: string
          enum:
          - TRANSFER
          - CONTRACT_CALL
          - PROGRAM_CALL
          - APPROVE
          - MINT
          - BURN
          - SUPPLY
          - REDEEM
          - STAKE
          - RAW
          - TYPED_MESSAGE
          description: "Defines the type of transaction to which the rule applies.\n  * TRANSFER - Default. Transfers funds from one account to another\n  * CONTRACT_CALL - Calls a smart contract, mainly for DeFi operations.\n  * PROGRAM_CALL - Calls a smart contract for web3 operations on the Solana blockchain. \n  * APPROVE - Allows a smart contract to withdraw from a designated wallet.\n  * MINT - Perform a mint operation (increase supply) on a supported token\n  * BURN - Perform a burn operation (reduce supply) on a supported token\n  * SUPPLY - Use for DeFi to lend assets\n  * REDEEM - Use for DeFi to get lending back\n  * STAKE - Allows you to allocate and lock certain assets for earning staking rewards.\n  * RAW - An off-chain message with no predefined format, use it to sign any message with your private key.\n  * TYPED_MESSAGE - An off-chain message type that follows a predefined format, used to sign specific messages that are not actual transactions.\n"
        designatedSigner:
          type: string
          description: (deprecated - replaced by "designatedSigners") Id representing the user who signs transactions that match a specific rule
          deprecated: true
        designatedSigners:
          type: object
          description: Set of ids representing the users who signs transactions that match a specific rule
          properties:
            users:
              type: array
              description: Set of users ids
              items:
                type: string
            usersGroups:
              type: array
              description: Set of group ids
              items:
                type: string
        type:
          type: string
          description: Policy rule type
          enum:
          - TRANSFER
        action:
          type: string
          enum:
          - ALLOW
          - BLOCK
          - 2-TIER
          description: "Defines what occurs when a transaction meets the rule's criteria\n* ALLOW - The transaction goes through and can be signed without requiring additional approvals\n* BLOCK - The transaction is automatically blocked\n* 2-TIER - Only these users or user groups can approve \n           If any of them reject the transaction before the required approval threshold is met, the transaction doesn't go through\n           The list of entities are set is \"authorizationGroups\" field\n"
        asset:
          type: string
          description: 'Defines the type of asset being transacted, options are

            * "*" - All assets

            * Specific asset

            '
        srcType:
          description: (deprecated - replaced by "src") source account type
          deprecated: true
          allOf:
          - $ref: '#/components/schemas/PolicySrcOrDestType'
        srcSubType:
          description: (deprecated - replaced by "src") source sub account type
          deprecated: true
          allOf:
          - $ref: '#/components/schemas/PolicySrcOrDestSubType'
        srcId:
          description: (deprecated - replaced by "src") source account id
          deprecated: true
          allOf:
          - $ref: '#/components/schemas/PolicySrcOrDestId'
        src:
          type: object
          description: Defines source accounts the rule allows transfers to originate from
          properties:
            ids:
              type: array
              description: A set of ids in a tuple format
              items:
                $ref: '#/components/schemas/SrcOrDestAttributes'
        dstType:
          description: (deprecated - replaced by "dst") destination account type
          deprecated: true
          allOf:
          - $ref: '#/components/schemas/PolicySrcOrDestType'
        dstSubType:
          description: (deprecated - replaced by "dst") destination sub account type
          deprecated: true
          allOf:
          - $ref: '#/components/schemas/PolicySrcOrDestSubType'
        dstId:
          description: (deprecated - replaced by "dst") destination account id
          deprecated: true
          allOf:
          - $ref: '#/components/schemas/PolicySrcOrDestId'
        dst:
          type: object
          description: Defines the destination accounts the rule allows transfers to
          properties:
            ids:
              type: array
              description: A set of ids in a tuple format
              items:
                $ref: '#/components/schemas/SrcOrDestAttributes'
        dstAddressType:
          type: string
          enum:
          - WHITELISTED
          - ONE_TIME
          - '*'
          description: "Defines whether the destination to which you are sending funds must be whitelisted, to allow one-time transfers to non-whitelisted external addresses, or both.\nBy default, you can only transfer to an external address after it’s whitelisted.\n  * WHITELISTED - Can only be sent to whitelisted addresses.\n  * ONE_TIME - Can only be sent to non-whitelisted external addresses.\n  * \"*\" - can be sent to whitelisted addresses or non-whitelisted external\n"
        amountCurrency:
          type: string
          enum:
          - USD
          - EUR
          - NATIVE
          description: '* USD - Limits the amount of any asset users can transfer based on the USD equivalent of the asset.

            * EUR - Limits the amount of any asset users can transfer based on the EURO equivalent of the asset.

            * NATIVE - Limits the amount of an asset a user can transfer when using a specific asset.

            '
        amountScope:
          type: string
          enum:
          - SINGLE_TX
          - TIMEFRAME
          description: '* SINGLE_TX - limit applies to a single transaction

            * TIMEFRAME - limit applies to all transactions within the defined time period

            '
        amount:
          description: Defines the value a transaction must exceed for the rule to apply to it (according to the amountCurrency field)
          anyOf:
          - type: string
            description: Numeric string (recommended)
          - type: number
            description: Number (deprecated)
        periodSec:
          type: number
          description: 'Time period in seconds applied by the amountScope field to accumulate transferred amounts in transactions that match the rule, until the total exceeds the value you specify under Minimum.

            When the specified amount is reached within that period, whether by one or many transactions, further transactions in that period either fail or require more approvals.

            '
        authorizers:
          type: array
          description: (deprecated - replaced by "authorizationGroups") Allowed entities which can approves a transaction
          deprecated: true
          items:
            type: string
        authorizersCount:
          type: number
          description: (deprecated - replaced by "authorizationGroups") Min amount of entities which are needed to approve a transaction
          deprecated: true
        authorizationGroups:
          type: object
          description: Defines the transaction approval terms
          properties:
            logic:
              type: string
              enum:
              - AND
              - OR
              description: '* AND - requires approval of all authorization groups

                * OR - requires approval of at least one of the authorization groups

                '
            allowOperatorAsAuthorizer:
              type: boolean
              description: Defines whether the user who initiates a transaction can approve their own transaction and count toward the approval threshold for their transaction
            groups:
              type: array
              description: Groups of entities which can approve the transaction
              items:
                type: object
                properties:
                  users:
                    type: array
                    description: User ids
                    items:
                      type: string
                  usersGroups:
                    type: array
                    description: Group ids
                    items:
                      type: string
                  th:
                    type: number
                    description: Represents the min amount of entities which are required to approve the transaction, default is 1.
        amountAggregation:
          type: object
          description: 'Defines the method by which the Policy Engine calculates accumulation.

            It uses the Initiator, Source, and Destination to calculate accumulation toward the value under Minimum, for the time under Time Period.

            '
          properties:
            operators:
              $ref: '#/components/schemas/AmountAggregationTimePeriodMethod'
            srcTransferPeers:
              $ref: '#/components/schemas/AmountAggregationTimePeriodMethod'
            dstTransferPeers:
              $ref: '#/components/schemas/AmountAggregationTimePeriodMethod'
        rawMessageSigning:
          type: object
          description: Raw message signing configuration
          properties:
            algorithm:
              type: string
            derivationPath:
              type: object
              properties:
                path:
                  type: array
                  items:
                    type: number
        applyForApprove:
          type: boolean
          description: Applying this rule over APPROVE type transactions (can only be enabled when rule's transaction type is TRANSFER)
        applyForTypedMessage:
          type: boolean
          description: Applying this rule over TYPED_MESSAGE type transactions (can only be enabled when rule's transaction type is CONTRACT_CALL)
        externalDescriptor:
          type: string
          description: A unique id identifying the rule
      required:
      - type
      - action
      - asset
      - amountCurrency
      - amountScope
      - amount
      - periodSec
    PublishResult:
      type: object
      description: Response object of the publish policy operation
      properties:
        status:
          $ref: '#/components/schemas/PolicyStatus'
        rules:
          type: array
          items:
            $ref: '#/components/schemas/PolicyRule'
        checkResult:
          $ref: '#/components/schemas/PolicyCheckResult'
        metadata:
          $ref: '#/components/schemas/PolicyMetadata'
      required:
      - status
      - rules
      - checkResult
      - metadata
    PolicySrcOrDestType:
      type: string
      enum:
      - EXCHANGE
      - UNMANAGED
      - VAULT
      - NETWORK_CONNECTION
      - COMPOUND
      - FIAT_ACCOUNT
      - ONE_TIME_ADDRESS
      - '*'
      description: '* EXCHANGE - A third-party exchange account connected to your workspace

        * UNMANAGED - A unmanaged wallet outside of Fireblocks workspace

        * VAULT - An account in your Fireblocks Vault

        * NETWORK_CONNECTION - A connection in your Fireblocks network

        * COMPOUND - (deprecated) An asset retrieved by using the Compound DeFI protocol

        * FIAT_ACCOUNT - A third-party fiat account connected to your workspace

        * ONE_TIME_ADDRESS - A non-whitelisted asset from your Fireblocks Workspace

        * "*" - All types

        '
    DraftReviewAndValidationResponse:
      type: object
      description: Draft validation
      properties:
        draftResponse:
          $ref: '#/components/schemas/DraftResponse'
        validation:
          $ref: '#/components/schemas/PolicyValidation'
      required:
      - draftResponse
      - validation
    PublishDraftRequestV2:
      type: object
      description: Request schema for publishing draft with policy types and draft ID
      required:
      - policyTypes
      - draftId
      properties:
        policyTypes:
          type: array
          items:
            $ref: '#/components/schemas/PolicyTypeV2'
        draftId:
          type: string
          description: The ID of the draft to publish
          example: draft-123
    PolicyRuleError:
      type: object
      description: Rule validation result error
      properties:
        errorMessage:
          type: string
          description: Error message
        errorCode:
          type: number
          description: error code
        errorCodeName:
          type: string
          description: error code name
        errorField:
          type: string
          enum:
          - operator
          - operators
          - authorizationGroups
          - designatedSigner
          - designatedSigners
          - contractMethods
          - amountAggregation
          - src
          - dst
          description: 'The field which the error relates to

            * operator - transaction initiator

            * operators - transaction initiators

            * authorizationGroups - transaction authorizer groups

            * designatedSigner - transaction signer

            * designatedSigners - transaction signers

            * contractMethods - contract methods

            * amountAggregation - transaction amount aggregation configuration

            * src - transaction source asset configuration

            * dst - transaction destination asset configuration

            '
      required:
      - errorMessage
      - errorCode
      - errorCodeName
      - errorField
    PolicyResponse:
      type: object
      description: Response object for policy operations
      properties:
        rules:
          type: array
          description: A set of policy rules
          items:
            $ref: '#/components/schemas/PolicyRule'
        metadata:
          $ref: '#/components/schemas/PolicyMetadata'
      required:
      - rules
      - metadata
    PolicyRuleCheckResult:
      type: object
      description: The rul

# --- truncated at 32 KB (34 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/fireblocks/refs/heads/main/openapi/fireblocks-policy-editor-beta-api-openapi.yml