Get the active draft by policy type
Returns the active draft and its validation for a specific policy type.
GET
/
policy
/
draft
TypeScript
const response: Promise<FireblocksResponse<DraftReviewAndValidationResponse>> = fireblocks.policyEditorV2.getDraft(policyEditorV2ApiGetDraftRequest);{
"draftResponse": {
"status": "<string>",
"rules": [
{
"name": "High Value Transfer Policy",
"id": "policy_rule_001",
"policyEngineVersion": "v2",
"type": "TRANSFER",
"initiator": "*",
"source": {
"operator": "INCLUDES",
"type": [
"VAULT",
"UNMANAGED"
],
"subType": [
{
"type": "VAULT",
"id": "account123",
"subType": "INTERNAL",
"address": "0x123..."
}
],
"ids": [
{
"type": "VAULT",
"id": "account123",
"subType": "INTERNAL",
"address": "0x123..."
}
],
"tags": [
{
"id": "tag_001"
}
],
"matchFrom": "ACCOUNT"
},
"verdict": {
"action": "ALLOW",
"approvers": {
"canInitiatorApprove": false,
"operator": "AND",
"allowOperatorAsAuthorizer": false,
"approvalGroups": [
{
"threshold": 2,
"users": [
"user1",
"user2"
]
}
]
},
"designatedSigners": {
"type": "SINGLE",
"users": [
"user1",
"user2"
],
"groups": [
"group1",
"group2"
]
}
},
"subType": "TRANSFER",
"asset": {
"nftTransfer": false,
"assetTypes": [
"FUNGIBLE",
"NFT",
"*"
],
"operator": "INCLUDES"
},
"destination": {
"type": [
"EXTERNAL"
],
"operator": "INCLUDES",
"addressType": "WHITELISTED"
},
"account": {
"operator": "INCLUDES",
"type": [
"VAULT"
],
"subType": [
{
"type": "VAULT",
"id": "account123",
"subType": "INTERNAL",
"address": "0x123..."
}
],
"ids": [
{
"type": "VAULT",
"id": "account123",
"subType": "INTERNAL",
"address": "0x123..."
}
],
"tags": [
{
"id": "tag_001"
}
],
"matchFrom": "ACCOUNT"
},
"side": "BUY",
"amountOverTime": {
"range": {
"min": "100",
"max": "10000"
},
"currency": "USD",
"timePeriod": {
"seconds": "86400",
"initiator": "PER_SINGLE_MATCH",
"source": "PER_SINGLE_MATCH",
"destination": "PER_SINGLE_MATCH"
}
},
"amount": {
"range": {
"min": "100",
"max": "10000"
},
"currency": "USD"
},
"externalDescriptor": "High value transfer policy for institutional clients",
"method": "*",
"isGlobalPolicy": false,
"programCall": {
"allowedSolanaProgramCalls": "WHITELISTED"
},
"screeningMetadata": {
"direction": "OUTBOUND",
"provider": "CHAINALYSIS",
"riskRating": "MEDIUM",
"riskScore": "0.8",
"exposureType": "DIRECT",
"category": [
"<string>"
],
"name": [
"<string>"
],
"categoryId": [
"<string>"
],
"status": "COMPLETED",
"sourceAddress": "0x123...",
"destAddress": "0x456..."
},
"quoteAsset": {
"nftTransfer": false,
"assetTypes": [
"FUNGIBLE",
"NFT",
"*"
],
"operator": "INCLUDES"
},
"baseAsset": {
"nftTransfer": false,
"assetTypes": [
"FUNGIBLE",
"NFT",
"*"
],
"operator": "INCLUDES"
},
"quoteAmount": {
"range": {
"min": "100",
"max": "10000"
}
},
"baseAmount": {
"range": {
"min": "100",
"max": "10000"
}
},
"dAppAddress": {
"globalWhitelisted": [
"rabby.io",
"jup.ag"
],
"tenantWhitelisted": [
"uniswap.com",
"opensea.io"
],
"urls": [
"*"
],
"operator": "INCLUDES"
},
"derivationPath": {
"path": [
44,
0,
0,
0,
0
],
"partial": false
},
"index": 1
}
],
"draftId": "<string>",
"metadata": {
"TRANSFER": {
"editedBy": "user123",
"editedAt": "2024-01-15T10:30:00Z",
"publishedBy": "user456",
"publishedAt": "2024-01-15T11:00:00Z"
}
}
},
"validation": {
"status": "<string>",
"checkResult": {
"errors": 123,
"results": [
{
"index": 123,
"errors": [
{
"errorMessage": "<string>",
"errorCode": 123,
"errorCodeName": "<string>"
}
]
}
]
}
}
}Query Parameters
The policy type(s) to retrieve. Can be a single type or multiple types by repeating the parameter (e.g., ?policyType=TRANSFER&policyType=MINT). Policy type enumeration
Available options:
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 Example:
"TRANSFER"
Was this page helpful?
Previous
Update the draft with a new set of rules by policy typesUpdate the draft and return its validation for specific policy types.
**⚠️ IMPORTANT SECURITY NOTICE:**
The Fireblocks Policy is a critical security guardrail. Programmatically modifying your policy via the API introduces significant security risks. As an industry best practice, Fireblocks strongly recommends manual editing accompanied by strict human oversight and approval workflows for all policy changes. Programmatic updates should only be implemented by advanced users with comprehensive, multi-layer security controls in place.
Next
⌘I
TypeScript
const response: Promise<FireblocksResponse<DraftReviewAndValidationResponse>> = fireblocks.policyEditorV2.getDraft(policyEditorV2ApiGetDraftRequest);{
"draftResponse": {
"status": "<string>",
"rules": [
{
"name": "High Value Transfer Policy",
"id": "policy_rule_001",
"policyEngineVersion": "v2",
"type": "TRANSFER",
"initiator": "*",
"source": {
"operator": "INCLUDES",
"type": [
"VAULT",
"UNMANAGED"
],
"subType": [
{
"type": "VAULT",
"id": "account123",
"subType": "INTERNAL",
"address": "0x123..."
}
],
"ids": [
{
"type": "VAULT",
"id": "account123",
"subType": "INTERNAL",
"address": "0x123..."
}
],
"tags": [
{
"id": "tag_001"
}
],
"matchFrom": "ACCOUNT"
},
"verdict": {
"action": "ALLOW",
"approvers": {
"canInitiatorApprove": false,
"operator": "AND",
"allowOperatorAsAuthorizer": false,
"approvalGroups": [
{
"threshold": 2,
"users": [
"user1",
"user2"
]
}
]
},
"designatedSigners": {
"type": "SINGLE",
"users": [
"user1",
"user2"
],
"groups": [
"group1",
"group2"
]
}
},
"subType": "TRANSFER",
"asset": {
"nftTransfer": false,
"assetTypes": [
"FUNGIBLE",
"NFT",
"*"
],
"operator": "INCLUDES"
},
"destination": {
"type": [
"EXTERNAL"
],
"operator": "INCLUDES",
"addressType": "WHITELISTED"
},
"account": {
"operator": "INCLUDES",
"type": [
"VAULT"
],
"subType": [
{
"type": "VAULT",
"id": "account123",
"subType": "INTERNAL",
"address": "0x123..."
}
],
"ids": [
{
"type": "VAULT",
"id": "account123",
"subType": "INTERNAL",
"address": "0x123..."
}
],
"tags": [
{
"id": "tag_001"
}
],
"matchFrom": "ACCOUNT"
},
"side": "BUY",
"amountOverTime": {
"range": {
"min": "100",
"max": "10000"
},
"currency": "USD",
"timePeriod": {
"seconds": "86400",
"initiator": "PER_SINGLE_MATCH",
"source": "PER_SINGLE_MATCH",
"destination": "PER_SINGLE_MATCH"
}
},
"amount": {
"range": {
"min": "100",
"max": "10000"
},
"currency": "USD"
},
"externalDescriptor": "High value transfer policy for institutional clients",
"method": "*",
"isGlobalPolicy": false,
"programCall": {
"allowedSolanaProgramCalls": "WHITELISTED"
},
"screeningMetadata": {
"direction": "OUTBOUND",
"provider": "CHAINALYSIS",
"riskRating": "MEDIUM",
"riskScore": "0.8",
"exposureType": "DIRECT",
"category": [
"<string>"
],
"name": [
"<string>"
],
"categoryId": [
"<string>"
],
"status": "COMPLETED",
"sourceAddress": "0x123...",
"destAddress": "0x456..."
},
"quoteAsset": {
"nftTransfer": false,
"assetTypes": [
"FUNGIBLE",
"NFT",
"*"
],
"operator": "INCLUDES"
},
"baseAsset": {
"nftTransfer": false,
"assetTypes": [
"FUNGIBLE",
"NFT",
"*"
],
"operator": "INCLUDES"
},
"quoteAmount": {
"range": {
"min": "100",
"max": "10000"
}
},
"baseAmount": {
"range": {
"min": "100",
"max": "10000"
}
},
"dAppAddress": {
"globalWhitelisted": [
"rabby.io",
"jup.ag"
],
"tenantWhitelisted": [
"uniswap.com",
"opensea.io"
],
"urls": [
"*"
],
"operator": "INCLUDES"
},
"derivationPath": {
"path": [
44,
0,
0,
0,
0
],
"partial": false
},
"index": 1
}
],
"draftId": "<string>",
"metadata": {
"TRANSFER": {
"editedBy": "user123",
"editedAt": "2024-01-15T10:30:00Z",
"publishedBy": "user456",
"publishedAt": "2024-01-15T11:00:00Z"
}
}
},
"validation": {
"status": "<string>",
"checkResult": {
"errors": 123,
"results": [
{
"index": 123,
"errors": [
{
"errorMessage": "<string>",
"errorCode": 123,
"errorCodeName": "<string>"
}
]
}
]
}
}
}