---
title: "Get the active draft"
method: GET
path: "/tap/draft"
tags: ["Policy Editor (Beta)"]
---

# Get the active draft

`GET /tap/draft`

## Request

- Base URL: `https://api.fireblocks.io/v1`
- URL: `https://api.fireblocks.io/v1/tap/draft`
- Auth: none declared
- TypeScript: <https://skmtc.dev/fireblocks/apis/fireblocks-api/docs/tap/draft/get.ts> (a function with typed inputs; its response is checked against the schema)

Legacy Endpoint – Returns the active draft and its validation. 
**Note:** 
- This endpoint will remain available for the foreseeable future and is not deprecated. - The `getDraft` endpoint under policy/paths provides policy type-specific operations and improved functionality. - 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.

## Response `200`

A draft validation response object

- LegacyDraftReviewAndValidationResponse: Draft validation
  - `draftResponse` LegacyDraftResponse, required: Response object for draft operations
    - `status` string, required: Operation status
    - `rules` LegacyPolicyRule[], required: Draft rules
      - `operator` string: (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
      - `operators` object: Defines users/groups who can initiate the type of transaction to which the rule applies.
        - `wildcard` '*': If used then this property should appear as the only child property * "*" - All users are allowed
        - `users` string[]: Set of users ids
        - `usersGroups` string[]: Set of group ids
        - `services` string[]: set of services to initiate transactions
      - `transactionType` 'TRANSFER' | 'CONTRACT_CALL' | 'APPROVE' | 'MINT' | 'BURN' | 'SUPPLY' | 'REDEEM' | 'STAKE' | 'RAW' | 'TYPED_MESSAGE' | 'PROGRAM_CALL': Defines the type of transaction to which the rule applies. * TRANSFER - Default. Transfers funds from one account to another * CONTRACT_CALL - Calls a smart contract, mainly for DeFi operations. * APPROVE - Allows a smart contract to withdraw from a designated wallet. * MINT - Perform a mint operation (increase supply) on a supported token * BURN - Perform a burn operation (reduce supply) on a supported token * SUPPLY - Use for DeFi to lend assets * REDEEM - Use for DeFi to get lending back * STAKE - Allows you to allocate and lock certain assets for earning staking rewards. * RAW - An off-chain message with no predefined format, use it to sign any message with your private key. * TYPED_MESSAGE - An off-chain message type that follows a predefined format, used to sign specific messages that are not actual transactions. * PROGRAM_CALL - In Solana refers to invoking on-chain programs (smart contracts) to execute transactions and interact with the blockchain.
      - `designatedSigner` string: (deprecated - replaced by "designatedSigners") Id representing the user who signs transactions that match a specific rule
      - `designatedSigners` object: Set of ids representing the users who signs transactions that match a specific rule
        - `users` string[]: Set of users ids
        - `usersGroups` string[]: Set of group ids
      - `type` 'TRANSFER', required: Policy rule type
      - `action` 'ALLOW' | 'BLOCK' | '2-TIER', required: Defines what occurs when a transaction meets the rule's criteria * ALLOW - The transaction goes through and can be signed without requiring additional approvals * BLOCK - The transaction is automatically blocked * 2-TIER - Only these users or user groups can approve If any of them reject the transaction before the required approval threshold is met, the transaction doesn't go through The list of entities are set is "authorizationGroups" field
      - `asset` string, required: Defines the type of asset being transacted, options are * "*" - All assets * Specific asset
      - `srcType` 'EXCHANGE' | 'UNMANAGED' | 'VAULT' | 'NETWORK_CONNECTION' | 'COMPOUND' | 'FIAT_ACCOUNT' | 'ONE_TIME_ADDRESS' | '*': * 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
      - `srcSubType` 'EXTERNAL' | 'INTERNAL' | 'CONTRACT' | 'EXCHANGETEST' | '*': * 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
      - `srcId` string: Defines the account id, options are * "*" - All accounts * Specific account id
      - `src` object: Defines source accounts the rule allows transfers to originate from
        - `ids` LegacySrcOrDestAttributes[]: A set of ids in a tuple format
          - union[]: Defines source or destination component, options are: * id only * id and type - first item in the array MUST be id. * id, type and subtype - first item in the array MUST be id and second item MUST be type.
            - union
              - …
      - `dstType` 'EXCHANGE' | 'UNMANAGED' | 'VAULT' | 'NETWORK_CONNECTION' | 'COMPOUND' | 'FIAT_ACCOUNT' | 'ONE_TIME_ADDRESS' | '*': * 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
      - `dstSubType` 'EXTERNAL' | 'INTERNAL' | 'CONTRACT' | 'EXCHANGETEST' | '*': * 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
      - `dstId` string: Defines the account id, options are * "*" - All accounts * Specific account id
      - `dst` object: Defines the destination accounts the rule allows transfers to
        - `ids` LegacySrcOrDestAttributes[]: A set of ids in a tuple format
          - union[]: Defines source or destination component, options are: * id only * id and type - first item in the array MUST be id. * id, type and subtype - first item in the array MUST be id and second item MUST be type.
            - union
              - …
      - `dstAddressType` 'WHITELISTED' | 'ONE_TIME' | '*': 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. By default, you can only transfer to an external address after it’s whitelisted. * WHITELISTED - Can only be sent to whitelisted addresses. * ONE_TIME - Can only be sent to non-whitelisted external addresses. * "*" - can be sent to whitelisted addresses or non-whitelisted external
      - `amountCurrency` 'USD' | 'EUR' | 'NATIVE', required: * 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` 'SINGLE_TX' | 'TIMEFRAME', required: * SINGLE_TX - limit applies to a single transaction * TIMEFRAME - limit applies to all transactions within the defined time period
      - `amount` union, required: Defines the value a transaction must exceed for the rule to apply to it (according to the amountCurrency field)
        - string: Numeric string (recommended)
        - number: Number (deprecated)
      - `periodSec` number, required: 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` string[]: (deprecated - replaced by "authorizationGroups") Allowed entities which can approves a transaction
      - `authorizersCount` number: (deprecated - replaced by "authorizationGroups") Min amount of entities which are needed to approve a transaction
      - `authorizationGroups` object: Defines the transaction approval terms
        - `logic` 'AND' | 'OR': * AND - requires approval of all authorization groups * OR - requires approval of at least one of the authorization groups
        - `allowOperatorAsAuthorizer` boolean: Defines whether the user who initiates a transaction can approve their own transaction and count toward the approval threshold for their transaction
        - `groups` object[]: Groups of entities which can approve the transaction
          - `users` string[]: User ids
          - `usersGroups` string[]: Group ids
          - `th` number: Represents the min amount of entities which are required to approve the transaction, default is 1.
      - `amountAggregation` object: 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.
        - `operators` 'PER_SINGLE_MATCH' | 'ACROSS_ALL_MATCHES': * PER_SINGLE_MATCH - Apply the limit to each listed entity * ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities
        - `srcTransferPeers` 'PER_SINGLE_MATCH' | 'ACROSS_ALL_MATCHES': * PER_SINGLE_MATCH - Apply the limit to each listed entity * ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities
        - `dstTransferPeers` 'PER_SINGLE_MATCH' | 'ACROSS_ALL_MATCHES': * PER_SINGLE_MATCH - Apply the limit to each listed entity * ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities
      - `rawMessageSigning` object: Raw message signing configuration
        - `algorithm` string
        - `derivationPath` object
          - `path` number[]
      - `applyForApprove` boolean: Applying this rule over APPROVE type transactions (can only be enabled when rule's transaction type is TRANSFER)
      - `applyForTypedMessage` boolean: Applying this rule over TYPED_MESSAGE type transactions (can only be enabled when rule's transaction type is CONTRACT_CALL)
      - `externalDescriptor` string: A unique id identifying the rule
    - `draftId` string, required: Draft unique id
    - `metadata` LegacyPolicyMetadata, required: Policy related metadata
      - `editedBy` string: The user id of the user who last edited the policy
      - `editedAt` string: The timestamp of the last edit of the policy
      - `publishedBy` string: The user id of the user who last published the policy
      - `publishedAt` string: The timestamp of the last publish of the policy
  - `validation` LegacyPolicyValidation, required: Policy validation object
    - `status` string, required: Validation status
    - `checkResult` LegacyPolicyCheckResult, required: Policy rules validation result
      - `errors` number, required: Number of errors
      - `results` LegacyPolicyRuleCheckResult[], required: A set of validation results
        - `index` number, required: Rule index number in the policy
        - `status` 'ok' | 'failure', required: Validation status
        - `errors` LegacyPolicyRuleError[], required: A set of rule validation error objects
          - `errorMessage` string, required: Error message
          - `errorCode` number, required: error code
          - `errorCodeName` string, required: error code name
          - `errorField` 'operator' | 'operators' | 'authorizationGroups' | 'designatedSigner' | 'designatedSigners' | 'contractMethods' | 'amountAggregation' | 'src' | 'dst', required: 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

## Other responses

- `default`: Error Response

---

[API](https://skmtc.dev/fireblocks/apis/fireblocks-api.md) - [All operations](https://skmtc.dev/fireblocks/apis/fireblocks-api/llms.txt) - [OpenAPI document](https://skmtc.dev/fireblocks/apis/fireblocks-api/revisions/4eba9965659a?raw)
