fireblocks Policy Editor V2 (Beta) API

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

OpenAPI Specification

fireblocks-policy-editor-v2-beta-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: Fireblocks Blockchains and Assets Approval Requests Policy Editor V2 (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 V2 (Beta)
paths:
  /policy/active_policy:
    get:
      operationId: getActiveV2Policy
      summary: Get the active policy and its validation by policy type
      description: '**Note:** This endpoint is currently in beta and subject to change. If you want to participate in the Policies beta, contact your Fireblocks Customer Success Manager or send an email to csm@fireblocks.com.


        Returns the active policy and its validation for a specific policy type.


        **Endpoint Permissions:** Owner, Admin, Non-Signing Admin.

        '
      tags:
      - Policy Editor V2 (Beta)
      x-rate-limit-category: query
      parameters:
      - name: policyType
        in: query
        required: true
        description: The policy type(s) to retrieve. Can be a single type or multiple types by repeating the parameter (e.g., ?policyType=TRANSFER&policyType=MINT).
        schema:
          $ref: '#/components/schemas/PolicyTypeV2'
      x-readme:
        code-samples:
        - language: python
          code: '# Single policy type

            policy = fireblocks.get_active_policy(policyType="TRANSFER")

            # Multiple policy types

            policy = fireblocks.get_active_policy(policyType=["TRANSFER", "MINT"])

            '
          name: Fireblocks SDK Python example
        - language: javascript
          code: '// Single policy type

            const policy = await fireblocks.getActivePolicy({policyType: "TRANSFER"});

            // Multiple policy types

            const policy = await fireblocks.getActivePolicy({policyType: ["TRANSFER", "MINT"]});

            '
          name: Fireblocks SDK Javascript example
      responses:
        '200':
          description: A policy object with validation
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PolicyAndValidationResponseV2'
        default:
          $ref: '#/components/responses/Error'
  /policy/draft:
    get:
      operationId: getV2Draft
      summary: Get the active draft by policy type
      description: '**Note:** This endpoint is currently in beta and subject to change. If you want to participate in the Policies beta, contact your Fireblocks Customer Success Manager or send an email to csm@fireblocks.com.


        Returns the active draft and its validation for a specific policy type.


        **Endpoint Permissions:** Owner, Admin, Non-Signing Admin.

        '
      tags:
      - Policy Editor V2 (Beta)
      x-rate-limit-category: read
      parameters:
      - name: policyType
        in: query
        required: true
        description: The policy type(s) to retrieve. Can be a single type or multiple types by repeating the parameter (e.g., ?policyType=TRANSFER&policyType=MINT).
        schema:
          $ref: '#/components/schemas/PolicyTypeV2'
      x-readme:
        code-samples:
        - language: python
          code: '# Single policy type

            draft = fireblocks.get_draft(policyType="TRANSFER")

            # Multiple policy types

            draft = fireblocks.get_draft(policyType=["TRANSFER", "MINT"])

            '
          name: Fireblocks SDK Python example
        - language: javascript
          code: '// Single policy type

            const draft = await fireblocks.getDraft({policyType: "TRANSFER"});

            // Multiple policy types

            const draft = await fireblocks.getDraft({policyType: ["TRANSFER", "MINT"]});

            '
          name: Fireblocks SDK Javascript 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/DraftReviewAndValidationResponseV2'
        default:
          $ref: '#/components/responses/Error'
    put:
      operationId: updateV2Draft
      summary: Update the draft with a new set of rules by policy types
      description: "**Note:** This endpoint is currently in beta and subject to change. If you want to participate in the Policies beta, contact your Fireblocks Customer Success Manager or send an email to csm@fireblocks.com.\n\nUpdates the draft and returns its validation for specific policy types.  \n\n**Endpoint Permissions:** Owner, Admin, Non-Signing Admin.\n"
      tags:
      - Policy Editor V2 (Beta)
      x-rate-limit-category: write
      parameters:
      - $ref: '#/components/parameters/X-Idempotency-Key'
      x-readme:
        code-samples:
        - language: python
          code: 'draft = fireblocks.update_draft({"policyTypes": ["TRANSFER"], "rules": rules})

            '
          name: Fireblocks SDK Python example
        - language: javascript
          code: 'const draft = await fireblocks.updateDraft({policyTypes: ["TRANSFER"], rules: rules});

            '
          name: Fireblocks SDK Javascript example
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateDraftRequestV2'
      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/DraftReviewAndValidationResponseV2'
        default:
          $ref: '#/components/responses/Error'
    post:
      operationId: publishV2Draft
      summary: Send publish request for a certain draft ID
      description: "**Note:** This endpoint is currently in beta and subject to change. If you want to participate in the Policies beta, contact your Fireblocks Customer Success Manager or send an email to csm@fireblocks.com.\n\nPublishes a draft policy by request, and returns the response.\n\n**Endpoint Permissions:** Owner, Admin, Non-Signing Admin.        \n"
      tags:
      - Policy Editor V2 (Beta)
      x-rate-limit-category: write
      x-readme:
        code-samples:
        - language: python
          code: 'policy = fireblocks.publish_draft({"policyTypes": ["TRANSFER"], "draftId": "draft-123"})

            '
          name: Fireblocks SDK Python example
        - language: javascript
          code: 'const policy = await fireblocks.publishDraft({policyTypes: ["TRANSFER"], draftId: "draft-123"});

            '
          name: Fireblocks SDK Javascript 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/PublishResultV2'
        default:
          $ref: '#/components/responses/Error'
components:
  schemas:
    AssetConfigV2:
      type: object
      description: Policy asset configuration
      properties:
        nftTransfer:
          type: boolean
          description: Whether this is an NFT transfer
          example: false
        assetTypes:
          $ref: '#/components/schemas/AssetTypesConfigV2'
        operator:
          $ref: '#/components/schemas/PolicyOperatorV2'
      required:
      - nftTransfer
    DestinationConfigV2:
      type: object
      description: Destination configuration for policy rules
      properties:
        type:
          $ref: '#/components/schemas/AccountTypeV2'
        subType:
          type: array
          items:
            $ref: '#/components/schemas/AccountIdentifierV2'
        ids:
          type: array
          items:
            $ref: '#/components/schemas/AccountIdentifierV2'
        operator:
          $ref: '#/components/schemas/PolicyOperatorV2'
        matchFrom:
          type: string
          enum:
          - ACCOUNT
          - SOURCE
          description: Whether to match from account or source
          example: ACCOUNT
        addressType:
          type: string
          enum:
          - ALL
          - '*'
          - WHITELISTED
          - ONE_TIME
          - OEC_PARTNER
          description: Type of destination addresses allowed
          example: WHITELISTED
      required:
      - type
      - operator
      - addressType
      example:
        type:
        - EXTERNAL
        operator: INCLUDES
        addressType: WHITELISTED
    PolicyAndValidationResponseV2:
      type: object
      description: Policy validation
      properties:
        policy:
          $ref: '#/components/schemas/PolicyResponseV2'
        validation:
          $ref: '#/components/schemas/PolicyValidationV2'
      required:
      - policy
      - validation
    DraftResponseV2:
      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/PolicyRuleV2'
        draftId:
          type: string
          description: Draft unique id
        metadata:
          $ref: '#/components/schemas/PolicyMetadataV2'
      required:
      - draftId
      - status
      - rules
      - metadata
    PolicyCheckResultV2:
      type: object
      description: Policy rules validation result
      properties:
        errors:
          type: number
          description: Number of errors
        results:
          type: array
          description: A set of validation results
          items:
            $ref: '#/components/schemas/PolicyRuleCheckResultV2'
      required:
      - errors
      - results
    AccountTypeV2:
      type: string
      enum:
      - EXCHANGE
      - UNMANAGED
      - VAULT
      - GLOBAL_WHITELIST
      - NETWORK_CONNECTION
      - FIAT_ACCOUNT
      - CONNECTED_ACCOUNT
      - ONE_TIME_ADDRESS
      - SRC_DST_NA
      - MULTIPLE_VENUES
      - END_USER_WALLET
      - OEC_PARTNER
      - CONTRACT
      - INTERNAL
      - EXTERNAL
      - DAPP_CONNECTION
      - UNKNOWN
      - '*'
      - ANY
      description: Type of account
      example: VAULT
    PolicyMetadataV2:
      type: object
      description: Policy metadata
      properties:
        editedBy:
          type: string
          description: The user ID of the user who last edited the policy
          example: user123
        editedAt:
          type: string
          description: The timestamp of the last edit of the policy
          example: '2024-01-15T10:30:00Z'
        publishedBy:
          type: string
          description: The user ID of the user who last published the policy
          example: user456
        publishedAt:
          type: string
          description: The timestamp of the last publish of the policy
          example: '2024-01-15T11:00:00Z'
        policyType:
          $ref: '#/components/schemas/PolicyTypeV2'
      required:
      - policyType
    ProgramCallConfigV2:
      type: object
      description: Program call configuration
      properties:
        allowedSolanaProgramCalls:
          type: string
          enum:
          - '*'
          - WHITELISTED
          description: Whether Solana program calls are allowed
          example: WHITELISTED
      required:
      - allowedSolanaProgramCalls
    UpdateDraftRequestV2:
      type: object
      description: Request schema for updating draft with policy types and rules
      required:
      - policyTypes
      - rules
      properties:
        policyTypes:
          type: array
          items:
            $ref: '#/components/schemas/PolicyTypeV2'
        rules:
          type: array
          description: Array of policy rules
          items:
            $ref: '#/components/schemas/PolicyRuleV2'
    AccountIdentifierV2:
      type: object
      description: Account identifier with type, ID, subtype, and address
      properties:
        type:
          $ref: '#/components/schemas/AccountTypeV2'
        id:
          type: string
          description: Account ID
          example: account123
        subType:
          type: string
          description: Account subtype
          example: INTERNAL
        address:
          type: string
          description: Account address
          example: 0x123...
      required:
      - type
    PolicyUserIdsV2:
      type: array
      items:
        type: string
      description: List of user IDs
      example:
      - user1
      - user2
    DerivationPathConfigV2:
      type: object
      description: Derivation path configuration
      properties:
        path:
          type: array
          items:
            type: number
          description: Derivation path as array of numbers
          example:
          - 44
          - 0
          - 0
          - 0
          - 0
        partial:
          type: boolean
          description: Whether this is a partial path
          example: false
      required:
      - path
      example:
        path:
        - 44
        - 0
        - 0
        - 0
        - 0
        partial: false
    PolicyRuleV2:
      type: object
      description: V2 Policy rule which is enforced on transactions
      properties:
        name:
          type: string
          description: Name of the policy rule
          example: High Value Transfer Policy
        id:
          type: string
          description: Unique identifier for the policy rule
          example: policy_rule_001
        policyEngineVersion:
          type: string
          enum:
          - v2
          description: Policy engine version
          example: v2
        type:
          $ref: '#/components/schemas/PolicyTypeV2'
        subType:
          $ref: '#/components/schemas/PolicyTypeV2'
        initiator:
          $ref: '#/components/schemas/InitiatorConfigPatternV2'
        asset:
          $ref: '#/components/schemas/AssetConfigV2'
        source:
          $ref: '#/components/schemas/AccountConfigV2'
        destination:
          $ref: '#/components/schemas/DestinationConfigV2'
        account:
          $ref: '#/components/schemas/AccountConfigV2'
        verdict:
          $ref: '#/components/schemas/VerdictConfigV2'
        amountOverTime:
          $ref: '#/components/schemas/AmountOverTimeConfigV2'
        amount:
          $ref: '#/components/schemas/AmountRangeV2'
        externalDescriptor:
          type: string
          description: External descriptor for the rule
          example: High value transfer policy for institutional clients
        method:
          $ref: '#/components/schemas/ContractMethodPatternV2'
        isGlobalPolicy:
          type: boolean
          description: Whether this is a global policy
          example: false
        programCall:
          $ref: '#/components/schemas/ProgramCallConfigV2'
        screeningMetadata:
          $ref: '#/components/schemas/ScreeningMetadataConfigV2'
        quoteAsset:
          $ref: '#/components/schemas/AssetConfigV2'
        baseAsset:
          $ref: '#/components/schemas/AssetConfigV2'
        quoteAmount:
          $ref: '#/components/schemas/AmountRangeV2'
        baseAmount:
          $ref: '#/components/schemas/AmountRangeV2'
        derivationPath:
          $ref: '#/components/schemas/DerivationPathConfigV2'
        index:
          type: number
          description: Index for the policy rule
          example: 1
      required:
      - name
      - id
      - policyEngineVersion
      - type
      - initiator
      - asset
      - source
      - verdict
    AmountOverTimeConfigV2:
      type: object
      description: Amount over time configuration
      properties:
        range:
          type: object
          description: Amount range configuration
          properties:
            min:
              type: string
              description: Minimum amount
              example: '100'
            max:
              type: string
              description: Maximum amount (optional)
              example: '10000'
          required:
          - min
        currency:
          type: string
          enum:
          - NATIVE
          - USD
          - EUR
          description: Currency for the amount
          example: USD
        timePeriod:
          $ref: '#/components/schemas/TimePeriodConfigV2'
      required:
      - range
      - timePeriod
    InitiatorConfigV2:
      type: object
      description: Policy rule initiator configuration
      properties:
        users:
          $ref: '#/components/schemas/PolicyUserIdsV2'
        groups:
          $ref: '#/components/schemas/PolicyGroupIdsV2'
        services:
          type: array
          items:
            type: string
        fbAdminGroups:
          type: array
          items:
            type: string
        exchange:
          type: array
          items:
            type: string
        operator:
          $ref: '#/components/schemas/PolicyOperatorV2'
      required:
      - operator
    PolicyOperatorV2:
      type: string
      enum:
      - INCLUDES
      - EXCLUDES
      description: Operator for selection
      example: INCLUDES
    PolicyStatusV2:
      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

        '
    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
    ContractMethodPatternV2:
      oneOf:
      - type: string
        enum:
        - '*'
        description: All methods allowed
        example: '*'
      - $ref: '#/components/schemas/ContractMethodConfigV2'
    TimePeriodConfigV2:
      type: object
      description: Time period configuration
      properties:
        seconds:
          type: string
          description: Time period in seconds
          example: '86400'
        initiator:
          $ref: '#/components/schemas/TimePeriodMatchTypeV2'
        source:
          $ref: '#/components/schemas/TimePeriodMatchTypeV2'
        destination:
          $ref: '#/components/schemas/TimePeriodMatchTypeV2'
      required:
      - seconds
      - initiator
      - source
      - destination
    ErrorSchema:
      type: object
      properties:
        message:
          type: string
        code:
          type: number
    AccountConfigV2:
      type: object
      description: Policy source/destination configuration
      properties:
        type:
          $ref: '#/components/schemas/AccountTypeV2'
        subType:
          type: array
          items:
            $ref: '#/components/schemas/AccountIdentifierV2'
        ids:
          type: array
          items:
            $ref: '#/components/schemas/AccountIdentifierV2'
        operator:
          $ref: '#/components/schemas/PolicyOperatorV2'
        matchFrom:
          type: string
          enum:
          - ACCOUNT
          - SOURCE
          description: Whether to match from account or source
      example: ACCOUNT
      required:
      - type
      - operator
    ContractMethodConfigV2:
      type: object
      description: Contract method configuration
      properties:
        methodCalls:
          type: array
          items:
            type: string
        operator:
          type: string
          enum:
          - EITHER
          - EXACT
          description: Operator for method calls
          example: EITHER
        payloadSuffix:
          type: string
          description: Payload suffix for method calls
          example: 0x123...
      required:
      - methodCalls
      - operator
      example:
        methodCalls:
        - transfer
        - approve
        operator: EITHER
    PolicyValidationV2:
      type: object
      description: Policy validation object
      properties:
        status:
          type: string
          description: Validation status
        checkResult:
          $ref: '#/components/schemas/PolicyCheckResultV2'
      required:
      - status
      - checkResult
    PolicyRuleCheckResultV2:
      type: object
      description: The rule validation result
      properties:
        index:
          type: number
          description: Rule index number in the policy
        status:
          type: string
          description: Validation status
          enum:
          - ok
          - failure
        errors:
          type: array
          description: A set of rule validation error objects
          items:
            $ref: '#/components/schemas/PolicyRuleErrorV2'
      required:
      - index
      - status
      - errors
    AmountRangeV2:
      type: object
      description: Amount range configuration
      properties:
        min:
          type: string
          description: Minimum amount
          example: '100'
        max:
          type: string
          description: Maximum amount
          example: '10000'
        currency:
          type: string
          description: Currency for the amount
          example: USD
      required:
      - min
      - max
      - currency
      example:
        min: '100'
        max: '10000'
        currency: USD
    PublishResultV2:
      type: object
      description: Response object of the publish policy operation
      properties:
        status:
          $ref: '#/components/schemas/PolicyStatusV2'
        rules:
          type: array
          items:
            $ref: '#/components/schemas/PolicyRuleV2'
        checkResult:
          $ref: '#/components/schemas/PolicyCheckResultV2'
        metadata:
          $ref: '#/components/schemas/PolicyMetadataV2'
      required:
      - status
      - rules
      - checkResult
      - metadata
    VerdictConfigV2:
      type: object
      description: Verdict configuration
      properties:
        action:
          type: string
          enum:
          - ALLOW
          - BLOCK
          - 2-TIER
          - ACCEPT
          - REJECT
          - ALERT
          - SCREEN
          - PASS
          - WAIT
          - FREEZE
          - CANCEL
          description: Verdict action
          example: ALLOW
        approvers:
          $ref: '#/components/schemas/ApproversConfigV2'
        designatedSigners:
          $ref: '#/components/schemas/DesignatedSignersConfigV2'
      required:
      - action
    PolicyRuleErrorV2:
      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
    PolicyResponseV2:
      type: object
      description: Response object for policy operations
      properties:
        rules:
          type: array
          description: A set of policy rules
          items:
            $ref: '#/components/schemas/PolicyRuleV2'
        metadata:
          $ref: '#/components/schemas/PolicyMetadataV2'
      required:
      - rules
      - metadata
    InitiatorConfigPatternV2:
      oneOf:
      - type: string
        enum:
        - '*'
        description: All users are allowed
        example: '*'
      - $ref: '#/components/schemas/InitiatorConfigV2'
    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
    AssetTypesConfigV2:
      type: array
      items:
        oneOf:
        - type: string
        - enum:
          - '*'
      description: List of asset types
      example:
      - FUNGIBLE
      - NFT
      - '*'
    PolicyGroupIdsV2:
      type: array
      items:
        type: string
      description: List of policy group IDs
      example:
      - group1
      - group2
    DesignatedSignersConfigV2:
      type: object
      description: Designated signers configuration
      properties:
        type:
          type: string
          enum:
          - SINGLE
          - MULTIPLE
          - INITIATOR
          description: Type of designated signers
          example: SINGLE
        users:
          $ref: '#/components/schemas/PolicyUserIdsV2'
        groups:
          $ref: '#/components/schemas/PolicyGroupIdsV2'
      required:
      - type
    ScreeningMetadataConfigV2:
      type: object
      description: Screening metadata configuration
      properties:
        direction:
          type: string
          enum:
          - INBOUND
          - OUTBOUND
          - ANY
          description: Direction of transaction
          example: OUTBOUND
        provider:
          type: string
          enum:
          - CHAINALYSIS
          - CHAINALYSIS_V2
          - ELLIPTIC
          - ELLIPTIC_HOLISTIC
          - NOTABENE
          nullable: true
          description: Screening provider
          example: CHAINALYSIS
        riskRating:
          type: string
          enum:
          - LOW
          - MEDIUM
          - HIGH
          - SEVERE
          - ANY
          description: Risk rating threshold
          example: MEDIUM
        riskScore:
          type: string
          description: Risk score threshold
          example: '0.8'
        exposureType:
          type: string
          enum:
          - DIRECT
          - INDIRECT
          - ANY
          description: Exposure type
          example: DIRECT
        category:
          type: array
          items:
            type: string
        name:
          type: array
          items:
            type: string
        categoryId:
          type: array
          items:
            type: string
        status:
          type: string
          enum:
          - COMPLETED
          - PENDING
          - REJECTED
          - FAILED
          - CANCELED
          - BLOCKING_TIME_EXPIRED
          description: Transaction status
          example: COMPLETED
        sourceAddress:
          type: string
          description: Source address
          example: 0x123...
        destAddress:
          type: string
          description: Destination address
          example: 0x456...
      required:
      - direction
    TimePeriodMatchTypeV2:
      type: string
      enum:
      - PER_SINGLE_MATCH
      - ACROSS_ALL_MATCHES
      description: Type of match for time period application
      example: PER_SINGLE_MATCH
    DraftReviewAndValidationResponseV2:
      type: object
      description: Draft validation
      properties:
        draftResponse:
          $ref: '#/components/schemas/DraftResponseV2'
        validation:
          $ref: '#/components/schemas/PolicyValidationV2'
      required:
      - draftResponse
      - validation
    ApproversConfigV2:
      type: object
      description: Approvers configuration
      properties:
        canInitiatorApprove:
          type: boolean
          description: Whether initiator can approve
          example: false
        operator:
          type: string
          enum:
          - AND
          - OR
          description: Operator for approval groups
          example: AND
        allowOperatorAsAuthorizer:
          type: boolean
          description: Whether operator can be authorizer
          example: false
        approvalGroups:
          type: array
          items:
            type: object
            properties:
              threshold:
                type: number
                description: Approval threshold
                example: 2
              users:
                $ref: '#/components/schemas/PolicyUserIdsV2'
              groups:
                $ref: '#/components/schemas/PolicyGroupIdsV2'
            required:
            - threshold
          description: List of approval groups
          example:
          - threshold: 2
            users:
            - user1
            - user2
  responses:
    Error:
      description: Error Response
      headers:
        X-Request-ID:
          $ref: '#/components/headers/X-Request-ID'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorSchema'
  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
  securitySchemes:
    bearerTokenAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key