Examples

Full end-to-end examples showing how to configure and complete claims.

Claim Configuration

A claim is defined by an iClaimBuilderDoc. Each plugin in the plugins array has this shape:

interface IntegrationPluginParams<T extends ClaimIntegrationPluginType> {
  instanceId: string;       // Unique ID for this plugin instance within the claim
  pluginId: T;              // Plugin type: "numUses", "codes", "password", etc.
  version: string;          // Plugin version (usually "0")
  publicParams: object;     // Plugin-specific config (visible to users)
  privateParams: object;    // Plugin-specific secrets (hidden from users)
}

Example: Code-Gated Claim

A claim where users redeem one-time codes. Limited to 100 claims total.

import crypto from 'crypto';
import CryptoJS from 'crypto-js';

const seedCode = crypto.randomBytes(32).toString('hex');
const numCodes = 100;

// Generate codes from seed
const codes = [];
for (let i = 0; i < numCodes; i++) {
  const hash = CryptoJS.SHA256(`${seedCode}-${i}`).toString();
  codes.push(`${hash}-${i}`);
}

const claim: iClaimBuilderDoc = {
  plugins: [
    {
      pluginId: 'numUses',
      instanceId: 'num-uses-instance',
      version: '0',
      publicParams: { maxUses: 100 },
      privateParams: {}
    },
    {
      pluginId: 'codes',
      instanceId: 'codes-instance',
      version: '0',
      publicParams: { numCodes: 100 },
      privateParams: { codes, seedCode }
    }
  ],
  state: {},
  action: { seedCode },
  // ... other required fields (collectionId, createdBy, etc.)
};

Completing this claim:

Example: Password-Gated Auto-Completion

A backend-driven claim where your server completes claims on behalf of users. No sign-in required β€” gated by a password only your backend knows.

Auto-completing from your backend:

Example: Whitelist + Token Ownership (AND Logic)

User must be on a whitelist AND own a specific badge. Both plugins must pass (default AND logic).

Example: OR Logic with Multiple Paths

User can claim by entering a code OR by being on the whitelist. Uses satisfyMethod for OR logic. Note numUses is always required regardless of success logic.

Completing via the code path:

Example: Time-Windowed Claim

Only claimable during a specific time window.

Simulating Before Completing

Always simulate first to check if a claim would succeed:

Verifying Claim Success

Last updated