Skip to main content
Defined in: client/policies/policies.ts:25 The namespace containing all Policy methods.

Implements

Constructors

Constructor

new PoliciesClient(): PoliciesClient;

Returns

PoliciesClient

Methods

createPolicy()

createPolicy(options: CreatePolicyOptions): Promise<Policy>;
Defined in: client/policies/policies.ts:186 Creates a new policy that can be used to govern the behavior of projects and accounts.

Parameters

options
CreatePolicyOptions Options for creating the policy

Returns

Promise<Policy> The created policy

Throws

When the policy is invalid

Examples

         const policy = await cdp.policies.createPolicy({
           policy: {
             scope: "account",
             description: "Limits the amount of ETH in transaction",
             rules: [
               {
                 action: "reject",
                 operation: "signEvmTransaction",
                 criteria: [
                   {
                     type: "ethValue",
                     ethValue: "1000000000000000000",
                     operator: ">",
                   },
                 ],
               },
             ],
           }
         });
         const policy = await cdp.policies.createPolicy({
           policy: {
             scope: "account",
             description: "Limits SOL transfers and SPL token operations",
             rules: [
               {
                 action: "reject",
                 operation: "signSolTransaction",
                 criteria: [
                   {
                     type: "solValue",
                     solValue: "1000000000", // 1 SOL in lamports
                     operator: ">",
                   },
                   {
                     type: "solAddress",
                     addresses: ["9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"],
                     operator: "in",
                   },
                 ],
               },
               {
                 action: "accept",
                 operation: "sendSolTransaction",
                 criteria: [
                   {
                     type: "mintAddress",
                     addresses: ["EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"], // USDC mint
                     operator: "in",
                   },
                 ],
               },
             ],
           }
         });
         const idempotencyKey = uuidv4();

         // First call creates the policy
         const policy = await cdp.policies.createPolicy({
           policy: {
             scope: "account",
             description: "Limits the amount of ETH in transaction",
             rules: [
               {
                 action: "reject",
                 operation: "signEvmTransaction",
                 criteria: [
                   {
                     type: "ethValue",
                     ethValue: "1000000000000000000",
                     operator: ">",
                   },
                 ],
               },
             ],
           },
           idempotencyKey
         });

         // Second call with same key returns the same policy
         const samePolicy = await cdp.policies.createPolicy({
           policy: { ... },
           idempotencyKey
         });

Implementation of

PoliciesClientInterface.createPolicy

deletePolicy()

deletePolicy(options: DeletePolicyOptions): Promise<void>;
Defined in: client/policies/policies.ts:267 Deletes a policy by its unique identifier. If a policy is referenced by an active project or account, this operation will fail.

Parameters

options
DeletePolicyOptions Options containing the policy ID to delete

Returns

Promise<void> Void on successful deletion

Examples

         await cdp.policies.deletePolicy({
           id: "__ID__"
         });
         const idempotencyKey = uuidv4();

         // This operation is idempotent with the key
         await cdp.policies.deletePolicy({
           id: "__ID__",
           idempotencyKey
         });

Implementation of

PoliciesClientInterface.deletePolicy

getPolicyById()

getPolicyById(options: GetPolicyByIdOptions): Promise<Policy>;
Defined in: client/policies/policies.ts:226 Retrieves a policy by its unique identifier.

Parameters

options
GetPolicyByIdOptions Options containing the policy ID to retrieve

Returns

Promise<Policy> The requested policy

Example

         const policy = await cdp.policies.getPolicyById({
           id: "__ID__"
         });

         console.log(policy.name);
         console.log(policy.rules);

Implementation of

PoliciesClientInterface.getPolicyById

listPolicies()

listPolicies(options?: ListPoliciesOptions): Promise<ListPoliciesResult>;
Defined in: client/policies/policies.ts:63 Lists policies belonging to the developer’s CDP Project. Can be filtered by scope (project or account).

Parameters

options?
ListPoliciesOptions = {} Options for filtering and paginating the results

Returns

Promise<ListPoliciesResult> A paginated list of policies

Examples

         const { policies } = await cdp.policies.listPolicies();
         const &#123; policies &#125; = await cdp.policies.listPolicies({
           scope: 'project'
         });
         // Get first page
         const firstPage = await cdp.policies.listPolicies({
           pageSize: 10
         });

         // Get next page using cursor
         const nextPage = await cdp.policies.listPolicies({
           pageSize: 10,
           pageToken: firstPage.pageToken
         });

Implementation of

PoliciesClientInterface.listPolicies

updatePolicy()

updatePolicy(options: UpdatePolicyOptions): Promise<Policy>;
Defined in: client/policies/policies.ts:360 Updates an existing policy by its unique identifier. This will apply the updated policy to any project or accounts that are currently using it.

Parameters

options
UpdatePolicyOptions Options containing the policy ID and updated policy data

Returns

Promise<Policy> The updated policy

Throws

When the updated policy is invalid

Examples

         const updatedPolicy = await cdp.policies.updatePolicy({
           id: "__ID__",
           policy: {
             description: "Now with lower transaction limits",
             rules: [
               {
                 action: "reject",
                 operation: "signEvmTransaction",
                 criteria: [
                   {
                     type: "ethValue",
                     ethValue: "1000000000",
                     operator: ">",
                   },
                 ],
               },
             ],
           },
         });
         const updatedPolicy = await cdp.policies.updatePolicy({
           id: "__ID__",
           policy: {
             description: "Updated Solana transaction limits",
             rules: [
               {
                 action: "reject",
                 operation: "signSolTransaction",
                 criteria: [
                   {
                     type: "splValue",
                     splValue: "1000000", // SPL token amount
                     operator: ">=",
                   },
                   {
                     type: "mintAddress",
                     addresses: ["EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"], // USDC mint
                     operator: "in",
                   },
                 ],
               },
             ],
           },
         });
         const idempotencyKey = uuidv4();

         // This operation is idempotent with the key
         await cdp.policies.updatePolicy({
           id: "__ID__",
           policy: {
             description: "Modified Policy",
             rules: &#123; ... &#125;
           },
           idempotencyKey
         });

Implementation of

PoliciesClientInterface.updatePolicy