{"openapi":"3.0.3","security":[{"apiKey":[]}],"components":{"schemas":{}},"tags":[{"name":"Opportunities","description":"Aggregated campaign data grouped by pool/vault/market. Query by ID, list with filters (chain, protocol, APR, TVL), get APR/TVL distribution bins, and aggregate statistics (min/max/sum)."},{"name":"Campaigns","description":"Individual reward campaigns incentivizing specific DeFi actions. List/count campaigns, get campaign details by ID or creation transaction hash, retrieve user participation metrics, fetch linked parent/child campaigns, and generate reward distribution payloads for on-chain claiming."},{"name":"Users","description":"User reward tracking by wallet address. Get total claimable rewards across all chains, retrieve detailed breakdowns by campaign and opportunity, filter by chain or claimable status, and check terms of service acceptance."},{"name":"Rewards","description":"Reward distribution data. Query rewards by campaign, token, or recipient; get campaign leaderboards, token-level rewards, total amounts distributed, and unclaimed reward balances."},{"name":"Config","description":"Build, preview, and encode campaign configurations. Generate opportunity metadata previews and encoded calldata for on-chain campaign creation from a single payload."},{"name":"Node","description":"Node-level configuration and computation primitives used to model campaign reward distribution."},{"name":"Key Value Store","description":"Generic key-value storage scoped per integrator. Read and write small structured values (configs, flags, metadata) tied to your account."},{"name":"Campaign Privacy","description":"Per-campaign privacy controls. Toggle whether a campaign and its participants are publicly indexed, and inspect the current privacy state of a campaign."},{"name":"Claims","description":"Claim tracking and status monitoring. Track on-chain claim events from Merkl distributors, monitor indexing progress by chain and distributor source, and check claim status across all supported chains."},{"name":"Chains","description":"Blockchain network configurations. List all supported chains, get chain details by ID, and access RPC endpoints and block explorer links."},{"name":"Protocols","description":"DeFi protocol registry. List all protocols, search by ID or name, count protocols, and access protocol metadata (icon, description, supported chains)."},{"name":"Tokens","description":"Token registry across all supported chains. Query tokens by address or symbol, list whitelisted tokens, and fetch token metadata (decimals, icon, price)."},{"name":"Roots","description":"Merkle roots published by Merkl. List recent roots per chain, get the active root used for proof verification, and trace which campaigns contributed leaves to a given root."},{"name":"Leaves","description":"Merkle tree leaves backing reward proofs. Inspect raw leaves for a user, campaign, or root — useful for debugging proof generation and reward attribution."},{"name":"Historical","description":"Time-series snapshots of Merkl state — historical campaign metrics, reward balances, and opportunity APR/TVL."},{"name":"Health","description":"Health and indexing status of Merkl ETL pipelines. Check whether engine, indexer, and API are up to date and processing data on time."},{"name":"Developer API Keys","description":"Self-serve API key management. Create, list, and revoke API keys for higher rate limits and access to gated endpoints."},{"name":"Credits","description":"API credit balances and consumption. Check remaining credits for your account and inspect per-endpoint usage history."},{"name":"Campaign Lists","description":"Named, shareable groupings of campaigns. Create lists owned by an address and reference them by name when filtering campaigns or opportunities."},{"name":"Enums","description":"Reference enums used across the API — campaign types, distribution types, statuses, sources, and other constants. Useful for validating inputs and rendering labels."},{"name":"Schemas","description":"Typebox schemas backing campaign payloads. Inspect the expected shape of each campaign type's inputs to build valid payloads programmatically."},{"name":"GraphQL","description":"GraphQL API at `/graphql/v1`. Single endpoint exposing the full Merkl schema — opportunities, campaigns, rewards, users — with flexible querying. GraphiQL is served on the same path for interactive exploration."}],"info":{"title":"Merkl API","description":"The official API to access data related to Merkl campaigns, built and maintained by Merkl SAS. This API is provided as is, without any warranty of any kind.","version":"1.0.1","contact":{"email":"contact@merkl.xyz","name":"Merkl SAS"},"license":{"name":"UNLICENSED"}},"paths":{"/v4/developer/keys/":{"post":{"tags":["Developer API Keys"],"description":"Create a new API key. The raw key is returned only once.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"description":{"minLength":1,"maxLength":255,"type":"string"}},"required":["description"]}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"description":{"minLength":1,"maxLength":255,"type":"string"}},"required":["description"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"description":{"minLength":1,"maxLength":255,"type":"string"}},"required":["description"]}}},"required":true},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"prefix":{"type":"string"},"description":{"type":"string"},"revokedAt":{"nullable":true,"anyOf":[{"description":"Null if active, ISO 8601 timestamp if revoked","type":"string"},{"type":"null"}]},"createdAt":{"description":"ISO 8601 creation timestamp","type":"string"},"tier":{"description":"Key tier level","type":"number"},"rawKey":{"description":"The raw API key — only returned once at creation","type":"string"}},"required":["id","prefix","description","revokedAt","createdAt","tier","rawKey"]}}}}},"operationId":"postV4DeveloperKeys"},"get":{"tags":["Developer API Keys"],"description":"List all API keys for the authenticated user.","responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"prefix":{"type":"string"},"description":{"type":"string"},"revokedAt":{"nullable":true,"anyOf":[{"description":"Null if active, ISO 8601 timestamp if revoked","type":"string"},{"type":"null"}]},"createdAt":{"description":"ISO 8601 creation timestamp","type":"string"},"tier":{"description":"Key tier level","type":"number"}},"required":["id","prefix","description","revokedAt","createdAt","tier"]}}}}}},"operationId":"getV4DeveloperKeys"}},"/v4/developer/keys/usage":{"get":{"tags":["Developer API Keys"],"description":"Get usage summary across all API keys for the authenticated user.","parameters":[{"name":"days","in":"query","required":false,"schema":{"default":30,"minimum":1,"maximum":90,"description":"Number of days to look back (max 90)","type":"number"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"totalCalls":{"type":"number"},"keys":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"prefix":{"type":"string"},"description":{"type":"string"},"totalCalls":{"type":"number"}},"required":["id","prefix","description","totalCalls"]}}},"required":["totalCalls","keys"]}}}}},"operationId":"getV4DeveloperKeysUsage"}},"/v4/developer/keys/{id}/usage":{"get":{"tags":["Developer API Keys"],"description":"Get detailed daily usage for a specific API key.","parameters":[{"name":"id","in":"path","required":true,"schema":{"format":"uuid","type":"string"}},{"name":"days","in":"query","required":false,"schema":{"default":30,"minimum":1,"maximum":90,"description":"Number of days to look back (max 90)","type":"number"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"daily":{"type":"array","items":{"type":"object","properties":{"date":{"description":"ISO 8601 date string (YYYY-MM-DD)","type":"string"},"total":{"type":"number"},"endpoints":{"type":"object","patternProperties":{"^(.*)$":{"type":"number"}}}},"required":["date","total","endpoints"]}}},"required":["daily"]}}}}},"operationId":"getV4DeveloperKeysByIdUsage"}},"/v4/developer/keys/{id}":{"patch":{"tags":["Developer API Keys"],"description":"Update description for an API key.","parameters":[{"name":"id","in":"path","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"description":{"minLength":1,"maxLength":255,"type":"string"}}}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"description":{"minLength":1,"maxLength":255,"type":"string"}}}},"multipart/form-data":{"schema":{"type":"object","properties":{"description":{"minLength":1,"maxLength":255,"type":"string"}}}}},"required":true},"operationId":"patchV4DeveloperKeysById"},"delete":{"tags":["Developer API Keys"],"description":"Revoke an API key.","parameters":[{"name":"id","in":"path","required":true,"schema":{"format":"uuid","type":"string"}}],"operationId":"deleteV4DeveloperKeysById"}},"/v4/api-keys/validate":{"get":{"tags":["Developer API Keys"],"description":"Validate a developer API key. Returns `{ ok: true }` on success, 401 otherwise.","responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"description":"Whether the provided API key is valid.","type":"boolean"}},"required":["ok"]}}}}},"operationId":"getV4Api-keysValidate"}},"/v4/auth/nonce/{address}":{"get":{"tags":["Authentication"],"description":"Generate a unique nonce and message for wallet authentication.","parameters":[{"name":"address","in":"path","required":true,"schema":{"minLength":1,"type":"string"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"description":"Message to be signed by the user's wallet","type":"string"},"nonce":{"description":"Unique nonce for this authentication attempt","type":"string"}},"required":["message","nonce"]}}}}},"operationId":"getV4AuthNonceByAddress"}},"/v4/auth/login":{"post":{"tags":["Authentication"],"description":"Authenticate a user and set a JWT cookie for session management.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"address":{"minLength":1,"type":"string"},"message":{"type":"string"},"signature":{"minLength":1,"type":"string"},"chainId":{"description":"Chain ID of the wallet","type":"number"}},"required":["address","message","signature"]}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"address":{"minLength":1,"type":"string"},"message":{"type":"string"},"signature":{"minLength":1,"type":"string"},"chainId":{"description":"Chain ID of the wallet","type":"number"}},"required":["address","message","signature"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"address":{"minLength":1,"type":"string"},"message":{"type":"string"},"signature":{"minLength":1,"type":"string"},"chainId":{"description":"Chain ID of the wallet","type":"number"}},"required":["address","message","signature"]}}},"required":true},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"description":"Whether login was successful","type":"boolean"},"token":{"description":"JWT token for Authorization header — only returned in development for cross-site cookie fallback","type":"string"}},"required":["success"]}}}}},"operationId":"postV4AuthLogin"}},"/v4/auth/google/start":{"get":{"tags":["Authentication"],"description":"Start the Google OAuth flow for signing in with a Google account.","parameters":[{"name":"mode","in":"query","required":true,"schema":{"anyOf":[{"const":"login","type":"string"},{"const":"link","type":"string"}]}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"authUrl":{"minLength":1,"type":"string"}},"required":["authUrl"]}}}}},"operationId":"getV4AuthGoogleStart"}},"/v4/auth/google/callback":{"get":{"tags":["Authentication"],"description":"Complete the Google OAuth flow and create or refresh the user session.","parameters":[{"name":"code","in":"query","required":false,"schema":{"type":"string"}},{"name":"state","in":"query","required":false,"schema":{"type":"string"}},{"name":"error","in":"query","required":false,"schema":{"type":"string"}}],"operationId":"getV4AuthGoogleCallback"}},"/v4/auth/link/wallet":{"post":{"tags":["Authentication"],"description":"Link a wallet to the current (Google) session — collapses both into one wallet identity.","parameters":[{"name":"jwt","in":"cookie","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"address":{"minLength":1,"type":"string"},"message":{"type":"string"},"signature":{"minLength":1,"type":"string"},"chainId":{"description":"Chain ID of the wallet","type":"number"}},"required":["address","message","signature"]}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"address":{"minLength":1,"type":"string"},"message":{"type":"string"},"signature":{"minLength":1,"type":"string"},"chainId":{"description":"Chain ID of the wallet","type":"number"}},"required":["address","message","signature"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"address":{"minLength":1,"type":"string"},"message":{"type":"string"},"signature":{"minLength":1,"type":"string"},"chainId":{"description":"Chain ID of the wallet","type":"number"}},"required":["address","message","signature"]}}},"required":true},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"description":"Whether login was successful","type":"boolean"},"token":{"description":"JWT token for Authorization header — only returned in development for cross-site cookie fallback","type":"string"}},"required":["success"]}}}}},"operationId":"postV4AuthLinkWallet"}},"/v4/auth/me":{"get":{"tags":["Authentication"],"description":"Get authenticated user information including address, profile, and authentication status.","parameters":[{"name":"jwt","in":"cookie","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"address":{"description":"User identity — wallet address, or `google:<email>` for Google sign-in","type":"string"},"authenticatedAt":{"description":"Unix timestamp when the JWT was issued","type":"number"},"expiresAt":{"description":"Unix timestamp when the JWT expires","type":"number"},"tags":{"description":"Tags associated with the user","type":"array","items":{"type":"string"}},"tier":{"description":"Creator tier level","type":"number"},"provider":{"description":"Auth method backing this session — derived from the JWT `provider` claim","anyOf":[{"const":"WALLET","type":"string"},{"const":"GOOGLE","type":"string"}]},"linkedGoogle":{"description":"Whether a Google identity is linked to this account (`User.googleSub`)","type":"boolean"},"email":{"description":"Display email — Google account email when known","type":"string"}},"required":["address","authenticatedAt","expiresAt","tags","tier","provider","linkedGoogle"]}}}}},"operationId":"getV4AuthMe"}},"/v4/auth/revoke":{"delete":{"tags":["Authentication"],"description":"Revoke the current user's JWT token and clear the session cookie.","parameters":[{"name":"jwt","in":"cookie","required":false,"schema":{"type":"string"}}],"operationId":"deleteV4AuthRevoke"}},"/v4/block-timestamp/block":{"get":{"tags":["Block Timestamp"],"description":"Get the closest block number to a given timestamp on a specific chain","parameters":[{"name":"chainId","in":"query","required":true,"schema":{"description":"Chain ID","type":"number"}},{"name":"timestamp","in":"query","required":true,"schema":{"description":"Unix timestamp","type":"number"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"blockNumber":{"description":"Closest block number","type":"number"}},"required":["blockNumber"]}}}}},"operationId":"getV4Block-timestampBlock"}},"/v4/block-timestamp/timestamp":{"get":{"tags":["Block Timestamp"],"description":"Get the closest timestamp to a given block number on a specific chain","parameters":[{"name":"chainId","in":"query","required":true,"schema":{"description":"Chain ID","type":"number"}},{"name":"blockNumber","in":"query","required":true,"schema":{"description":"Block number","type":"number"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"timestamp":{"description":"Closest timestamp","type":"number"}},"required":["timestamp"]}}}}},"operationId":"getV4Block-timestampTimestamp"}},"/v4/block-timestamp/bounds":{"get":{"tags":["Block Timestamp"],"description":"Get the closest lower and upper bound blocks for a given timestamp from BlockTimestampMapping","parameters":[{"name":"chainId","in":"query","required":true,"schema":{"description":"Chain ID","type":"number"}},{"name":"timestamp","in":"query","required":true,"schema":{"description":"Unix timestamp","type":"number"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"lower":{"description":"Closest block with timestamp <= target","anyOf":[{"type":"object","properties":{"blockNumber":{"description":"Block number","type":"number"},"timestamp":{"description":"Unix timestamp","type":"number"}},"required":["blockNumber","timestamp"]},{"type":"null"}]},"upper":{"description":"Closest block with timestamp >= target","anyOf":[{"type":"object","properties":{"blockNumber":{"description":"Block number","type":"number"},"timestamp":{"description":"Unix timestamp","type":"number"}},"required":["blockNumber","timestamp"]},{"type":"null"}]},"exactMatch":{"description":"True when lower and upper are the same block","type":"boolean"}},"required":["lower","upper","exactMatch"]}}}}},"operationId":"getV4Block-timestampBounds"}},"/v4/campaigns/{id}":{"get":{"tags":["Campaigns"],"description":"Retrieve a campaign by its unique identifier (hash or `distributionChain-campaignId` format) in the `id` path parameter.","parameters":[{"name":"id","in":"path","required":true,"schema":{"description":"Campaign ID (hash) or composite identifier (distributionChain-campaignId)","type":"string"}},{"name":"showPrivate","in":"query","required":false,"schema":{"description":"When true, attempt to decode a private campaign. The caller (JWT, API key owner, or BackOffice) must be authorized for the campaign — otherwise returns 401. When false (default), private campaigns return 404. Bypasses CDN cache.","type":"boolean"}}],"responses":{},"operationId":"getV4CampaignsById"}},"/v4/campaigns/generate-payload":{"post":{"tags":["Campaigns"],"description":"Generate an on-chain transaction payload for creating one or more campaigns from the provided data.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"creatorAddress":{"type":"string"},"rewardToken":{"type":"string"},"distributionChainId":{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]},"startTimestamp":{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]},"endTimestamp":{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]},"campaignsParams":{"type":"object","patternProperties":{"^(.*)$":{"type":"array","items":{"additionalProperties":true,"type":"object","properties":{"amount":{"type":"RegExp","source":"[0-9]+","flags":""}},"required":["amount"]}}}}},"required":["creatorAddress","rewardToken","distributionChainId","startTimestamp","endTimestamp","campaignsParams"]}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"creatorAddress":{"type":"string"},"rewardToken":{"type":"string"},"distributionChainId":{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]},"startTimestamp":{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]},"endTimestamp":{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]},"campaignsParams":{"type":"object","patternProperties":{"^(.*)$":{"type":"array","items":{"additionalProperties":true,"type":"object","properties":{"amount":{"type":"RegExp","source":"[0-9]+","flags":""}},"required":["amount"]}}}}},"required":["creatorAddress","rewardToken","distributionChainId","startTimestamp","endTimestamp","campaignsParams"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"creatorAddress":{"type":"string"},"rewardToken":{"type":"string"},"distributionChainId":{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]},"startTimestamp":{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]},"endTimestamp":{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]},"campaignsParams":{"type":"object","patternProperties":{"^(.*)$":{"type":"array","items":{"additionalProperties":true,"type":"object","properties":{"amount":{"type":"RegExp","source":"[0-9]+","flags":""}},"required":["amount"]}}}}},"required":["creatorAddress","rewardToken","distributionChainId","startTimestamp","endTimestamp","campaignsParams"]}}},"required":true},"operationId":"postV4CampaignsGenerate-payload"}},"/v4/campaigns/{id}/metrics":{"get":{"tags":["Campaigns"],"description":"Get historical metrics (TVL, APR, daily rewards) for a campaign, with pagination options.","parameters":[{"name":"id","in":"path","required":true,"schema":{"description":"Campaign ID (hash) or composite identifier (distributionChain-campaignId)","type":"string"}},{"name":"tvl","in":"query","required":false,"schema":{"type":"object","properties":{"page":{"minimum":0,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":0,"type":"number"}]},"limit":{"minimum":1,"maximum":200,"default":100,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"maximum":200,"default":100,"type":"number"}]}}}},{"name":"apr","in":"query","required":false,"schema":{"type":"object","properties":{"page":{"minimum":0,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":0,"type":"number"}]},"limit":{"minimum":1,"maximum":200,"default":100,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"maximum":200,"default":100,"type":"number"}]}}}},{"name":"dailyRewards","in":"query","required":false,"schema":{"type":"object","properties":{"page":{"minimum":0,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":0,"type":"number"}]},"limit":{"minimum":1,"maximum":200,"default":100,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"maximum":200,"default":100,"type":"number"}]}}}}],"operationId":"getV4CampaignsByIdMetrics"}},"/v4/campaigns/{id}/storing-ids":{"get":{"tags":["Campaigns"],"description":"Get the storingId(s) backing a campaign as a tree. The root node's `storingIds` belong to the campaign itself, and its `subCampaigns` array recursively lists every sub-campaign. The same storingId may appear in more than one node. Stateless campaigns return an empty `storingIds` array.","parameters":[{"name":"id","in":"path","required":true,"schema":{"description":"Campaign ID: the numeric hash of `{distributionChainId}{campaignId}`, or the composite `{distributionChainId}-{campaignId}`.","type":"string"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$id":"T4","type":"object","properties":{"campaignId":{"description":"On-chain campaign id","type":"string"},"storingIds":{"description":"Indexing storingId(s) owned by this campaign only (not children's).","type":"array","items":{"type":"string"}},"subCampaigns":{"description":"Direct sub-campaign nodes; [] for leaves. Always present.","type":"array","items":{"$ref":"T4"}}},"required":["campaignId","storingIds","subCampaigns"]}}}}},"operationId":"getV4CampaignsByIdStoring-ids"}},"/v4/campaigns/{id}/linked":{"get":{"tags":["Campaigns"],"description":"Get every opportunity linked to a campaign — its full chain of parent campaigns up to the root, plus its entire sub-campaign subtree — as a flat list of nodes. Each node carries its `campaignId` and `parentCampaignId` so you can reconstruct the tree at any depth. `self` identifies the requested campaign.","parameters":[{"name":"id","in":"path","required":true,"schema":{"description":"Campaign ID (hash) or composite identifier (distributionChain-campaignId)","type":"string"}},{"name":"test","in":"query","required":false,"schema":{"description":"Include test campaigns","type":"boolean"}},{"name":"point","in":"query","required":false,"schema":{"description":"Include point campaigns","type":"boolean"}},{"name":"tokenTypes","in":"query","required":false,"schema":{"description":"Filter by token type. Use POINT to include point campaigns and PRETGE to include preTGE campaigns.","type":"array","items":{"anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]}}},{"name":"campaigns","in":"query","required":false,"schema":{"description":"Include campaign data. Will slow down the request","default":false,"type":"boolean"}},{"name":"excludeSubCampaigns","in":"query","required":false,"schema":{"description":"Exclude subcampaigns from the results.","default":false,"type":"boolean"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"self":{"description":"Campaign ID of the requested campaign","type":"string"},"nodes":{"type":"array","items":{"type":"object","properties":{"campaignId":{"description":"Campaign ID (hash)","type":"string"},"onChainCampaignId":{"description":"On-chain campaign identifier","type":"string"},"parentCampaignId":{"anyOf":[{"type":"string"},{"type":"null"}]},"opportunity":{"type":"object","allOf":[{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"identifier":{"type":"string"},"chainId":{"type":"number"},"name":{"type":"string"},"description":{"type":"string"},"howToSteps":{"type":"array","items":{"type":"string"}},"status":{"anyOf":[{"const":"NONE","type":"string"},{"const":"PAST","type":"string"},{"const":"LIVE","type":"string"},{"const":"SOON","type":"string"}]},"action":{"anyOf":[{"const":"POOL","type":"string"},{"const":"HOLD","type":"string"},{"const":"DROP","type":"string"},{"const":"LEND","type":"string"},{"const":"BORROW","type":"string"},{"const":"LONG","type":"string"},{"const":"SHORT","type":"string"},{"const":"SWAP","type":"string"},{"const":"INVALID","type":"string"},{"const":"STAKE","type":"string"}]},"tags":{"type":"array","items":{"type":"string"}},"mainProtocol":{"type":"string"},"depositUrl":{"type":"string"},"depositUrls":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"url":{"type":"string"},"subtitle":{"type":"string"},"icon":{"type":"string"},"priority":{"type":"number"}},"required":["id","title","url","priority"]}},"explorerAddress":{"type":"string"},"hidden":{"type":"boolean"},"tvl":{"type":"number"},"apr":{"type":"number"},"dailyRewards":{"type":"number"},"maxDailyRewards":{"anyOf":[{"type":"number"},{"type":"null"}]},"liveCampaigns":{"type":"number"},"lastCampaignCreatedAt":{"type":"number"},"earliestCampaignStart":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"latestCampaignStart":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"earliestCampaignEnd":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"latestCampaignEnd":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"nativeApr":{"type":"number"},"totalApr":{"type":"number"},"maxApr":{"anyOf":[{"type":"number"},{"type":"null"}]},"liveCampaignsForCreator":{"type":"number"},"soonCampaignsForCreator":{"type":"number"},"pastCampaignsForCreator":{"type":"number"},"distributionType":{"type":"string"},"tokens":{"type":"array","items":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]}},"chain":{"$id":"chain","title":"Chain","description":"Chain","type":"object","properties":{"id":{"$id":"chainId","title":"Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"name":{"title":"Chain Name","description":"Legible name of the chain","type":"string"},"icon":{"title":"Icon URL","description":"URL to the icon of the chain","type":"string"},"liveCampaigns":{"title":"Live Campaigns","description":"Number of campaigns currently live on this chain","type":"number"},"endOfDisputePeriod":{"type":"number"},"explorers":{"type":"array","items":{"type":"object","properties":{"type":{"anyOf":[{"const":"ETHERSCAN","type":"string"},{"const":"BLOCKSCOUT","type":"string"},{"const":"SOLSCAN","type":"string"}]},"url":{"type":"string"},"chainId":{"type":"number"}},"required":["type","url","chainId"]}},"lastClaimsOnchainFetchTimestamp":{"title":"Last Claims Onchain Fetch Timestamp","description":"Timestamp of the last claims onchain fetch","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","icon","liveCampaigns","endOfDisputePeriod","lastClaimsOnchainFetchTimestamp"]},"activePrograms":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"type":"string"},"icon":{"type":"string"}},"required":["id","name"]}},"protocol":{"anyOf":[{"$id":"protocol","title":"Protocol","description":"Protocol","type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"icon":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"description":{"type":"string"},"url":{"type":"string"},"dailyRewards":{"type":"number"},"numberOfLiveCampaigns":{"type":"number"},"opportunityLiveTags":{"type":"array","items":{"type":"string"}},"banner":{"anyOf":[{"type":"string"},{"type":"null"}]},"opportunityBannerLight":{"anyOf":[{"type":"string"},{"type":"null"}]},"opportunityBannerDark":{"anyOf":[{"type":"string"},{"type":"null"}]},"trustData":{"anyOf":[{"type":"object","properties":{"slug":{"type":"string"},"category":{"anyOf":[{"type":"string"},{"type":"null"}]},"audits":{"anyOf":[{"type":"string"},{"type":"null"}]},"audit_links":{"type":"array","items":{"type":"string"}},"audit_note":{"anyOf":[{"type":"string"},{"type":"null"}]},"github":{"type":"array","items":{"type":"string"}},"twitter":{"anyOf":[{"type":"string"},{"type":"null"}]},"listedAt":{"anyOf":[{"type":"number"},{"type":"null"}]},"parentProtocol":{"anyOf":[{"type":"string"},{"type":"null"}]},"tvl":{"anyOf":[{"type":"number"},{"type":"null"}]},"hacks":{"type":"array","items":{"type":"object","properties":{"date":{"type":"number"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"amountUSD":{"anyOf":[{"type":"number"},{"type":"null"}]},"technique":{"anyOf":[{"type":"string"},{"type":"null"}]},"source":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["date","name","amountUSD","technique","source"]}},"syncedAt":{"type":"number"}},"required":["slug","category","audits","audit_links","audit_note","github","twitter","listedAt","parentProtocol","syncedAt"]},{"type":"null"}]}},"required":["id","name","icon","tags","description","url","banner","opportunityBannerLight","opportunityBannerDark","trustData"]},{"type":"null"}]},"aprRecord":{"type":"object","properties":{"cumulated":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"breakdowns":{"type":"array","items":{"type":"object","properties":{"identifier":{"type":"string"},"type":{"anyOf":[{"const":"CAMPAIGN","type":"string"},{"const":"TOKEN","type":"string"},{"const":"PROTOCOL","type":"string"}]},"value":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"distributionType":{"anyOf":[{"const":"DUTCH_AUCTION","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"AAVE_NET_APR","type":"string"},{"const":"ERC4626_APR","type":"string"},{"const":"ERC4626_SPREAD_CAPPED","type":"string"},{"const":"AAVE_V4_NET_APR","type":"string"},{"const":"DEEL_DISTRIBUTION","type":"string"},{"const":"SOFR_SPREAD_RATCHET","type":"string"},{"const":"ERC4626_TARGET_APR_WITH_MERKL","type":"string"},{"const":"TARGET_APR_WITH_MERKL","type":"string"},{"const":"NET_APR","type":"string"},{"const":"BORROW_SUBSIDY","type":"string"},{"const":"NET_APR_WITH_MERKL","type":"string"},{"const":"YIELD_BASIS_PID","type":"string"},{"const":"COMPOSED","type":"string"}]}},"required":["identifier","type","value","timestamp"]}}},"required":["cumulated","timestamp","breakdowns"]},"nativeAprRecord":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"value":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"amount":{"type":"bigint"},"rewardToken":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]},"breakdowns":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"value":{"type":"number"},"amount":{"type":"bigint"},"rewardToken":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]}},"required":["title","value"]}}},"required":["title","value","timestamp"]},"tvlRecord":{"type":"object","properties":{"total":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"breakdowns":{"type":"array","items":{"type":"object","properties":{"identifier":{"type":"string"},"type":{"anyOf":[{"const":"TOKEN","type":"string"},{"const":"PROTOCOL","type":"string"}]},"value":{"type":"number"}},"required":["identifier","type","value"]}}},"required":["total","timestamp","breakdowns"]},"rewardsRecord":{"type":"object","properties":{"total":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"breakdowns":{"type":"array","items":{"type":"object","properties":{"campaignId":{"type":"string"},"value":{"type":"number"},"maxValue":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"token":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]},"amount":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"distributionType":{"anyOf":[{"const":"DUTCH_AUCTION","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"AAVE_NET_APR","type":"string"},{"const":"ERC4626_APR","type":"string"},{"const":"ERC4626_SPREAD_CAPPED","type":"string"},{"const":"AAVE_V4_NET_APR","type":"string"},{"const":"DEEL_DISTRIBUTION","type":"string"},{"const":"SOFR_SPREAD_RATCHET","type":"string"},{"const":"ERC4626_TARGET_APR_WITH_MERKL","type":"string"},{"const":"TARGET_APR_WITH_MERKL","type":"string"},{"const":"NET_APR","type":"string"},{"const":"BORROW_SUBSIDY","type":"string"},{"const":"NET_APR_WITH_MERKL","type":"string"},{"const":"YIELD_BASIS_PID","type":"string"},{"const":"COMPOSED","type":"string"}]},"onChainCampaignId":{"type":"string"}},"required":["campaignId","value","timestamp","token","amount"]}}},"required":["total","timestamp","breakdowns"]}},"required":["id","type","identifier","chainId","name","description","howToSteps","status","action","tags","tvl","apr","dailyRewards","liveCampaigns","lastCampaignCreatedAt","tokens","chain","activePrograms"]},{"type":"object","properties":{"campaigns":{"type":"array","items":{"type":"object","properties":{"id":{"description":"Unique campaign id","type":"string"},"computeChainId":{"description":"Chain ID where campaign data is computed","type":"number"},"distributionChainId":{"description":"Chain ID where rewards are distributed","type":"number"},"campaignId":{"description":"A hash of the campaign, unique per chain. Can be used to identify campaigns across chains","type":"string"},"type":{"description":"Campaign type identifier","type":"string"},"subType":{"description":"Campaign subtype for protocols like Silo, Radiant, Morpho, Dolomite, Compound, Ajna and Euler","anyOf":[{"type":"number"},{"type":"null"}]},"amount":{"description":"Amount of reward token units being distributed by the campaign","type":"string"},"startTimestamp":{"description":"Unix timestamp when the campaign starts","anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]},{"type":"bigint"}]},"endTimestamp":{"description":"Unix timestamp when the campaign ends","anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]},{"type":"bigint"}]},"creatorAddress":{"description":"Ethereum address of the campaign creator","type":"string"},"apr":{"description":"Annual Percentage Rate for this campaign","type":"number"},"dailyRewards":{"description":"Total daily rewards distributed in USD","type":"number"},"creator":{"description":"Campaign creator information","type":"object","properties":{"address":{"description":"Creator's Ethereum address","type":"string"},"tags":{"description":"Tag associated with the creator","type":"array","items":{"type":"string"}},"creatorId":{"nullable":true,"anyOf":[{"description":"Merkl creator ID if registered","type":"string"},{"type":"null"}]}},"required":["address"]},"params":{"description":"Campaign-specific parameters"},"description":{"description":"Campaign description","type":"string"},"chain":{"$id":"chain","title":"Chain","description":"Chain","type":"object","properties":{"id":{"$id":"chainId","title":"Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"name":{"title":"Chain Name","description":"Legible name of the chain","type":"string"},"icon":{"title":"Icon URL","description":"URL to the icon of the chain","type":"string"},"liveCampaigns":{"title":"Live Campaigns","description":"Number of campaigns currently live on this chain","type":"number"},"endOfDisputePeriod":{"type":"number"},"explorers":{"type":"array","items":{"type":"object","properties":{"type":{"anyOf":[{"const":"ETHERSCAN","type":"string"},{"const":"BLOCKSCOUT","type":"string"},{"const":"SOLSCAN","type":"string"}]},"url":{"type":"string"},"chainId":{"type":"number"}},"required":["type","url","chainId"]}},"lastClaimsOnchainFetchTimestamp":{"title":"Last Claims Onchain Fetch Timestamp","description":"Timestamp of the last claims onchain fetch","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","icon","liveCampaigns","endOfDisputePeriod","lastClaimsOnchainFetchTimestamp"]},"rewardTokenId":{"description":"Internal ID of the reward token","type":"string"},"rewardToken":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]},"opportunityId":{"description":"ID of the associated opportunity","type":"string"},"distributionChain":{"$id":"chain","title":"Chain","description":"Chain","type":"object","properties":{"id":{"$id":"chainId","title":"Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"name":{"title":"Chain Name","description":"Legible name of the chain","type":"string"},"icon":{"title":"Icon URL","description":"URL to the icon of the chain","type":"string"},"liveCampaigns":{"title":"Live Campaigns","description":"Number of campaigns currently live on this chain","type":"number"},"endOfDisputePeriod":{"type":"number"},"explorers":{"type":"array","items":{"type":"object","properties":{"type":{"anyOf":[{"const":"ETHERSCAN","type":"string"},{"const":"BLOCKSCOUT","type":"string"},{"const":"SOLSCAN","type":"string"}]},"url":{"type":"string"},"chainId":{"type":"number"}},"required":["type","url","chainId"]}},"lastClaimsOnchainFetchTimestamp":{"title":"Last Claims Onchain Fetch Timestamp","description":"Timestamp of the last claims onchain fetch","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","icon","liveCampaigns","endOfDisputePeriod","lastClaimsOnchainFetchTimestamp"]},"distributionType":{"description":"Type of reward distribution mechanism","anyOf":[{"const":"DUTCH_AUCTION","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"AAVE_NET_APR","type":"string"},{"const":"ERC4626_APR","type":"string"},{"const":"ERC4626_SPREAD_CAPPED","type":"string"},{"const":"AAVE_V4_NET_APR","type":"string"},{"const":"DEEL_DISTRIBUTION","type":"string"},{"const":"SOFR_SPREAD_RATCHET","type":"string"},{"const":"ERC4626_TARGET_APR_WITH_MERKL","type":"string"},{"const":"TARGET_APR_WITH_MERKL","type":"string"},{"const":"NET_APR","type":"string"},{"const":"BORROW_SUBSIDY","type":"string"},{"const":"NET_APR_WITH_MERKL","type":"string"},{"const":"YIELD_BASIS_PID","type":"string"},{"const":"COMPOSED","type":"string"}]},"campaignStatus":{"type":"object","properties":{"campaignId":{"type":"string"},"computedUntil":{"anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}]},"processingStarted":{"anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}]},"status":{"type":"string"},"preComputeProcessingStarted":{"anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}]},"preComputeStatus":{"type":"string"},"delay":{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]},"error":{"type":"string"},"details":{}},"required":["campaignId","computedUntil","processingStarted","status","preComputeProcessingStarted","preComputeStatus"]},"createdAt":{"format":"date","description":"ISO date when the campaign was created","type":"string"},"rootCampaignId":{"description":"ID of the root campaign for hierarchical campaigns","anyOf":[{"type":"string"},{"type":"null"}]},"parentCampaignId":{"description":"ID of the parent campaign for sub-campaigns","anyOf":[{"type":"string"},{"type":"null"}]},"childCampaignIds":{"description":"List of child campaign IDs","type":"array","items":{"type":"string"}},"dailyRewardsBreakdown":{"description":"Daily breakdown of rewards","type":"array","items":{"type":"object","properties":{"campaignId":{"type":"string"},"value":{"type":"number"},"maxValue":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"token":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]},"amount":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"distributionType":{"anyOf":[{"const":"DUTCH_AUCTION","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"AAVE_NET_APR","type":"string"},{"const":"ERC4626_APR","type":"string"},{"const":"ERC4626_SPREAD_CAPPED","type":"string"},{"const":"AAVE_V4_NET_APR","type":"string"},{"const":"DEEL_DISTRIBUTION","type":"string"},{"const":"SOFR_SPREAD_RATCHET","type":"string"},{"const":"ERC4626_TARGET_APR_WITH_MERKL","type":"string"},{"const":"TARGET_APR_WITH_MERKL","type":"string"},{"const":"NET_APR","type":"string"},{"const":"BORROW_SUBSIDY","type":"string"},{"const":"NET_APR_WITH_MERKL","type":"string"},{"const":"YIELD_BASIS_PID","type":"string"},{"const":"COMPOSED","type":"string"}]},"onChainCampaignId":{"type":"string"}},"required":["campaignId","value","timestamp","token","amount"]}},"pauseCompute":{"description":"ISO timestamp when computation was paused","anyOf":[{"type":"string"},{"type":"null"}]},"pausePrecompute":{"description":"Reason for pausing precomputation, or null if not paused","anyOf":[{"type":"string"},{"type":"null"}]},"hasOverrides":{"description":"Whether this campaign has previous config overrides","type":"boolean"},"isPrivate":{"description":"Indicates if the campaign is private","type":"boolean"},"hidden":{"description":"Whether the campaign is hidden from non-test API results","type":"boolean"},"hideLeaderboard":{"description":"Whether leaderboard, ranks and reward breakdowns are hidden for this campaign","type":"boolean"},"campaignEncodingHash":{"description":"Hash of the campaign configuration encoding","type":"string"}},"required":["id","computeChainId","distributionChainId","campaignId","type","amount","startTimestamp","endTimestamp","creatorAddress","params","chain","rewardToken","campaignStatus","createdAt","isPrivate"]}}}}]}},"required":["campaignId","onChainCampaignId","parentCampaignId","opportunity"]}}},"required":["self","nodes"]}}}}},"operationId":"getV4CampaignsByIdLinked"}},"/v4/campaigns/tx":{"get":{"tags":["Campaigns"],"summary":"Get campaign IDs from a creation transaction hash","description":"Retrieve the campaign ID(s) created by a given campaign-creation transaction hash.","parameters":[{"name":"hash","in":"query","required":true,"schema":{"type":"string"}},{"name":"chainId","in":"query","required":true,"schema":{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"array","items":{"type":"string"}}}}}},"operationId":"getV4CampaignsTx"}},"/v4/campaigns/":{"get":{"tags":["Campaigns"],"description":"Search for campaigns matching the criteria provided through query parameters.","parameters":[{"name":"page","in":"query","required":false,"schema":{"minimum":0,"description":"0-indexed page number","default":0,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":0,"description":"0-indexed page number","default":0,"type":"number"}]}},{"name":"items","in":"query","required":false,"schema":{"minimum":1,"maximum":100,"description":"Number of items returned by page","default":20,"errorMessage":"Items must be between 1 and 100","anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"maximum":100,"description":"Number of items returned by page","default":20,"errorMessage":"Items must be between 1 and 100","type":"number"}]}},{"name":"id","in":"query","required":false,"schema":{"description":"Filter by **internal campaign ID** (`Campaign.id`, numeric hash, e.g. `13896840291241714382`). NOT the on-chain `campaignId` (hex hash) — use the `campaignId` query for that. Comma-separated list supported. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"creatorTag","in":"query","required":false,"schema":{"description":"Filter campaigns created by a user who has a specific tag","type":"string"}},{"name":"creatorAddress","in":"query","required":false,"schema":{"type":"string"}},{"name":"creatorAddresses","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"creatorId","in":"query","required":false,"schema":{"description":"Filter campaigns created by a user who is registered as a merkl creator","type":"string"}},{"name":"chainId","in":"query","required":false,"schema":{"description":"Filter by compute chain.<br>You can get the list of all supported chains by calling [GET /v4/chains](#tag/chains/GET/v4/chains/)","anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"Filter by compute chain.<br>You can get the list of all supported chains by calling [GET /v4/chains](#tag/chains/GET/v4/chains/)","type":"number"}]}},{"name":"search","in":"query","required":false,"schema":{"description":"Search amongst multiple values (token, protocols, tags, campaigns)","type":"string"}},{"name":"distributionChainIds","in":"query","required":false,"schema":{"description":"Filter by distribution chain.<br>You can get the list of all supported chains by calling [GET /v4/chains](#tag/chains/GET/v4/chains/)","type":"array","items":{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}}},{"name":"type","in":"query","required":false,"schema":{"description":"Filter by type of campaign","type":"string"}},{"name":"types","in":"query","required":false,"schema":{"description":"Filter by type of campaign using an array. The `type` entry has priority.","type":"array","items":{"type":"string"}}},{"name":"subType","in":"query","required":false,"schema":{"description":"Silo, Radiant, Morpho, Dolomite, Compound, Ajna and Euler campaigns have a subtype attribute you can filter on","type":"number"}},{"name":"campaignId","in":"query","required":false,"schema":{"description":"Filter by **on-chain campaign ID** (`Campaign.campaignId`, 32-byte hex hash, e.g. `0x93cf385c2a446a7596820601caf25e63bfc4939efa9a89a6f21563b58ee54eb1`). The same on-chain campaignId can exist on several chains; one resource per chain is returned. NOT the internal `Campaign.id` (numeric hash) — use the `id` query for that. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"campaignIds","in":"query","required":false,"schema":{"description":"Filter by multiple **on-chain campaign IDs** (32-byte hex hashes). The `campaignId` entry has priority over this one. NOT internal `Campaign.id` values. See [ID types](/integrate-merkl/id-types).","type":"array","items":{"type":"string"}}},{"name":"mainParameter","in":"query","required":false,"schema":{"description":"Filter by `mainParameter` (a.k.a. opportunity `identifier`) — the value used to group campaigns into one opportunity. Can be a pool/vault/market address (e.g. `0x35Cbe854...`) or an arbitrary on-chain hash. NOT a campaign or opportunity ID. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"tokenSymbol","in":"query","required":false,"schema":{"description":"Filter by reward token symbol (e.g. USDC for campaigns rewarding in USDC)","type":"string"}},{"name":"tokenAddress","in":"query","required":false,"schema":{"description":"Filter results by the reward token address. Use in combination with chainId for accuracy","type":"string"}},{"name":"test","in":"query","required":false,"schema":{"description":"Return campaigns rewarding in test tokens","default":false,"type":"boolean"}},{"name":"tokenTypes","in":"query","required":false,"schema":{"description":"Filter by token type. Use POINT to include point campaigns and PRETGE to include preTGE campaigns. By default every token is returned.","type":"array","items":{"anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]}}},{"name":"point","in":"query","required":false,"schema":{"description":"Return campaigns rewarding in points","type":"boolean"}},{"name":"opportunityId","in":"query","required":false,"schema":{"description":"Filter by **internal opportunity ID** (`Opportunity.id`, numeric hash, e.g. `7673870997270712040`). Lookup at [GET /v4/opportunities](#tag/opportunities/GET/v4/opportunities). NOT a campaign ID. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"opportunityIds","in":"query","required":false,"schema":{"description":"Filter by multiple **internal opportunity IDs**. The `opportunityId` entry has priority over this one. See [ID types](/integrate-merkl/id-types).","type":"array","items":{"type":"string"}}},{"name":"status","in":"query","required":false,"schema":{"description":"Comma-separated list of statuses to filter by. Legal values: `LIVE`, `PAST`, `SOON`. When omitted, returns all campaigns regardless of status.","type":"RegExp","source":"^(LIVE|PAST|SOON)(,(LIVE|PAST|SOON)){0,2}$","flags":""}},{"name":"startTimestamp","in":"query","required":false,"schema":{"pattern":"[0-9]*","description":"Returns campaigns starting *after* the given unix timestamp","type":"string"}},{"name":"endTimestamp","in":"query","required":false,"schema":{"pattern":"[0-9]*","description":"Returns campaigns ending *after* the given unix timestamp","type":"string"}},{"name":"withOpportunity","in":"query","required":false,"schema":{"description":"Include opportunity data. Will slow down the request. Default: false","type":"boolean"}},{"name":"distributionTypes","in":"query","required":false,"schema":{"type":"array","items":{"description":"Filter by reward mechanism. Legal values are: `FIX_REWARD`, `MAX_REWARD`, `DUTCH_AUCTION`, `TOTAL_APR`. Default: no filter","anyOf":[{"const":"FIX_REWARD","type":"string"},{"const":"MAX_REWARD","type":"string"},{"const":"DUTCH_AUCTION","type":"string"},{"const":"TOTAL_APR","type":"string"}]}}},{"name":"createdAfter","in":"query","required":false,"schema":{"anyOf":[{"description":"Return campaigns created after the given date. Format: YYYY-MM-DD","anyOf":[{"description":"Return campaigns created after the given date. Format: YYYY-MM-DD","type":"Date"},{"format":"date-time","type":"string"},{"format":"date","type":"string"},{"type":"number"}]},{"type":"null"}]}},{"name":"createdBefore","in":"query","required":false,"schema":{"anyOf":[{"description":"Return campaigns created before the given date. Format: YYYY-MM-DD","anyOf":[{"description":"Return campaigns created before the given date. Format: YYYY-MM-DD","type":"Date"},{"format":"date-time","type":"string"},{"format":"date","type":"string"},{"type":"number"}]},{"type":"null"}]}},{"name":"excludeSubCampaigns","in":"query","required":false,"schema":{"description":"Exclude subcampaigns from the results. Default: false","default":false,"type":"boolean"}},{"name":"onlySubCampaigns","in":"query","required":false,"schema":{"description":"Get Only Subcampaigns. Default: false","default":false,"type":"boolean"}},{"name":"rootCampaignId","in":"query","required":false,"schema":{"description":"Filter by root **internal campaign ID** (`Campaign.id`, numeric hash). Returns only subcampaigns sharing this root. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"parentCampaignId","in":"query","required":false,"schema":{"description":"Filter by parent **internal campaign ID** (`Campaign.id`, numeric hash). Returns only subcampaigns sharing this parent. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"mainProtocolId","in":"query","required":false,"schema":{"description":"Filter by **protocol slug** (e.g. `aave`, `morpho`). NOT a numeric ID. List slugs at [GET /v4/protocols](#tag/protocols/GET/v4/protocols/).","type":"string"}},{"name":"pauseCompute","in":"query","required":false,"schema":{"description":"Filter by compute-pause reason. Returns only campaigns whose `pauseCompute` matches this exact reason (e.g. `paused_high_amount`).","type":"string"}},{"name":"showPrivate","in":"query","required":false,"schema":{"description":"When true, include private campaigns the caller (JWT, API key owner, or BackOffice) is authorized to see, decoded. When false (default), only public campaigns are returned. Bypasses CDN cache.","type":"boolean"}},{"name":"listOwner","in":"query","required":false,"schema":{"description":"Address that owns the campaign lists referenced by `campaignLists`. Required when `campaignLists` is set.","type":"string"}},{"name":"campaignLists","in":"query","required":false,"schema":{"description":"Comma-separated list names owned by `listOwner` (stored in the global `campaign-lists` config). Returns campaigns whose ID is in *any* of the given lists (union). List names are case-insensitive. Lists are shareable — anyone can query any owner's lists. Example: `baseapp,renew`.","type":"string"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"id":{"description":"Unique campaign id","type":"string"},"computeChainId":{"description":"Chain ID where campaign data is computed","type":"number"},"distributionChainId":{"description":"Chain ID where rewards are distributed","type":"number"},"campaignId":{"description":"A hash of the campaign, unique per chain. Can be used to identify campaigns across chains","type":"string"},"type":{"description":"Campaign type identifier","type":"string"},"subType":{"description":"Campaign subtype for protocols like Silo, Radiant, Morpho, Dolomite, Compound, Ajna and Euler","anyOf":[{"type":"number"},{"type":"null"}]},"amount":{"description":"Amount of reward token units being distributed by the campaign","type":"string"},"startTimestamp":{"description":"Unix timestamp when the campaign starts","anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]},{"type":"bigint"}]},"endTimestamp":{"description":"Unix timestamp when the campaign ends","anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]},{"type":"bigint"}]},"creatorAddress":{"description":"Ethereum address of the campaign creator","type":"string"},"apr":{"description":"Annual Percentage Rate for this campaign","type":"number"},"dailyRewards":{"description":"Total daily rewards distributed in USD","type":"number"},"creator":{"description":"Campaign creator information","type":"object","properties":{"address":{"description":"Creator's Ethereum address","type":"string"},"tags":{"description":"Tag associated with the creator","type":"array","items":{"type":"string"}},"creatorId":{"nullable":true,"anyOf":[{"description":"Merkl creator ID if registered","type":"string"},{"type":"null"}]}},"required":["address"]},"params":{"description":"Campaign-specific parameters"},"description":{"description":"Campaign description","type":"string"},"chain":{"$id":"chain","title":"Chain","description":"Chain","type":"object","properties":{"id":{"$id":"chainId","title":"Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"name":{"title":"Chain Name","description":"Legible name of the chain","type":"string"},"icon":{"title":"Icon URL","description":"URL to the icon of the chain","type":"string"},"liveCampaigns":{"title":"Live Campaigns","description":"Number of campaigns currently live on this chain","type":"number"},"endOfDisputePeriod":{"type":"number"},"explorers":{"type":"array","items":{"type":"object","properties":{"type":{"anyOf":[{"const":"ETHERSCAN","type":"string"},{"const":"BLOCKSCOUT","type":"string"},{"const":"SOLSCAN","type":"string"}]},"url":{"type":"string"},"chainId":{"type":"number"}},"required":["type","url","chainId"]}},"lastClaimsOnchainFetchTimestamp":{"title":"Last Claims Onchain Fetch Timestamp","description":"Timestamp of the last claims onchain fetch","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","icon","liveCampaigns","endOfDisputePeriod","lastClaimsOnchainFetchTimestamp"]},"rewardTokenId":{"description":"Internal ID of the reward token","type":"string"},"rewardToken":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]},"opportunityId":{"description":"ID of the associated opportunity","type":"string"},"distributionChain":{"$id":"chain","title":"Chain","description":"Chain","type":"object","properties":{"id":{"$id":"chainId","title":"Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"name":{"title":"Chain Name","description":"Legible name of the chain","type":"string"},"icon":{"title":"Icon URL","description":"URL to the icon of the chain","type":"string"},"liveCampaigns":{"title":"Live Campaigns","description":"Number of campaigns currently live on this chain","type":"number"},"endOfDisputePeriod":{"type":"number"},"explorers":{"type":"array","items":{"type":"object","properties":{"type":{"anyOf":[{"const":"ETHERSCAN","type":"string"},{"const":"BLOCKSCOUT","type":"string"},{"const":"SOLSCAN","type":"string"}]},"url":{"type":"string"},"chainId":{"type":"number"}},"required":["type","url","chainId"]}},"lastClaimsOnchainFetchTimestamp":{"title":"Last Claims Onchain Fetch Timestamp","description":"Timestamp of the last claims onchain fetch","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","icon","liveCampaigns","endOfDisputePeriod","lastClaimsOnchainFetchTimestamp"]},"distributionType":{"description":"Type of reward distribution mechanism","anyOf":[{"const":"DUTCH_AUCTION","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"AAVE_NET_APR","type":"string"},{"const":"ERC4626_APR","type":"string"},{"const":"ERC4626_SPREAD_CAPPED","type":"string"},{"const":"AAVE_V4_NET_APR","type":"string"},{"const":"DEEL_DISTRIBUTION","type":"string"},{"const":"SOFR_SPREAD_RATCHET","type":"string"},{"const":"ERC4626_TARGET_APR_WITH_MERKL","type":"string"},{"const":"TARGET_APR_WITH_MERKL","type":"string"},{"const":"NET_APR","type":"string"},{"const":"BORROW_SUBSIDY","type":"string"},{"const":"NET_APR_WITH_MERKL","type":"string"},{"const":"YIELD_BASIS_PID","type":"string"},{"const":"COMPOSED","type":"string"}]},"campaignStatus":{"type":"object","properties":{"campaignId":{"type":"string"},"computedUntil":{"anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}]},"processingStarted":{"anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}]},"status":{"type":"string"},"preComputeProcessingStarted":{"anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}]},"preComputeStatus":{"type":"string"},"delay":{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]},"error":{"type":"string"},"details":{}},"required":["campaignId","computedUntil","processingStarted","status","preComputeProcessingStarted","preComputeStatus"]},"createdAt":{"format":"date","description":"ISO date when the campaign was created","type":"string"},"rootCampaignId":{"description":"ID of the root campaign for hierarchical campaigns","anyOf":[{"type":"string"},{"type":"null"}]},"parentCampaignId":{"description":"ID of the parent campaign for sub-campaigns","anyOf":[{"type":"string"},{"type":"null"}]},"childCampaignIds":{"description":"List of child campaign IDs","type":"array","items":{"type":"string"}},"dailyRewardsBreakdown":{"description":"Daily breakdown of rewards","type":"array","items":{"type":"object","properties":{"campaignId":{"type":"string"},"value":{"type":"number"},"maxValue":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"token":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]},"amount":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"distributionType":{"anyOf":[{"const":"DUTCH_AUCTION","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"AAVE_NET_APR","type":"string"},{"const":"ERC4626_APR","type":"string"},{"const":"ERC4626_SPREAD_CAPPED","type":"string"},{"const":"AAVE_V4_NET_APR","type":"string"},{"const":"DEEL_DISTRIBUTION","type":"string"},{"const":"SOFR_SPREAD_RATCHET","type":"string"},{"const":"ERC4626_TARGET_APR_WITH_MERKL","type":"string"},{"const":"TARGET_APR_WITH_MERKL","type":"string"},{"const":"NET_APR","type":"string"},{"const":"BORROW_SUBSIDY","type":"string"},{"const":"NET_APR_WITH_MERKL","type":"string"},{"const":"YIELD_BASIS_PID","type":"string"},{"const":"COMPOSED","type":"string"}]},"onChainCampaignId":{"type":"string"}},"required":["campaignId","value","timestamp","token","amount"]}},"pauseCompute":{"description":"ISO timestamp when computation was paused","anyOf":[{"type":"string"},{"type":"null"}]},"pausePrecompute":{"description":"Reason for pausing precomputation, or null if not paused","anyOf":[{"type":"string"},{"type":"null"}]},"hasOverrides":{"description":"Whether this campaign has previous config overrides","type":"boolean"},"isPrivate":{"description":"Indicates if the campaign is private","type":"boolean"},"hidden":{"description":"Whether the campaign is hidden from non-test API results","type":"boolean"},"hideLeaderboard":{"description":"Whether leaderboard, ranks and reward breakdowns are hidden for this campaign","type":"boolean"},"campaignEncodingHash":{"description":"Hash of the campaign configuration encoding","type":"string"}},"required":["id","computeChainId","distributionChainId","campaignId","type","amount","startTimestamp","endTimestamp","creatorAddress","params","chain","rewardToken","campaignStatus","createdAt","isPrivate"]},{"type":"object","properties":{"id":{"description":"Unique campaign id","type":"string"},"computeChainId":{"description":"Chain ID where campaign data is computed","type":"number"},"distributionChainId":{"description":"Chain ID where rewards are distributed","type":"number"},"campaignId":{"description":"A hash of the campaign, unique per chain. Can be used to identify campaigns across chains","type":"string"},"type":{"description":"Campaign type identifier","type":"string"},"subType":{"description":"Campaign subtype for protocols like Silo, Radiant, Morpho, Dolomite, Compound, Ajna and Euler","anyOf":[{"type":"number"},{"type":"null"}]},"amount":{"description":"Amount of reward token units being distributed by the campaign","type":"string"},"startTimestamp":{"description":"Unix timestamp when the campaign starts","anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]},{"type":"bigint"}]},"endTimestamp":{"description":"Unix timestamp when the campaign ends","anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]},{"type":"bigint"}]},"creatorAddress":{"description":"Ethereum address of the campaign creator","type":"string"},"apr":{"description":"Annual Percentage Rate for this campaign","type":"number"},"dailyRewards":{"description":"Total daily rewards distributed in USD","type":"number"},"creator":{"description":"Campaign creator information","type":"object","properties":{"address":{"description":"Creator's Ethereum address","type":"string"},"tags":{"description":"Tag associated with the creator","type":"array","items":{"type":"string"}},"creatorId":{"nullable":true,"anyOf":[{"description":"Merkl creator ID if registered","type":"string"},{"type":"null"}]}},"required":["address"]},"params":{"description":"Campaign-specific parameters"},"description":{"description":"Campaign description","type":"string"},"chain":{"$id":"chain","title":"Chain","description":"Chain","type":"object","properties":{"id":{"$id":"chainId","title":"Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"name":{"title":"Chain Name","description":"Legible name of the chain","type":"string"},"icon":{"title":"Icon URL","description":"URL to the icon of the chain","type":"string"},"liveCampaigns":{"title":"Live Campaigns","description":"Number of campaigns currently live on this chain","type":"number"},"endOfDisputePeriod":{"type":"number"},"explorers":{"type":"array","items":{"type":"object","properties":{"type":{"anyOf":[{"const":"ETHERSCAN","type":"string"},{"const":"BLOCKSCOUT","type":"string"},{"const":"SOLSCAN","type":"string"}]},"url":{"type":"string"},"chainId":{"type":"number"}},"required":["type","url","chainId"]}},"lastClaimsOnchainFetchTimestamp":{"title":"Last Claims Onchain Fetch Timestamp","description":"Timestamp of the last claims onchain fetch","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","icon","liveCampaigns","endOfDisputePeriod","lastClaimsOnchainFetchTimestamp"]},"rewardTokenId":{"description":"Internal ID of the reward token","type":"string"},"rewardToken":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]},"opportunityId":{"description":"ID of the associated opportunity","type":"string"},"distributionChain":{"$id":"chain","title":"Chain","description":"Chain","type":"object","properties":{"id":{"$id":"chainId","title":"Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"name":{"title":"Chain Name","description":"Legible name of the chain","type":"string"},"icon":{"title":"Icon URL","description":"URL to the icon of the chain","type":"string"},"liveCampaigns":{"title":"Live Campaigns","description":"Number of campaigns currently live on this chain","type":"number"},"endOfDisputePeriod":{"type":"number"},"explorers":{"type":"array","items":{"type":"object","properties":{"type":{"anyOf":[{"const":"ETHERSCAN","type":"string"},{"const":"BLOCKSCOUT","type":"string"},{"const":"SOLSCAN","type":"string"}]},"url":{"type":"string"},"chainId":{"type":"number"}},"required":["type","url","chainId"]}},"lastClaimsOnchainFetchTimestamp":{"title":"Last Claims Onchain Fetch Timestamp","description":"Timestamp of the last claims onchain fetch","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","icon","liveCampaigns","endOfDisputePeriod","lastClaimsOnchainFetchTimestamp"]},"distributionType":{"description":"Type of reward distribution mechanism","anyOf":[{"const":"DUTCH_AUCTION","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"AAVE_NET_APR","type":"string"},{"const":"ERC4626_APR","type":"string"},{"const":"ERC4626_SPREAD_CAPPED","type":"string"},{"const":"AAVE_V4_NET_APR","type":"string"},{"const":"DEEL_DISTRIBUTION","type":"string"},{"const":"SOFR_SPREAD_RATCHET","type":"string"},{"const":"ERC4626_TARGET_APR_WITH_MERKL","type":"string"},{"const":"TARGET_APR_WITH_MERKL","type":"string"},{"const":"NET_APR","type":"string"},{"const":"BORROW_SUBSIDY","type":"string"},{"const":"NET_APR_WITH_MERKL","type":"string"},{"const":"YIELD_BASIS_PID","type":"string"},{"const":"COMPOSED","type":"string"}]},"campaignStatus":{"type":"object","properties":{"campaignId":{"type":"string"},"computedUntil":{"anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}]},"processingStarted":{"anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}]},"status":{"type":"string"},"preComputeProcessingStarted":{"anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}]},"preComputeStatus":{"type":"string"},"delay":{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]},"error":{"type":"string"},"details":{}},"required":["campaignId","computedUntil","processingStarted","status","preComputeProcessingStarted","preComputeStatus"]},"createdAt":{"format":"date","description":"ISO date when the campaign was created","type":"string"},"rootCampaignId":{"description":"ID of the root campaign for hierarchical campaigns","anyOf":[{"type":"string"},{"type":"null"}]},"parentCampaignId":{"description":"ID of the parent campaign for sub-campaigns","anyOf":[{"type":"string"},{"type":"null"}]},"childCampaignIds":{"description":"List of child campaign IDs","type":"array","items":{"type":"string"}},"dailyRewardsBreakdown":{"description":"Daily breakdown of rewards","type":"array","items":{"type":"object","properties":{"campaignId":{"type":"string"},"value":{"type":"number"},"maxValue":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"token":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]},"amount":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"distributionType":{"anyOf":[{"const":"DUTCH_AUCTION","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"AAVE_NET_APR","type":"string"},{"const":"ERC4626_APR","type":"string"},{"const":"ERC4626_SPREAD_CAPPED","type":"string"},{"const":"AAVE_V4_NET_APR","type":"string"},{"const":"DEEL_DISTRIBUTION","type":"string"},{"const":"SOFR_SPREAD_RATCHET","type":"string"},{"const":"ERC4626_TARGET_APR_WITH_MERKL","type":"string"},{"const":"TARGET_APR_WITH_MERKL","type":"string"},{"const":"NET_APR","type":"string"},{"const":"BORROW_SUBSIDY","type":"string"},{"const":"NET_APR_WITH_MERKL","type":"string"},{"const":"YIELD_BASIS_PID","type":"string"},{"const":"COMPOSED","type":"string"}]},"onChainCampaignId":{"type":"string"}},"required":["campaignId","value","timestamp","token","amount"]}},"pauseCompute":{"description":"ISO timestamp when computation was paused","anyOf":[{"type":"string"},{"type":"null"}]},"pausePrecompute":{"description":"Reason for pausing precomputation, or null if not paused","anyOf":[{"type":"string"},{"type":"null"}]},"hasOverrides":{"description":"Whether this campaign has previous config overrides","type":"boolean"},"isPrivate":{"description":"Indicates if the campaign is private","type":"boolean"},"hidden":{"description":"Whether the campaign is hidden from non-test API results","type":"boolean"},"hideLeaderboard":{"description":"Whether leaderboard, ranks and reward breakdowns are hidden for this campaign","type":"boolean"},"campaignEncodingHash":{"description":"Hash of the campaign configuration encoding","type":"string"},"Opportunity":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"identifier":{"type":"string"},"name":{"type":"string"},"status":{"anyOf":[{"const":"NONE","type":"string"},{"const":"PAST","type":"string"},{"const":"LIVE","type":"string"},{"const":"SOON","type":"string"}]},"action":{"anyOf":[{"const":"POOL","type":"string"},{"const":"HOLD","type":"string"},{"const":"DROP","type":"string"},{"const":"LEND","type":"string"},{"const":"BORROW","type":"string"},{"const":"LONG","type":"string"},{"const":"SHORT","type":"string"},{"const":"SWAP","type":"string"},{"const":"INVALID","type":"string"},{"const":"STAKE","type":"string"}]},"description":{"type":"string"},"howToSteps":{"type":"array","items":{"type":"string"}},"mainProtocol":{"type":"string"},"depositUrl":{"type":"string"},"depositUrls":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"url":{"type":"string"},"subtitle":{"type":"string"},"icon":{"type":"string"},"priority":{"type":"number"}},"required":["id","title","url","priority"]}},"explorerAddress":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"chainId":{"type":"number"},"apr":{"type":"number"},"nativeApr":{"type":"number"},"totalApr":{"type":"number"},"dailyRewards":{"type":"number"},"maxDailyRewards":{"anyOf":[{"type":"number"},{"type":"null"}]},"tvl":{"type":"number"},"hidden":{"type":"boolean"},"liveCampaigns":{"type":"number"},"lastCampaignCreatedAt":{"type":"number"},"earliestCampaignStart":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"latestCampaignStart":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"earliestCampaignEnd":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"latestCampaignEnd":{"anyOf":[{"type":"bigint"},{"type":"string"}]}},"required":["id","type","identifier","status","action","chainId"]}},"required":["id","computeChainId","distributionChainId","campaignId","type","amount","startTimestamp","endTimestamp","creatorAddress","params","chain","rewardToken","campaignStatus","createdAt","isPrivate","Opportunity"]}]}}}}}},"operationId":"getV4Campaigns"}},"/v4/campaigns/count":{"get":{"tags":["Campaigns"],"description":"Count the campaigns matching the filters provided through query parameters.","parameters":[{"name":"page","in":"query","required":false,"schema":{"minimum":0,"description":"0-indexed page number","default":0,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":0,"description":"0-indexed page number","default":0,"type":"number"}]}},{"name":"items","in":"query","required":false,"schema":{"minimum":1,"maximum":100,"description":"Number of items returned by page","default":20,"errorMessage":"Items must be between 1 and 100","anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"maximum":100,"description":"Number of items returned by page","default":20,"errorMessage":"Items must be between 1 and 100","type":"number"}]}},{"name":"id","in":"query","required":false,"schema":{"description":"Filter by **internal campaign ID** (`Campaign.id`, numeric hash, e.g. `13896840291241714382`). NOT the on-chain `campaignId` (hex hash) — use the `campaignId` query for that. Comma-separated list supported. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"creatorTag","in":"query","required":false,"schema":{"description":"Filter campaigns created by a user who has a specific tag","type":"string"}},{"name":"creatorAddress","in":"query","required":false,"schema":{"type":"string"}},{"name":"creatorAddresses","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"creatorId","in":"query","required":false,"schema":{"description":"Filter campaigns created by a user who is registered as a merkl creator","type":"string"}},{"name":"chainId","in":"query","required":false,"schema":{"description":"Filter by compute chain.<br>You can get the list of all supported chains by calling [GET /v4/chains](#tag/chains/GET/v4/chains/)","anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"Filter by compute chain.<br>You can get the list of all supported chains by calling [GET /v4/chains](#tag/chains/GET/v4/chains/)","type":"number"}]}},{"name":"search","in":"query","required":false,"schema":{"description":"Search amongst multiple values (token, protocols, tags, campaigns)","type":"string"}},{"name":"distributionChainIds","in":"query","required":false,"schema":{"description":"Filter by distribution chain.<br>You can get the list of all supported chains by calling [GET /v4/chains](#tag/chains/GET/v4/chains/)","type":"array","items":{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}}},{"name":"type","in":"query","required":false,"schema":{"description":"Filter by type of campaign","type":"string"}},{"name":"types","in":"query","required":false,"schema":{"description":"Filter by type of campaign using an array. The `type` entry has priority.","type":"array","items":{"type":"string"}}},{"name":"subType","in":"query","required":false,"schema":{"description":"Silo, Radiant, Morpho, Dolomite, Compound, Ajna and Euler campaigns have a subtype attribute you can filter on","type":"number"}},{"name":"campaignId","in":"query","required":false,"schema":{"description":"Filter by **on-chain campaign ID** (`Campaign.campaignId`, 32-byte hex hash, e.g. `0x93cf385c2a446a7596820601caf25e63bfc4939efa9a89a6f21563b58ee54eb1`). The same on-chain campaignId can exist on several chains; one resource per chain is returned. NOT the internal `Campaign.id` (numeric hash) — use the `id` query for that. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"campaignIds","in":"query","required":false,"schema":{"description":"Filter by multiple **on-chain campaign IDs** (32-byte hex hashes). The `campaignId` entry has priority over this one. NOT internal `Campaign.id` values. See [ID types](/integrate-merkl/id-types).","type":"array","items":{"type":"string"}}},{"name":"mainParameter","in":"query","required":false,"schema":{"description":"Filter by `mainParameter` (a.k.a. opportunity `identifier`) — the value used to group campaigns into one opportunity. Can be a pool/vault/market address (e.g. `0x35Cbe854...`) or an arbitrary on-chain hash. NOT a campaign or opportunity ID. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"tokenSymbol","in":"query","required":false,"schema":{"description":"Filter by reward token symbol (e.g. USDC for campaigns rewarding in USDC)","type":"string"}},{"name":"tokenAddress","in":"query","required":false,"schema":{"description":"Filter results by the reward token address. Use in combination with chainId for accuracy","type":"string"}},{"name":"test","in":"query","required":false,"schema":{"description":"Return campaigns rewarding in test tokens","default":false,"type":"boolean"}},{"name":"tokenTypes","in":"query","required":false,"schema":{"description":"Filter by token type. Use POINT to include point campaigns and PRETGE to include preTGE campaigns. By default every token is returned.","type":"array","items":{"anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]}}},{"name":"point","in":"query","required":false,"schema":{"description":"Return campaigns rewarding in points","type":"boolean"}},{"name":"opportunityId","in":"query","required":false,"schema":{"description":"Filter by **internal opportunity ID** (`Opportunity.id`, numeric hash, e.g. `7673870997270712040`). Lookup at [GET /v4/opportunities](#tag/opportunities/GET/v4/opportunities). NOT a campaign ID. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"opportunityIds","in":"query","required":false,"schema":{"description":"Filter by multiple **internal opportunity IDs**. The `opportunityId` entry has priority over this one. See [ID types](/integrate-merkl/id-types).","type":"array","items":{"type":"string"}}},{"name":"status","in":"query","required":false,"schema":{"description":"Comma-separated list of statuses to filter by. Legal values: `LIVE`, `PAST`, `SOON`. When omitted, returns all campaigns regardless of status.","type":"RegExp","source":"^(LIVE|PAST|SOON)(,(LIVE|PAST|SOON)){0,2}$","flags":""}},{"name":"startTimestamp","in":"query","required":false,"schema":{"pattern":"[0-9]*","description":"Returns campaigns starting *after* the given unix timestamp","type":"string"}},{"name":"endTimestamp","in":"query","required":false,"schema":{"pattern":"[0-9]*","description":"Returns campaigns ending *after* the given unix timestamp","type":"string"}},{"name":"withOpportunity","in":"query","required":false,"schema":{"description":"Include opportunity data. Will slow down the request. Default: false","type":"boolean"}},{"name":"distributionTypes","in":"query","required":false,"schema":{"type":"array","items":{"description":"Filter by reward mechanism. Legal values are: `FIX_REWARD`, `MAX_REWARD`, `DUTCH_AUCTION`, `TOTAL_APR`. Default: no filter","anyOf":[{"const":"FIX_REWARD","type":"string"},{"const":"MAX_REWARD","type":"string"},{"const":"DUTCH_AUCTION","type":"string"},{"const":"TOTAL_APR","type":"string"}]}}},{"name":"createdAfter","in":"query","required":false,"schema":{"anyOf":[{"description":"Return campaigns created after the given date. Format: YYYY-MM-DD","anyOf":[{"description":"Return campaigns created after the given date. Format: YYYY-MM-DD","type":"Date"},{"format":"date-time","type":"string"},{"format":"date","type":"string"},{"type":"number"}]},{"type":"null"}]}},{"name":"createdBefore","in":"query","required":false,"schema":{"anyOf":[{"description":"Return campaigns created before the given date. Format: YYYY-MM-DD","anyOf":[{"description":"Return campaigns created before the given date. Format: YYYY-MM-DD","type":"Date"},{"format":"date-time","type":"string"},{"format":"date","type":"string"},{"type":"number"}]},{"type":"null"}]}},{"name":"excludeSubCampaigns","in":"query","required":false,"schema":{"description":"Exclude subcampaigns from the results. Default: false","default":false,"type":"boolean"}},{"name":"onlySubCampaigns","in":"query","required":false,"schema":{"description":"Get Only Subcampaigns. Default: false","default":false,"type":"boolean"}},{"name":"rootCampaignId","in":"query","required":false,"schema":{"description":"Filter by root **internal campaign ID** (`Campaign.id`, numeric hash). Returns only subcampaigns sharing this root. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"parentCampaignId","in":"query","required":false,"schema":{"description":"Filter by parent **internal campaign ID** (`Campaign.id`, numeric hash). Returns only subcampaigns sharing this parent. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"mainProtocolId","in":"query","required":false,"schema":{"description":"Filter by **protocol slug** (e.g. `aave`, `morpho`). NOT a numeric ID. List slugs at [GET /v4/protocols](#tag/protocols/GET/v4/protocols/).","type":"string"}},{"name":"pauseCompute","in":"query","required":false,"schema":{"description":"Filter by compute-pause reason. Returns only campaigns whose `pauseCompute` matches this exact reason (e.g. `paused_high_amount`).","type":"string"}},{"name":"showPrivate","in":"query","required":false,"schema":{"description":"When true, include private campaigns the caller (JWT, API key owner, or BackOffice) is authorized to see, decoded. When false (default), only public campaigns are returned. Bypasses CDN cache.","type":"boolean"}},{"name":"listOwner","in":"query","required":false,"schema":{"description":"Address that owns the campaign lists referenced by `campaignLists`. Required when `campaignLists` is set.","type":"string"}},{"name":"campaignLists","in":"query","required":false,"schema":{"description":"Comma-separated list names owned by `listOwner` (stored in the global `campaign-lists` config). Returns campaigns whose ID is in *any* of the given lists (union). List names are case-insensitive. Lists are shareable — anyone can query any owner's lists. Example: `baseapp,renew`.","type":"string"}}],"responses":{"200":{"description":"Response for status 200","content":{"text/plain":{"schema":{"type":"number"}}}}},"operationId":"getV4CampaignsCount"}},"/v4/campaigns/aggregate":{"get":{"tags":["Campaigns"],"description":"Aggregate all campaigns matching the provided filters and return a per-token breakdown of total amounts and USD values. Useful for analyzing program-level reward distribution (e.g. all rewards on a chain, all UNI rewards, or all campaigns by a creator).","parameters":[{"name":"page","in":"query","required":false,"schema":{"minimum":0,"description":"0-indexed page number","default":0,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":0,"description":"0-indexed page number","default":0,"type":"number"}]}},{"name":"items","in":"query","required":false,"schema":{"minimum":1,"maximum":100,"description":"Number of items returned by page","default":20,"errorMessage":"Items must be between 1 and 100","anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"maximum":100,"description":"Number of items returned by page","default":20,"errorMessage":"Items must be between 1 and 100","type":"number"}]}},{"name":"id","in":"query","required":false,"schema":{"description":"Filter by **internal campaign ID** (`Campaign.id`, numeric hash, e.g. `13896840291241714382`). NOT the on-chain `campaignId` (hex hash) — use the `campaignId` query for that. Comma-separated list supported. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"creatorTag","in":"query","required":false,"schema":{"description":"Filter campaigns created by a user who has a specific tag","type":"string"}},{"name":"creatorAddress","in":"query","required":false,"schema":{"type":"string"}},{"name":"creatorAddresses","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"creatorId","in":"query","required":false,"schema":{"description":"Filter campaigns created by a user who is registered as a merkl creator","type":"string"}},{"name":"chainId","in":"query","required":false,"schema":{"description":"Filter by compute chain.<br>You can get the list of all supported chains by calling [GET /v4/chains](#tag/chains/GET/v4/chains/)","anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"Filter by compute chain.<br>You can get the list of all supported chains by calling [GET /v4/chains](#tag/chains/GET/v4/chains/)","type":"number"}]}},{"name":"search","in":"query","required":false,"schema":{"description":"Search amongst multiple values (token, protocols, tags, campaigns)","type":"string"}},{"name":"distributionChainIds","in":"query","required":false,"schema":{"description":"Filter by distribution chain.<br>You can get the list of all supported chains by calling [GET /v4/chains](#tag/chains/GET/v4/chains/)","type":"array","items":{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}}},{"name":"type","in":"query","required":false,"schema":{"description":"Filter by type of campaign","type":"string"}},{"name":"types","in":"query","required":false,"schema":{"description":"Filter by type of campaign using an array. The `type` entry has priority.","type":"array","items":{"type":"string"}}},{"name":"subType","in":"query","required":false,"schema":{"description":"Silo, Radiant, Morpho, Dolomite, Compound, Ajna and Euler campaigns have a subtype attribute you can filter on","type":"number"}},{"name":"campaignId","in":"query","required":false,"schema":{"description":"Filter by **on-chain campaign ID** (`Campaign.campaignId`, 32-byte hex hash, e.g. `0x93cf385c2a446a7596820601caf25e63bfc4939efa9a89a6f21563b58ee54eb1`). The same on-chain campaignId can exist on several chains; one resource per chain is returned. NOT the internal `Campaign.id` (numeric hash) — use the `id` query for that. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"campaignIds","in":"query","required":false,"schema":{"description":"Filter by multiple **on-chain campaign IDs** (32-byte hex hashes). The `campaignId` entry has priority over this one. NOT internal `Campaign.id` values. See [ID types](/integrate-merkl/id-types).","type":"array","items":{"type":"string"}}},{"name":"mainParameter","in":"query","required":false,"schema":{"description":"Filter by `mainParameter` (a.k.a. opportunity `identifier`) — the value used to group campaigns into one opportunity. Can be a pool/vault/market address (e.g. `0x35Cbe854...`) or an arbitrary on-chain hash. NOT a campaign or opportunity ID. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"tokenSymbol","in":"query","required":false,"schema":{"description":"Filter by reward token symbol (e.g. USDC for campaigns rewarding in USDC)","type":"string"}},{"name":"tokenAddress","in":"query","required":false,"schema":{"description":"Filter results by the reward token address. Use in combination with chainId for accuracy","type":"string"}},{"name":"test","in":"query","required":false,"schema":{"description":"Return campaigns rewarding in test tokens","default":false,"type":"boolean"}},{"name":"tokenTypes","in":"query","required":false,"schema":{"description":"Filter by token type. Use POINT to include point campaigns and PRETGE to include preTGE campaigns. By default every token is returned.","type":"array","items":{"anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]}}},{"name":"point","in":"query","required":false,"schema":{"description":"Return campaigns rewarding in points","type":"boolean"}},{"name":"opportunityId","in":"query","required":false,"schema":{"description":"Filter by **internal opportunity ID** (`Opportunity.id`, numeric hash, e.g. `7673870997270712040`). Lookup at [GET /v4/opportunities](#tag/opportunities/GET/v4/opportunities). NOT a campaign ID. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"opportunityIds","in":"query","required":false,"schema":{"description":"Filter by multiple **internal opportunity IDs**. The `opportunityId` entry has priority over this one. See [ID types](/integrate-merkl/id-types).","type":"array","items":{"type":"string"}}},{"name":"status","in":"query","required":false,"schema":{"description":"Comma-separated list of statuses to filter by. Legal values: `LIVE`, `PAST`, `SOON`. When omitted, returns all campaigns regardless of status.","type":"RegExp","source":"^(LIVE|PAST|SOON)(,(LIVE|PAST|SOON)){0,2}$","flags":""}},{"name":"startTimestamp","in":"query","required":false,"schema":{"pattern":"[0-9]*","description":"Returns campaigns starting *after* the given unix timestamp","type":"string"}},{"name":"endTimestamp","in":"query","required":false,"schema":{"pattern":"[0-9]*","description":"Returns campaigns ending *after* the given unix timestamp","type":"string"}},{"name":"withOpportunity","in":"query","required":false,"schema":{"description":"Include opportunity data. Will slow down the request. Default: false","type":"boolean"}},{"name":"distributionTypes","in":"query","required":false,"schema":{"type":"array","items":{"description":"Filter by reward mechanism. Legal values are: `FIX_REWARD`, `MAX_REWARD`, `DUTCH_AUCTION`, `TOTAL_APR`. Default: no filter","anyOf":[{"const":"FIX_REWARD","type":"string"},{"const":"MAX_REWARD","type":"string"},{"const":"DUTCH_AUCTION","type":"string"},{"const":"TOTAL_APR","type":"string"}]}}},{"name":"createdAfter","in":"query","required":false,"schema":{"anyOf":[{"description":"Return campaigns created after the given date. Format: YYYY-MM-DD","anyOf":[{"description":"Return campaigns created after the given date. Format: YYYY-MM-DD","type":"Date"},{"format":"date-time","type":"string"},{"format":"date","type":"string"},{"type":"number"}]},{"type":"null"}]}},{"name":"createdBefore","in":"query","required":false,"schema":{"anyOf":[{"description":"Return campaigns created before the given date. Format: YYYY-MM-DD","anyOf":[{"description":"Return campaigns created before the given date. Format: YYYY-MM-DD","type":"Date"},{"format":"date-time","type":"string"},{"format":"date","type":"string"},{"type":"number"}]},{"type":"null"}]}},{"name":"excludeSubCampaigns","in":"query","required":false,"schema":{"description":"Exclude subcampaigns from the results. Default: false","default":false,"type":"boolean"}},{"name":"onlySubCampaigns","in":"query","required":false,"schema":{"description":"Get Only Subcampaigns. Default: false","default":false,"type":"boolean"}},{"name":"rootCampaignId","in":"query","required":false,"schema":{"description":"Filter by root **internal campaign ID** (`Campaign.id`, numeric hash). Returns only subcampaigns sharing this root. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"parentCampaignId","in":"query","required":false,"schema":{"description":"Filter by parent **internal campaign ID** (`Campaign.id`, numeric hash). Returns only subcampaigns sharing this parent. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"mainProtocolId","in":"query","required":false,"schema":{"description":"Filter by **protocol slug** (e.g. `aave`, `morpho`). NOT a numeric ID. List slugs at [GET /v4/protocols](#tag/protocols/GET/v4/protocols/).","type":"string"}},{"name":"pauseCompute","in":"query","required":false,"schema":{"description":"Filter by compute-pause reason. Returns only campaigns whose `pauseCompute` matches this exact reason (e.g. `paused_high_amount`).","type":"string"}},{"name":"showPrivate","in":"query","required":false,"schema":{"description":"When true, include private campaigns the caller (JWT, API key owner, or BackOffice) is authorized to see, decoded. When false (default), only public campaigns are returned. Bypasses CDN cache.","type":"boolean"}},{"name":"listOwner","in":"query","required":false,"schema":{"description":"Address that owns the campaign lists referenced by `campaignLists`. Required when `campaignLists` is set.","type":"string"}},{"name":"campaignLists","in":"query","required":false,"schema":{"description":"Comma-separated list names owned by `listOwner` (stored in the global `campaign-lists` config). Returns campaigns whose ID is in *any* of the given lists (union). List names are case-insensitive. Lists are shareable — anyone can query any owner's lists. Example: `baseapp,renew`.","type":"string"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"totalCampaigns":{"description":"Total number of campaigns matching filters","type":"number"},"totalUsd":{"description":"Total USD value of all priced token rewards","type":"number"},"period":{"type":"object","properties":{"start":{"description":"ISO date of earliest campaign start, null if none","anyOf":[{"type":"string"},{"type":"null"}]},"end":{"description":"ISO date of latest campaign end, null if none","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["start","end"]},"uniqueCreators":{"description":"Number of distinct campaign creators","type":"number"},"uniqueOpportunities":{"description":"Number of distinct opportunities targeted","type":"number"},"tokens":{"description":"Priced token breakdowns sorted by USD desc","type":"array","items":{"type":"object","properties":{"tokenId":{"description":"Unique token identifier (chain+address)","type":"string"},"symbol":{"description":"Reward token symbol (not unique across chains)","type":"string"},"totalAmount":{"description":"Total raw token amount (amount / 10^decimals)","type":"number"},"currentPrice":{"description":"Current token price in USD","type":"number"},"totalUsd":{"description":"Total USD value at current price","type":"number"},"campaignCount":{"description":"Number of campaigns distributing this token","type":"number"},"campaignIds":{"description":"IDs of campaigns distributing this token","type":"array","items":{"type":"string"}}},"required":["tokenId","symbol","totalAmount","currentPrice","totalUsd","campaignCount","campaignIds"]}},"pointsTokens":{"description":"Point and preTGE token breakdowns","type":"array","items":{"type":"object","properties":{"tokenId":{"description":"Unique token identifier (chain+address)","type":"string"},"symbol":{"description":"Points token symbol (not unique across chains)","type":"string"},"totalAmount":{"description":"Total raw token amount","type":"number"},"campaignCount":{"description":"Number of campaigns distributing this token","type":"number"},"campaignIds":{"description":"IDs of campaigns distributing this token","type":"array","items":{"type":"string"}}},"required":["tokenId","symbol","totalAmount","campaignCount","campaignIds"]}}},"required":["totalCampaigns","totalUsd","period","uniqueCreators","uniqueOpportunities","tokens","pointsTokens"]}}}}},"operationId":"getV4CampaignsAggregate"}},"/v4/campaign-lists/{owner}":{"get":{"tags":["Campaign Lists"],"description":"List every named campaign list owned by an address, with its size and last-updated timestamp.","parameters":[{"name":"owner","in":"path","required":true,"schema":{"description":"List owner address (validated and checksum-normalized)","type":"string"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"owner":{"type":"string"},"lists":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"size":{"type":"number"}},"required":["name","size"]}}},"required":["owner","lists"]}}}}},"operationId":"getV4Campaign-listsByOwner"}},"/v4/campaign-lists/{owner}/{name}":{"get":{"tags":["Campaign Lists"],"description":"Get the campaign IDs in a single named list. Returns 404 if the list does not exist.","parameters":[{"name":"owner","in":"path","required":true,"schema":{"description":"List owner address (validated and checksum-normalized)","type":"string"}},{"name":"name","in":"path","required":true,"schema":{"minLength":1,"maxLength":64,"description":"List name (case-insensitive)","type":"string"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"owner":{"type":"string"},"name":{"type":"string"},"campaignIds":{"type":"array","items":{"type":"string"}},"size":{"type":"number"}},"required":["owner","name","campaignIds","size"]}}}}},"operationId":"getV4Campaign-listsByOwnerByName"},"put":{"tags":["Campaign Lists"],"description":"Replace the campaign IDs in a named list (an empty array deletes the list). Requires the owner's JWT or API key.","parameters":[{"name":"owner","in":"path","required":true,"schema":{"description":"List owner address (validated and checksum-normalized)","type":"string"}},{"name":"name","in":"path","required":true,"schema":{"minLength":1,"maxLength":64,"description":"List name (case-insensitive)","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"campaignIds":{"description":"Campaign IDs to include in the list. Each entry is either an internal hash (`Campaign.id`) or a `{ distributionChain, campaignId }` composite.","type":"array","items":{"anyOf":[{"minLength":1,"description":"Internal campaign ID (hash string)","type":"string"},{"description":"Composite identifier `{ distributionChain, campaignId }`","type":"object","properties":{"distributionChain":{"description":"Distribution chain ID","type":"number"},"campaignId":{"minLength":1,"description":"Onchain campaign ID","type":"string"}},"required":["distributionChain","campaignId"]}]}}},"required":["campaignIds"]}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"campaignIds":{"description":"Campaign IDs to include in the list. Each entry is either an internal hash (`Campaign.id`) or a `{ distributionChain, campaignId }` composite.","type":"array","items":{"anyOf":[{"minLength":1,"description":"Internal campaign ID (hash string)","type":"string"},{"description":"Composite identifier `{ distributionChain, campaignId }`","type":"object","properties":{"distributionChain":{"description":"Distribution chain ID","type":"number"},"campaignId":{"minLength":1,"description":"Onchain campaign ID","type":"string"}},"required":["distributionChain","campaignId"]}]}}},"required":["campaignIds"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"campaignIds":{"description":"Campaign IDs to include in the list. Each entry is either an internal hash (`Campaign.id`) or a `{ distributionChain, campaignId }` composite.","type":"array","items":{"anyOf":[{"minLength":1,"description":"Internal campaign ID (hash string)","type":"string"},{"description":"Composite identifier `{ distributionChain, campaignId }`","type":"object","properties":{"distributionChain":{"description":"Distribution chain ID","type":"number"},"campaignId":{"minLength":1,"description":"Onchain campaign ID","type":"string"}},"required":["distributionChain","campaignId"]}]}}},"required":["campaignIds"]}}},"required":true},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"owner":{"type":"string"},"name":{"type":"string"},"campaignIds":{"type":"array","items":{"type":"string"}},"size":{"type":"number"}},"required":["owner","name","campaignIds","size"]}}}}},"operationId":"putV4Campaign-listsByOwnerByName"},"delete":{"tags":["Campaign Lists"],"description":"Delete a named list entirely. Requires the owner's JWT or API key. No-op if the list does not exist.","parameters":[{"name":"owner","in":"path","required":true,"schema":{"description":"List owner address (validated and checksum-normalized)","type":"string"}},{"name":"name","in":"path","required":true,"schema":{"minLength":1,"maxLength":64,"description":"List name (case-insensitive)","type":"string"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"]}}}}},"operationId":"deleteV4Campaign-listsByOwnerByName"}},"/v4/campaign-lists/{owner}/{name}/add":{"post":{"tags":["Campaign Lists"],"description":"Append campaign IDs to a list, creating it if it does not exist. Requires the owner's JWT or API key.","parameters":[{"name":"owner","in":"path","required":true,"schema":{"description":"List owner address (validated and checksum-normalized)","type":"string"}},{"name":"name","in":"path","required":true,"schema":{"minLength":1,"maxLength":64,"description":"List name (case-insensitive)","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"campaignIds":{"description":"Campaign IDs to include in the list. Each entry is either an internal hash (`Campaign.id`) or a `{ distributionChain, campaignId }` composite.","type":"array","items":{"anyOf":[{"minLength":1,"description":"Internal campaign ID (hash string)","type":"string"},{"description":"Composite identifier `{ distributionChain, campaignId }`","type":"object","properties":{"distributionChain":{"description":"Distribution chain ID","type":"number"},"campaignId":{"minLength":1,"description":"Onchain campaign ID","type":"string"}},"required":["distributionChain","campaignId"]}]}}},"required":["campaignIds"]}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"campaignIds":{"description":"Campaign IDs to include in the list. Each entry is either an internal hash (`Campaign.id`) or a `{ distributionChain, campaignId }` composite.","type":"array","items":{"anyOf":[{"minLength":1,"description":"Internal campaign ID (hash string)","type":"string"},{"description":"Composite identifier `{ distributionChain, campaignId }`","type":"object","properties":{"distributionChain":{"description":"Distribution chain ID","type":"number"},"campaignId":{"minLength":1,"description":"Onchain campaign ID","type":"string"}},"required":["distributionChain","campaignId"]}]}}},"required":["campaignIds"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"campaignIds":{"description":"Campaign IDs to include in the list. Each entry is either an internal hash (`Campaign.id`) or a `{ distributionChain, campaignId }` composite.","type":"array","items":{"anyOf":[{"minLength":1,"description":"Internal campaign ID (hash string)","type":"string"},{"description":"Composite identifier `{ distributionChain, campaignId }`","type":"object","properties":{"distributionChain":{"description":"Distribution chain ID","type":"number"},"campaignId":{"minLength":1,"description":"Onchain campaign ID","type":"string"}},"required":["distributionChain","campaignId"]}]}}},"required":["campaignIds"]}}},"required":true},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"owner":{"type":"string"},"name":{"type":"string"},"campaignIds":{"type":"array","items":{"type":"string"}},"size":{"type":"number"}},"required":["owner","name","campaignIds","size"]}}}}},"operationId":"postV4Campaign-listsByOwnerByNameAdd"}},"/v4/campaign-lists/{owner}/{name}/remove":{"post":{"tags":["Campaign Lists"],"description":"Remove the provided campaign IDs from a list. If the list becomes empty, it is deleted. Requires the owner's JWT or API key.","parameters":[{"name":"owner","in":"path","required":true,"schema":{"description":"List owner address (validated and checksum-normalized)","type":"string"}},{"name":"name","in":"path","required":true,"schema":{"minLength":1,"maxLength":64,"description":"List name (case-insensitive)","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"campaignIds":{"description":"Campaign IDs to include in the list. Each entry is either an internal hash (`Campaign.id`) or a `{ distributionChain, campaignId }` composite.","type":"array","items":{"anyOf":[{"minLength":1,"description":"Internal campaign ID (hash string)","type":"string"},{"description":"Composite identifier `{ distributionChain, campaignId }`","type":"object","properties":{"distributionChain":{"description":"Distribution chain ID","type":"number"},"campaignId":{"minLength":1,"description":"Onchain campaign ID","type":"string"}},"required":["distributionChain","campaignId"]}]}}},"required":["campaignIds"]}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"campaignIds":{"description":"Campaign IDs to include in the list. Each entry is either an internal hash (`Campaign.id`) or a `{ distributionChain, campaignId }` composite.","type":"array","items":{"anyOf":[{"minLength":1,"description":"Internal campaign ID (hash string)","type":"string"},{"description":"Composite identifier `{ distributionChain, campaignId }`","type":"object","properties":{"distributionChain":{"description":"Distribution chain ID","type":"number"},"campaignId":{"minLength":1,"description":"Onchain campaign ID","type":"string"}},"required":["distributionChain","campaignId"]}]}}},"required":["campaignIds"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"campaignIds":{"description":"Campaign IDs to include in the list. Each entry is either an internal hash (`Campaign.id`) or a `{ distributionChain, campaignId }` composite.","type":"array","items":{"anyOf":[{"minLength":1,"description":"Internal campaign ID (hash string)","type":"string"},{"description":"Composite identifier `{ distributionChain, campaignId }`","type":"object","properties":{"distributionChain":{"description":"Distribution chain ID","type":"number"},"campaignId":{"minLength":1,"description":"Onchain campaign ID","type":"string"}},"required":["distributionChain","campaignId"]}]}}},"required":["campaignIds"]}}},"required":true},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"owner":{"type":"string"},"name":{"type":"string"},"campaignIds":{"type":"array","items":{"type":"string"}},"size":{"type":"number"}},"required":["owner","name","campaignIds","size"]}}}}},"operationId":"postV4Campaign-listsByOwnerByNameRemove"}},"/v4/chains/":{"get":{"tags":["Chains"],"description":"List chains supported and integrated by Merkl. Use query parameters to filter by test chains or other criteria.","parameters":[{"name":"name","in":"query","required":false,"schema":{"description":"Search by blockchain name","type":"string"}},{"name":"test","in":"query","required":false,"schema":{"description":"Includes chains that have only test opportunities.","default":false,"type":"boolean"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"array","items":{"$id":"chain","title":"Chain","description":"Chain","type":"object","properties":{"id":{"$id":"chainId","title":"Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"name":{"title":"Chain Name","description":"Legible name of the chain","type":"string"},"icon":{"title":"Icon URL","description":"URL to the icon of the chain","type":"string"},"liveCampaigns":{"title":"Live Campaigns","description":"Number of campaigns currently live on this chain","type":"number"},"endOfDisputePeriod":{"type":"number"},"explorers":{"type":"array","items":{"type":"object","properties":{"type":{"anyOf":[{"const":"ETHERSCAN","type":"string"},{"const":"BLOCKSCOUT","type":"string"},{"const":"SOLSCAN","type":"string"}]},"url":{"type":"string"},"chainId":{"type":"number"}},"required":["type","url","chainId"]}},"lastClaimsOnchainFetchTimestamp":{"title":"Last Claims Onchain Fetch Timestamp","description":"Timestamp of the last claims onchain fetch","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","icon","liveCampaigns","endOfDisputePeriod","lastClaimsOnchainFetchTimestamp"]}}}}}},"operationId":"getV4Chains"}},"/v4/chains/{chainId}":{"get":{"tags":["Chains"],"description":"Get a specific chain by its chainId path parameter","parameters":[{"name":"chainId","in":"path","required":true,"schema":{"description":"**Chain ID** (numeric, e.g. `1` for Ethereum, `42161` for Arbitrum).","anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"**Chain ID** (numeric, e.g. `1` for Ethereum, `42161` for Arbitrum).","type":"number"}]}}],"operationId":"getV4ChainsByChainId"}},"/v4/claims/":{"get":{"tags":["Claims"],"description":"Fetch claims filtered by chainId(s), recipient, campaignId, token, root, exact `reason`, and an inclusive `[fromTimestamp, toTimestamp]` range (Unix seconds). Scope by timestamp to keep responses light for recipients with many claims. Returns the 100 most recent claims unless a `recipient` is given, in which case all matching claims are returned.","parameters":[{"name":"chainId","in":"query","required":false,"schema":{"description":"Single chain ID to filter claims (deprecated, use chainIds)","anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"Single chain ID to filter claims (deprecated, use chainIds)","type":"number"}]}},{"name":"chainIds","in":"query","required":false,"schema":{"description":"Chain IDs to filter claims","type":"array","items":{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}}},{"name":"recipient","in":"query","required":false,"schema":{"description":"Recipient EVM address (20 bytes, e.g. `0xabcd...`).","type":"string"}},{"name":"campaignId","in":"query","required":false,"schema":{"description":"Filter claims by **on-chain campaign ID** (32-byte hex hash, e.g. `0x93cf385c...`). NOT the internal `Campaign.id`. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"token","in":"query","required":false,"schema":{"description":"Token address to filter claims (20-byte EVM address).","type":"string"}},{"name":"root","in":"query","required":false,"schema":{"description":"Filter by root","type":"string"}},{"name":"reason","in":"query","required":false,"schema":{"description":"Exact match on the claim `reason` (e.g. `unclaimedRewards`).","type":"string"}},{"name":"fromTimestamp","in":"query","required":false,"schema":{"description":"Lower bound (inclusive) on the claim Unix timestamp, in seconds.","anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"Lower bound (inclusive) on the claim Unix timestamp, in seconds.","type":"number"}]}},{"name":"toTimestamp","in":"query","required":false,"schema":{"description":"Upper bound (inclusive) on the claim Unix timestamp, in seconds.","anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"Upper bound (inclusive) on the claim Unix timestamp, in seconds.","type":"number"}]}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"description":"Claim Id in Merkl Database","type":"string"},"chainId":{"description":"Chain Id the claim was detected on","anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"Chain Id the claim was detected on","type":"number"}]},"recipient":{"description":"Address of the recipient","type":"string"},"blockNumber":{"description":"Block number at which the claim occurred","type":"number"},"timestamp":{"description":"Unix timestamp of the claim","type":"number"},"token":{"description":"Token address that was claimed","type":"string"},"campaignId":{"description":"Campaign ID associated with the claim","type":"string"},"reason":{"description":"Reason for the claim","type":"string"},"root":{"description":"Merkle root used for the claim","type":"string"},"amount":{"description":"Amount claimed (as string to handle big numbers)","type":"string"},"metadata":{"description":"Additional metadata about the claim"},"isLatest":{"description":"Whether this is the latest claim for this combination","type":"boolean"}},"required":["id","chainId","recipient","blockNumber","timestamp","token","campaignId","reason","root","amount","metadata","isLatest"]}}}}}},"operationId":"getV4Claims"}},"/v4/claims/history/{address}":{"get":{"tags":["Claims"],"description":"Fetch a recipient's historical claims, grouped per claim transaction with amounts aggregated by token.","parameters":[{"name":"address","in":"path","required":true,"schema":{"description":"Recipient address","type":"string"}},{"name":"chainIds","in":"query","required":false,"schema":{"description":"Chain IDs to filter claims","type":"array","items":{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"description":"Claim Id in Merkl Database","type":"string"},"chainId":{"description":"Chain Id the claim was detected on","anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"Chain Id the claim was detected on","type":"number"}]},"recipient":{"description":"Address of the recipient","type":"string"},"blockNumber":{"description":"Block number at which the claim occurred","type":"number"},"timestamp":{"description":"Unix timestamp of the claim","type":"number"},"token":{"description":"Token address that was claimed","type":"string"},"campaignId":{"description":"Campaign ID associated with the claim","type":"string"},"reason":{"description":"Reason for the claim","type":"string"},"root":{"description":"Merkle root used for the claim","type":"string"},"amount":{"description":"Amount claimed (as string to handle big numbers)","type":"string"},"metadata":{"description":"Additional metadata about the claim"},"isLatest":{"description":"Whether this is the latest claim for this combination","type":"boolean"}},"required":["id","chainId","recipient","blockNumber","timestamp","token","campaignId","reason","root","amount","metadata","isLatest"]}}}}}},"operationId":"getV4ClaimsHistoryByAddress"}},"/v4/claims/earnings/{address}":{"get":{"tags":["Claims"],"description":"Aggregate a recipient's claimed rewards into time buckets broken down by token, in USD. Supports `bucket` granularity (day/week/month, default week) and `range` window (7d/30d/all, default all).","parameters":[{"name":"address","in":"path","required":true,"schema":{"description":"Recipient EVM address (20 bytes, e.g. `0xabcd...`).","type":"string"}},{"name":"chainIds","in":"query","required":false,"schema":{"description":"Chain IDs to filter claims","type":"array","items":{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}}},{"name":"bucket","in":"query","required":false,"schema":{"description":"Granularity of each bucket (UTC-aligned).","anyOf":[{"const":"day","type":"string"},{"const":"week","type":"string"},{"const":"month","type":"string"}]}},{"name":"range","in":"query","required":false,"schema":{"description":"Rolling window of data to include: last 7 days, last 30 days, or the full history.","anyOf":[{"const":"7d","type":"string"},{"const":"30d","type":"string"},{"const":"all","type":"string"}]}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"bucket":{"description":"Granularity of each bucket (UTC-aligned).","anyOf":[{"const":"day","type":"string"},{"const":"week","type":"string"},{"const":"month","type":"string"}]},"range":{"description":"Rolling window of data to include: last 7 days, last 30 days, or the full history.","anyOf":[{"const":"7d","type":"string"},{"const":"30d","type":"string"},{"const":"all","type":"string"}]},"tokens":{"description":"Distinct token series across all buckets (chart legend)","type":"array","items":{"type":"object","properties":{"id":{"description":"Stable chart series id (`chainId:tokenAddress`, or `__other__` for folded tokens)","type":"string"},"symbol":{"description":"Token symbol displayed in the chart legend","type":"string"},"chainId":{"description":"Chain ID of the token; absent for synthetic series like `Other`","type":"number"},"address":{"description":"Token address; absent for synthetic series like `Other`","type":"string"},"icon":{"description":"Token icon URL; absent for synthetic series like `Other`","type":"string"},"price":{"description":"Current token price in USD; absent when unpriced or for synthetic series","type":"number"}},"required":["id","symbol"]}},"buckets":{"description":"Earnings buckets, ascending by start timestamp","type":"array","items":{"type":"object","properties":{"start":{"description":"Unix timestamp (seconds) of the bucket start, UTC-aligned","type":"number"},"end":{"description":"Unix timestamp (seconds) of the bucket end (exclusive)","type":"number"},"breakdown":{"description":"Per-token USD value, descending","type":"array","items":{"type":"object","properties":{"tokenId":{"description":"Stable token series id matching an entry in `tokens`","type":"string"},"value":{"description":"USD value earned in the bucket","type":"number"}},"required":["tokenId","value"]}}},"required":["start","end","breakdown"]}}},"required":["bucket","range","tokens","buckets"]}}}}},"operationId":"getV4ClaimsEarningsByAddress"}},"/v4/claims/count":{"get":{"tags":["Claims"],"description":"Returns the total number of unique claimers on a specific chain.","parameters":[{"name":"chainId","in":"query","required":true,"schema":{"description":"Chain ID to count claimers on","examples":[1],"anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"Chain ID to count claimers on","examples":[1],"type":"number"}]}}],"operationId":"getV4ClaimsCount"}},"/v4/claims/count/total":{"get":{"tags":["Claims"],"description":"Returns the total number of unique claimers across all chains.","operationId":"getV4ClaimsCountTotal"}},"/v4/config/{id}":{"get":{"tags":["Config"],"description":"Beta feature (not production ready yet) - Fetch the configuration for a specific campaign by its ID. Use id path parameter.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{}}}}},"operationId":"getV4ConfigById"}},"/v4/config/diff":{"post":{"tags":["Config"],"description":"Compute the diff between two config schemas. Returns an array of edit operations (insert/update/delete).","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"oldConfig":{"description":"The original campaign configuration."},"newConfig":{"description":"The new campaign configuration to compare against."}},"required":["oldConfig","newConfig"]}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"oldConfig":{"description":"The original campaign configuration."},"newConfig":{"description":"The new campaign configuration to compare against."}},"required":["oldConfig","newConfig"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"oldConfig":{"description":"The original campaign configuration."},"newConfig":{"description":"The new campaign configuration to compare against."}},"required":["oldConfig","newConfig"]}}},"required":true},"responses":{"200":{"description":"Override value as JSON","content":{"application/json":{"schema":{"description":"Override value as JSON","type":"array","items":{"anyOf":[{"type":"object","properties":{"type":{"const":"insert","type":"string"},"path":{"type":"string"},"value":{}},"required":["type","path","value"]},{"type":"object","properties":{"type":{"const":"update","type":"string"},"path":{"type":"string"},"value":{}},"required":["type","path","value"]},{"type":"object","properties":{"type":{"const":"delete","type":"string"},"path":{"type":"string"}},"required":["type","path"]}]}}}}}},"operationId":"postV4ConfigDiff"}},"/v4/config/diff/{id}":{"post":{"tags":["Config"],"description":"Compute the diff between the current config of a campaign and a new one. Returns an array of edit operations (insert/update/delete).","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{}},"application/x-www-form-urlencoded":{"schema":{}},"multipart/form-data":{"schema":{}}},"required":true},"responses":{"200":{"description":"Override value as JSON","content":{"application/json":{"schema":{"description":"Override value as JSON","type":"array","items":{"anyOf":[{"type":"object","properties":{"type":{"const":"insert","type":"string"},"path":{"type":"string"},"value":{}},"required":["type","path","value"]},{"type":"object","properties":{"type":{"const":"update","type":"string"},"path":{"type":"string"},"value":{}},"required":["type","path","value"]},{"type":"object","properties":{"type":{"const":"delete","type":"string"},"path":{"type":"string"}},"required":["type","path"]}]}}}}}},"operationId":"postV4ConfigDiffById"}},"/v4/config/extend":{"post":{"tags":["Config"],"description":"Beta feature (not production ready yet) - Extends a campaign configuration with the values resolved by the engine.","requestBody":{"content":{"application/json":{"schema":{}},"application/x-www-form-urlencoded":{"schema":{}},"multipart/form-data":{"schema":{}}},"required":true},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{}}}}},"operationId":"postV4ConfigExtend"}},"/v4/config/opportunity":{"post":{"tags":["Config"],"description":"Beta feature (not production ready yet) - Computes an opportunity from a campaign configuration","requestBody":{"content":{"application/json":{"schema":{}},"application/x-www-form-urlencoded":{"schema":{}},"multipart/form-data":{"schema":{}}},"required":true},"operationId":"postV4ConfigOpportunity"}},"/v4/config/tvl":{"post":{"tags":["Config"],"description":"Beta feature (not production ready yet) - Computes a TVL from a campaign configuration","requestBody":{"content":{"application/json":{"schema":{}},"application/x-www-form-urlencoded":{"schema":{}},"multipart/form-data":{"schema":{}}},"required":true},"operationId":"postV4ConfigTvl"}},"/v4/config/encode":{"post":{"tags":["Config"],"description":"Beta feature (not production ready yet) - Encodes campaign parameters into the transaction payload used to create the campaign on-chain.","parameters":[{"name":"extend","in":"query","required":false,"schema":{"default":false,"description":"Whether you want to also extend configs to test it works","type":"boolean"}},{"name":"signerAddress","in":"query","required":false,"schema":{"description":"Address of the wallet signing the campaign creation. Used as the address for the feeRebate lookup; falls back to config.creator when omitted or null.","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{}},"application/x-www-form-urlencoded":{"schema":{}},"multipart/form-data":{"schema":{}}},"required":true},"operationId":"postV4ConfigEncode"}},"/v4/config/encode/override":{"post":{"tags":["Config"],"description":"Beta feature (not production ready yet) - Builds the transaction payload used to override (or cancel) an existing campaign on-chain, from pre-encoded on-chain args. Requires campaignId and distributionChainId query parameters.","parameters":[{"name":"campaignId","in":"query","required":true,"schema":{"description":"The identifier of the campaign to override.","type":"string"}},{"name":"distributionChainId","in":"query","required":true,"schema":{"description":"The chain the campaign is distributed on.","anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"The chain the campaign is distributed on.","type":"number"}]}}],"requestBody":{"description":"The new on-chain campaign parameters to apply (immutable fields preserved on-chain).","content":{"application/json":{"schema":{"type":"object","properties":{"campaignId":{"type":"string"},"creator":{"$id":"address","title":"Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"rewardToken":{"$id":"address","title":"Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"amount":{"type":"string"},"campaignType":{"type":"integer"},"startTimestamp":{"$id":"timestamp","title":"Timestamp","description":"Unix timestamp in seconds (not milliseconds).","type":"number"},"duration":{"type":"integer"},"campaignData":{"type":"string"}},"required":["campaignId","creator","rewardToken","amount","campaignType","startTimestamp","duration","campaignData"],"description":"The new on-chain campaign parameters to apply (immutable fields preserved on-chain)."}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"campaignId":{"type":"string"},"creator":{"$id":"address","title":"Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"rewardToken":{"$id":"address","title":"Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"amount":{"type":"string"},"campaignType":{"type":"integer"},"startTimestamp":{"$id":"timestamp","title":"Timestamp","description":"Unix timestamp in seconds (not milliseconds).","type":"number"},"duration":{"type":"integer"},"campaignData":{"type":"string"}},"required":["campaignId","creator","rewardToken","amount","campaignType","startTimestamp","duration","campaignData"],"description":"The new on-chain campaign parameters to apply (immutable fields preserved on-chain)."}},"multipart/form-data":{"schema":{"type":"object","properties":{"campaignId":{"type":"string"},"creator":{"$id":"address","title":"Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"rewardToken":{"$id":"address","title":"Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"amount":{"type":"string"},"campaignType":{"type":"integer"},"startTimestamp":{"$id":"timestamp","title":"Timestamp","description":"Unix timestamp in seconds (not milliseconds).","type":"number"},"duration":{"type":"integer"},"campaignData":{"type":"string"}},"required":["campaignId","creator","rewardToken","amount","campaignType","startTimestamp","duration","campaignData"],"description":"The new on-chain campaign parameters to apply (immutable fields preserved on-chain)."}}},"required":true},"operationId":"postV4ConfigEncodeOverride"}},"/v4/config/encode/reallocate":{"post":{"tags":["Config"],"description":"Beta feature (not production ready yet) - Builds the transaction payload used to reallocate an existing campaign's unclaimed rewards on-chain (EVM calldata / Stellar XDR). Requires campaignId and distributionChainId query parameters.","parameters":[{"name":"campaignId","in":"query","required":true,"schema":{"description":"The identifier of the campaign whose rewards are reallocated.","type":"string"}},{"name":"distributionChainId","in":"query","required":true,"schema":{"description":"The chain the campaign is distributed on.","anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"The chain the campaign is distributed on.","type":"number"}]}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"froms":{"description":"Source addresses to reallocate from (the zero address alone reallocates every wallet).","type":"array","items":{"type":"string"}},"to":{"description":"Destination address that receives the reallocated rewards.","type":"string"},"caller":{"description":"Address signing the reallocation (creator or authorized operator). Required on Stellar (transaction source), ignored on EVM.","type":"string"}},"required":["froms","to"]}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"froms":{"description":"Source addresses to reallocate from (the zero address alone reallocates every wallet).","type":"array","items":{"type":"string"}},"to":{"description":"Destination address that receives the reallocated rewards.","type":"string"},"caller":{"description":"Address signing the reallocation (creator or authorized operator). Required on Stellar (transaction source), ignored on EVM.","type":"string"}},"required":["froms","to"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"froms":{"description":"Source addresses to reallocate from (the zero address alone reallocates every wallet).","type":"array","items":{"type":"string"}},"to":{"description":"Destination address that receives the reallocated rewards.","type":"string"},"caller":{"description":"Address signing the reallocation (creator or authorized operator). Required on Stellar (transaction source), ignored on EVM.","type":"string"}},"required":["froms","to"]}}},"required":true},"operationId":"postV4ConfigEncodeReallocate"}},"/v4/config/encode/safe":{"post":{"tags":["Config"],"description":"Beta feature (not production ready yet) - Encodes campaign config to Safe transaction payload. Use ?extend=true to validate config extension before encoding.","parameters":[{"name":"extend","in":"query","required":false,"schema":{"default":false,"description":"Whether you want to also extend configs to test it works","type":"boolean"}},{"name":"signerAddress","in":"query","required":false,"schema":{"description":"Address of the wallet signing the campaign creation. Used as the address for the feeRebate lookup; falls back to config.creator when omitted or null.","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{}},"application/x-www-form-urlencoded":{"schema":{}},"multipart/form-data":{"schema":{}}},"required":true},"operationId":"postV4ConfigEncodeSafe"}},"/v4/config/encode/batch":{"post":{"tags":["Config"],"description":"Beta feature (not production ready yet) - Encodes a batch of campaign parameters into transaction payloads.","parameters":[{"name":"extend","in":"query","required":false,"schema":{"default":false,"description":"Whether you want to also extend configs to test it works","type":"boolean"}},{"name":"signerAddress","in":"query","required":false,"schema":{"description":"Address of the wallet signing the campaign creation. Used as the address for the feeRebate lookup; falls back to config.creator when omitted or null.","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{}},"application/x-www-form-urlencoded":{"schema":{}},"multipart/form-data":{"schema":{}}},"required":true},"operationId":"postV4ConfigEncodeBatch"}},"/v4/config/encode/batch/safe":{"post":{"tags":["Config"],"description":"Beta feature (not production ready yet) - Encodes batch campaign configs to Safe transaction payload. Use ?extend=true to validate config extension before encoding.","parameters":[{"name":"extend","in":"query","required":false,"schema":{"default":false,"description":"Whether you want to also extend configs to test it works","type":"boolean"}},{"name":"signerAddress","in":"query","required":false,"schema":{"description":"Address of the wallet signing the campaign creation. Used as the address for the feeRebate lookup; falls back to config.creator when omitted or null.","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{}},"application/x-www-form-urlencoded":{"schema":{}},"multipart/form-data":{"schema":{}}},"required":true},"operationId":"postV4ConfigEncodeBatchSafe"}},"/v4/config/decode/onchain/{distributionChainId}/{campaignId}":{"get":{"tags":["Config"],"description":"Decodes an on-chain campaign configuration. Use distributionChainId and campaignId path parameters.","parameters":[{"name":"distributionChainId","in":"path","required":true,"schema":{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}},{"name":"campaignId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{}}}}},"operationId":"getV4ConfigDecodeOnchainByDistributionChainIdByCampaignId"}},"/v4/config/decode/{distributionChainId}":{"post":{"tags":["Config"],"description":"Decodes campaign data from the Distribution contract. Use distributionChainId path parameter and provide on-chain campaign data in body.","parameters":[{"name":"distributionChainId","in":"path","required":true,"schema":{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}}],"requestBody":{"description":"On-chain campaign data fetched from the Distribution contract","content":{"application/json":{"schema":{"type":"object","properties":{"campaignId":{"type":"string"},"creator":{"$id":"address","title":"Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"rewardToken":{"$id":"address","title":"Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"amount":{"type":"string"},"campaignType":{"type":"integer"},"startTimestamp":{"$id":"timestamp","title":"Timestamp","description":"Unix timestamp in seconds (not milliseconds).","type":"number"},"duration":{"type":"integer"},"campaignData":{"type":"string"}},"required":["campaignId","creator","rewardToken","amount","campaignType","startTimestamp","duration","campaignData"],"description":"On-chain campaign data fetched from the Distribution contract"}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"campaignId":{"type":"string"},"creator":{"$id":"address","title":"Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"rewardToken":{"$id":"address","title":"Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"amount":{"type":"string"},"campaignType":{"type":"integer"},"startTimestamp":{"$id":"timestamp","title":"Timestamp","description":"Unix timestamp in seconds (not milliseconds).","type":"number"},"duration":{"type":"integer"},"campaignData":{"type":"string"}},"required":["campaignId","creator","rewardToken","amount","campaignType","startTimestamp","duration","campaignData"],"description":"On-chain campaign data fetched from the Distribution contract"}},"multipart/form-data":{"schema":{"type":"object","properties":{"campaignId":{"type":"string"},"creator":{"$id":"address","title":"Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"rewardToken":{"$id":"address","title":"Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"amount":{"type":"string"},"campaignType":{"type":"integer"},"startTimestamp":{"$id":"timestamp","title":"Timestamp","description":"Unix timestamp in seconds (not milliseconds).","type":"number"},"duration":{"type":"integer"},"campaignData":{"type":"string"}},"required":["campaignId","creator","rewardToken","amount","campaignType","startTimestamp","duration","campaignData"],"description":"On-chain campaign data fetched from the Distribution contract"}}},"required":true},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{}}}}},"operationId":"postV4ConfigDecodeByDistributionChainId"}},"/v4/config/decode/{distributionChainId}/{payload}":{"get":{"tags":["Config"],"description":"Decodes campaign from a raw payload. Use distributionChainId and payload (hex string) path parameters.","parameters":[{"name":"distributionChainId","in":"path","required":true,"schema":{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}},{"name":"payload","in":"path","required":true,"schema":{"description":"Encoded campaign creation transaction","type":"string"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{}}}}},"operationId":"getV4ConfigDecodeByDistributionChainIdByPayload"}},"/v4/config/decode/safe":{"post":{"tags":["Config"],"description":"Decodes a Safe transaction payload back to the original campaign configurations. Returns an array of configs.","requestBody":{"description":"Safe payload containing campaign creation transactions","content":{"application/json":{"schema":{"description":"Safe payload containing campaign creation transactions"}},"application/x-www-form-urlencoded":{"schema":{"description":"Safe payload containing campaign creation transactions"}},"multipart/form-data":{"schema":{"description":"Safe payload containing campaign creation transactions"}}},"required":true},"responses":{"200":{"description":"Response for status 200","items":{},"content":{"application/json":{"schema":{"type":"array","items":{}}}}}},"operationId":"postV4ConfigDecodeSafe"}},"/v4/config/decode/args/createCampaign":{"post":{"tags":["Config"],"description":"Decodes arguments of the create campaign function back to the original campaign configuration.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"distributionChainId":{"description":"Chain ID where the campaign is being created","anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"Chain ID where the campaign is being created","type":"number"}]},"args":{"description":"Arguments of the call to the createCampaign function"}},"required":["distributionChainId","args"]}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"distributionChainId":{"description":"Chain ID where the campaign is being created","anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"Chain ID where the campaign is being created","type":"number"}]},"args":{"description":"Arguments of the call to the createCampaign function"}},"required":["distributionChainId","args"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"distributionChainId":{"description":"Chain ID where the campaign is being created","anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"Chain ID where the campaign is being created","type":"number"}]},"args":{"description":"Arguments of the call to the createCampaign function"}},"required":["distributionChainId","args"]}}},"required":true},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{}}}}},"operationId":"postV4ConfigDecodeArgsCreateCampaign"}},"/v4/config/store":{"post":{"tags":["Config"],"description":"Stores campaign configurations keyed by their hash. Provide the campaign configuration payload in the request body.","requestBody":{"content":{"application/json":{"schema":{}},"application/x-www-form-urlencoded":{"schema":{}},"multipart/form-data":{"schema":{}}},"required":true},"responses":{"200":{"description":"Response for status 200","content":{"text/plain":{"schema":{"type":"string"}}}}},"operationId":"postV4ConfigStore"}},"/v4/config/hash/{hash}":{"get":{"tags":["Config"],"description":"Gets a campaign configuration by its hash. If campaignId and distributionChainId are provided, associates the configuration with that campaign.","parameters":[{"name":"hash","in":"path","required":true,"schema":{"description":"Configuration hash.","type":"string"}},{"name":"campaignId","in":"query","required":false,"schema":{"description":"Campaign ID to associate with this configuration.","type":"string"}},{"name":"distributionChainId","in":"query","required":false,"schema":{"description":"Distribution chain ID to associate with this configuration.","anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"Distribution chain ID to associate with this configuration.","type":"number"}]}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{}}}}},"operationId":"getV4ConfigHashByHash"}},"/v4/key-value-stores/{key}/entries":{"put":{"tags":["Key Value Store"],"description":"Upsert a single entry. Authenticate with a JWT for user access, or an X-API-Key header for service access.","parameters":[{"name":"key","in":"path","required":true,"schema":{"pattern":"^[a-zA-Z0-9_-]{1,128}$","description":"Identifier of the key-value store.","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"address":{"pattern":"^0x[a-fA-F0-9]{40}$|^0x[a-fA-F0-9]{64}$","description":"Target Ethereum address (or bytes32 campaignId for APR configs)","type":"string"},"value":{"maxLength":1024,"description":"JSON value (shape gated by config type)","type":"string"}},"required":["address","value"]}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"address":{"pattern":"^0x[a-fA-F0-9]{40}$|^0x[a-fA-F0-9]{64}$","description":"Target Ethereum address (or bytes32 campaignId for APR configs)","type":"string"},"value":{"maxLength":1024,"description":"JSON value (shape gated by config type)","type":"string"}},"required":["address","value"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"address":{"pattern":"^0x[a-fA-F0-9]{40}$|^0x[a-fA-F0-9]{64}$","description":"Target Ethereum address (or bytes32 campaignId for APR configs)","type":"string"},"value":{"maxLength":1024,"description":"JSON value (shape gated by config type)","type":"string"}},"required":["address","value"]}}},"required":true},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"address":{"type":"string"},"value":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["address","value","createdAt","updatedAt"]}}}}},"operationId":"putV4Key-value-storesByKeyEntries"},"get":{"tags":["Key Value Store"],"description":"List entries. Public for stores configured as publicly readable; otherwise requires authentication.","parameters":[{"name":"key","in":"path","required":true,"schema":{"pattern":"^[a-zA-Z0-9_-]{1,128}$","description":"Identifier of the key-value store.","type":"string"}},{"name":"page","in":"query","required":false,"schema":{"minimum":0,"default":0,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":0,"default":0,"type":"number"}]}},{"name":"pageSize","in":"query","required":false,"schema":{"minimum":1,"maximum":1000,"default":100,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"maximum":1000,"default":100,"type":"number"}]}},{"name":"value","in":"query","required":false,"schema":{"description":"Filter entries by exact value match","type":"string"}},{"name":"page","in":"header","required":false,"schema":{"minimum":0,"default":0,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":0,"default":0,"type":"number"}]}},{"name":"pageSize","in":"header","required":false,"schema":{"minimum":1,"maximum":1000,"default":100,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"maximum":1000,"default":100,"type":"number"}]}},{"name":"value","in":"header","required":false,"schema":{"description":"Filter entries by exact value match","type":"string"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"entries":{"type":"array","items":{"type":"object","properties":{"address":{"type":"string"},"value":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["address","value","createdAt","updatedAt"]}},"total":{"type":"number"},"page":{"type":"number"},"pageSize":{"type":"number"}},"required":["entries","total","page","pageSize"]}}}}},"operationId":"getV4Key-value-storesByKeyEntries"}},"/v4/key-value-stores/{key}/entries/batch":{"put":{"tags":["Key Value Store"],"description":"Batch upsert entries. Requires X-API-Key authentication.","parameters":[{"name":"key","in":"path","required":true,"schema":{"pattern":"^[a-zA-Z0-9_-]{1,128}$","description":"Identifier of the key-value store.","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"entries":{"minItems":1,"maxItems":1000,"type":"array","items":{"type":"object","properties":{"address":{"pattern":"^0x[a-fA-F0-9]{40}$|^0x[a-fA-F0-9]{64}$","type":"string"},"value":{"maxLength":1024,"type":"string"}},"required":["address","value"]}}},"required":["entries"]}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"entries":{"minItems":1,"maxItems":1000,"type":"array","items":{"type":"object","properties":{"address":{"pattern":"^0x[a-fA-F0-9]{40}$|^0x[a-fA-F0-9]{64}$","type":"string"},"value":{"maxLength":1024,"type":"string"}},"required":["address","value"]}}},"required":["entries"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"entries":{"minItems":1,"maxItems":1000,"type":"array","items":{"type":"object","properties":{"address":{"pattern":"^0x[a-fA-F0-9]{40}$|^0x[a-fA-F0-9]{64}$","type":"string"},"value":{"maxLength":1024,"type":"string"}},"required":["address","value"]}}},"required":["entries"]}}},"required":true},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"count":{"type":"number"}},"required":["success","count"]}}}}},"operationId":"putV4Key-value-storesByKeyEntriesBatch"}},"/v4/key-value-stores/{key}/entries/{address}":{"get":{"tags":["Key Value Store"],"description":"Get a single entry by address","parameters":[{"name":"key","in":"path","required":true,"schema":{"pattern":"^[a-zA-Z0-9_-]{1,128}$","description":"Identifier of the key-value store.","type":"string"}},{"name":"address","in":"path","required":true,"schema":{"description":"Address the entry is scoped to.","type":"string"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"address":{"type":"string"},"value":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["address","value","createdAt","updatedAt"]}}}}},"operationId":"getV4Key-value-storesByKeyEntriesByAddress"},"delete":{"tags":["Key Value Store"],"description":"Delete an entry. Users may delete their own entry; the store owner or an X-API-Key holder may delete any entry.","parameters":[{"name":"key","in":"path","required":true,"schema":{"pattern":"^[a-zA-Z0-9_-]{1,128}$","description":"Identifier of the key-value store.","type":"string"}},{"name":"address","in":"path","required":true,"schema":{"description":"Address the entry is scoped to.","type":"string"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"]}}}}},"operationId":"deleteV4Key-value-storesByKeyEntriesByAddress"}},"/v4/key-value-stores/self":{"post":{"tags":["Key Value Store"],"description":"Create a key-value store you own (allowlisted users, X-API-Key). `key` is a suffix; the response returns the canonical, owner-namespaced key used for entry writes, update and delete.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"key":{"minLength":1,"maxLength":128,"pattern":"^[a-zA-Z0-9_-]{1,128}$","description":"Unique human-readable key (alphanumeric, hyphens, underscores). Server-namespaced per owner.","type":"string"},"description":{"maxLength":512,"type":"string"},"type":{"description":"Semantic type — determines the required JSON shape of entry values","anyOf":[{"const":"WHITELIST","type":"string"},{"const":"BLACKLIST","type":"string"},{"const":"BOOST","type":"string"},{"const":"REFERRER","type":"string"},{"const":"FORWARDER","type":"string"},{"const":"APR","type":"string"}]},"sizeLimit":{"minimum":1,"maximum":1000000,"description":"Capped at the caller's quota","type":"number"},"publicRead":{"default":true,"type":"boolean"}},"required":["key","type"]}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"key":{"minLength":1,"maxLength":128,"pattern":"^[a-zA-Z0-9_-]{1,128}$","description":"Unique human-readable key (alphanumeric, hyphens, underscores). Server-namespaced per owner.","type":"string"},"description":{"maxLength":512,"type":"string"},"type":{"description":"Semantic type — determines the required JSON shape of entry values","anyOf":[{"const":"WHITELIST","type":"string"},{"const":"BLACKLIST","type":"string"},{"const":"BOOST","type":"string"},{"const":"REFERRER","type":"string"},{"const":"FORWARDER","type":"string"},{"const":"APR","type":"string"}]},"sizeLimit":{"minimum":1,"maximum":1000000,"description":"Capped at the caller's quota","type":"number"},"publicRead":{"default":true,"type":"boolean"}},"required":["key","type"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"key":{"minLength":1,"maxLength":128,"pattern":"^[a-zA-Z0-9_-]{1,128}$","description":"Unique human-readable key (alphanumeric, hyphens, underscores). Server-namespaced per owner.","type":"string"},"description":{"maxLength":512,"type":"string"},"type":{"description":"Semantic type — determines the required JSON shape of entry values","anyOf":[{"const":"WHITELIST","type":"string"},{"const":"BLACKLIST","type":"string"},{"const":"BOOST","type":"string"},{"const":"REFERRER","type":"string"},{"const":"FORWARDER","type":"string"},{"const":"APR","type":"string"}]},"sizeLimit":{"minimum":1,"maximum":1000000,"description":"Capped at the caller's quota","type":"number"},"publicRead":{"default":true,"type":"boolean"}},"required":["key","type"]}}},"required":true},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"key":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"accessMode":{"type":"string"},"type":{"type":"string"},"sizeLimit":{"type":"number"},"publicRead":{"type":"boolean"},"ownerAddress":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","key","description","accessMode","type","sizeLimit","publicRead","ownerAddress","createdAt","updatedAt"]}}}}},"operationId":"postV4Key-value-storesSelf"},"get":{"tags":["Key Value Store"],"description":"List the key-value stores you own (X-API-Key)","responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"key":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"accessMode":{"type":"string"},"type":{"type":"string"},"sizeLimit":{"type":"number"},"publicRead":{"type":"boolean"},"ownerAddress":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","key","description","accessMode","type","sizeLimit","publicRead","ownerAddress","createdAt","updatedAt"]}}}}}},"operationId":"getV4Key-value-storesSelf"}},"/v4/key-value-stores/self/{key}":{"patch":{"tags":["Key Value Store"],"description":"Update a key-value store you own by its canonical key (X-API-Key)","parameters":[{"name":"key","in":"path","required":true,"schema":{"pattern":"^[a-zA-Z0-9_-]{1,128}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"description":{"maxLength":512,"type":"string"},"publicRead":{"type":"boolean"},"sizeLimit":{"minimum":1,"maximum":1000000,"type":"number"}}}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"description":{"maxLength":512,"type":"string"},"publicRead":{"type":"boolean"},"sizeLimit":{"minimum":1,"maximum":1000000,"type":"number"}}}},"multipart/form-data":{"schema":{"type":"object","properties":{"description":{"maxLength":512,"type":"string"},"publicRead":{"type":"boolean"},"sizeLimit":{"minimum":1,"maximum":1000000,"type":"number"}}}}},"required":true},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"key":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"accessMode":{"type":"string"},"type":{"type":"string"},"sizeLimit":{"type":"number"},"publicRead":{"type":"boolean"},"ownerAddress":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","key","description","accessMode","type","sizeLimit","publicRead","ownerAddress","createdAt","updatedAt"]}}}}},"operationId":"patchV4Key-value-storesSelfByKey"},"delete":{"tags":["Key Value Store"],"description":"Delete a key-value store you own (by canonical key) and all its entries (X-API-Key)","parameters":[{"name":"key","in":"path","required":true,"schema":{"pattern":"^[a-zA-Z0-9_-]{1,128}$","type":"string"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"]}}}}},"operationId":"deleteV4Key-value-storesSelfByKey"}},"/v4/creators/":{"get":{"tags":["Creator"],"description":"Retrieves all creators matching the provided query filters","parameters":[{"name":"id","in":"query","required":false,"schema":{"type":"string"}},{"name":"address","in":"query","required":false,"schema":{"type":"string"}},{"name":"search","in":"query","required":false,"schema":{"description":"Case-insensitive substring match against creator id and name","type":"string"}},{"name":"page","in":"query","required":false,"schema":{"minimum":0,"description":"0-indexed page number","default":0,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":0,"description":"0-indexed page number","default":0,"type":"number"}]}},{"name":"items","in":"query","required":false,"schema":{"minimum":1,"maximum":200,"description":"Number of items returned by page","default":20,"errorMessage":"Items must be between 1 and 200","anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"maximum":200,"description":"Number of items returned by page","default":20,"errorMessage":"Items must be between 1 and 200","type":"number"}]}}],"operationId":"getV4Creators"}},"/v4/creators/{creator}":{"get":{"tags":["Creator"],"description":"Retrieves a specific creator by their ID or slug","parameters":[{"name":"creator","in":"path","required":true,"schema":{"type":"string"}}],"operationId":"getV4CreatorsByCreator"}},"/v4/creators/{creator}/dashboard":{"get":{"tags":["Creator"],"description":"Returns dashboard metrics and overview for a specific creator","parameters":[{"name":"creator","in":"path","required":true,"schema":{"type":"string"}}],"operationId":"getV4CreatorsByCreatorDashboard"}},"/v4/creators/{creator}/opportunities/count":{"get":{"tags":["Creator"],"description":"Returns the total count of opportunities for a specific creator","parameters":[{"name":"creator","in":"path","required":true,"schema":{"type":"string"}},{"name":"name","in":"query","required":false,"schema":{"description":"Filter by name","type":"string"}},{"name":"search","in":"query","required":false,"schema":{"description":"Search amongst multiple values (token, protocols, tags, campaigns)","type":"string"}},{"name":"chainId","in":"query","required":false,"schema":{"description":"A comma separated list of chain ids. Example: ?chainId=1,42161<br>You can get the list of all supported chains by calling [GET /v4/chains](#tag/chains/GET/v4/chains/)","type":"RegExp","source":"^\\d+(,\\d+)*$","flags":""}},{"name":"action","in":"query","required":false,"schema":{"description":"A comma seprated list actions. Legal values are: POOL, HOLD, DROP, LEND, BORROW, LONG, SHORT, SWAP, INVALID, STAKE","type":"string"}},{"name":"tokenTypes","in":"query","required":false,"schema":{"description":"Filter by token type. Use POINT to include point campaigns and PRETGE to include preTGE campaigns. By default every token is returned.","type":"array","items":{"anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]}}},{"name":"type","in":"query","required":false,"schema":{"description":"A comma separated list of Opportunity type","type":"string"}},{"name":"tags","in":"query","required":false,"schema":{"description":"Filter by tag","type":"string"}},{"name":"test","in":"query","required":false,"schema":{"description":"Include opportunities with test campaigns","default":false,"type":"boolean"}},{"name":"minimumTvl","in":"query","required":false,"schema":{"description":"Minimum TVL threshold in USD","type":"number"}},{"name":"maximumTvl","in":"query","required":false,"schema":{"description":"Maximum TVL threshold in USD","type":"number"}},{"name":"minimumApr","in":"query","required":false,"schema":{"description":"Minimum APR threshold","type":"number"}},{"name":"maximumApr","in":"query","required":false,"schema":{"description":"Maximum APR threshold","type":"number"}},{"name":"minimumDailyRewards","in":"query","required":false,"schema":{"description":"Minimum daily rewards threshold in USD","type":"number"}},{"name":"maximumDailyRewards","in":"query","required":false,"schema":{"description":"Maximum daily rewards threshold in USD","type":"number"}},{"name":"minimumCreatedAt","in":"query","required":false,"schema":{"description":"Filter opportunities whose last campaign was created at or after this Unix timestamp (seconds)","type":"number"}},{"name":"maximumCreatedAt","in":"query","required":false,"schema":{"description":"Filter opportunities whose last campaign was created at or before this Unix timestamp (seconds)","type":"number"}},{"name":"status","in":"query","required":false,"schema":{"description":"A comma separeted list of status. Legal values are: `LIVE`, `PAST`, `SOON`","type":"RegExp","source":"^(LIVE|PAST|SOON)(,(LIVE|PAST|SOON)){0,2}$","flags":""}},{"name":"identifier","in":"query","required":false,"schema":{"description":"Filter by opportunity identifier (a.k.a. `mainParameter`). Free-form string, often a pool/vault/market address (e.g. `0x35Cbe8542E70fa2f7F9cDF129F19e593F4b4f560`) or an arbitrary on-chain hash for non-address opportunities. NOT a campaign ID. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"id","in":"query","required":false,"schema":{"description":"A comma-separated list of **internal opportunity IDs** (`Opportunity.id`, numeric hash). Example: `?id=5877322385708089533,1234567890`. NOT campaign IDs. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"tokens","in":"query","required":false,"schema":{"description":"A comma separated list of token symbol. Use to filter by token","type":"string"}},{"name":"stablecoin","in":"query","required":false,"schema":{"description":"Filter opportunities that include at least one stablecoin token","default":false,"type":"boolean"}},{"name":"rewardTokenSymbol","in":"query","required":false,"schema":{"description":"Filter by opportunity that have at least 1 campaigns where the reward token has this symbol","type":"string"}},{"name":"sort","in":"query","required":false,"schema":{"description":"Sort by opportunity fields or `creatorCampaignsEndingSoon` (creator's earliest active campaign end)","type":"RegExp","source":"^(apr|tvl|rewards|lastCampaignCreatedAt|endingSoon|endingLast|startingSoon|startingLast|creatorCampaignsEndingSoon)$","flags":""}},{"name":"order","in":"query","required":false,"schema":{"description":"`asc` to sort in ascending order or `desc` to sort in descending order.","default":"desc","type":"RegExp","source":"desc|asc","flags":""}},{"name":"distributionTypes","in":"query","required":false,"schema":{"type":"array","items":{"description":"Filter by reward mechanism. Legal values are: `FIX_REWARD`, `MAX_REWARD`, `DUTCH_AUCTION`, `TOTAL_APR`. Default: no filter","anyOf":[{"const":"FIX_REWARD","type":"string"},{"const":"MAX_REWARD","type":"string"},{"const":"DUTCH_AUCTION","type":"string"},{"const":"TOTAL_APR","type":"string"}]}}},{"name":"mainProtocolId","in":"query","required":false,"schema":{"description":"A comma-separated list of **protocol slugs** (e.g. `aave,morpho,uniswap`). NOT numeric IDs. List slugs at [GET /v4/protocols](#tag/protocols/GET/v4/protocols/). See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"programSlugs","in":"query","required":false,"schema":{"description":"A comma separated list of program ids or slugs. You can get the list of all supported programs by calling [GET /v4/programs](#tag/programs/GET/v4/programs/)","type":"string"}},{"name":"chainName","in":"query","required":false,"schema":{"description":"A comma separated list of chain names. Example: ?chainName=ethereum,arbitrum","type":"RegExp","source":"^[a-zA-Z0-9]+(,[a-zA-Z0-9]+)*$","flags":""}},{"name":"explorerAddress","in":"query","required":false,"schema":{"description":"Filter by **on-chain pool/vault/market address** (20-byte EVM address, e.g. `0x35Cbe8542E70fa2f7F9cDF129F19e593F4b4f560`). Often the most reliable way to look up an opportunity if you only know the underlying contract. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"campaignTypes","in":"query","required":false,"schema":{"description":"A comma separated list of CampaignType enum numeric values. Example: ?campaignTypes=18,19","type":"RegExp","source":"^\\d+(,\\d+)*$","flags":""}}],"operationId":"getV4CreatorsByCreatorOpportunitiesCount"}},"/v4/creators/{creator}/opportunities":{"get":{"tags":["Creator"],"description":"Returns paginated opportunities for a specific creator. Use page, items, and other query parameters to filter.","parameters":[{"name":"creator","in":"path","required":true,"schema":{"type":"string"}},{"name":"page","in":"query","required":false,"schema":{"minimum":0,"description":"0-indexed page number","default":0,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":0,"description":"0-indexed page number","default":0,"type":"number"}]}},{"name":"items","in":"query","required":false,"schema":{"minimum":1,"maximum":100,"description":"Number of items returned by page","default":20,"errorMessage":"Items must be between 1 and 100","anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"maximum":100,"description":"Number of items returned by page","default":20,"errorMessage":"Items must be between 1 and 100","type":"number"}]}},{"name":"name","in":"query","required":false,"schema":{"description":"Filter by name","type":"string"}},{"name":"search","in":"query","required":false,"schema":{"description":"Search amongst multiple values (token, protocols, tags, campaigns)","type":"string"}},{"name":"chainId","in":"query","required":false,"schema":{"description":"A comma separated list of chain ids. Example: ?chainId=1,42161<br>You can get the list of all supported chains by calling [GET /v4/chains](#tag/chains/GET/v4/chains/)","type":"RegExp","source":"^\\d+(,\\d+)*$","flags":""}},{"name":"action","in":"query","required":false,"schema":{"description":"A comma seprated list actions. Legal values are: POOL, HOLD, DROP, LEND, BORROW, LONG, SHORT, SWAP, INVALID, STAKE","type":"string"}},{"name":"tokenTypes","in":"query","required":false,"schema":{"description":"Filter by token type. Use POINT to include point campaigns and PRETGE to include preTGE campaigns. By default every token is returned.","type":"array","items":{"anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]}}},{"name":"type","in":"query","required":false,"schema":{"description":"A comma separated list of Opportunity type","type":"string"}},{"name":"tags","in":"query","required":false,"schema":{"description":"Filter by tag","type":"string"}},{"name":"test","in":"query","required":false,"schema":{"description":"Include opportunities with test campaigns","default":false,"type":"boolean"}},{"name":"minimumTvl","in":"query","required":false,"schema":{"description":"Minimum TVL threshold in USD","type":"number"}},{"name":"maximumTvl","in":"query","required":false,"schema":{"description":"Maximum TVL threshold in USD","type":"number"}},{"name":"minimumApr","in":"query","required":false,"schema":{"description":"Minimum APR threshold","type":"number"}},{"name":"maximumApr","in":"query","required":false,"schema":{"description":"Maximum APR threshold","type":"number"}},{"name":"minimumDailyRewards","in":"query","required":false,"schema":{"description":"Minimum daily rewards threshold in USD","type":"number"}},{"name":"maximumDailyRewards","in":"query","required":false,"schema":{"description":"Maximum daily rewards threshold in USD","type":"number"}},{"name":"minimumCreatedAt","in":"query","required":false,"schema":{"description":"Filter opportunities whose last campaign was created at or after this Unix timestamp (seconds)","type":"number"}},{"name":"maximumCreatedAt","in":"query","required":false,"schema":{"description":"Filter opportunities whose last campaign was created at or before this Unix timestamp (seconds)","type":"number"}},{"name":"status","in":"query","required":false,"schema":{"description":"A comma separeted list of status. Legal values are: `LIVE`, `PAST`, `SOON`","type":"RegExp","source":"^(LIVE|PAST|SOON)(,(LIVE|PAST|SOON)){0,2}$","flags":""}},{"name":"identifier","in":"query","required":false,"schema":{"description":"Filter by opportunity identifier (a.k.a. `mainParameter`). Free-form string, often a pool/vault/market address (e.g. `0x35Cbe8542E70fa2f7F9cDF129F19e593F4b4f560`) or an arbitrary on-chain hash for non-address opportunities. NOT a campaign ID. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"id","in":"query","required":false,"schema":{"description":"A comma-separated list of **internal opportunity IDs** (`Opportunity.id`, numeric hash). Example: `?id=5877322385708089533,1234567890`. NOT campaign IDs. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"tokens","in":"query","required":false,"schema":{"description":"A comma separated list of token symbol. Use to filter by token","type":"string"}},{"name":"stablecoin","in":"query","required":false,"schema":{"description":"Filter opportunities that include at least one stablecoin token","default":false,"type":"boolean"}},{"name":"rewardTokenSymbol","in":"query","required":false,"schema":{"description":"Filter by opportunity that have at least 1 campaigns where the reward token has this symbol","type":"string"}},{"name":"sort","in":"query","required":false,"schema":{"description":"Sort by opportunity fields or `creatorCampaignsEndingSoon` (creator's earliest active campaign end)","type":"RegExp","source":"^(apr|tvl|rewards|lastCampaignCreatedAt|endingSoon|endingLast|startingSoon|startingLast|creatorCampaignsEndingSoon)$","flags":""}},{"name":"order","in":"query","required":false,"schema":{"description":"`asc` to sort in ascending order or `desc` to sort in descending order.","default":"desc","type":"RegExp","source":"desc|asc","flags":""}},{"name":"distributionTypes","in":"query","required":false,"schema":{"type":"array","items":{"description":"Filter by reward mechanism. Legal values are: `FIX_REWARD`, `MAX_REWARD`, `DUTCH_AUCTION`, `TOTAL_APR`. Default: no filter","anyOf":[{"const":"FIX_REWARD","type":"string"},{"const":"MAX_REWARD","type":"string"},{"const":"DUTCH_AUCTION","type":"string"},{"const":"TOTAL_APR","type":"string"}]}}},{"name":"mainProtocolId","in":"query","required":false,"schema":{"description":"A comma-separated list of **protocol slugs** (e.g. `aave,morpho,uniswap`). NOT numeric IDs. List slugs at [GET /v4/protocols](#tag/protocols/GET/v4/protocols/). See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"programSlugs","in":"query","required":false,"schema":{"description":"A comma separated list of program ids or slugs. You can get the list of all supported programs by calling [GET /v4/programs](#tag/programs/GET/v4/programs/)","type":"string"}},{"name":"chainName","in":"query","required":false,"schema":{"description":"A comma separated list of chain names. Example: ?chainName=ethereum,arbitrum","type":"RegExp","source":"^[a-zA-Z0-9]+(,[a-zA-Z0-9]+)*$","flags":""}},{"name":"explorerAddress","in":"query","required":false,"schema":{"description":"Filter by **on-chain pool/vault/market address** (20-byte EVM address, e.g. `0x35Cbe8542E70fa2f7F9cDF129F19e593F4b4f560`). Often the most reliable way to look up an opportunity if you only know the underlying contract. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"campaignTypes","in":"query","required":false,"schema":{"description":"A comma separated list of CampaignType enum numeric values. Example: ?campaignTypes=18,19","type":"RegExp","source":"^\\d+(,\\d+)*$","flags":""}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","allOf":[{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"identifier":{"type":"string"},"chainId":{"type":"number"},"name":{"type":"string"},"description":{"type":"string"},"howToSteps":{"type":"array","items":{"type":"string"}},"status":{"anyOf":[{"const":"NONE","type":"string"},{"const":"PAST","type":"string"},{"const":"LIVE","type":"string"},{"const":"SOON","type":"string"}]},"action":{"anyOf":[{"const":"POOL","type":"string"},{"const":"HOLD","type":"string"},{"const":"DROP","type":"string"},{"const":"LEND","type":"string"},{"const":"BORROW","type":"string"},{"const":"LONG","type":"string"},{"const":"SHORT","type":"string"},{"const":"SWAP","type":"string"},{"const":"INVALID","type":"string"},{"const":"STAKE","type":"string"}]},"tags":{"type":"array","items":{"type":"string"}},"mainProtocol":{"type":"string"},"depositUrl":{"type":"string"},"depositUrls":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"url":{"type":"string"},"subtitle":{"type":"string"},"icon":{"type":"string"},"priority":{"type":"number"}},"required":["id","title","url","priority"]}},"explorerAddress":{"type":"string"},"hidden":{"type":"boolean"},"tvl":{"type":"number"},"apr":{"type":"number"},"dailyRewards":{"type":"number"},"maxDailyRewards":{"anyOf":[{"type":"number"},{"type":"null"}]},"liveCampaigns":{"type":"number"},"lastCampaignCreatedAt":{"type":"number"},"earliestCampaignStart":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"latestCampaignStart":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"earliestCampaignEnd":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"latestCampaignEnd":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"nativeApr":{"type":"number"},"totalApr":{"type":"number"},"maxApr":{"anyOf":[{"type":"number"},{"type":"null"}]},"liveCampaignsForCreator":{"type":"number"},"soonCampaignsForCreator":{"type":"number"},"pastCampaignsForCreator":{"type":"number"},"distributionType":{"type":"string"},"tokens":{"type":"array","items":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]}},"chain":{"$id":"chain","title":"Chain","description":"Chain","type":"object","properties":{"id":{"$id":"chainId","title":"Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"name":{"title":"Chain Name","description":"Legible name of the chain","type":"string"},"icon":{"title":"Icon URL","description":"URL to the icon of the chain","type":"string"},"liveCampaigns":{"title":"Live Campaigns","description":"Number of campaigns currently live on this chain","type":"number"},"endOfDisputePeriod":{"type":"number"},"explorers":{"type":"array","items":{"type":"object","properties":{"type":{"anyOf":[{"const":"ETHERSCAN","type":"string"},{"const":"BLOCKSCOUT","type":"string"},{"const":"SOLSCAN","type":"string"}]},"url":{"type":"string"},"chainId":{"type":"number"}},"required":["type","url","chainId"]}},"lastClaimsOnchainFetchTimestamp":{"title":"Last Claims Onchain Fetch Timestamp","description":"Timestamp of the last claims onchain fetch","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","icon","liveCampaigns","endOfDisputePeriod","lastClaimsOnchainFetchTimestamp"]},"activePrograms":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"type":"string"},"icon":{"type":"string"}},"required":["id","name"]}},"protocol":{"anyOf":[{"$id":"protocol","title":"Protocol","description":"Protocol","type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"icon":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"description":{"type":"string"},"url":{"type":"string"},"dailyRewards":{"type":"number"},"numberOfLiveCampaigns":{"type":"number"},"opportunityLiveTags":{"type":"array","items":{"type":"string"}},"banner":{"anyOf":[{"type":"string"},{"type":"null"}]},"opportunityBannerLight":{"anyOf":[{"type":"string"},{"type":"null"}]},"opportunityBannerDark":{"anyOf":[{"type":"string"},{"type":"null"}]},"trustData":{"anyOf":[{"type":"object","properties":{"slug":{"type":"string"},"category":{"anyOf":[{"type":"string"},{"type":"null"}]},"audits":{"anyOf":[{"type":"string"},{"type":"null"}]},"audit_links":{"type":"array","items":{"type":"string"}},"audit_note":{"anyOf":[{"type":"string"},{"type":"null"}]},"github":{"type":"array","items":{"type":"string"}},"twitter":{"anyOf":[{"type":"string"},{"type":"null"}]},"listedAt":{"anyOf":[{"type":"number"},{"type":"null"}]},"parentProtocol":{"anyOf":[{"type":"string"},{"type":"null"}]},"tvl":{"anyOf":[{"type":"number"},{"type":"null"}]},"hacks":{"type":"array","items":{"type":"object","properties":{"date":{"type":"number"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"amountUSD":{"anyOf":[{"type":"number"},{"type":"null"}]},"technique":{"anyOf":[{"type":"string"},{"type":"null"}]},"source":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["date","name","amountUSD","technique","source"]}},"syncedAt":{"type":"number"}},"required":["slug","category","audits","audit_links","audit_note","github","twitter","listedAt","parentProtocol","syncedAt"]},{"type":"null"}]}},"required":["id","name","icon","tags","description","url","banner","opportunityBannerLight","opportunityBannerDark","trustData"]},{"type":"null"}]},"aprRecord":{"type":"object","properties":{"cumulated":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"breakdowns":{"type":"array","items":{"type":"object","properties":{"identifier":{"type":"string"},"type":{"anyOf":[{"const":"CAMPAIGN","type":"string"},{"const":"TOKEN","type":"string"},{"const":"PROTOCOL","type":"string"}]},"value":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"distributionType":{"anyOf":[{"const":"DUTCH_AUCTION","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"AAVE_NET_APR","type":"string"},{"const":"ERC4626_APR","type":"string"},{"const":"ERC4626_SPREAD_CAPPED","type":"string"},{"const":"AAVE_V4_NET_APR","type":"string"},{"const":"DEEL_DISTRIBUTION","type":"string"},{"const":"SOFR_SPREAD_RATCHET","type":"string"},{"const":"ERC4626_TARGET_APR_WITH_MERKL","type":"string"},{"const":"TARGET_APR_WITH_MERKL","type":"string"},{"const":"NET_APR","type":"string"},{"const":"BORROW_SUBSIDY","type":"string"},{"const":"NET_APR_WITH_MERKL","type":"string"},{"const":"YIELD_BASIS_PID","type":"string"},{"const":"COMPOSED","type":"string"}]}},"required":["identifier","type","value","timestamp"]}}},"required":["cumulated","timestamp","breakdowns"]},"nativeAprRecord":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"value":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"amount":{"type":"bigint"},"rewardToken":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]},"breakdowns":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"value":{"type":"number"},"amount":{"type":"bigint"},"rewardToken":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]}},"required":["title","value"]}}},"required":["title","value","timestamp"]},"tvlRecord":{"type":"object","properties":{"total":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"breakdowns":{"type":"array","items":{"type":"object","properties":{"identifier":{"type":"string"},"type":{"anyOf":[{"const":"TOKEN","type":"string"},{"const":"PROTOCOL","type":"string"}]},"value":{"type":"number"}},"required":["identifier","type","value"]}}},"required":["total","timestamp","breakdowns"]},"rewardsRecord":{"type":"object","properties":{"total":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"breakdowns":{"type":"array","items":{"type":"object","properties":{"campaignId":{"type":"string"},"value":{"type":"number"},"maxValue":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"token":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]},"amount":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"distributionType":{"anyOf":[{"const":"DUTCH_AUCTION","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"AAVE_NET_APR","type":"string"},{"const":"ERC4626_APR","type":"string"},{"const":"ERC4626_SPREAD_CAPPED","type":"string"},{"const":"AAVE_V4_NET_APR","type":"string"},{"const":"DEEL_DISTRIBUTION","type":"string"},{"const":"SOFR_SPREAD_RATCHET","type":"string"},{"const":"ERC4626_TARGET_APR_WITH_MERKL","type":"string"},{"const":"TARGET_APR_WITH_MERKL","type":"string"},{"const":"NET_APR","type":"string"},{"const":"BORROW_SUBSIDY","type":"string"},{"const":"NET_APR_WITH_MERKL","type":"string"},{"const":"YIELD_BASIS_PID","type":"string"},{"const":"COMPOSED","type":"string"}]},"onChainCampaignId":{"type":"string"}},"required":["campaignId","value","timestamp","token","amount"]}}},"required":["total","timestamp","breakdowns"]}},"required":["id","type","identifier","chainId","name","description","howToSteps","status","action","tags","tvl","apr","dailyRewards","liveCampaigns","lastCampaignCreatedAt","tokens","chain","activePrograms"]},{"type":"object","properties":{"campaigns":{"type":"array","items":{"type":"object","properties":{"id":{"description":"Unique campaign id","type":"string"},"computeChainId":{"description":"Chain ID where campaign data is computed","type":"number"},"distributionChainId":{"description":"Chain ID where rewards are distributed","type":"number"},"campaignId":{"description":"A hash of the campaign, unique per chain. Can be used to identify campaigns across chains","type":"string"},"type":{"description":"Campaign type identifier","type":"string"},"subType":{"description":"Campaign subtype for protocols like Silo, Radiant, Morpho, Dolomite, Compound, Ajna and Euler","anyOf":[{"type":"number"},{"type":"null"}]},"amount":{"description":"Amount of reward token units being distributed by the campaign","type":"string"},"startTimestamp":{"description":"Unix timestamp when the campaign starts","anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]},{"type":"bigint"}]},"endTimestamp":{"description":"Unix timestamp when the campaign ends","anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]},{"type":"bigint"}]},"creatorAddress":{"description":"Ethereum address of the campaign creator","type":"string"},"apr":{"description":"Annual Percentage Rate for this campaign","type":"number"},"dailyRewards":{"description":"Total daily rewards distributed in USD","type":"number"},"creator":{"description":"Campaign creator information","type":"object","properties":{"address":{"description":"Creator's Ethereum address","type":"string"},"tags":{"description":"Tag associated with the creator","type":"array","items":{"type":"string"}},"creatorId":{"nullable":true,"anyOf":[{"description":"Merkl creator ID if registered","type":"string"},{"type":"null"}]}},"required":["address"]},"params":{"description":"Campaign-specific parameters"},"description":{"description":"Campaign description","type":"string"},"chain":{"$id":"chain","title":"Chain","description":"Chain","type":"object","properties":{"id":{"$id":"chainId","title":"Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"name":{"title":"Chain Name","description":"Legible name of the chain","type":"string"},"icon":{"title":"Icon URL","description":"URL to the icon of the chain","type":"string"},"liveCampaigns":{"title":"Live Campaigns","description":"Number of campaigns currently live on this chain","type":"number"},"endOfDisputePeriod":{"type":"number"},"explorers":{"type":"array","items":{"type":"object","properties":{"type":{"anyOf":[{"const":"ETHERSCAN","type":"string"},{"const":"BLOCKSCOUT","type":"string"},{"const":"SOLSCAN","type":"string"}]},"url":{"type":"string"},"chainId":{"type":"number"}},"required":["type","url","chainId"]}},"lastClaimsOnchainFetchTimestamp":{"title":"Last Claims Onchain Fetch Timestamp","description":"Timestamp of the last claims onchain fetch","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","icon","liveCampaigns","endOfDisputePeriod","lastClaimsOnchainFetchTimestamp"]},"rewardTokenId":{"description":"Internal ID of the reward token","type":"string"},"rewardToken":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]},"opportunityId":{"description":"ID of the associated opportunity","type":"string"},"distributionChain":{"$id":"chain","title":"Chain","description":"Chain","type":"object","properties":{"id":{"$id":"chainId","title":"Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"name":{"title":"Chain Name","description":"Legible name of the chain","type":"string"},"icon":{"title":"Icon URL","description":"URL to the icon of the chain","type":"string"},"liveCampaigns":{"title":"Live Campaigns","description":"Number of campaigns currently live on this chain","type":"number"},"endOfDisputePeriod":{"type":"number"},"explorers":{"type":"array","items":{"type":"object","properties":{"type":{"anyOf":[{"const":"ETHERSCAN","type":"string"},{"const":"BLOCKSCOUT","type":"string"},{"const":"SOLSCAN","type":"string"}]},"url":{"type":"string"},"chainId":{"type":"number"}},"required":["type","url","chainId"]}},"lastClaimsOnchainFetchTimestamp":{"title":"Last Claims Onchain Fetch Timestamp","description":"Timestamp of the last claims onchain fetch","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","icon","liveCampaigns","endOfDisputePeriod","lastClaimsOnchainFetchTimestamp"]},"distributionType":{"description":"Type of reward distribution mechanism","anyOf":[{"const":"DUTCH_AUCTION","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"AAVE_NET_APR","type":"string"},{"const":"ERC4626_APR","type":"string"},{"const":"ERC4626_SPREAD_CAPPED","type":"string"},{"const":"AAVE_V4_NET_APR","type":"string"},{"const":"DEEL_DISTRIBUTION","type":"string"},{"const":"SOFR_SPREAD_RATCHET","type":"string"},{"const":"ERC4626_TARGET_APR_WITH_MERKL","type":"string"},{"const":"TARGET_APR_WITH_MERKL","type":"string"},{"const":"NET_APR","type":"string"},{"const":"BORROW_SUBSIDY","type":"string"},{"const":"NET_APR_WITH_MERKL","type":"string"},{"const":"YIELD_BASIS_PID","type":"string"},{"const":"COMPOSED","type":"string"}]},"campaignStatus":{"type":"object","properties":{"campaignId":{"type":"string"},"computedUntil":{"anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}]},"processingStarted":{"anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}]},"status":{"type":"string"},"preComputeProcessingStarted":{"anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}]},"preComputeStatus":{"type":"string"},"delay":{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]},"error":{"type":"string"},"details":{}},"required":["campaignId","computedUntil","processingStarted","status","preComputeProcessingStarted","preComputeStatus"]},"createdAt":{"format":"date","description":"ISO date when the campaign was created","type":"string"},"rootCampaignId":{"description":"ID of the root campaign for hierarchical campaigns","anyOf":[{"type":"string"},{"type":"null"}]},"parentCampaignId":{"description":"ID of the parent campaign for sub-campaigns","anyOf":[{"type":"string"},{"type":"null"}]},"childCampaignIds":{"description":"List of child campaign IDs","type":"array","items":{"type":"string"}},"dailyRewardsBreakdown":{"description":"Daily breakdown of rewards","type":"array","items":{"type":"object","properties":{"campaignId":{"type":"string"},"value":{"type":"number"},"maxValue":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"token":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]},"amount":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"distributionType":{"anyOf":[{"const":"DUTCH_AUCTION","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"AAVE_NET_APR","type":"string"},{"const":"ERC4626_APR","type":"string"},{"const":"ERC4626_SPREAD_CAPPED","type":"string"},{"const":"AAVE_V4_NET_APR","type":"string"},{"const":"DEEL_DISTRIBUTION","type":"string"},{"const":"SOFR_SPREAD_RATCHET","type":"string"},{"const":"ERC4626_TARGET_APR_WITH_MERKL","type":"string"},{"const":"TARGET_APR_WITH_MERKL","type":"string"},{"const":"NET_APR","type":"string"},{"const":"BORROW_SUBSIDY","type":"string"},{"const":"NET_APR_WITH_MERKL","type":"string"},{"const":"YIELD_BASIS_PID","type":"string"},{"const":"COMPOSED","type":"string"}]},"onChainCampaignId":{"type":"string"}},"required":["campaignId","value","timestamp","token","amount"]}},"pauseCompute":{"description":"ISO timestamp when computation was paused","anyOf":[{"type":"string"},{"type":"null"}]},"pausePrecompute":{"description":"Reason for pausing precomputation, or null if not paused","anyOf":[{"type":"string"},{"type":"null"}]},"hasOverrides":{"description":"Whether this campaign has previous config overrides","type":"boolean"},"isPrivate":{"description":"Indicates if the campaign is private","type":"boolean"},"hidden":{"description":"Whether the campaign is hidden from non-test API results","type":"boolean"},"hideLeaderboard":{"description":"Whether leaderboard, ranks and reward breakdowns are hidden for this campaign","type":"boolean"},"campaignEncodingHash":{"description":"Hash of the campaign configuration encoding","type":"string"}},"required":["id","computeChainId","distributionChainId","campaignId","type","amount","startTimestamp","endTimestamp","creatorAddress","params","chain","rewardToken","campaignStatus","createdAt","isPrivate"]}}}}]}}}}}},"operationId":"getV4CreatorsByCreatorOpportunities"}},"/v4/creators/{creator}/campaigns":{"get":{"tags":["Creator"],"description":"Returns all campaigns for a specific creator. Filter by status query parameter.","parameters":[{"name":"creator","in":"path","required":true,"schema":{"type":"string"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"const":"PAST","type":"string"},{"const":"LIVE","type":"string"},{"const":"FUTURE","type":"string"}]}}],"operationId":"getV4CreatorsByCreatorCampaigns"}},"/v4/creators/campaigns/{campaignId}":{"get":{"tags":["Creator"],"description":"Returns campaign metrics for a specific campaign. Use campaignId path parameter and pagination query parameters.","parameters":[{"name":"campaignId","in":"path","required":true,"schema":{"type":"string"}},{"name":"tvl","in":"query","required":false,"schema":{"type":"object","properties":{"page":{"minimum":0,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":0,"type":"number"}]},"limit":{"minimum":1,"maximum":200,"default":100,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"maximum":200,"default":100,"type":"number"}]}}}},{"name":"apr","in":"query","required":false,"schema":{"type":"object","properties":{"page":{"minimum":0,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":0,"type":"number"}]},"limit":{"minimum":1,"maximum":200,"default":100,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"maximum":200,"default":100,"type":"number"}]}}}},{"name":"dailyRewards","in":"query","required":false,"schema":{"type":"object","properties":{"page":{"minimum":0,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":0,"type":"number"}]},"limit":{"minimum":1,"maximum":200,"default":100,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"maximum":200,"default":100,"type":"number"}]}}}}],"operationId":"getV4CreatorsCampaignsByCampaignId"}},"/v4/creators/{creator}/opportunity/{opportunityId}/metrics":{"get":{"tags":["Creator"],"description":"Returns opportunity metrics for a specific creator and opportunity combination","parameters":[{"name":"creator","in":"path","required":true,"schema":{"type":"string"}},{"name":"opportunityId","in":"path","required":true,"schema":{"type":"string"}}],"operationId":"getV4CreatorsByCreatorOpportunityByOpportunityIdMetrics"}},"/v4/creators/{creator}/distributed/over-time":{"get":{"tags":["Creator"],"description":"Token distribution over time for a creator, bucketed and broken down per reward token (token amounts, not USD)","parameters":[{"name":"creator","in":"path","required":true,"schema":{"type":"string"}},{"name":"range","in":"query","required":false,"schema":{"description":"Rolling window of data to include: last 7 days, last 30 days, or the full history.","anyOf":[{"const":"7d","type":"string"},{"const":"30d","type":"string"},{"const":"all","type":"string"}]}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"bucket":{"description":"Granularity of each bucket (UTC-aligned).","anyOf":[{"const":"day","type":"string"},{"const":"week","type":"string"},{"const":"month","type":"string"}]},"range":{"description":"Rolling window of data to include: last 7 days, last 30 days, or the full history.","anyOf":[{"const":"7d","type":"string"},{"const":"30d","type":"string"},{"const":"all","type":"string"}]},"tokens":{"description":"Distinct reward-token series across all buckets (chart legend), descending by total USD value","type":"array","items":{"type":"object","properties":{"id":{"description":"Token id — matches `breakdown.tokenId` entries","type":"string"},"symbol":{"description":"Token symbol displayed in the chart legend","type":"string"},"chainId":{"description":"Chain ID of the token","type":"number"},"address":{"description":"Token address","type":"string"},"decimals":{"description":"Token decimals","type":"number"},"icon":{"description":"Token icon URL","type":"string"},"price":{"description":"Current USD price, for optional client-side USD display","anyOf":[{"type":"number"},{"type":"null"}]}},"required":["id","symbol","chainId","address","decimals","icon","price"]}},"buckets":{"description":"Distribution buckets, ascending by start timestamp; buckets with no data are omitted","type":"array","items":{"type":"object","properties":{"start":{"description":"Unix timestamp (seconds) of the bucket start, UTC-aligned","type":"number"},"end":{"description":"Unix timestamp (seconds) of the bucket end (exclusive)","type":"number"},"breakdown":{"description":"Per-token amount, descending by USD value","type":"array","items":{"type":"object","properties":{"tokenId":{"description":"Token id matching an entry in `tokens`","type":"string"},"amount":{"description":"Token units distributed in the bucket","type":"number"}},"required":["tokenId","amount"]}}},"required":["start","end","breakdown"]}}},"required":["bucket","range","tokens","buckets"]}}}}},"operationId":"getV4CreatorsByCreatorDistributedOver-time"}},"/v4/credits/pricing":{"get":{"tags":["Credits"],"description":"Get points-campaign billing pricing constants (USD)","operationId":"getV4CreditsPricing"}},"/v4/credits/estimate":{"post":{"tags":["Credits"],"description":"Estimate the credit cost of a points campaign's next run, mirroring the engine pre-check. Returns `estimatedCost` (pro-rated over the next run window, capped at 1 week) and `threshold` (= max(estimatedCost, BASE_COST_PER_WEEK), the minimum balance required for the pre-check to pass).","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"startTimestamp":{"description":"Campaign start timestamp (unix seconds)","type":"number"},"endTimestamp":{"description":"Campaign end timestamp (unix seconds)","type":"number"},"computedUntil":{"description":"Last computed-until timestamp (unix seconds). Defaults to startTimestamp.","type":"number"},"recipientCount":{"minimum":0,"description":"Expected recipient count","type":"number"}},"required":["startTimestamp","endTimestamp"]}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"startTimestamp":{"description":"Campaign start timestamp (unix seconds)","type":"number"},"endTimestamp":{"description":"Campaign end timestamp (unix seconds)","type":"number"},"computedUntil":{"description":"Last computed-until timestamp (unix seconds). Defaults to startTimestamp.","type":"number"},"recipientCount":{"minimum":0,"description":"Expected recipient count","type":"number"}},"required":["startTimestamp","endTimestamp"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"startTimestamp":{"description":"Campaign start timestamp (unix seconds)","type":"number"},"endTimestamp":{"description":"Campaign end timestamp (unix seconds)","type":"number"},"computedUntil":{"description":"Last computed-until timestamp (unix seconds). Defaults to startTimestamp.","type":"number"},"recipientCount":{"minimum":0,"description":"Expected recipient count","type":"number"}},"required":["startTimestamp","endTimestamp"]}}},"required":true},"operationId":"postV4CreditsEstimate"}},"/v4/credits/estimate/total":{"post":{"tags":["Credits"],"description":"Estimate the total credit cost of a points campaign over its full duration (endTimestamp − startTimestamp). Used at creation time to gate campaign submission when the creator's balance is insufficient. Returns `estimatedCost` (full pro-rated cost) and `threshold` (= max(estimatedCost, BASE_COST_PER_WEEK)).","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"startTimestamp":{"description":"Campaign start timestamp (unix seconds)","type":"number"},"endTimestamp":{"description":"Campaign end timestamp (unix seconds)","type":"number"},"computedUntil":{"description":"Last computed-until timestamp (unix seconds). Defaults to startTimestamp.","type":"number"},"recipientCount":{"minimum":0,"description":"Expected recipient count","type":"number"}},"required":["startTimestamp","endTimestamp"]}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"startTimestamp":{"description":"Campaign start timestamp (unix seconds)","type":"number"},"endTimestamp":{"description":"Campaign end timestamp (unix seconds)","type":"number"},"computedUntil":{"description":"Last computed-until timestamp (unix seconds). Defaults to startTimestamp.","type":"number"},"recipientCount":{"minimum":0,"description":"Expected recipient count","type":"number"}},"required":["startTimestamp","endTimestamp"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"startTimestamp":{"description":"Campaign start timestamp (unix seconds)","type":"number"},"endTimestamp":{"description":"Campaign end timestamp (unix seconds)","type":"number"},"computedUntil":{"description":"Last computed-until timestamp (unix seconds). Defaults to startTimestamp.","type":"number"},"recipientCount":{"minimum":0,"description":"Expected recipient count","type":"number"}},"required":["startTimestamp","endTimestamp"]}}},"required":true},"operationId":"postV4CreditsEstimateTotal"}},"/v4/credits/{creatorId}":{"get":{"tags":["Credits"],"description":"Get credit balance for a creator","parameters":[{"name":"creatorId","in":"path","required":true,"schema":{"description":"Creator ID","type":"string"}}],"operationId":"getV4CreditsByCreatorId"}},"/v4/credits/{creatorId}/operations":{"get":{"tags":["Credits"],"description":"List credit operations for a creator","parameters":[{"name":"creatorId","in":"path","required":true,"schema":{"description":"Creator ID","type":"string"}},{"name":"page","in":"query","required":false,"schema":{"minimum":0,"description":"0-indexed page number","default":0,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":0,"description":"0-indexed page number","default":0,"type":"number"}]}},{"name":"items","in":"query","required":false,"schema":{"minimum":1,"maximum":100,"description":"Number of items returned by page","default":20,"errorMessage":"Items must be between 1 and 100","anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"maximum":100,"description":"Number of items returned by page","default":20,"errorMessage":"Items must be between 1 and 100","type":"number"}]}},{"name":"type","in":"query","required":false,"schema":{"description":"Filter by operation type (ADD or SUBTRACT)","anyOf":[{"const":"ADD","type":"string"},{"const":"SUBTRACT","type":"string"}]}},{"name":"category","in":"query","required":false,"schema":{"description":"Filter by operation category (matches the operation's label prefix)","anyOf":[{"const":"autoClaim","type":"string"},{"const":"pointsDebit","type":"string"},{"const":"deposit","type":"string"},{"const":"offchain","type":"string"},{"const":"subscription","type":"string"}]}}],"operationId":"getV4CreditsByCreatorIdOperations"}},"/v4/credits/{creatorId}/operations/count":{"get":{"tags":["Credits"],"description":"Get the number of credit operations for a creator, optionally filtered by type","parameters":[{"name":"creatorId","in":"path","required":true,"schema":{"description":"Creator ID","type":"string"}},{"name":"type","in":"query","required":false,"schema":{"description":"Filter by operation type (ADD or SUBTRACT)","anyOf":[{"const":"ADD","type":"string"},{"const":"SUBTRACT","type":"string"}]}},{"name":"category","in":"query","required":false,"schema":{"description":"Filter by operation category (matches the operation's label prefix)","anyOf":[{"const":"autoClaim","type":"string"},{"const":"pointsDebit","type":"string"},{"const":"deposit","type":"string"},{"const":"offchain","type":"string"},{"const":"subscription","type":"string"}]}}],"operationId":"getV4CreditsByCreatorIdOperationsCount"}},"/v4/credits/{creatorId}/operations/aggregate":{"get":{"tags":["Credits"],"description":"Get the signed sum of credit operations for a creator. SUBTRACT amounts count as negative, ADD as positive.","parameters":[{"name":"creatorId","in":"path","required":true,"schema":{"description":"Creator ID","type":"string"}},{"name":"type","in":"query","required":false,"schema":{"description":"Filter by operation type (ADD or SUBTRACT)","anyOf":[{"const":"ADD","type":"string"},{"const":"SUBTRACT","type":"string"}]}},{"name":"category","in":"query","required":false,"schema":{"description":"Filter by operation category (matches the operation's label prefix)","anyOf":[{"const":"autoClaim","type":"string"},{"const":"pointsDebit","type":"string"},{"const":"deposit","type":"string"},{"const":"offchain","type":"string"},{"const":"subscription","type":"string"}]}}],"operationId":"getV4CreditsByCreatorIdOperationsAggregate"}},"/v4/credits/{creatorId}/operations/breakdowns":{"get":{"tags":["Credits"],"description":"Get credit operations grouped by category with signed totals. All Auto-claim labels are bucketed together. SUBTRACT amounts count as negative, ADD as positive.","parameters":[{"name":"creatorId","in":"path","required":true,"schema":{"description":"Creator ID","type":"string"}},{"name":"type","in":"query","required":false,"schema":{"description":"Filter by operation type (ADD or SUBTRACT)","anyOf":[{"const":"ADD","type":"string"},{"const":"SUBTRACT","type":"string"}]}},{"name":"category","in":"query","required":false,"schema":{"description":"Filter by operation category (matches the operation's label prefix)","anyOf":[{"const":"autoClaim","type":"string"},{"const":"pointsDebit","type":"string"},{"const":"deposit","type":"string"},{"const":"offchain","type":"string"},{"const":"subscription","type":"string"}]}}],"operationId":"getV4CreditsByCreatorIdOperationsBreakdowns"}},"/v4/credits/{creatorId}/paused-campaigns":{"get":{"tags":["Credits"],"description":"Count campaigns paused due to insufficient credits for a creator","parameters":[{"name":"creatorId","in":"path","required":true,"schema":{"description":"Creator ID","type":"string"}}],"operationId":"getV4CreditsByCreatorIdPaused-campaigns"}},"/v4/enums/":{"get":{"tags":["Enums"],"description":"List all available enums in the system. Returns enum names, types (string/number), and metadata availability.","responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"enums":{"description":"List of available enums","type":"array","items":{"type":"object","properties":{"name":{"description":"Enum name","type":"string"},"type":{"description":"The type of values in this enum","anyOf":[{"const":"number","type":"string"},{"const":"string","type":"string"}]},"hasMetadata":{"description":"Whether this enum has metadata (descriptions)","type":"boolean"}},"required":["name","type","hasMetadata"]}}},"required":["enums"]}}}}},"operationId":"getV4Enums"}},"/v4/enums/{enumName}":{"get":{"tags":["Enums"],"description":"Get detailed information about a specific enum including all entries with their values, names, and descriptions (if available).","parameters":[{"name":"enumName","in":"path","required":true,"schema":{"description":"Name of the enum (e.g., CampaignType, ChainId, DistributionMethod)","examples":["CampaignType","ChainId","DistributionMethod"],"type":"string"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"description":"The enum name","type":"string"},"entries":{"description":"Array of all entries in this enum","type":"array","items":{"type":"object","properties":{"value":{"description":"The enum value (number or string)","anyOf":[{"type":"string"},{"type":"number"}]},"key":{"description":"The enum key","type":"string"},"description":{"description":"Human-readable description of the enum entry","type":"string"}},"required":["value","key"]}},"type":{"description":"The type of values in this enum","anyOf":[{"const":"number","type":"string"},{"const":"string","type":"string"}]}},"required":["name","entries","type"]}}}}},"operationId":"getV4EnumsByEnumName"}},"/v4/enums/{enumName}/convert/{value}":{"get":{"tags":["Enums"],"description":"Convert an enum value bidirectionally. For number enums: provide a number to get its string name. For string enums: provide a string to get its value. Returns the converted value with metadata if available.","parameters":[{"name":"enumName","in":"path","required":true,"schema":{"description":"Name of the enum","examples":["CampaignType","DistributionMethod"],"type":"string"}},{"name":"value","in":"path","required":true,"schema":{"description":"The value to convert (number or string depending on enum type)","examples":["1","AIRDROP"],"type":"string"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"input":{"description":"The input value","anyOf":[{"type":"string"},{"type":"number"}]},"output":{"description":"The converted value","anyOf":[{"type":"string"},{"type":"number"}]},"description":{"description":"Description if available","type":"string"}},"required":["input","output"]}}}}},"operationId":"getV4EnumsByEnumNameConvertByValue"}},"/v4/enums/{enumName}/batch-convert":{"post":{"tags":["Enums"],"description":"Batch convert multiple enum values at once. Accepts an array of values and returns an array of conversion results. Maximum 100 values per request.","parameters":[{"name":"enumName","in":"path","required":true,"schema":{"description":"Name of the enum (e.g., CampaignType, ChainId, DistributionMethod)","examples":["CampaignType","ChainId","DistributionMethod"],"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"values":{"description":"Array of values to convert","minItems":1,"maxItems":100,"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}}},"required":["values"]}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"values":{"description":"Array of values to convert","minItems":1,"maxItems":100,"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}}},"required":["values"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"values":{"description":"Array of values to convert","minItems":1,"maxItems":100,"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}}},"required":["values"]}}},"required":true},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"results":{"description":"Array of conversion results","type":"array","items":{"type":"object","properties":{"input":{"description":"The input value","anyOf":[{"type":"string"},{"type":"number"}]},"output":{"description":"The converted value","anyOf":[{"type":"string"},{"type":"number"}]},"description":{"description":"Description if available","type":"string"}},"required":["input","output"]}}},"required":["results"]}}}}},"operationId":"postV4EnumsByEnumNameBatch-convert"}},"/v4/bucket/health/proofs":{"get":{"tags":["Health"],"summary":"Check for stale proof ingestion files","description":"Always returns HTTP 200. `status` is `STALE` when any proof file is older than the staleness threshold, `OK` otherwise. Configure a keyword monitor to alert when `STALE` is present.","responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"anyOf":[{"const":"OK","type":"string"},{"const":"STALE","type":"string"}]},"success":{"type":"boolean"},"filesChecked":{"type":"number"},"detail":{"type":"string"},"runbook":{"type":"object","properties":{"impact":{"type":"string"},"remediation":{"type":"string"},"escalation":{"type":"string"}},"required":["impact","remediation"]}},"required":["status","success","filesChecked"]}}}}},"operationId":"getV4BucketHealthProofs"}},"/v4/bucket/health/diff":{"get":{"tags":["Health"],"summary":"Check for stale diff / diff-breakdown ingestion files","description":"Always returns HTTP 200. `status` is `STALE` when any diff / diff-breakdown file is older than the staleness threshold, `OK` otherwise. Configure a keyword monitor to alert when `STALE` is present.","responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"anyOf":[{"const":"OK","type":"string"},{"const":"STALE","type":"string"}]},"success":{"type":"boolean"},"filesChecked":{"type":"number"},"detail":{"type":"string"},"runbook":{"type":"object","properties":{"impact":{"type":"string"},"remediation":{"type":"string"},"escalation":{"type":"string"}},"required":["impact","remediation"]}},"required":["status","success","filesChecked"]}}}}},"operationId":"getV4BucketHealthDiff"}},"/v4/bucket/health/transactions":{"get":{"tags":["Health"],"summary":"Check for stale transaction and autoclaim ingestion files","description":"Always returns HTTP 200. `status` is `STALE` when any transaction and autoclaim file is older than the staleness threshold, `OK` otherwise. Configure a keyword monitor to alert when `STALE` is present.","responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"anyOf":[{"const":"OK","type":"string"},{"const":"STALE","type":"string"}]},"success":{"type":"boolean"},"filesChecked":{"type":"number"},"detail":{"type":"string"},"runbook":{"type":"object","properties":{"impact":{"type":"string"},"remediation":{"type":"string"},"escalation":{"type":"string"}},"required":["impact","remediation"]}},"required":["status","success","filesChecked"]}}}}},"operationId":"getV4BucketHealthTransactions"}},"/v4/redis/health":{"get":{"tags":["Health"],"summary":"Check monitored Redis caches for staleness","description":"Always returns HTTP 200. `status` is `STALE` when any monitored Redis cache hasn't been refreshed recently enough, `OK` otherwise. Configure a keyword monitor to alert when `STALE` is present.","responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"anyOf":[{"const":"OK","type":"string"},{"const":"STALE","type":"string"}]},"success":{"type":"boolean"},"cachesChecked":{"type":"number"},"detail":{"type":"string"},"runbook":{"type":"object","properties":{"impact":{"type":"string"},"remediation":{"type":"string"},"escalation":{"type":"string"}},"required":["impact","remediation"]}},"required":["status","success","cachesChecked"]}}}}},"operationId":"getV4RedisHealth"}},"/v4/claims/health":{"get":{"tags":["Health"],"summary":"Check claim indexing sync across all chains","description":"Always returns HTTP 200. `status` is `STALE` when claim indexing has fallen behind: either the latest on-chain claim has sat unprocessed for at least 2 hours (or no processing checkpoint exists yet), or an indexing source is at least 2 hours behind the live chain head. `OK` otherwise. Aggregated over all chains; chains whose status can't be computed (e.g. RPC unreachable) are skipped. Configure a keyword monitor to alert when `STALE` is present.","responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"anyOf":[{"const":"OK","type":"string"},{"const":"STALE","type":"string"}]},"success":{"type":"boolean"},"watermarkDriftChains":{"type":"number"},"onchainLagSources":{"type":"number"},"detail":{"type":"string"},"runbook":{"type":"object","properties":{"impact":{"type":"string"},"remediation":{"type":"string"},"escalation":{"type":"string"}},"required":["impact","remediation"]}},"required":["status","success","watermarkDriftChains","onchainLagSources"]}}}}},"operationId":"getV4ClaimsHealth"}},"/v4/dynamic-data/health":{"get":{"tags":["Health"],"summary":"Check the update-dynamic-data job is running across chains","description":"Always returns HTTP 200. `status` is `STALE` when the `update-dynamic-data` job (refreshes live opportunity/campaign APR, TVL and dailyRewards) has stopped completing its full run on any chain it runs on — a chain counts as degraded when its last completed run is over 45 minutes old. Chains that have never recorded a run (newly added / not yet scheduled) aren't counted. Configure a keyword monitor to alert when `STALE` is present.","responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"anyOf":[{"const":"OK","type":"string"},{"const":"STALE","type":"string"}]},"success":{"type":"boolean"},"chainsChecked":{"type":"number"},"staleChains":{"type":"number"},"detail":{"type":"string"},"runbook":{"type":"object","properties":{"impact":{"type":"string"},"remediation":{"type":"string"},"escalation":{"type":"string"}},"required":["impact","remediation"]}},"required":["status","success","chainsChecked","staleChains"]}}}}},"operationId":"getV4Dynamic-dataHealth"}},"/v4/health/live":{"get":{"tags":["Health"],"summary":"Liveness probe — pod runtime snapshot","description":"Always returns HTTP 200. The body carries the pod's rolling 60s runtime window — mean cores against the cgroup quota, responses served, RSS against the memory limit, worst event-loop drift. Nothing here fails the probe yet: the thresholds that would identify a GC-bound pod are not calibrated against production traffic, so this ships as telemetry first. Every window is also logged as `[RUNTIME] window`.","responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"cpuCores":{"type":"number"},"cpuQuotaCores":{"type":"number"},"cpuLimitCores":{"type":"number"},"cpuLimitBasis":{"anyOf":[{"const":"quota","type":"string"},{"const":"host","type":"string"}]},"cpuRatio":{"type":"number"},"requestsInWindow":{"type":"number"},"rssBytes":{"type":"number"},"rssRatio":{"type":"number"},"maxEventLoopLagMs":{"type":"number"},"windowSeconds":{"type":"number"}},"required":["cpuCores","requestsInWindow","rssBytes","maxEventLoopLagMs","windowSeconds"]}}}}},"operationId":"getV4HealthLive"}},"/v4/health/ready":{"get":{"tags":["Health"],"summary":"Readiness probe — pod runtime snapshot","description":"Always returns HTTP 200. The body carries the pod's rolling 60s runtime window — mean cores against the cgroup quota, responses served, RSS against the memory limit, worst event-loop drift. Nothing here fails the probe yet: the thresholds that would identify a GC-bound pod are not calibrated against production traffic, so this ships as telemetry first. Every window is also logged as `[RUNTIME] window`.","responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"cpuCores":{"type":"number"},"cpuQuotaCores":{"type":"number"},"cpuLimitCores":{"type":"number"},"cpuLimitBasis":{"anyOf":[{"const":"quota","type":"string"},{"const":"host","type":"string"}]},"cpuRatio":{"type":"number"},"requestsInWindow":{"type":"number"},"rssBytes":{"type":"number"},"rssRatio":{"type":"number"},"maxEventLoopLagMs":{"type":"number"},"windowSeconds":{"type":"number"}},"required":["cpuCores","requestsInWindow","rssBytes","maxEventLoopLagMs","windowSeconds"]}}}}},"operationId":"getV4HealthReady"}},"/v4/historical/campaign/{campaignId}":{"get":{"tags":["Historical"],"summary":"Campaign reward diff between two trees (BETA)","description":"**Historical Campaign Diff**<p>Computes the difference in reward breakdowns for a given campaign between two merkle trees. Each tree is selected either by date (closest root on or before the date, via <code>startDate</code>/<code>endDate</code>) or by an explicit root hash (<code>startRoot</code>/<code>endRoot</code>). Returns per-recipient, per-reason breakdown diffs with non-zero changes only.</p><p><strong>Authentication:</strong> Requires a valid API key passed via the <code>Authorization</code> header.</p><p>⚠️ <strong>Beta:</strong> this endpoint is in beta. The behavior, response shape and data format may change at any time without notice. Historical data is only available from the configured cutoff date onwards.</p>","parameters":[{"name":"campaignId","in":"path","required":true,"schema":{"type":"string"}},{"name":"chainId","in":"query","required":true,"schema":{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}},{"name":"startDate","in":"query","required":false,"schema":{"description":"ISO date or unix timestamp. One of startDate or startRoot required.","type":"string"}},{"name":"endDate","in":"query","required":false,"schema":{"description":"ISO date or unix timestamp. One of endDate or endRoot required.","type":"string"}},{"name":"startRoot","in":"query","required":false,"schema":{"description":"Start merkle root hash. One of startDate or startRoot required.","type":"string"}},{"name":"endRoot","in":"query","required":false,"schema":{"description":"End merkle root hash. One of endDate or endRoot required.","type":"string"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"startRoot":{"type":"object","properties":{"root":{"type":"string"},"timestamp":{"type":"string"}},"required":["root","timestamp"]},"endRoot":{"type":"object","properties":{"root":{"type":"string"},"timestamp":{"type":"string"}},"required":["root","timestamp"]},"breakdowns":{"type":"array","items":{"type":"object","properties":{"campaignId":{"type":"string"},"recipient":{"type":"string"},"reason":{"type":"string"},"rewardToken":{"type":"string"},"startAmount":{"description":"Cumulative reward amount at startDate","type":"string"},"endAmount":{"description":"Cumulative reward amount at endDate","type":"string"},"diff":{"description":"Difference between endAmount and startAmount","type":"string"}},"required":["campaignId","recipient","reason","rewardToken","startAmount","endAmount","diff"]}}},"required":["startRoot","endRoot","breakdowns"]}}}}},"operationId":"getV4HistoricalCampaignByCampaignId"}},"/v4/historical/recipient/{recipient}":{"get":{"tags":["Historical"],"summary":"Recipient reward diff between two trees (BETA)","description":"**Historical Recipient Diff**<p>Computes the difference in reward breakdowns for a given recipient between two merkle trees. Each tree is selected either by date (closest root on or before the date, via <code>startDate</code>/<code>endDate</code>) or by an explicit root hash (<code>startRoot</code>/<code>endRoot</code>). Returns per-campaign, per-reason breakdown diffs with non-zero changes only.</p><p><strong>Authentication:</strong> Requires a valid API key passed via the <code>Authorization</code> header.</p><p>⚠️ <strong>Beta:</strong> this endpoint is in beta. The behavior, response shape and data format may change at any time without notice. Historical data is only available from the configured cutoff date onwards.</p>","parameters":[{"name":"recipient","in":"path","required":true,"schema":{"type":"string"}},{"name":"chainId","in":"query","required":true,"schema":{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}},{"name":"startDate","in":"query","required":false,"schema":{"description":"ISO date or unix timestamp. One of startDate or startRoot required.","type":"string"}},{"name":"endDate","in":"query","required":false,"schema":{"description":"ISO date or unix timestamp. One of endDate or endRoot required.","type":"string"}},{"name":"startRoot","in":"query","required":false,"schema":{"description":"Start merkle root hash. One of startDate or startRoot required.","type":"string"}},{"name":"endRoot","in":"query","required":false,"schema":{"description":"End merkle root hash. One of endDate or endRoot required.","type":"string"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"startRoot":{"type":"object","properties":{"root":{"type":"string"},"timestamp":{"type":"string"}},"required":["root","timestamp"]},"endRoot":{"type":"object","properties":{"root":{"type":"string"},"timestamp":{"type":"string"}},"required":["root","timestamp"]},"breakdowns":{"type":"array","items":{"type":"object","properties":{"campaignId":{"type":"string"},"recipient":{"type":"string"},"reason":{"type":"string"},"rewardToken":{"type":"string"},"startAmount":{"description":"Cumulative reward amount at startDate","type":"string"},"endAmount":{"description":"Cumulative reward amount at endDate","type":"string"},"diff":{"description":"Difference between endAmount and startAmount","type":"string"}},"required":["campaignId","recipient","reason","rewardToken","startAmount","endAmount","diff"]}}},"required":["startRoot","endRoot","breakdowns"]}}}}},"operationId":"getV4HistoricalRecipientByRecipient"}},"/v4/historical/tree":{"get":{"tags":["Historical"],"summary":"Reward breakdowns of a single tree (BETA)","description":"**Historical Tree Breakdowns**<p>Returns the cumulative reward breakdowns of a single merkle tree, selected either by <code>date</code> (closest root on or before the date) or by an explicit <code>root</code> hash. Results can be filtered by <code>campaignId</code> and/or <code>recipient</code>.</p><p><strong>Authentication:</strong> Requires a valid API key passed via the <code>Authorization</code> header.</p><p>⚠️ <strong>Beta:</strong> this endpoint is in beta. The behavior, response shape and data format may change at any time without notice. Historical data is only available from the configured cutoff date onwards.</p>","parameters":[{"name":"chainId","in":"query","required":true,"schema":{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}},{"name":"date","in":"query","required":false,"schema":{"description":"ISO date or unix timestamp. One of date or root is required.","type":"string"}},{"name":"root","in":"query","required":false,"schema":{"description":"Merkle root hash. One of date or root is required.","type":"string"}},{"name":"campaignId","in":"query","required":false,"schema":{"description":"Optional campaign filter","type":"string"}},{"name":"recipient","in":"query","required":false,"schema":{"description":"Optional recipient filter","type":"string"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"root":{"type":"string"},"timestamp":{"type":"string"},"breakdowns":{"type":"array","items":{"type":"object","properties":{"campaignId":{"type":"string"},"recipient":{"type":"string"},"reason":{"type":"string"},"rewardToken":{"type":"string"},"amount":{"description":"Cumulative reward amount in the tree","type":"string"}},"required":["campaignId","recipient","reason","rewardToken","amount"]}}},"required":["root","timestamp","breakdowns"]}}}}},"operationId":"getV4HistoricalTree"}},"/v4/leaves/{recipient}/breakdowns":{"get":{"tags":["Leaves"],"description":"Returns paginated leaf breakdowns for a recipient, token, and chain, including both distributed and pending amounts. Supports filters on campaignId, opportunityId, and protocolId.","parameters":[{"name":"recipient","in":"path","required":true,"schema":{"description":"Recipient wallet address","type":"string"}},{"name":"tokenAddress","in":"query","required":true,"schema":{"description":"Reward token address","type":"string"}},{"name":"distributionChainId","in":"query","required":true,"schema":{"description":"Distribution chain ID","anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"Distribution chain ID","type":"number"}]}},{"name":"campaignId","in":"query","required":false,"schema":{"description":"Filter by campaign ID (exact match)","type":"string"}},{"name":"opportunityId","in":"query","required":false,"schema":{"description":"Filter by opportunity ID (exact match)","type":"string"}},{"name":"protocolId","in":"query","required":false,"schema":{"type":"array","items":{"description":"Filter by main protocol IDs","type":"string"}}},{"name":"page","in":"query","required":false,"schema":{"minimum":0,"description":"0-indexed page number","default":0,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":0,"description":"0-indexed page number","default":0,"type":"number"}]}},{"name":"items","in":"query","required":false,"schema":{"minimum":1,"maximum":1000,"description":"Number of items returned by page","default":20,"errorMessage":"Items must be between 1 and 1000","anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"maximum":1000,"description":"Number of items returned by page","default":20,"errorMessage":"Items must be between 1 and 1000","type":"number"}]}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"breakdowns":{"type":"array","items":{"type":"object","properties":{"distributionChainId":{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]},"tokenAddress":{"type":"string"},"campaignId":{"description":"Hashed campaign ID","type":"string"},"reason":{"type":"string"},"amount":{"type":"string"},"claimed":{"type":"string"},"pending":{"type":"string"},"Campaign":{"description":"Full Campaign object with Opportunity include"}},"required":["distributionChainId","tokenAddress","campaignId","reason","amount","claimed","pending","Campaign"]}},"count":{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}},"required":["breakdowns","count"]}}}}},"operationId":"getV4LeavesByRecipientBreakdowns"}},"/v4/leaves/{recipient}/debt":{"get":{"tags":["Leaves"],"description":"Returns the outstanding overdistribution clawback debt for an address, per (chain, token): owed, recovered so far, and remaining. Empty array if the address has no configured debt.","parameters":[{"name":"recipient","in":"path","required":true,"schema":{"description":"Wallet address to check outstanding clawback debt for","type":"string"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"chainId":{"type":"number"},"tokens":{"description":"Reward tokens the debt is mutualized across","type":"array","items":{"type":"string"}},"owed":{"description":"Total shared debt in raw token units","type":"string"},"recovered":{"description":"Amount recovered so far across all the group's tokens, in raw units","type":"string"},"remaining":{"description":"Amount still owed in raw token units (owed - recovered; negative if over-recovered)","type":"string"}},"required":["chainId","tokens","owed","recovered","remaining"]}}}}}},"operationId":"getV4LeavesByRecipientDebt"}},"/v4/roots/":{"get":{"tags":["Roots"],"description":"Returns the last merkl roots recorded before the provided timestamps. Use chainId and timestamps query parameters to filter results.","parameters":[{"name":"page","in":"query","required":false,"schema":{"minimum":0,"description":"0-indexed page number","default":0,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":0,"description":"0-indexed page number","default":0,"type":"number"}]}},{"name":"items","in":"query","required":false,"schema":{"minimum":1,"maximum":100,"description":"Number of items returned by page","default":20,"errorMessage":"Items must be between 1 and 100","anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"maximum":100,"description":"Number of items returned by page","default":20,"errorMessage":"Items must be between 1 and 100","type":"number"}]}},{"name":"chainId","in":"query","required":true,"schema":{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}},{"name":"fromTimestamp","in":"query","required":true,"schema":{"type":"string"}},{"name":"toTimestamp","in":"query","required":true,"schema":{"type":"string"}}],"operationId":"getV4Roots"}},"/v4/roots/live":{"get":{"tags":["Roots"],"description":"Returns all current live Merkl root hashes across all chains.","operationId":"getV4RootsLive"}},"/v4/node":{"get":{"tags":["Node"],"summary":"Check if an address was already labelled as specific by the Merkl Engine.","warn":"Beta Feature – this functionality is only supported by recently developed campaign types. More specifically by logProcessor campaigns.","description":"Check if a given address was already labelled as specific by the Merkl Engine. Use this endpoint to check for forwarders, pools, etc.","parameters":[{"name":"chainId","in":"query","required":false,"schema":{"description":"Chain Id that needs to be queried","anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"Chain Id that needs to be queried","type":"number"}]}},{"name":"addressOrId","in":"query","required":true,"schema":{"description":"Address or ID that needs to be queried","type":"string"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"description":"Node Id in Merkl Database","type":"string"},"chainId":{"description":"Chain Id the node was detected on","anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"Chain Id the node was detected on","type":"number"}]},"protocol":{"description":"Type of node","anyOf":[{"const":"Aave","type":"string"},{"const":"aave","type":"string"},{"const":"AaveCustom","type":"string"},{"const":"AaveStata","type":"string"},{"const":"AaveUmbrella","type":"string"},{"const":"AaveV4HubSingleton","type":"string"},{"const":"AaveV4Spoke","type":"string"},{"const":"aerodrome","type":"string"},{"const":"aerodrome-gauge-cap","type":"string"},{"const":"aerodrome-slipstream","type":"string"},{"const":"accountable","type":"string"},{"const":"ajna","type":"string"},{"const":"akron","type":"string"},{"const":"ambient","type":"string"},{"const":"aquarius","type":"string"},{"const":"altura","type":"string"},{"const":"angles","type":"string"},{"const":"aragon","type":"string"},{"const":"arrakis","type":"string"},{"const":"arthswap","type":"string"},{"const":"Aura","type":"string"},{"const":"aura","type":"string"},{"const":"avalon","type":"string"},{"const":"badger","type":"string"},{"const":"balancer","type":"string"},{"const":"BalancerGauge","type":"string"},{"const":"BalancerPool","type":"string"},{"const":"BalancerSingleton","type":"string"},{"const":"base-swap","type":"string"},{"const":"Beefy","type":"string"},{"const":"beefy","type":"string"},{"const":"BeefyStaker","type":"string"},{"const":"beraborrow","type":"string"},{"const":"beratrax","type":"string"},{"const":"blend","type":"string"},{"const":"bunni","type":"string"},{"const":"BunniToken","type":"string"},{"const":"camelot","type":"string"},{"const":"capricorn","type":"string"},{"const":"CCLTac","type":"string"},{"const":"Charm","type":"string"},{"const":"charm","type":"string"},{"const":"ChildChainGauge","type":"string"},{"const":"cian","type":"string"},{"const":"clober","type":"string"},{"const":"Club246","type":"string"},{"const":"coinhain","type":"string"},{"const":"compound","type":"string"},{"const":"compound-v3","type":"string"},{"const":"concrete","type":"string"},{"const":"Contango","type":"string"},{"const":"ConvexStaker","type":"string"},{"const":"credix","type":"string"},{"const":"cross_curve","type":"string"},{"const":"crust","type":"string"},{"const":"curvance","type":"string"},{"const":"curve","type":"string"},{"const":"CurvePools","type":"string"},{"const":"CurveG","type":"string"},{"const":"curveNPool","type":"string"},{"const":"defiedge","type":"string"},{"const":"dlend","type":"string"},{"const":"dolomite","type":"string"},{"const":"dragonswap","type":"string"},{"const":"eigenlayer","type":"string"},{"const":"Ekubo","type":"string"},{"const":"ekubo","type":"string"},{"const":"EkuboPositionManager","type":"string"},{"const":"elyx","type":"string"},{"const":"enzyme","type":"string"},{"const":"equalizer","type":"string"},{"const":"equilibria","type":"string"},{"const":"EquilibriaBooster","type":"string"},{"const":"EquilibriaProxy","type":"string"},{"const":"ERC20Custom","type":"string"},{"const":"ERC20IncomingTransferCustom","type":"string"},{"const":"ERC721Custom","type":"string"},{"const":"Euler","type":"string"},{"const":"euler","type":"string"},{"const":"EulerEarn","type":"string"},{"const":"EulerSwap","type":"string"},{"const":"exactly","type":"string"},{"const":"fenix","type":"string"},{"const":"filament","type":"string"},{"const":"flowswap","type":"string"},{"const":"flux","type":"string"},{"const":"fluxion","type":"string"},{"const":"fluid","type":"string"},{"const":"fluid_ftoken","type":"string"},{"const":"frax","type":"string"},{"const":"FraxLend","type":"string"},{"const":"fraxlend","type":"string"},{"const":"friendly","type":"string"},{"const":"Gamma","type":"string"},{"const":"gamma","type":"string"},{"const":"GammaChef","type":"string"},{"const":"GammaUniV4","type":"string"},{"const":"GammaUniV4Multimanager","type":"string"},{"const":"gammaswap","type":"string"},{"const":"Gearbox","type":"string"},{"const":"gearbox","type":"string"},{"const":"hanji","type":"string"},{"const":"holdstation","type":"string"},{"const":"horiza","type":"string"},{"const":"hourglass","type":"string"},{"const":"Hybra","type":"string"},{"const":"hybra-pair","type":"string"},{"const":"hydrex","type":"string"},{"const":"hydrex-gauge","type":"string"},{"const":"hyperdrive","type":"string"},{"const":"hyperdrive-lending","type":"string"},{"const":"hyperswap","type":"string"},{"const":"Hypurrfi","type":"string"},{"const":"hypurrfi","type":"string"},{"const":"Ichi","type":"string"},{"const":"iguana","type":"string"},{"const":"ion","type":"string"},{"const":"ionex","type":"string"},{"const":"ionic","type":"string"},{"const":"ipor","type":"string"},{"const":"IporStaking","type":"string"},{"const":"ironclad","type":"string"},{"const":"izumi","type":"string"},{"const":"Jaine","type":"string"},{"const":"jaine","type":"string"},{"const":"jones","type":"string"},{"const":"jones-staker","type":"string"},{"const":"jumper","type":"string"},{"const":"karpatkey","type":"string"},{"const":"Katana","type":"string"},{"const":"KatanaAlgebra","type":"string"},{"const":"katana","type":"string"},{"const":"KilnVault","type":"string"},{"const":"kim","type":"string"},{"const":"kittenswap","type":"string"},{"const":"koi","type":"string"},{"const":"kpnft","type":"string"},{"const":"kuru","type":"string"},{"const":"kyo","type":"string"},{"const":"lagoon","type":"string"},{"const":"layerbank","type":"string"},{"const":"lendle","type":"string"},{"const":"lista","type":"string"},{"const":"llamalend","type":"string"},{"const":"covenant","type":"string"},{"const":"covenant-singleton","type":"string"},{"const":"levva","type":"string"},{"const":"lnd","type":"string"},{"const":"maha","type":"string"},{"const":"mangrove","type":"string"},{"const":"MappingCustom","type":"string"},{"const":"maverick","type":"string"},{"const":"MaverickBP","type":"string"},{"const":"midas","type":"string"},{"const":"mimswap","type":"string"},{"const":"mento","type":"string"},{"const":"monday-trade","type":"string"},{"const":"moonwell","type":"string"},{"const":"morpho","type":"string"},{"const":"MorphoBlue","type":"string"},{"const":"MorphoSingleton","type":"string"},{"const":"MorphoVault","type":"string"},{"const":"MorphoVaultV2","type":"string"},{"const":"Napier","type":"string"},{"const":"neptune","type":"string"},{"const":"nest","type":"string"},{"const":"neverland","type":"string"},{"const":"ninemm","type":"string"},{"const":"nitro","type":"string"},{"const":"Nuvolari","type":"string"},{"const":"oku","type":"string"},{"const":"oxium","type":"string"},{"const":"PancakeSwap","type":"string"},{"const":"pancake-swap","type":"string"},{"const":"PancakeSwapInfinity","type":"string"},{"const":"Pendle","type":"string"},{"const":"pendle","type":"string"},{"const":"penpie","type":"string"},{"const":"PenpieLP","type":"string"},{"const":"PenpieStaking","type":"string"},{"const":"pharaoh","type":"string"},{"const":"pinto","type":"string"},{"const":"ploutos","type":"string"},{"const":"poolside","type":"string"},{"const":"primefi","type":"string"},{"const":"prime-vaults","type":"string"},{"const":"puffer","type":"string"},{"const":"punchswap","type":"string"},{"const":"quickswap","type":"string"},{"const":"quickswap-algebra","type":"string"},{"const":"quickswap-algebra-12","type":"string"},{"const":"ra","type":"string"},{"const":"RailnetVehicle","type":"string"},{"const":"radiant","type":"string"},{"const":"ramses","type":"string"},{"const":"range","type":"string"},{"const":"reactor_fusion","type":"string"},{"const":"reserve","type":"string"},{"const":"regenerative","type":"string"},{"const":"retro","type":"string"},{"const":"rfx","type":"string"},{"const":"rwax","type":"string"},{"const":"rooster","type":"string"},{"const":"royco","type":"string"},{"const":"RoycoKernel","type":"string"},{"const":"sake","type":"string"},{"const":"satlayer","type":"string"},{"const":"satsuma","type":"string"},{"const":"Satoshi","type":"string"},{"const":"projectx","type":"string"},{"const":"satoshi","type":"string"},{"const":"seamless","type":"string"},{"const":"sherpatrade","type":"string"},{"const":"Silo","type":"string"},{"const":"silo","type":"string"},{"const":"SiloVault","type":"string"},{"const":"snap","type":"string"},{"const":"sonex","type":"string"},{"const":"sonicmarket","type":"string"},{"const":"soroswap","type":"string"},{"const":"sovryn","type":"string"},{"const":"SovrynStaking","type":"string"},{"const":"sparklend","type":"string"},{"const":"Spectra","type":"string"},{"const":"spectra","type":"string"},{"const":"SpectraAsyncVault","type":"string"},{"const":"splice","type":"string"},{"const":"spnft","type":"string"},{"const":"spookyswap-v3","type":"string"},{"const":"stability","type":"string"},{"const":"stabull","type":"string"},{"const":"StabullPool","type":"string"},{"const":"StabullStaking","type":"string"},{"const":"stakedao","type":"string"},{"const":"StakeDAOPendleLocker","type":"string"},{"const":"StakeDAOPendleVault","type":"string"},{"const":"StakeDAOCurveVault","type":"string"},{"const":"Stake DAO","type":"string"},{"const":"StakeLocker","type":"string"},{"const":"StakeDAORewardVault","type":"string"},{"const":"StakeDAOStaker","type":"string"},{"const":"StakeDAOVault","type":"string"},{"const":"Steer","type":"string"},{"const":"steer","type":"string"},{"const":"StellarVaults","type":"string"},{"const":"stryke","type":"string"},{"const":"sturdy","type":"string"},{"const":"SummerFinance","type":"string"},{"const":"summerfinance","type":"string"},{"const":"superlend","type":"string"},{"const":"supswap","type":"string"},{"const":"SushiStaker","type":"string"},{"const":"MasterChefV3","type":"string"},{"const":"sushi-swap","type":"string"},{"const":"swap-x","type":"string"},{"const":"swapr","type":"string"},{"const":"swapxgauge","type":"string"},{"const":"symbiotic","type":"string"},{"const":"syncswap","type":"string"},{"const":"TacSmartAccount","type":"string"},{"const":"tako-tako","type":"string"},{"const":"teller","type":"string"},{"const":"tempest","type":"string"},{"const":"term_finance","type":"string"},{"const":"termmax","type":"string"},{"const":"thena","type":"string"},{"const":"thirdtrade","type":"string"},{"const":"thruster","type":"string"},{"const":"toros","type":"string"},{"const":"trader-joe","type":"string"},{"const":"TwyneCollateralVault","type":"string"},{"const":"TwyneCreditVault","type":"string"},{"const":"unipilot","type":"string"},{"const":"uniswap","type":"string"},{"const":"UniswapV3","type":"string"},{"const":"UniswapV4","type":"string"},{"const":"superform","type":"string"},{"const":"upshift","type":"string"},{"const":"uranium","type":"string"},{"const":"Veda","type":"string"},{"const":"veda","type":"string"},{"const":"velodrome","type":"string"},{"const":"velodrome-gauge-v2","type":"string"},{"const":"venus","type":"string"},{"const":"vest","type":"string"},{"const":"vicuna","type":"string"},{"const":"VII","type":"string"},{"const":"","type":"string"},{"const":"Voltage","type":"string"},{"const":"voltage","type":"string"},{"const":"woodswap","type":"string"},{"const":"woofi","type":"string"},{"const":"xlend","type":"string"},{"const":"XSwap","type":"string"},{"const":"Yearn","type":"string"},{"const":"yearn","type":"string"},{"const":"yei","type":"string"},{"const":"yo","type":"string"},{"const":"zero","type":"string"},{"const":"zerolend","type":"string"},{"const":"zk-swap","type":"string"},{"const":"zkSwapThreePool","type":"string"},{"const":"StableERC4626","type":"string"},{"const":"townsquare","type":"string"},{"const":"hyperlend","type":"string"},{"const":"bimexchange","type":"string"},{"const":"purrlend","type":"string"},{"const":"etherex","type":"string"},{"const":"etherfi","type":"string"},{"const":"brownfi","type":"string"},{"const":"vena","type":"string"},{"const":"edel","type":"string"},{"const":"origin","type":"string"},{"const":"monetrix","type":"string"},{"const":"kyberswap","type":"string"},{"const":"zama","type":"string"},{"const":"lfj","type":"string"},{"const":"treehouse","type":"string"},{"const":"yieldseeker","type":"string"},{"const":"lend.xyz","type":"string"},{"const":"DeelVault","type":"string"},{"const":"CoinbaseSmartWallet","type":"string"},{"const":"Mamo","type":"string"},{"const":"bleap","type":"string"},{"const":"gliquid","type":"string"},{"const":"makina","type":"string"},{"const":"opencover","type":"string"},{"const":"PendleLooper","type":"string"},{"const":"tigris","type":"string"},{"const":"zia","type":"string"},{"const":"ZiaStaker","type":"string"},{"const":"zyfai","type":"string"},{"const":"UnclaimedDistributorCustom","type":"string"},{"const":"NoForwarding","type":"string"}]},"recipient":{"description":"Address of the node","type":"string"},"nodesSourceId":{"description":"Id of the source that detected the node","type":"string"},"creationBlockNumber":{"description":"Block number at which the node was created","type":"number"},"metadata":{},"nodeSource":{"type":"object","properties":{"id":{"description":"Id of the source that detected the node","type":"string"},"protocol":{"description":"Protocol type of the source","anyOf":[{"const":"Aave","type":"string"},{"const":"aave","type":"string"},{"const":"AaveCustom","type":"string"},{"const":"AaveStata","type":"string"},{"const":"AaveUmbrella","type":"string"},{"const":"AaveV4HubSingleton","type":"string"},{"const":"AaveV4Spoke","type":"string"},{"const":"aerodrome","type":"string"},{"const":"aerodrome-gauge-cap","type":"string"},{"const":"aerodrome-slipstream","type":"string"},{"const":"accountable","type":"string"},{"const":"ajna","type":"string"},{"const":"akron","type":"string"},{"const":"ambient","type":"string"},{"const":"aquarius","type":"string"},{"const":"altura","type":"string"},{"const":"angles","type":"string"},{"const":"aragon","type":"string"},{"const":"arrakis","type":"string"},{"const":"arthswap","type":"string"},{"const":"Aura","type":"string"},{"const":"aura","type":"string"},{"const":"avalon","type":"string"},{"const":"badger","type":"string"},{"const":"balancer","type":"string"},{"const":"BalancerGauge","type":"string"},{"const":"BalancerPool","type":"string"},{"const":"BalancerSingleton","type":"string"},{"const":"base-swap","type":"string"},{"const":"Beefy","type":"string"},{"const":"beefy","type":"string"},{"const":"BeefyStaker","type":"string"},{"const":"beraborrow","type":"string"},{"const":"beratrax","type":"string"},{"const":"blend","type":"string"},{"const":"bunni","type":"string"},{"const":"BunniToken","type":"string"},{"const":"camelot","type":"string"},{"const":"capricorn","type":"string"},{"const":"CCLTac","type":"string"},{"const":"Charm","type":"string"},{"const":"charm","type":"string"},{"const":"ChildChainGauge","type":"string"},{"const":"cian","type":"string"},{"const":"clober","type":"string"},{"const":"Club246","type":"string"},{"const":"coinhain","type":"string"},{"const":"compound","type":"string"},{"const":"compound-v3","type":"string"},{"const":"concrete","type":"string"},{"const":"Contango","type":"string"},{"const":"ConvexStaker","type":"string"},{"const":"credix","type":"string"},{"const":"cross_curve","type":"string"},{"const":"crust","type":"string"},{"const":"curvance","type":"string"},{"const":"curve","type":"string"},{"const":"CurvePools","type":"string"},{"const":"CurveG","type":"string"},{"const":"curveNPool","type":"string"},{"const":"defiedge","type":"string"},{"const":"dlend","type":"string"},{"const":"dolomite","type":"string"},{"const":"dragonswap","type":"string"},{"const":"eigenlayer","type":"string"},{"const":"Ekubo","type":"string"},{"const":"ekubo","type":"string"},{"const":"EkuboPositionManager","type":"string"},{"const":"elyx","type":"string"},{"const":"enzyme","type":"string"},{"const":"equalizer","type":"string"},{"const":"equilibria","type":"string"},{"const":"EquilibriaBooster","type":"string"},{"const":"EquilibriaProxy","type":"string"},{"const":"ERC20Custom","type":"string"},{"const":"ERC20IncomingTransferCustom","type":"string"},{"const":"ERC721Custom","type":"string"},{"const":"Euler","type":"string"},{"const":"euler","type":"string"},{"const":"EulerEarn","type":"string"},{"const":"EulerSwap","type":"string"},{"const":"exactly","type":"string"},{"const":"fenix","type":"string"},{"const":"filament","type":"string"},{"const":"flowswap","type":"string"},{"const":"flux","type":"string"},{"const":"fluxion","type":"string"},{"const":"fluid","type":"string"},{"const":"fluid_ftoken","type":"string"},{"const":"frax","type":"string"},{"const":"FraxLend","type":"string"},{"const":"fraxlend","type":"string"},{"const":"friendly","type":"string"},{"const":"Gamma","type":"string"},{"const":"gamma","type":"string"},{"const":"GammaChef","type":"string"},{"const":"GammaUniV4","type":"string"},{"const":"GammaUniV4Multimanager","type":"string"},{"const":"gammaswap","type":"string"},{"const":"Gearbox","type":"string"},{"const":"gearbox","type":"string"},{"const":"hanji","type":"string"},{"const":"holdstation","type":"string"},{"const":"horiza","type":"string"},{"const":"hourglass","type":"string"},{"const":"Hybra","type":"string"},{"const":"hybra-pair","type":"string"},{"const":"hydrex","type":"string"},{"const":"hydrex-gauge","type":"string"},{"const":"hyperdrive","type":"string"},{"const":"hyperdrive-lending","type":"string"},{"const":"hyperswap","type":"string"},{"const":"Hypurrfi","type":"string"},{"const":"hypurrfi","type":"string"},{"const":"Ichi","type":"string"},{"const":"iguana","type":"string"},{"const":"ion","type":"string"},{"const":"ionex","type":"string"},{"const":"ionic","type":"string"},{"const":"ipor","type":"string"},{"const":"IporStaking","type":"string"},{"const":"ironclad","type":"string"},{"const":"izumi","type":"string"},{"const":"Jaine","type":"string"},{"const":"jaine","type":"string"},{"const":"jones","type":"string"},{"const":"jones-staker","type":"string"},{"const":"jumper","type":"string"},{"const":"karpatkey","type":"string"},{"const":"Katana","type":"string"},{"const":"KatanaAlgebra","type":"string"},{"const":"katana","type":"string"},{"const":"KilnVault","type":"string"},{"const":"kim","type":"string"},{"const":"kittenswap","type":"string"},{"const":"koi","type":"string"},{"const":"kpnft","type":"string"},{"const":"kuru","type":"string"},{"const":"kyo","type":"string"},{"const":"lagoon","type":"string"},{"const":"layerbank","type":"string"},{"const":"lendle","type":"string"},{"const":"lista","type":"string"},{"const":"llamalend","type":"string"},{"const":"covenant","type":"string"},{"const":"covenant-singleton","type":"string"},{"const":"levva","type":"string"},{"const":"lnd","type":"string"},{"const":"maha","type":"string"},{"const":"mangrove","type":"string"},{"const":"MappingCustom","type":"string"},{"const":"maverick","type":"string"},{"const":"MaverickBP","type":"string"},{"const":"midas","type":"string"},{"const":"mimswap","type":"string"},{"const":"mento","type":"string"},{"const":"monday-trade","type":"string"},{"const":"moonwell","type":"string"},{"const":"morpho","type":"string"},{"const":"MorphoBlue","type":"string"},{"const":"MorphoSingleton","type":"string"},{"const":"MorphoVault","type":"string"},{"const":"MorphoVaultV2","type":"string"},{"const":"Napier","type":"string"},{"const":"neptune","type":"string"},{"const":"nest","type":"string"},{"const":"neverland","type":"string"},{"const":"ninemm","type":"string"},{"const":"nitro","type":"string"},{"const":"Nuvolari","type":"string"},{"const":"oku","type":"string"},{"const":"oxium","type":"string"},{"const":"PancakeSwap","type":"string"},{"const":"pancake-swap","type":"string"},{"const":"PancakeSwapInfinity","type":"string"},{"const":"Pendle","type":"string"},{"const":"pendle","type":"string"},{"const":"penpie","type":"string"},{"const":"PenpieLP","type":"string"},{"const":"PenpieStaking","type":"string"},{"const":"pharaoh","type":"string"},{"const":"pinto","type":"string"},{"const":"ploutos","type":"string"},{"const":"poolside","type":"string"},{"const":"primefi","type":"string"},{"const":"prime-vaults","type":"string"},{"const":"puffer","type":"string"},{"const":"punchswap","type":"string"},{"const":"quickswap","type":"string"},{"const":"quickswap-algebra","type":"string"},{"const":"quickswap-algebra-12","type":"string"},{"const":"ra","type":"string"},{"const":"RailnetVehicle","type":"string"},{"const":"radiant","type":"string"},{"const":"ramses","type":"string"},{"const":"range","type":"string"},{"const":"reactor_fusion","type":"string"},{"const":"reserve","type":"string"},{"const":"regenerative","type":"string"},{"const":"retro","type":"string"},{"const":"rfx","type":"string"},{"const":"rwax","type":"string"},{"const":"rooster","type":"string"},{"const":"royco","type":"string"},{"const":"RoycoKernel","type":"string"},{"const":"sake","type":"string"},{"const":"satlayer","type":"string"},{"const":"satsuma","type":"string"},{"const":"Satoshi","type":"string"},{"const":"projectx","type":"string"},{"const":"satoshi","type":"string"},{"const":"seamless","type":"string"},{"const":"sherpatrade","type":"string"},{"const":"Silo","type":"string"},{"const":"silo","type":"string"},{"const":"SiloVault","type":"string"},{"const":"snap","type":"string"},{"const":"sonex","type":"string"},{"const":"sonicmarket","type":"string"},{"const":"soroswap","type":"string"},{"const":"sovryn","type":"string"},{"const":"SovrynStaking","type":"string"},{"const":"sparklend","type":"string"},{"const":"Spectra","type":"string"},{"const":"spectra","type":"string"},{"const":"SpectraAsyncVault","type":"string"},{"const":"splice","type":"string"},{"const":"spnft","type":"string"},{"const":"spookyswap-v3","type":"string"},{"const":"stability","type":"string"},{"const":"stabull","type":"string"},{"const":"StabullPool","type":"string"},{"const":"StabullStaking","type":"string"},{"const":"stakedao","type":"string"},{"const":"StakeDAOPendleLocker","type":"string"},{"const":"StakeDAOPendleVault","type":"string"},{"const":"StakeDAOCurveVault","type":"string"},{"const":"Stake DAO","type":"string"},{"const":"StakeLocker","type":"string"},{"const":"StakeDAORewardVault","type":"string"},{"const":"StakeDAOStaker","type":"string"},{"const":"StakeDAOVault","type":"string"},{"const":"Steer","type":"string"},{"const":"steer","type":"string"},{"const":"StellarVaults","type":"string"},{"const":"stryke","type":"string"},{"const":"sturdy","type":"string"},{"const":"SummerFinance","type":"string"},{"const":"summerfinance","type":"string"},{"const":"superlend","type":"string"},{"const":"supswap","type":"string"},{"const":"SushiStaker","type":"string"},{"const":"MasterChefV3","type":"string"},{"const":"sushi-swap","type":"string"},{"const":"swap-x","type":"string"},{"const":"swapr","type":"string"},{"const":"swapxgauge","type":"string"},{"const":"symbiotic","type":"string"},{"const":"syncswap","type":"string"},{"const":"TacSmartAccount","type":"string"},{"const":"tako-tako","type":"string"},{"const":"teller","type":"string"},{"const":"tempest","type":"string"},{"const":"term_finance","type":"string"},{"const":"termmax","type":"string"},{"const":"thena","type":"string"},{"const":"thirdtrade","type":"string"},{"const":"thruster","type":"string"},{"const":"toros","type":"string"},{"const":"trader-joe","type":"string"},{"const":"TwyneCollateralVault","type":"string"},{"const":"TwyneCreditVault","type":"string"},{"const":"unipilot","type":"string"},{"const":"uniswap","type":"string"},{"const":"UniswapV3","type":"string"},{"const":"UniswapV4","type":"string"},{"const":"superform","type":"string"},{"const":"upshift","type":"string"},{"const":"uranium","type":"string"},{"const":"Veda","type":"string"},{"const":"veda","type":"string"},{"const":"velodrome","type":"string"},{"const":"velodrome-gauge-v2","type":"string"},{"const":"venus","type":"string"},{"const":"vest","type":"string"},{"const":"vicuna","type":"string"},{"const":"VII","type":"string"},{"const":"","type":"string"},{"const":"Voltage","type":"string"},{"const":"voltage","type":"string"},{"const":"woodswap","type":"string"},{"const":"woofi","type":"string"},{"const":"xlend","type":"string"},{"const":"XSwap","type":"string"},{"const":"Yearn","type":"string"},{"const":"yearn","type":"string"},{"const":"yei","type":"string"},{"const":"yo","type":"string"},{"const":"zero","type":"string"},{"const":"zerolend","type":"string"},{"const":"zk-swap","type":"string"},{"const":"zkSwapThreePool","type":"string"},{"const":"StableERC4626","type":"string"},{"const":"townsquare","type":"string"},{"const":"hyperlend","type":"string"},{"const":"bimexchange","type":"string"},{"const":"purrlend","type":"string"},{"const":"etherex","type":"string"},{"const":"etherfi","type":"string"},{"const":"brownfi","type":"string"},{"const":"vena","type":"string"},{"const":"edel","type":"string"},{"const":"origin","type":"string"},{"const":"monetrix","type":"string"},{"const":"kyberswap","type":"string"},{"const":"zama","type":"string"},{"const":"lfj","type":"string"},{"const":"treehouse","type":"string"},{"const":"yieldseeker","type":"string"},{"const":"lend.xyz","type":"string"},{"const":"DeelVault","type":"string"},{"const":"CoinbaseSmartWallet","type":"string"},{"const":"Mamo","type":"string"},{"const":"bleap","type":"string"},{"const":"gliquid","type":"string"},{"const":"makina","type":"string"},{"const":"opencover","type":"string"},{"const":"PendleLooper","type":"string"},{"const":"tigris","type":"string"},{"const":"zia","type":"string"},{"const":"ZiaStaker","type":"string"},{"const":"zyfai","type":"string"},{"const":"UnclaimedDistributorCustom","type":"string"},{"const":"NoForwarding","type":"string"}]},"lastFetchedBlockNumber":{"description":"Last block number at which the source was processed","type":"number"},"chainId":{"description":"Chain Id of the source","type":"number"},"source":{"description":"Address of the smart contract (the node factory)","type":"string"},"topics":{"type":"array","items":{"description":"Topics of the smart contract events tracked","type":"string"}}},"required":["id","protocol","lastFetchedBlockNumber","chainId","source","topics"]}},"required":["id","chainId","protocol","recipient","nodesSourceId","creationBlockNumber","metadata","nodeSource"]}}}}}},"operationId":"getV4Node"}},"/v4/node/protocols":{"get":{"tags":["Node"],"description":"Get the list of protocols that have indexed node sources available.","responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"array","items":{"anyOf":[{"const":"Aave","type":"string"},{"const":"aave","type":"string"},{"const":"AaveCustom","type":"string"},{"const":"AaveStata","type":"string"},{"const":"AaveUmbrella","type":"string"},{"const":"AaveV4HubSingleton","type":"string"},{"const":"AaveV4Spoke","type":"string"},{"const":"aerodrome","type":"string"},{"const":"aerodrome-gauge-cap","type":"string"},{"const":"aerodrome-slipstream","type":"string"},{"const":"accountable","type":"string"},{"const":"ajna","type":"string"},{"const":"akron","type":"string"},{"const":"ambient","type":"string"},{"const":"aquarius","type":"string"},{"const":"altura","type":"string"},{"const":"angles","type":"string"},{"const":"aragon","type":"string"},{"const":"arrakis","type":"string"},{"const":"arthswap","type":"string"},{"const":"Aura","type":"string"},{"const":"aura","type":"string"},{"const":"avalon","type":"string"},{"const":"badger","type":"string"},{"const":"balancer","type":"string"},{"const":"BalancerGauge","type":"string"},{"const":"BalancerPool","type":"string"},{"const":"BalancerSingleton","type":"string"},{"const":"base-swap","type":"string"},{"const":"Beefy","type":"string"},{"const":"beefy","type":"string"},{"const":"BeefyStaker","type":"string"},{"const":"beraborrow","type":"string"},{"const":"beratrax","type":"string"},{"const":"blend","type":"string"},{"const":"bunni","type":"string"},{"const":"BunniToken","type":"string"},{"const":"camelot","type":"string"},{"const":"capricorn","type":"string"},{"const":"CCLTac","type":"string"},{"const":"Charm","type":"string"},{"const":"charm","type":"string"},{"const":"ChildChainGauge","type":"string"},{"const":"cian","type":"string"},{"const":"clober","type":"string"},{"const":"Club246","type":"string"},{"const":"coinhain","type":"string"},{"const":"compound","type":"string"},{"const":"compound-v3","type":"string"},{"const":"concrete","type":"string"},{"const":"Contango","type":"string"},{"const":"ConvexStaker","type":"string"},{"const":"credix","type":"string"},{"const":"cross_curve","type":"string"},{"const":"crust","type":"string"},{"const":"curvance","type":"string"},{"const":"curve","type":"string"},{"const":"CurvePools","type":"string"},{"const":"CurveG","type":"string"},{"const":"curveNPool","type":"string"},{"const":"defiedge","type":"string"},{"const":"dlend","type":"string"},{"const":"dolomite","type":"string"},{"const":"dragonswap","type":"string"},{"const":"eigenlayer","type":"string"},{"const":"Ekubo","type":"string"},{"const":"ekubo","type":"string"},{"const":"EkuboPositionManager","type":"string"},{"const":"elyx","type":"string"},{"const":"enzyme","type":"string"},{"const":"equalizer","type":"string"},{"const":"equilibria","type":"string"},{"const":"EquilibriaBooster","type":"string"},{"const":"EquilibriaProxy","type":"string"},{"const":"ERC20Custom","type":"string"},{"const":"ERC20IncomingTransferCustom","type":"string"},{"const":"ERC721Custom","type":"string"},{"const":"Euler","type":"string"},{"const":"euler","type":"string"},{"const":"EulerEarn","type":"string"},{"const":"EulerSwap","type":"string"},{"const":"exactly","type":"string"},{"const":"fenix","type":"string"},{"const":"filament","type":"string"},{"const":"flowswap","type":"string"},{"const":"flux","type":"string"},{"const":"fluxion","type":"string"},{"const":"fluid","type":"string"},{"const":"fluid_ftoken","type":"string"},{"const":"frax","type":"string"},{"const":"FraxLend","type":"string"},{"const":"fraxlend","type":"string"},{"const":"friendly","type":"string"},{"const":"Gamma","type":"string"},{"const":"gamma","type":"string"},{"const":"GammaChef","type":"string"},{"const":"GammaUniV4","type":"string"},{"const":"GammaUniV4Multimanager","type":"string"},{"const":"gammaswap","type":"string"},{"const":"Gearbox","type":"string"},{"const":"gearbox","type":"string"},{"const":"hanji","type":"string"},{"const":"holdstation","type":"string"},{"const":"horiza","type":"string"},{"const":"hourglass","type":"string"},{"const":"Hybra","type":"string"},{"const":"hybra-pair","type":"string"},{"const":"hydrex","type":"string"},{"const":"hydrex-gauge","type":"string"},{"const":"hyperdrive","type":"string"},{"const":"hyperdrive-lending","type":"string"},{"const":"hyperswap","type":"string"},{"const":"Hypurrfi","type":"string"},{"const":"hypurrfi","type":"string"},{"const":"Ichi","type":"string"},{"const":"iguana","type":"string"},{"const":"ion","type":"string"},{"const":"ionex","type":"string"},{"const":"ionic","type":"string"},{"const":"ipor","type":"string"},{"const":"IporStaking","type":"string"},{"const":"ironclad","type":"string"},{"const":"izumi","type":"string"},{"const":"Jaine","type":"string"},{"const":"jaine","type":"string"},{"const":"jones","type":"string"},{"const":"jones-staker","type":"string"},{"const":"jumper","type":"string"},{"const":"karpatkey","type":"string"},{"const":"Katana","type":"string"},{"const":"KatanaAlgebra","type":"string"},{"const":"katana","type":"string"},{"const":"KilnVault","type":"string"},{"const":"kim","type":"string"},{"const":"kittenswap","type":"string"},{"const":"koi","type":"string"},{"const":"kpnft","type":"string"},{"const":"kuru","type":"string"},{"const":"kyo","type":"string"},{"const":"lagoon","type":"string"},{"const":"layerbank","type":"string"},{"const":"lendle","type":"string"},{"const":"lista","type":"string"},{"const":"llamalend","type":"string"},{"const":"covenant","type":"string"},{"const":"covenant-singleton","type":"string"},{"const":"levva","type":"string"},{"const":"lnd","type":"string"},{"const":"maha","type":"string"},{"const":"mangrove","type":"string"},{"const":"MappingCustom","type":"string"},{"const":"maverick","type":"string"},{"const":"MaverickBP","type":"string"},{"const":"midas","type":"string"},{"const":"mimswap","type":"string"},{"const":"mento","type":"string"},{"const":"monday-trade","type":"string"},{"const":"moonwell","type":"string"},{"const":"morpho","type":"string"},{"const":"MorphoBlue","type":"string"},{"const":"MorphoSingleton","type":"string"},{"const":"MorphoVault","type":"string"},{"const":"MorphoVaultV2","type":"string"},{"const":"Napier","type":"string"},{"const":"neptune","type":"string"},{"const":"nest","type":"string"},{"const":"neverland","type":"string"},{"const":"ninemm","type":"string"},{"const":"nitro","type":"string"},{"const":"Nuvolari","type":"string"},{"const":"oku","type":"string"},{"const":"oxium","type":"string"},{"const":"PancakeSwap","type":"string"},{"const":"pancake-swap","type":"string"},{"const":"PancakeSwapInfinity","type":"string"},{"const":"Pendle","type":"string"},{"const":"pendle","type":"string"},{"const":"penpie","type":"string"},{"const":"PenpieLP","type":"string"},{"const":"PenpieStaking","type":"string"},{"const":"pharaoh","type":"string"},{"const":"pinto","type":"string"},{"const":"ploutos","type":"string"},{"const":"poolside","type":"string"},{"const":"primefi","type":"string"},{"const":"prime-vaults","type":"string"},{"const":"puffer","type":"string"},{"const":"punchswap","type":"string"},{"const":"quickswap","type":"string"},{"const":"quickswap-algebra","type":"string"},{"const":"quickswap-algebra-12","type":"string"},{"const":"ra","type":"string"},{"const":"RailnetVehicle","type":"string"},{"const":"radiant","type":"string"},{"const":"ramses","type":"string"},{"const":"range","type":"string"},{"const":"reactor_fusion","type":"string"},{"const":"reserve","type":"string"},{"const":"regenerative","type":"string"},{"const":"retro","type":"string"},{"const":"rfx","type":"string"},{"const":"rwax","type":"string"},{"const":"rooster","type":"string"},{"const":"royco","type":"string"},{"const":"RoycoKernel","type":"string"},{"const":"sake","type":"string"},{"const":"satlayer","type":"string"},{"const":"satsuma","type":"string"},{"const":"Satoshi","type":"string"},{"const":"projectx","type":"string"},{"const":"satoshi","type":"string"},{"const":"seamless","type":"string"},{"const":"sherpatrade","type":"string"},{"const":"Silo","type":"string"},{"const":"silo","type":"string"},{"const":"SiloVault","type":"string"},{"const":"snap","type":"string"},{"const":"sonex","type":"string"},{"const":"sonicmarket","type":"string"},{"const":"soroswap","type":"string"},{"const":"sovryn","type":"string"},{"const":"SovrynStaking","type":"string"},{"const":"sparklend","type":"string"},{"const":"Spectra","type":"string"},{"const":"spectra","type":"string"},{"const":"SpectraAsyncVault","type":"string"},{"const":"splice","type":"string"},{"const":"spnft","type":"string"},{"const":"spookyswap-v3","type":"string"},{"const":"stability","type":"string"},{"const":"stabull","type":"string"},{"const":"StabullPool","type":"string"},{"const":"StabullStaking","type":"string"},{"const":"stakedao","type":"string"},{"const":"StakeDAOPendleLocker","type":"string"},{"const":"StakeDAOPendleVault","type":"string"},{"const":"StakeDAOCurveVault","type":"string"},{"const":"Stake DAO","type":"string"},{"const":"StakeLocker","type":"string"},{"const":"StakeDAORewardVault","type":"string"},{"const":"StakeDAOStaker","type":"string"},{"const":"StakeDAOVault","type":"string"},{"const":"Steer","type":"string"},{"const":"steer","type":"string"},{"const":"StellarVaults","type":"string"},{"const":"stryke","type":"string"},{"const":"sturdy","type":"string"},{"const":"SummerFinance","type":"string"},{"const":"summerfinance","type":"string"},{"const":"superlend","type":"string"},{"const":"supswap","type":"string"},{"const":"SushiStaker","type":"string"},{"const":"MasterChefV3","type":"string"},{"const":"sushi-swap","type":"string"},{"const":"swap-x","type":"string"},{"const":"swapr","type":"string"},{"const":"swapxgauge","type":"string"},{"const":"symbiotic","type":"string"},{"const":"syncswap","type":"string"},{"const":"TacSmartAccount","type":"string"},{"const":"tako-tako","type":"string"},{"const":"teller","type":"string"},{"const":"tempest","type":"string"},{"const":"term_finance","type":"string"},{"const":"termmax","type":"string"},{"const":"thena","type":"string"},{"const":"thirdtrade","type":"string"},{"const":"thruster","type":"string"},{"const":"toros","type":"string"},{"const":"trader-joe","type":"string"},{"const":"TwyneCollateralVault","type":"string"},{"const":"TwyneCreditVault","type":"string"},{"const":"unipilot","type":"string"},{"const":"uniswap","type":"string"},{"const":"UniswapV3","type":"string"},{"const":"UniswapV4","type":"string"},{"const":"superform","type":"string"},{"const":"upshift","type":"string"},{"const":"uranium","type":"string"},{"const":"Veda","type":"string"},{"const":"veda","type":"string"},{"const":"velodrome","type":"string"},{"const":"velodrome-gauge-v2","type":"string"},{"const":"venus","type":"string"},{"const":"vest","type":"string"},{"const":"vicuna","type":"string"},{"const":"VII","type":"string"},{"const":"","type":"string"},{"const":"Voltage","type":"string"},{"const":"voltage","type":"string"},{"const":"woodswap","type":"string"},{"const":"woofi","type":"string"},{"const":"xlend","type":"string"},{"const":"XSwap","type":"string"},{"const":"Yearn","type":"string"},{"const":"yearn","type":"string"},{"const":"yei","type":"string"},{"const":"yo","type":"string"},{"const":"zero","type":"string"},{"const":"zerolend","type":"string"},{"const":"zk-swap","type":"string"},{"const":"zkSwapThreePool","type":"string"},{"const":"StableERC4626","type":"string"},{"const":"townsquare","type":"string"},{"const":"hyperlend","type":"string"},{"const":"bimexchange","type":"string"},{"const":"purrlend","type":"string"},{"const":"etherex","type":"string"},{"const":"etherfi","type":"string"},{"const":"brownfi","type":"string"},{"const":"vena","type":"string"},{"const":"edel","type":"string"},{"const":"origin","type":"string"},{"const":"monetrix","type":"string"},{"const":"kyberswap","type":"string"},{"const":"zama","type":"string"},{"const":"lfj","type":"string"},{"const":"treehouse","type":"string"},{"const":"yieldseeker","type":"string"},{"const":"lend.xyz","type":"string"},{"const":"DeelVault","type":"string"},{"const":"CoinbaseSmartWallet","type":"string"},{"const":"Mamo","type":"string"},{"const":"bleap","type":"string"},{"const":"gliquid","type":"string"},{"const":"makina","type":"string"},{"const":"opencover","type":"string"},{"const":"PendleLooper","type":"string"},{"const":"tigris","type":"string"},{"const":"zia","type":"string"},{"const":"ZiaStaker","type":"string"},{"const":"zyfai","type":"string"},{"const":"UnclaimedDistributorCustom","type":"string"},{"const":"NoForwarding","type":"string"}]}}}}}},"operationId":"getV4NodeProtocols"}},"/v4/node/protocol/{protocol}/chains":{"get":{"tags":["Node"],"description":"Get the chains configured for a specific protocol.","parameters":[{"name":"protocol","in":"path","required":true,"schema":{"anyOf":[{"const":"Aave","type":"string"},{"const":"aave","type":"string"},{"const":"AaveCustom","type":"string"},{"const":"AaveStata","type":"string"},{"const":"AaveUmbrella","type":"string"},{"const":"AaveV4HubSingleton","type":"string"},{"const":"AaveV4Spoke","type":"string"},{"const":"aerodrome","type":"string"},{"const":"aerodrome-gauge-cap","type":"string"},{"const":"aerodrome-slipstream","type":"string"},{"const":"accountable","type":"string"},{"const":"ajna","type":"string"},{"const":"akron","type":"string"},{"const":"ambient","type":"string"},{"const":"aquarius","type":"string"},{"const":"altura","type":"string"},{"const":"angles","type":"string"},{"const":"aragon","type":"string"},{"const":"arrakis","type":"string"},{"const":"arthswap","type":"string"},{"const":"Aura","type":"string"},{"const":"aura","type":"string"},{"const":"avalon","type":"string"},{"const":"badger","type":"string"},{"const":"balancer","type":"string"},{"const":"BalancerGauge","type":"string"},{"const":"BalancerPool","type":"string"},{"const":"BalancerSingleton","type":"string"},{"const":"base-swap","type":"string"},{"const":"Beefy","type":"string"},{"const":"beefy","type":"string"},{"const":"BeefyStaker","type":"string"},{"const":"beraborrow","type":"string"},{"const":"beratrax","type":"string"},{"const":"blend","type":"string"},{"const":"bunni","type":"string"},{"const":"BunniToken","type":"string"},{"const":"camelot","type":"string"},{"const":"capricorn","type":"string"},{"const":"CCLTac","type":"string"},{"const":"Charm","type":"string"},{"const":"charm","type":"string"},{"const":"ChildChainGauge","type":"string"},{"const":"cian","type":"string"},{"const":"clober","type":"string"},{"const":"Club246","type":"string"},{"const":"coinhain","type":"string"},{"const":"compound","type":"string"},{"const":"compound-v3","type":"string"},{"const":"concrete","type":"string"},{"const":"Contango","type":"string"},{"const":"ConvexStaker","type":"string"},{"const":"credix","type":"string"},{"const":"cross_curve","type":"string"},{"const":"crust","type":"string"},{"const":"curvance","type":"string"},{"const":"curve","type":"string"},{"const":"CurvePools","type":"string"},{"const":"CurveG","type":"string"},{"const":"curveNPool","type":"string"},{"const":"defiedge","type":"string"},{"const":"dlend","type":"string"},{"const":"dolomite","type":"string"},{"const":"dragonswap","type":"string"},{"const":"eigenlayer","type":"string"},{"const":"Ekubo","type":"string"},{"const":"ekubo","type":"string"},{"const":"EkuboPositionManager","type":"string"},{"const":"elyx","type":"string"},{"const":"enzyme","type":"string"},{"const":"equalizer","type":"string"},{"const":"equilibria","type":"string"},{"const":"EquilibriaBooster","type":"string"},{"const":"EquilibriaProxy","type":"string"},{"const":"ERC20Custom","type":"string"},{"const":"ERC20IncomingTransferCustom","type":"string"},{"const":"ERC721Custom","type":"string"},{"const":"Euler","type":"string"},{"const":"euler","type":"string"},{"const":"EulerEarn","type":"string"},{"const":"EulerSwap","type":"string"},{"const":"exactly","type":"string"},{"const":"fenix","type":"string"},{"const":"filament","type":"string"},{"const":"flowswap","type":"string"},{"const":"flux","type":"string"},{"const":"fluxion","type":"string"},{"const":"fluid","type":"string"},{"const":"fluid_ftoken","type":"string"},{"const":"frax","type":"string"},{"const":"FraxLend","type":"string"},{"const":"fraxlend","type":"string"},{"const":"friendly","type":"string"},{"const":"Gamma","type":"string"},{"const":"gamma","type":"string"},{"const":"GammaChef","type":"string"},{"const":"GammaUniV4","type":"string"},{"const":"GammaUniV4Multimanager","type":"string"},{"const":"gammaswap","type":"string"},{"const":"Gearbox","type":"string"},{"const":"gearbox","type":"string"},{"const":"hanji","type":"string"},{"const":"holdstation","type":"string"},{"const":"horiza","type":"string"},{"const":"hourglass","type":"string"},{"const":"Hybra","type":"string"},{"const":"hybra-pair","type":"string"},{"const":"hydrex","type":"string"},{"const":"hydrex-gauge","type":"string"},{"const":"hyperdrive","type":"string"},{"const":"hyperdrive-lending","type":"string"},{"const":"hyperswap","type":"string"},{"const":"Hypurrfi","type":"string"},{"const":"hypurrfi","type":"string"},{"const":"Ichi","type":"string"},{"const":"iguana","type":"string"},{"const":"ion","type":"string"},{"const":"ionex","type":"string"},{"const":"ionic","type":"string"},{"const":"ipor","type":"string"},{"const":"IporStaking","type":"string"},{"const":"ironclad","type":"string"},{"const":"izumi","type":"string"},{"const":"Jaine","type":"string"},{"const":"jaine","type":"string"},{"const":"jones","type":"string"},{"const":"jones-staker","type":"string"},{"const":"jumper","type":"string"},{"const":"karpatkey","type":"string"},{"const":"Katana","type":"string"},{"const":"KatanaAlgebra","type":"string"},{"const":"katana","type":"string"},{"const":"KilnVault","type":"string"},{"const":"kim","type":"string"},{"const":"kittenswap","type":"string"},{"const":"koi","type":"string"},{"const":"kpnft","type":"string"},{"const":"kuru","type":"string"},{"const":"kyo","type":"string"},{"const":"lagoon","type":"string"},{"const":"layerbank","type":"string"},{"const":"lendle","type":"string"},{"const":"lista","type":"string"},{"const":"llamalend","type":"string"},{"const":"covenant","type":"string"},{"const":"covenant-singleton","type":"string"},{"const":"levva","type":"string"},{"const":"lnd","type":"string"},{"const":"maha","type":"string"},{"const":"mangrove","type":"string"},{"const":"MappingCustom","type":"string"},{"const":"maverick","type":"string"},{"const":"MaverickBP","type":"string"},{"const":"midas","type":"string"},{"const":"mimswap","type":"string"},{"const":"mento","type":"string"},{"const":"monday-trade","type":"string"},{"const":"moonwell","type":"string"},{"const":"morpho","type":"string"},{"const":"MorphoBlue","type":"string"},{"const":"MorphoSingleton","type":"string"},{"const":"MorphoVault","type":"string"},{"const":"MorphoVaultV2","type":"string"},{"const":"Napier","type":"string"},{"const":"neptune","type":"string"},{"const":"nest","type":"string"},{"const":"neverland","type":"string"},{"const":"ninemm","type":"string"},{"const":"nitro","type":"string"},{"const":"Nuvolari","type":"string"},{"const":"oku","type":"string"},{"const":"oxium","type":"string"},{"const":"PancakeSwap","type":"string"},{"const":"pancake-swap","type":"string"},{"const":"PancakeSwapInfinity","type":"string"},{"const":"Pendle","type":"string"},{"const":"pendle","type":"string"},{"const":"penpie","type":"string"},{"const":"PenpieLP","type":"string"},{"const":"PenpieStaking","type":"string"},{"const":"pharaoh","type":"string"},{"const":"pinto","type":"string"},{"const":"ploutos","type":"string"},{"const":"poolside","type":"string"},{"const":"primefi","type":"string"},{"const":"prime-vaults","type":"string"},{"const":"puffer","type":"string"},{"const":"punchswap","type":"string"},{"const":"quickswap","type":"string"},{"const":"quickswap-algebra","type":"string"},{"const":"quickswap-algebra-12","type":"string"},{"const":"ra","type":"string"},{"const":"RailnetVehicle","type":"string"},{"const":"radiant","type":"string"},{"const":"ramses","type":"string"},{"const":"range","type":"string"},{"const":"reactor_fusion","type":"string"},{"const":"reserve","type":"string"},{"const":"regenerative","type":"string"},{"const":"retro","type":"string"},{"const":"rfx","type":"string"},{"const":"rwax","type":"string"},{"const":"rooster","type":"string"},{"const":"royco","type":"string"},{"const":"RoycoKernel","type":"string"},{"const":"sake","type":"string"},{"const":"satlayer","type":"string"},{"const":"satsuma","type":"string"},{"const":"Satoshi","type":"string"},{"const":"projectx","type":"string"},{"const":"satoshi","type":"string"},{"const":"seamless","type":"string"},{"const":"sherpatrade","type":"string"},{"const":"Silo","type":"string"},{"const":"silo","type":"string"},{"const":"SiloVault","type":"string"},{"const":"snap","type":"string"},{"const":"sonex","type":"string"},{"const":"sonicmarket","type":"string"},{"const":"soroswap","type":"string"},{"const":"sovryn","type":"string"},{"const":"SovrynStaking","type":"string"},{"const":"sparklend","type":"string"},{"const":"Spectra","type":"string"},{"const":"spectra","type":"string"},{"const":"SpectraAsyncVault","type":"string"},{"const":"splice","type":"string"},{"const":"spnft","type":"string"},{"const":"spookyswap-v3","type":"string"},{"const":"stability","type":"string"},{"const":"stabull","type":"string"},{"const":"StabullPool","type":"string"},{"const":"StabullStaking","type":"string"},{"const":"stakedao","type":"string"},{"const":"StakeDAOPendleLocker","type":"string"},{"const":"StakeDAOPendleVault","type":"string"},{"const":"StakeDAOCurveVault","type":"string"},{"const":"Stake DAO","type":"string"},{"const":"StakeLocker","type":"string"},{"const":"StakeDAORewardVault","type":"string"},{"const":"StakeDAOStaker","type":"string"},{"const":"StakeDAOVault","type":"string"},{"const":"Steer","type":"string"},{"const":"steer","type":"string"},{"const":"StellarVaults","type":"string"},{"const":"stryke","type":"string"},{"const":"sturdy","type":"string"},{"const":"SummerFinance","type":"string"},{"const":"summerfinance","type":"string"},{"const":"superlend","type":"string"},{"const":"supswap","type":"string"},{"const":"SushiStaker","type":"string"},{"const":"MasterChefV3","type":"string"},{"const":"sushi-swap","type":"string"},{"const":"swap-x","type":"string"},{"const":"swapr","type":"string"},{"const":"swapxgauge","type":"string"},{"const":"symbiotic","type":"string"},{"const":"syncswap","type":"string"},{"const":"TacSmartAccount","type":"string"},{"const":"tako-tako","type":"string"},{"const":"teller","type":"string"},{"const":"tempest","type":"string"},{"const":"term_finance","type":"string"},{"const":"termmax","type":"string"},{"const":"thena","type":"string"},{"const":"thirdtrade","type":"string"},{"const":"thruster","type":"string"},{"const":"toros","type":"string"},{"const":"trader-joe","type":"string"},{"const":"TwyneCollateralVault","type":"string"},{"const":"TwyneCreditVault","type":"string"},{"const":"unipilot","type":"string"},{"const":"uniswap","type":"string"},{"const":"UniswapV3","type":"string"},{"const":"UniswapV4","type":"string"},{"const":"superform","type":"string"},{"const":"upshift","type":"string"},{"const":"uranium","type":"string"},{"const":"Veda","type":"string"},{"const":"veda","type":"string"},{"const":"velodrome","type":"string"},{"const":"velodrome-gauge-v2","type":"string"},{"const":"venus","type":"string"},{"const":"vest","type":"string"},{"const":"vicuna","type":"string"},{"const":"VII","type":"string"},{"const":"","type":"string"},{"const":"Voltage","type":"string"},{"const":"voltage","type":"string"},{"const":"woodswap","type":"string"},{"const":"woofi","type":"string"},{"const":"xlend","type":"string"},{"const":"XSwap","type":"string"},{"const":"Yearn","type":"string"},{"const":"yearn","type":"string"},{"const":"yei","type":"string"},{"const":"yo","type":"string"},{"const":"zero","type":"string"},{"const":"zerolend","type":"string"},{"const":"zk-swap","type":"string"},{"const":"zkSwapThreePool","type":"string"},{"const":"StableERC4626","type":"string"},{"const":"townsquare","type":"string"},{"const":"hyperlend","type":"string"},{"const":"bimexchange","type":"string"},{"const":"purrlend","type":"string"},{"const":"etherex","type":"string"},{"const":"etherfi","type":"string"},{"const":"brownfi","type":"string"},{"const":"vena","type":"string"},{"const":"edel","type":"string"},{"const":"origin","type":"string"},{"const":"monetrix","type":"string"},{"const":"kyberswap","type":"string"},{"const":"zama","type":"string"},{"const":"lfj","type":"string"},{"const":"treehouse","type":"string"},{"const":"yieldseeker","type":"string"},{"const":"lend.xyz","type":"string"},{"const":"DeelVault","type":"string"},{"const":"CoinbaseSmartWallet","type":"string"},{"const":"Mamo","type":"string"},{"const":"bleap","type":"string"},{"const":"gliquid","type":"string"},{"const":"makina","type":"string"},{"const":"opencover","type":"string"},{"const":"PendleLooper","type":"string"},{"const":"tigris","type":"string"},{"const":"zia","type":"string"},{"const":"ZiaStaker","type":"string"},{"const":"zyfai","type":"string"},{"const":"UnclaimedDistributorCustom","type":"string"},{"const":"NoForwarding","type":"string"}]}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"array","items":{"anyOf":[{"const":33139,"type":"number"},{"const":42161,"type":"number"},{"const":5042,"type":"number"},{"const":10242,"type":"number"},{"const":592,"type":"number"},{"const":3776,"type":"number"},{"const":43114,"type":"number"},{"const":8453,"type":"number"},{"const":80094,"type":"number"},{"const":81457,"type":"number"},{"const":60808,"type":"number"},{"const":56,"type":"number"},{"const":42220,"type":"number"},{"const":4114,"type":"number"},{"const":1116,"type":"number"},{"const":21000000,"type":"number"},{"const":714,"type":"number"},{"const":5064014,"type":"number"},{"const":1,"type":"number"},{"const":42793,"type":"number"},{"const":250,"type":"number"},{"const":14,"type":"number"},{"const":1672,"type":"number"},{"const":8217,"type":"number"},{"const":747,"type":"number"},{"const":25363,"type":"number"},{"const":252,"type":"number"},{"const":122,"type":"number"},{"const":685689,"type":"number"},{"const":100,"type":"number"},{"const":1337,"type":"number"},{"const":43111,"type":"number"},{"const":999,"type":"number"},{"const":13371,"type":"number"},{"const":57073,"type":"number"},{"const":747474,"type":"number"},{"const":59144,"type":"number"},{"const":1135,"type":"number"},{"const":169,"type":"number"},{"const":5000,"type":"number"},{"const":4326,"type":"number"},{"const":31612,"type":"number"},{"const":34443,"type":"number"},{"const":143,"type":"number"},{"const":1284,"type":"number"},{"const":6900,"type":"number"},{"const":10,"type":"number"},{"const":9745,"type":"number"},{"const":98866,"type":"number"},{"const":137,"type":"number"},{"const":1101,"type":"number"},{"const":151,"type":"number"},{"const":4663,"type":"number"},{"const":2020,"type":"number"},{"const":30,"type":"number"},{"const":5464,"type":"number"},{"const":534352,"type":"number"},{"const":1329,"type":"number"},{"const":2046399126,"type":"number"},{"const":3,"type":"number"},{"const":1868,"type":"number"},{"const":146,"type":"number"},{"const":988,"type":"number"},{"const":4,"type":"number"},{"const":5,"type":"number"},{"const":1923,"type":"number"},{"const":239,"type":"number"},{"const":167000,"type":"number"},{"const":4217,"type":"number"},{"const":108,"type":"number"},{"const":130,"type":"number"},{"const":480,"type":"number"},{"const":50,"type":"number"},{"const":196,"type":"number"},{"const":1440000,"type":"number"},{"const":16661,"type":"number"},{"const":48900,"type":"number"},{"const":324,"type":"number"}]}}}}}},"operationId":"getV4NodeProtocolByProtocolChains"}},"/v4/node/last-block":{"get":{"tags":["Node"],"description":"Get the most recent indexed block. If a protocol is provided, returns it for that protocol on the given chain; otherwise returns it for the chain across all protocols.","parameters":[{"name":"chainId","in":"query","required":true,"schema":{"description":"Chain ID","anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"Chain ID","type":"number"}]}},{"name":"protocol","in":"query","required":false,"schema":{"description":"Protocol type (optional)","anyOf":[{"const":"Aave","type":"string"},{"const":"aave","type":"string"},{"const":"AaveCustom","type":"string"},{"const":"AaveStata","type":"string"},{"const":"AaveUmbrella","type":"string"},{"const":"AaveV4HubSingleton","type":"string"},{"const":"AaveV4Spoke","type":"string"},{"const":"aerodrome","type":"string"},{"const":"aerodrome-gauge-cap","type":"string"},{"const":"aerodrome-slipstream","type":"string"},{"const":"accountable","type":"string"},{"const":"ajna","type":"string"},{"const":"akron","type":"string"},{"const":"ambient","type":"string"},{"const":"aquarius","type":"string"},{"const":"altura","type":"string"},{"const":"angles","type":"string"},{"const":"aragon","type":"string"},{"const":"arrakis","type":"string"},{"const":"arthswap","type":"string"},{"const":"Aura","type":"string"},{"const":"aura","type":"string"},{"const":"avalon","type":"string"},{"const":"badger","type":"string"},{"const":"balancer","type":"string"},{"const":"BalancerGauge","type":"string"},{"const":"BalancerPool","type":"string"},{"const":"BalancerSingleton","type":"string"},{"const":"base-swap","type":"string"},{"const":"Beefy","type":"string"},{"const":"beefy","type":"string"},{"const":"BeefyStaker","type":"string"},{"const":"beraborrow","type":"string"},{"const":"beratrax","type":"string"},{"const":"blend","type":"string"},{"const":"bunni","type":"string"},{"const":"BunniToken","type":"string"},{"const":"camelot","type":"string"},{"const":"capricorn","type":"string"},{"const":"CCLTac","type":"string"},{"const":"Charm","type":"string"},{"const":"charm","type":"string"},{"const":"ChildChainGauge","type":"string"},{"const":"cian","type":"string"},{"const":"clober","type":"string"},{"const":"Club246","type":"string"},{"const":"coinhain","type":"string"},{"const":"compound","type":"string"},{"const":"compound-v3","type":"string"},{"const":"concrete","type":"string"},{"const":"Contango","type":"string"},{"const":"ConvexStaker","type":"string"},{"const":"credix","type":"string"},{"const":"cross_curve","type":"string"},{"const":"crust","type":"string"},{"const":"curvance","type":"string"},{"const":"curve","type":"string"},{"const":"CurvePools","type":"string"},{"const":"CurveG","type":"string"},{"const":"curveNPool","type":"string"},{"const":"defiedge","type":"string"},{"const":"dlend","type":"string"},{"const":"dolomite","type":"string"},{"const":"dragonswap","type":"string"},{"const":"eigenlayer","type":"string"},{"const":"Ekubo","type":"string"},{"const":"ekubo","type":"string"},{"const":"EkuboPositionManager","type":"string"},{"const":"elyx","type":"string"},{"const":"enzyme","type":"string"},{"const":"equalizer","type":"string"},{"const":"equilibria","type":"string"},{"const":"EquilibriaBooster","type":"string"},{"const":"EquilibriaProxy","type":"string"},{"const":"ERC20Custom","type":"string"},{"const":"ERC20IncomingTransferCustom","type":"string"},{"const":"ERC721Custom","type":"string"},{"const":"Euler","type":"string"},{"const":"euler","type":"string"},{"const":"EulerEarn","type":"string"},{"const":"EulerSwap","type":"string"},{"const":"exactly","type":"string"},{"const":"fenix","type":"string"},{"const":"filament","type":"string"},{"const":"flowswap","type":"string"},{"const":"flux","type":"string"},{"const":"fluxion","type":"string"},{"const":"fluid","type":"string"},{"const":"fluid_ftoken","type":"string"},{"const":"frax","type":"string"},{"const":"FraxLend","type":"string"},{"const":"fraxlend","type":"string"},{"const":"friendly","type":"string"},{"const":"Gamma","type":"string"},{"const":"gamma","type":"string"},{"const":"GammaChef","type":"string"},{"const":"GammaUniV4","type":"string"},{"const":"GammaUniV4Multimanager","type":"string"},{"const":"gammaswap","type":"string"},{"const":"Gearbox","type":"string"},{"const":"gearbox","type":"string"},{"const":"hanji","type":"string"},{"const":"holdstation","type":"string"},{"const":"horiza","type":"string"},{"const":"hourglass","type":"string"},{"const":"Hybra","type":"string"},{"const":"hybra-pair","type":"string"},{"const":"hydrex","type":"string"},{"const":"hydrex-gauge","type":"string"},{"const":"hyperdrive","type":"string"},{"const":"hyperdrive-lending","type":"string"},{"const":"hyperswap","type":"string"},{"const":"Hypurrfi","type":"string"},{"const":"hypurrfi","type":"string"},{"const":"Ichi","type":"string"},{"const":"iguana","type":"string"},{"const":"ion","type":"string"},{"const":"ionex","type":"string"},{"const":"ionic","type":"string"},{"const":"ipor","type":"string"},{"const":"IporStaking","type":"string"},{"const":"ironclad","type":"string"},{"const":"izumi","type":"string"},{"const":"Jaine","type":"string"},{"const":"jaine","type":"string"},{"const":"jones","type":"string"},{"const":"jones-staker","type":"string"},{"const":"jumper","type":"string"},{"const":"karpatkey","type":"string"},{"const":"Katana","type":"string"},{"const":"KatanaAlgebra","type":"string"},{"const":"katana","type":"string"},{"const":"KilnVault","type":"string"},{"const":"kim","type":"string"},{"const":"kittenswap","type":"string"},{"const":"koi","type":"string"},{"const":"kpnft","type":"string"},{"const":"kuru","type":"string"},{"const":"kyo","type":"string"},{"const":"lagoon","type":"string"},{"const":"layerbank","type":"string"},{"const":"lendle","type":"string"},{"const":"lista","type":"string"},{"const":"llamalend","type":"string"},{"const":"covenant","type":"string"},{"const":"covenant-singleton","type":"string"},{"const":"levva","type":"string"},{"const":"lnd","type":"string"},{"const":"maha","type":"string"},{"const":"mangrove","type":"string"},{"const":"MappingCustom","type":"string"},{"const":"maverick","type":"string"},{"const":"MaverickBP","type":"string"},{"const":"midas","type":"string"},{"const":"mimswap","type":"string"},{"const":"mento","type":"string"},{"const":"monday-trade","type":"string"},{"const":"moonwell","type":"string"},{"const":"morpho","type":"string"},{"const":"MorphoBlue","type":"string"},{"const":"MorphoSingleton","type":"string"},{"const":"MorphoVault","type":"string"},{"const":"MorphoVaultV2","type":"string"},{"const":"Napier","type":"string"},{"const":"neptune","type":"string"},{"const":"nest","type":"string"},{"const":"neverland","type":"string"},{"const":"ninemm","type":"string"},{"const":"nitro","type":"string"},{"const":"Nuvolari","type":"string"},{"const":"oku","type":"string"},{"const":"oxium","type":"string"},{"const":"PancakeSwap","type":"string"},{"const":"pancake-swap","type":"string"},{"const":"PancakeSwapInfinity","type":"string"},{"const":"Pendle","type":"string"},{"const":"pendle","type":"string"},{"const":"penpie","type":"string"},{"const":"PenpieLP","type":"string"},{"const":"PenpieStaking","type":"string"},{"const":"pharaoh","type":"string"},{"const":"pinto","type":"string"},{"const":"ploutos","type":"string"},{"const":"poolside","type":"string"},{"const":"primefi","type":"string"},{"const":"prime-vaults","type":"string"},{"const":"puffer","type":"string"},{"const":"punchswap","type":"string"},{"const":"quickswap","type":"string"},{"const":"quickswap-algebra","type":"string"},{"const":"quickswap-algebra-12","type":"string"},{"const":"ra","type":"string"},{"const":"RailnetVehicle","type":"string"},{"const":"radiant","type":"string"},{"const":"ramses","type":"string"},{"const":"range","type":"string"},{"const":"reactor_fusion","type":"string"},{"const":"reserve","type":"string"},{"const":"regenerative","type":"string"},{"const":"retro","type":"string"},{"const":"rfx","type":"string"},{"const":"rwax","type":"string"},{"const":"rooster","type":"string"},{"const":"royco","type":"string"},{"const":"RoycoKernel","type":"string"},{"const":"sake","type":"string"},{"const":"satlayer","type":"string"},{"const":"satsuma","type":"string"},{"const":"Satoshi","type":"string"},{"const":"projectx","type":"string"},{"const":"satoshi","type":"string"},{"const":"seamless","type":"string"},{"const":"sherpatrade","type":"string"},{"const":"Silo","type":"string"},{"const":"silo","type":"string"},{"const":"SiloVault","type":"string"},{"const":"snap","type":"string"},{"const":"sonex","type":"string"},{"const":"sonicmarket","type":"string"},{"const":"soroswap","type":"string"},{"const":"sovryn","type":"string"},{"const":"SovrynStaking","type":"string"},{"const":"sparklend","type":"string"},{"const":"Spectra","type":"string"},{"const":"spectra","type":"string"},{"const":"SpectraAsyncVault","type":"string"},{"const":"splice","type":"string"},{"const":"spnft","type":"string"},{"const":"spookyswap-v3","type":"string"},{"const":"stability","type":"string"},{"const":"stabull","type":"string"},{"const":"StabullPool","type":"string"},{"const":"StabullStaking","type":"string"},{"const":"stakedao","type":"string"},{"const":"StakeDAOPendleLocker","type":"string"},{"const":"StakeDAOPendleVault","type":"string"},{"const":"StakeDAOCurveVault","type":"string"},{"const":"Stake DAO","type":"string"},{"const":"StakeLocker","type":"string"},{"const":"StakeDAORewardVault","type":"string"},{"const":"StakeDAOStaker","type":"string"},{"const":"StakeDAOVault","type":"string"},{"const":"Steer","type":"string"},{"const":"steer","type":"string"},{"const":"StellarVaults","type":"string"},{"const":"stryke","type":"string"},{"const":"sturdy","type":"string"},{"const":"SummerFinance","type":"string"},{"const":"summerfinance","type":"string"},{"const":"superlend","type":"string"},{"const":"supswap","type":"string"},{"const":"SushiStaker","type":"string"},{"const":"MasterChefV3","type":"string"},{"const":"sushi-swap","type":"string"},{"const":"swap-x","type":"string"},{"const":"swapr","type":"string"},{"const":"swapxgauge","type":"string"},{"const":"symbiotic","type":"string"},{"const":"syncswap","type":"string"},{"const":"TacSmartAccount","type":"string"},{"const":"tako-tako","type":"string"},{"const":"teller","type":"string"},{"const":"tempest","type":"string"},{"const":"term_finance","type":"string"},{"const":"termmax","type":"string"},{"const":"thena","type":"string"},{"const":"thirdtrade","type":"string"},{"const":"thruster","type":"string"},{"const":"toros","type":"string"},{"const":"trader-joe","type":"string"},{"const":"TwyneCollateralVault","type":"string"},{"const":"TwyneCreditVault","type":"string"},{"const":"unipilot","type":"string"},{"const":"uniswap","type":"string"},{"const":"UniswapV3","type":"string"},{"const":"UniswapV4","type":"string"},{"const":"superform","type":"string"},{"const":"upshift","type":"string"},{"const":"uranium","type":"string"},{"const":"Veda","type":"string"},{"const":"veda","type":"string"},{"const":"velodrome","type":"string"},{"const":"velodrome-gauge-v2","type":"string"},{"const":"venus","type":"string"},{"const":"vest","type":"string"},{"const":"vicuna","type":"string"},{"const":"VII","type":"string"},{"const":"","type":"string"},{"const":"Voltage","type":"string"},{"const":"voltage","type":"string"},{"const":"woodswap","type":"string"},{"const":"woofi","type":"string"},{"const":"xlend","type":"string"},{"const":"XSwap","type":"string"},{"const":"Yearn","type":"string"},{"const":"yearn","type":"string"},{"const":"yei","type":"string"},{"const":"yo","type":"string"},{"const":"zero","type":"string"},{"const":"zerolend","type":"string"},{"const":"zk-swap","type":"string"},{"const":"zkSwapThreePool","type":"string"},{"const":"StableERC4626","type":"string"},{"const":"townsquare","type":"string"},{"const":"hyperlend","type":"string"},{"const":"bimexchange","type":"string"},{"const":"purrlend","type":"string"},{"const":"etherex","type":"string"},{"const":"etherfi","type":"string"},{"const":"brownfi","type":"string"},{"const":"vena","type":"string"},{"const":"edel","type":"string"},{"const":"origin","type":"string"},{"const":"monetrix","type":"string"},{"const":"kyberswap","type":"string"},{"const":"zama","type":"string"},{"const":"lfj","type":"string"},{"const":"treehouse","type":"string"},{"const":"yieldseeker","type":"string"},{"const":"lend.xyz","type":"string"},{"const":"DeelVault","type":"string"},{"const":"CoinbaseSmartWallet","type":"string"},{"const":"Mamo","type":"string"},{"const":"bleap","type":"string"},{"const":"gliquid","type":"string"},{"const":"makina","type":"string"},{"const":"opencover","type":"string"},{"const":"PendleLooper","type":"string"},{"const":"tigris","type":"string"},{"const":"zia","type":"string"},{"const":"ZiaStaker","type":"string"},{"const":"zyfai","type":"string"},{"const":"UnclaimedDistributorCustom","type":"string"},{"const":"NoForwarding","type":"string"}]}}],"responses":{},"operationId":"getV4NodeLast-block"}},"/v4/node/oldest-block":{"get":{"tags":["Node"],"description":"Get the oldest indexed block. If a protocol is provided, returns it for that protocol on the given chain; otherwise returns it for the chain across all protocols.","parameters":[{"name":"chainId","in":"query","required":true,"schema":{"description":"Chain ID","anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"Chain ID","type":"number"}]}},{"name":"protocol","in":"query","required":false,"schema":{"description":"Protocol type (optional)","anyOf":[{"const":"Aave","type":"string"},{"const":"aave","type":"string"},{"const":"AaveCustom","type":"string"},{"const":"AaveStata","type":"string"},{"const":"AaveUmbrella","type":"string"},{"const":"AaveV4HubSingleton","type":"string"},{"const":"AaveV4Spoke","type":"string"},{"const":"aerodrome","type":"string"},{"const":"aerodrome-gauge-cap","type":"string"},{"const":"aerodrome-slipstream","type":"string"},{"const":"accountable","type":"string"},{"const":"ajna","type":"string"},{"const":"akron","type":"string"},{"const":"ambient","type":"string"},{"const":"aquarius","type":"string"},{"const":"altura","type":"string"},{"const":"angles","type":"string"},{"const":"aragon","type":"string"},{"const":"arrakis","type":"string"},{"const":"arthswap","type":"string"},{"const":"Aura","type":"string"},{"const":"aura","type":"string"},{"const":"avalon","type":"string"},{"const":"badger","type":"string"},{"const":"balancer","type":"string"},{"const":"BalancerGauge","type":"string"},{"const":"BalancerPool","type":"string"},{"const":"BalancerSingleton","type":"string"},{"const":"base-swap","type":"string"},{"const":"Beefy","type":"string"},{"const":"beefy","type":"string"},{"const":"BeefyStaker","type":"string"},{"const":"beraborrow","type":"string"},{"const":"beratrax","type":"string"},{"const":"blend","type":"string"},{"const":"bunni","type":"string"},{"const":"BunniToken","type":"string"},{"const":"camelot","type":"string"},{"const":"capricorn","type":"string"},{"const":"CCLTac","type":"string"},{"const":"Charm","type":"string"},{"const":"charm","type":"string"},{"const":"ChildChainGauge","type":"string"},{"const":"cian","type":"string"},{"const":"clober","type":"string"},{"const":"Club246","type":"string"},{"const":"coinhain","type":"string"},{"const":"compound","type":"string"},{"const":"compound-v3","type":"string"},{"const":"concrete","type":"string"},{"const":"Contango","type":"string"},{"const":"ConvexStaker","type":"string"},{"const":"credix","type":"string"},{"const":"cross_curve","type":"string"},{"const":"crust","type":"string"},{"const":"curvance","type":"string"},{"const":"curve","type":"string"},{"const":"CurvePools","type":"string"},{"const":"CurveG","type":"string"},{"const":"curveNPool","type":"string"},{"const":"defiedge","type":"string"},{"const":"dlend","type":"string"},{"const":"dolomite","type":"string"},{"const":"dragonswap","type":"string"},{"const":"eigenlayer","type":"string"},{"const":"Ekubo","type":"string"},{"const":"ekubo","type":"string"},{"const":"EkuboPositionManager","type":"string"},{"const":"elyx","type":"string"},{"const":"enzyme","type":"string"},{"const":"equalizer","type":"string"},{"const":"equilibria","type":"string"},{"const":"EquilibriaBooster","type":"string"},{"const":"EquilibriaProxy","type":"string"},{"const":"ERC20Custom","type":"string"},{"const":"ERC20IncomingTransferCustom","type":"string"},{"const":"ERC721Custom","type":"string"},{"const":"Euler","type":"string"},{"const":"euler","type":"string"},{"const":"EulerEarn","type":"string"},{"const":"EulerSwap","type":"string"},{"const":"exactly","type":"string"},{"const":"fenix","type":"string"},{"const":"filament","type":"string"},{"const":"flowswap","type":"string"},{"const":"flux","type":"string"},{"const":"fluxion","type":"string"},{"const":"fluid","type":"string"},{"const":"fluid_ftoken","type":"string"},{"const":"frax","type":"string"},{"const":"FraxLend","type":"string"},{"const":"fraxlend","type":"string"},{"const":"friendly","type":"string"},{"const":"Gamma","type":"string"},{"const":"gamma","type":"string"},{"const":"GammaChef","type":"string"},{"const":"GammaUniV4","type":"string"},{"const":"GammaUniV4Multimanager","type":"string"},{"const":"gammaswap","type":"string"},{"const":"Gearbox","type":"string"},{"const":"gearbox","type":"string"},{"const":"hanji","type":"string"},{"const":"holdstation","type":"string"},{"const":"horiza","type":"string"},{"const":"hourglass","type":"string"},{"const":"Hybra","type":"string"},{"const":"hybra-pair","type":"string"},{"const":"hydrex","type":"string"},{"const":"hydrex-gauge","type":"string"},{"const":"hyperdrive","type":"string"},{"const":"hyperdrive-lending","type":"string"},{"const":"hyperswap","type":"string"},{"const":"Hypurrfi","type":"string"},{"const":"hypurrfi","type":"string"},{"const":"Ichi","type":"string"},{"const":"iguana","type":"string"},{"const":"ion","type":"string"},{"const":"ionex","type":"string"},{"const":"ionic","type":"string"},{"const":"ipor","type":"string"},{"const":"IporStaking","type":"string"},{"const":"ironclad","type":"string"},{"const":"izumi","type":"string"},{"const":"Jaine","type":"string"},{"const":"jaine","type":"string"},{"const":"jones","type":"string"},{"const":"jones-staker","type":"string"},{"const":"jumper","type":"string"},{"const":"karpatkey","type":"string"},{"const":"Katana","type":"string"},{"const":"KatanaAlgebra","type":"string"},{"const":"katana","type":"string"},{"const":"KilnVault","type":"string"},{"const":"kim","type":"string"},{"const":"kittenswap","type":"string"},{"const":"koi","type":"string"},{"const":"kpnft","type":"string"},{"const":"kuru","type":"string"},{"const":"kyo","type":"string"},{"const":"lagoon","type":"string"},{"const":"layerbank","type":"string"},{"const":"lendle","type":"string"},{"const":"lista","type":"string"},{"const":"llamalend","type":"string"},{"const":"covenant","type":"string"},{"const":"covenant-singleton","type":"string"},{"const":"levva","type":"string"},{"const":"lnd","type":"string"},{"const":"maha","type":"string"},{"const":"mangrove","type":"string"},{"const":"MappingCustom","type":"string"},{"const":"maverick","type":"string"},{"const":"MaverickBP","type":"string"},{"const":"midas","type":"string"},{"const":"mimswap","type":"string"},{"const":"mento","type":"string"},{"const":"monday-trade","type":"string"},{"const":"moonwell","type":"string"},{"const":"morpho","type":"string"},{"const":"MorphoBlue","type":"string"},{"const":"MorphoSingleton","type":"string"},{"const":"MorphoVault","type":"string"},{"const":"MorphoVaultV2","type":"string"},{"const":"Napier","type":"string"},{"const":"neptune","type":"string"},{"const":"nest","type":"string"},{"const":"neverland","type":"string"},{"const":"ninemm","type":"string"},{"const":"nitro","type":"string"},{"const":"Nuvolari","type":"string"},{"const":"oku","type":"string"},{"const":"oxium","type":"string"},{"const":"PancakeSwap","type":"string"},{"const":"pancake-swap","type":"string"},{"const":"PancakeSwapInfinity","type":"string"},{"const":"Pendle","type":"string"},{"const":"pendle","type":"string"},{"const":"penpie","type":"string"},{"const":"PenpieLP","type":"string"},{"const":"PenpieStaking","type":"string"},{"const":"pharaoh","type":"string"},{"const":"pinto","type":"string"},{"const":"ploutos","type":"string"},{"const":"poolside","type":"string"},{"const":"primefi","type":"string"},{"const":"prime-vaults","type":"string"},{"const":"puffer","type":"string"},{"const":"punchswap","type":"string"},{"const":"quickswap","type":"string"},{"const":"quickswap-algebra","type":"string"},{"const":"quickswap-algebra-12","type":"string"},{"const":"ra","type":"string"},{"const":"RailnetVehicle","type":"string"},{"const":"radiant","type":"string"},{"const":"ramses","type":"string"},{"const":"range","type":"string"},{"const":"reactor_fusion","type":"string"},{"const":"reserve","type":"string"},{"const":"regenerative","type":"string"},{"const":"retro","type":"string"},{"const":"rfx","type":"string"},{"const":"rwax","type":"string"},{"const":"rooster","type":"string"},{"const":"royco","type":"string"},{"const":"RoycoKernel","type":"string"},{"const":"sake","type":"string"},{"const":"satlayer","type":"string"},{"const":"satsuma","type":"string"},{"const":"Satoshi","type":"string"},{"const":"projectx","type":"string"},{"const":"satoshi","type":"string"},{"const":"seamless","type":"string"},{"const":"sherpatrade","type":"string"},{"const":"Silo","type":"string"},{"const":"silo","type":"string"},{"const":"SiloVault","type":"string"},{"const":"snap","type":"string"},{"const":"sonex","type":"string"},{"const":"sonicmarket","type":"string"},{"const":"soroswap","type":"string"},{"const":"sovryn","type":"string"},{"const":"SovrynStaking","type":"string"},{"const":"sparklend","type":"string"},{"const":"Spectra","type":"string"},{"const":"spectra","type":"string"},{"const":"SpectraAsyncVault","type":"string"},{"const":"splice","type":"string"},{"const":"spnft","type":"string"},{"const":"spookyswap-v3","type":"string"},{"const":"stability","type":"string"},{"const":"stabull","type":"string"},{"const":"StabullPool","type":"string"},{"const":"StabullStaking","type":"string"},{"const":"stakedao","type":"string"},{"const":"StakeDAOPendleLocker","type":"string"},{"const":"StakeDAOPendleVault","type":"string"},{"const":"StakeDAOCurveVault","type":"string"},{"const":"Stake DAO","type":"string"},{"const":"StakeLocker","type":"string"},{"const":"StakeDAORewardVault","type":"string"},{"const":"StakeDAOStaker","type":"string"},{"const":"StakeDAOVault","type":"string"},{"const":"Steer","type":"string"},{"const":"steer","type":"string"},{"const":"StellarVaults","type":"string"},{"const":"stryke","type":"string"},{"const":"sturdy","type":"string"},{"const":"SummerFinance","type":"string"},{"const":"summerfinance","type":"string"},{"const":"superlend","type":"string"},{"const":"supswap","type":"string"},{"const":"SushiStaker","type":"string"},{"const":"MasterChefV3","type":"string"},{"const":"sushi-swap","type":"string"},{"const":"swap-x","type":"string"},{"const":"swapr","type":"string"},{"const":"swapxgauge","type":"string"},{"const":"symbiotic","type":"string"},{"const":"syncswap","type":"string"},{"const":"TacSmartAccount","type":"string"},{"const":"tako-tako","type":"string"},{"const":"teller","type":"string"},{"const":"tempest","type":"string"},{"const":"term_finance","type":"string"},{"const":"termmax","type":"string"},{"const":"thena","type":"string"},{"const":"thirdtrade","type":"string"},{"const":"thruster","type":"string"},{"const":"toros","type":"string"},{"const":"trader-joe","type":"string"},{"const":"TwyneCollateralVault","type":"string"},{"const":"TwyneCreditVault","type":"string"},{"const":"unipilot","type":"string"},{"const":"uniswap","type":"string"},{"const":"UniswapV3","type":"string"},{"const":"UniswapV4","type":"string"},{"const":"superform","type":"string"},{"const":"upshift","type":"string"},{"const":"uranium","type":"string"},{"const":"Veda","type":"string"},{"const":"veda","type":"string"},{"const":"velodrome","type":"string"},{"const":"velodrome-gauge-v2","type":"string"},{"const":"venus","type":"string"},{"const":"vest","type":"string"},{"const":"vicuna","type":"string"},{"const":"VII","type":"string"},{"const":"","type":"string"},{"const":"Voltage","type":"string"},{"const":"voltage","type":"string"},{"const":"woodswap","type":"string"},{"const":"woofi","type":"string"},{"const":"xlend","type":"string"},{"const":"XSwap","type":"string"},{"const":"Yearn","type":"string"},{"const":"yearn","type":"string"},{"const":"yei","type":"string"},{"const":"yo","type":"string"},{"const":"zero","type":"string"},{"const":"zerolend","type":"string"},{"const":"zk-swap","type":"string"},{"const":"zkSwapThreePool","type":"string"},{"const":"StableERC4626","type":"string"},{"const":"townsquare","type":"string"},{"const":"hyperlend","type":"string"},{"const":"bimexchange","type":"string"},{"const":"purrlend","type":"string"},{"const":"etherex","type":"string"},{"const":"etherfi","type":"string"},{"const":"brownfi","type":"string"},{"const":"vena","type":"string"},{"const":"edel","type":"string"},{"const":"origin","type":"string"},{"const":"monetrix","type":"string"},{"const":"kyberswap","type":"string"},{"const":"zama","type":"string"},{"const":"lfj","type":"string"},{"const":"treehouse","type":"string"},{"const":"yieldseeker","type":"string"},{"const":"lend.xyz","type":"string"},{"const":"DeelVault","type":"string"},{"const":"CoinbaseSmartWallet","type":"string"},{"const":"Mamo","type":"string"},{"const":"bleap","type":"string"},{"const":"gliquid","type":"string"},{"const":"makina","type":"string"},{"const":"opencover","type":"string"},{"const":"PendleLooper","type":"string"},{"const":"tigris","type":"string"},{"const":"zia","type":"string"},{"const":"ZiaStaker","type":"string"},{"const":"zyfai","type":"string"},{"const":"UnclaimedDistributorCustom","type":"string"},{"const":"NoForwarding","type":"string"}]}}],"responses":{},"operationId":"getV4NodeOldest-block"}},"/v4/node/block-difference":{"get":{"tags":["Node"],"description":"Get the block difference (oldest to current). If a protocol is provided, returns it for that protocol on the given chain; otherwise returns it for the chain across all protocols.","parameters":[{"name":"chainId","in":"query","required":true,"schema":{"description":"Chain ID","anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"Chain ID","type":"number"}]}},{"name":"protocol","in":"query","required":false,"schema":{"description":"Protocol type (optional)","anyOf":[{"const":"Aave","type":"string"},{"const":"aave","type":"string"},{"const":"AaveCustom","type":"string"},{"const":"AaveStata","type":"string"},{"const":"AaveUmbrella","type":"string"},{"const":"AaveV4HubSingleton","type":"string"},{"const":"AaveV4Spoke","type":"string"},{"const":"aerodrome","type":"string"},{"const":"aerodrome-gauge-cap","type":"string"},{"const":"aerodrome-slipstream","type":"string"},{"const":"accountable","type":"string"},{"const":"ajna","type":"string"},{"const":"akron","type":"string"},{"const":"ambient","type":"string"},{"const":"aquarius","type":"string"},{"const":"altura","type":"string"},{"const":"angles","type":"string"},{"const":"aragon","type":"string"},{"const":"arrakis","type":"string"},{"const":"arthswap","type":"string"},{"const":"Aura","type":"string"},{"const":"aura","type":"string"},{"const":"avalon","type":"string"},{"const":"badger","type":"string"},{"const":"balancer","type":"string"},{"const":"BalancerGauge","type":"string"},{"const":"BalancerPool","type":"string"},{"const":"BalancerSingleton","type":"string"},{"const":"base-swap","type":"string"},{"const":"Beefy","type":"string"},{"const":"beefy","type":"string"},{"const":"BeefyStaker","type":"string"},{"const":"beraborrow","type":"string"},{"const":"beratrax","type":"string"},{"const":"blend","type":"string"},{"const":"bunni","type":"string"},{"const":"BunniToken","type":"string"},{"const":"camelot","type":"string"},{"const":"capricorn","type":"string"},{"const":"CCLTac","type":"string"},{"const":"Charm","type":"string"},{"const":"charm","type":"string"},{"const":"ChildChainGauge","type":"string"},{"const":"cian","type":"string"},{"const":"clober","type":"string"},{"const":"Club246","type":"string"},{"const":"coinhain","type":"string"},{"const":"compound","type":"string"},{"const":"compound-v3","type":"string"},{"const":"concrete","type":"string"},{"const":"Contango","type":"string"},{"const":"ConvexStaker","type":"string"},{"const":"credix","type":"string"},{"const":"cross_curve","type":"string"},{"const":"crust","type":"string"},{"const":"curvance","type":"string"},{"const":"curve","type":"string"},{"const":"CurvePools","type":"string"},{"const":"CurveG","type":"string"},{"const":"curveNPool","type":"string"},{"const":"defiedge","type":"string"},{"const":"dlend","type":"string"},{"const":"dolomite","type":"string"},{"const":"dragonswap","type":"string"},{"const":"eigenlayer","type":"string"},{"const":"Ekubo","type":"string"},{"const":"ekubo","type":"string"},{"const":"EkuboPositionManager","type":"string"},{"const":"elyx","type":"string"},{"const":"enzyme","type":"string"},{"const":"equalizer","type":"string"},{"const":"equilibria","type":"string"},{"const":"EquilibriaBooster","type":"string"},{"const":"EquilibriaProxy","type":"string"},{"const":"ERC20Custom","type":"string"},{"const":"ERC20IncomingTransferCustom","type":"string"},{"const":"ERC721Custom","type":"string"},{"const":"Euler","type":"string"},{"const":"euler","type":"string"},{"const":"EulerEarn","type":"string"},{"const":"EulerSwap","type":"string"},{"const":"exactly","type":"string"},{"const":"fenix","type":"string"},{"const":"filament","type":"string"},{"const":"flowswap","type":"string"},{"const":"flux","type":"string"},{"const":"fluxion","type":"string"},{"const":"fluid","type":"string"},{"const":"fluid_ftoken","type":"string"},{"const":"frax","type":"string"},{"const":"FraxLend","type":"string"},{"const":"fraxlend","type":"string"},{"const":"friendly","type":"string"},{"const":"Gamma","type":"string"},{"const":"gamma","type":"string"},{"const":"GammaChef","type":"string"},{"const":"GammaUniV4","type":"string"},{"const":"GammaUniV4Multimanager","type":"string"},{"const":"gammaswap","type":"string"},{"const":"Gearbox","type":"string"},{"const":"gearbox","type":"string"},{"const":"hanji","type":"string"},{"const":"holdstation","type":"string"},{"const":"horiza","type":"string"},{"const":"hourglass","type":"string"},{"const":"Hybra","type":"string"},{"const":"hybra-pair","type":"string"},{"const":"hydrex","type":"string"},{"const":"hydrex-gauge","type":"string"},{"const":"hyperdrive","type":"string"},{"const":"hyperdrive-lending","type":"string"},{"const":"hyperswap","type":"string"},{"const":"Hypurrfi","type":"string"},{"const":"hypurrfi","type":"string"},{"const":"Ichi","type":"string"},{"const":"iguana","type":"string"},{"const":"ion","type":"string"},{"const":"ionex","type":"string"},{"const":"ionic","type":"string"},{"const":"ipor","type":"string"},{"const":"IporStaking","type":"string"},{"const":"ironclad","type":"string"},{"const":"izumi","type":"string"},{"const":"Jaine","type":"string"},{"const":"jaine","type":"string"},{"const":"jones","type":"string"},{"const":"jones-staker","type":"string"},{"const":"jumper","type":"string"},{"const":"karpatkey","type":"string"},{"const":"Katana","type":"string"},{"const":"KatanaAlgebra","type":"string"},{"const":"katana","type":"string"},{"const":"KilnVault","type":"string"},{"const":"kim","type":"string"},{"const":"kittenswap","type":"string"},{"const":"koi","type":"string"},{"const":"kpnft","type":"string"},{"const":"kuru","type":"string"},{"const":"kyo","type":"string"},{"const":"lagoon","type":"string"},{"const":"layerbank","type":"string"},{"const":"lendle","type":"string"},{"const":"lista","type":"string"},{"const":"llamalend","type":"string"},{"const":"covenant","type":"string"},{"const":"covenant-singleton","type":"string"},{"const":"levva","type":"string"},{"const":"lnd","type":"string"},{"const":"maha","type":"string"},{"const":"mangrove","type":"string"},{"const":"MappingCustom","type":"string"},{"const":"maverick","type":"string"},{"const":"MaverickBP","type":"string"},{"const":"midas","type":"string"},{"const":"mimswap","type":"string"},{"const":"mento","type":"string"},{"const":"monday-trade","type":"string"},{"const":"moonwell","type":"string"},{"const":"morpho","type":"string"},{"const":"MorphoBlue","type":"string"},{"const":"MorphoSingleton","type":"string"},{"const":"MorphoVault","type":"string"},{"const":"MorphoVaultV2","type":"string"},{"const":"Napier","type":"string"},{"const":"neptune","type":"string"},{"const":"nest","type":"string"},{"const":"neverland","type":"string"},{"const":"ninemm","type":"string"},{"const":"nitro","type":"string"},{"const":"Nuvolari","type":"string"},{"const":"oku","type":"string"},{"const":"oxium","type":"string"},{"const":"PancakeSwap","type":"string"},{"const":"pancake-swap","type":"string"},{"const":"PancakeSwapInfinity","type":"string"},{"const":"Pendle","type":"string"},{"const":"pendle","type":"string"},{"const":"penpie","type":"string"},{"const":"PenpieLP","type":"string"},{"const":"PenpieStaking","type":"string"},{"const":"pharaoh","type":"string"},{"const":"pinto","type":"string"},{"const":"ploutos","type":"string"},{"const":"poolside","type":"string"},{"const":"primefi","type":"string"},{"const":"prime-vaults","type":"string"},{"const":"puffer","type":"string"},{"const":"punchswap","type":"string"},{"const":"quickswap","type":"string"},{"const":"quickswap-algebra","type":"string"},{"const":"quickswap-algebra-12","type":"string"},{"const":"ra","type":"string"},{"const":"RailnetVehicle","type":"string"},{"const":"radiant","type":"string"},{"const":"ramses","type":"string"},{"const":"range","type":"string"},{"const":"reactor_fusion","type":"string"},{"const":"reserve","type":"string"},{"const":"regenerative","type":"string"},{"const":"retro","type":"string"},{"const":"rfx","type":"string"},{"const":"rwax","type":"string"},{"const":"rooster","type":"string"},{"const":"royco","type":"string"},{"const":"RoycoKernel","type":"string"},{"const":"sake","type":"string"},{"const":"satlayer","type":"string"},{"const":"satsuma","type":"string"},{"const":"Satoshi","type":"string"},{"const":"projectx","type":"string"},{"const":"satoshi","type":"string"},{"const":"seamless","type":"string"},{"const":"sherpatrade","type":"string"},{"const":"Silo","type":"string"},{"const":"silo","type":"string"},{"const":"SiloVault","type":"string"},{"const":"snap","type":"string"},{"const":"sonex","type":"string"},{"const":"sonicmarket","type":"string"},{"const":"soroswap","type":"string"},{"const":"sovryn","type":"string"},{"const":"SovrynStaking","type":"string"},{"const":"sparklend","type":"string"},{"const":"Spectra","type":"string"},{"const":"spectra","type":"string"},{"const":"SpectraAsyncVault","type":"string"},{"const":"splice","type":"string"},{"const":"spnft","type":"string"},{"const":"spookyswap-v3","type":"string"},{"const":"stability","type":"string"},{"const":"stabull","type":"string"},{"const":"StabullPool","type":"string"},{"const":"StabullStaking","type":"string"},{"const":"stakedao","type":"string"},{"const":"StakeDAOPendleLocker","type":"string"},{"const":"StakeDAOPendleVault","type":"string"},{"const":"StakeDAOCurveVault","type":"string"},{"const":"Stake DAO","type":"string"},{"const":"StakeLocker","type":"string"},{"const":"StakeDAORewardVault","type":"string"},{"const":"StakeDAOStaker","type":"string"},{"const":"StakeDAOVault","type":"string"},{"const":"Steer","type":"string"},{"const":"steer","type":"string"},{"const":"StellarVaults","type":"string"},{"const":"stryke","type":"string"},{"const":"sturdy","type":"string"},{"const":"SummerFinance","type":"string"},{"const":"summerfinance","type":"string"},{"const":"superlend","type":"string"},{"const":"supswap","type":"string"},{"const":"SushiStaker","type":"string"},{"const":"MasterChefV3","type":"string"},{"const":"sushi-swap","type":"string"},{"const":"swap-x","type":"string"},{"const":"swapr","type":"string"},{"const":"swapxgauge","type":"string"},{"const":"symbiotic","type":"string"},{"const":"syncswap","type":"string"},{"const":"TacSmartAccount","type":"string"},{"const":"tako-tako","type":"string"},{"const":"teller","type":"string"},{"const":"tempest","type":"string"},{"const":"term_finance","type":"string"},{"const":"termmax","type":"string"},{"const":"thena","type":"string"},{"const":"thirdtrade","type":"string"},{"const":"thruster","type":"string"},{"const":"toros","type":"string"},{"const":"trader-joe","type":"string"},{"const":"TwyneCollateralVault","type":"string"},{"const":"TwyneCreditVault","type":"string"},{"const":"unipilot","type":"string"},{"const":"uniswap","type":"string"},{"const":"UniswapV3","type":"string"},{"const":"UniswapV4","type":"string"},{"const":"superform","type":"string"},{"const":"upshift","type":"string"},{"const":"uranium","type":"string"},{"const":"Veda","type":"string"},{"const":"veda","type":"string"},{"const":"velodrome","type":"string"},{"const":"velodrome-gauge-v2","type":"string"},{"const":"venus","type":"string"},{"const":"vest","type":"string"},{"const":"vicuna","type":"string"},{"const":"VII","type":"string"},{"const":"","type":"string"},{"const":"Voltage","type":"string"},{"const":"voltage","type":"string"},{"const":"woodswap","type":"string"},{"const":"woofi","type":"string"},{"const":"xlend","type":"string"},{"const":"XSwap","type":"string"},{"const":"Yearn","type":"string"},{"const":"yearn","type":"string"},{"const":"yei","type":"string"},{"const":"yo","type":"string"},{"const":"zero","type":"string"},{"const":"zerolend","type":"string"},{"const":"zk-swap","type":"string"},{"const":"zkSwapThreePool","type":"string"},{"const":"StableERC4626","type":"string"},{"const":"townsquare","type":"string"},{"const":"hyperlend","type":"string"},{"const":"bimexchange","type":"string"},{"const":"purrlend","type":"string"},{"const":"etherex","type":"string"},{"const":"etherfi","type":"string"},{"const":"brownfi","type":"string"},{"const":"vena","type":"string"},{"const":"edel","type":"string"},{"const":"origin","type":"string"},{"const":"monetrix","type":"string"},{"const":"kyberswap","type":"string"},{"const":"zama","type":"string"},{"const":"lfj","type":"string"},{"const":"treehouse","type":"string"},{"const":"yieldseeker","type":"string"},{"const":"lend.xyz","type":"string"},{"const":"DeelVault","type":"string"},{"const":"CoinbaseSmartWallet","type":"string"},{"const":"Mamo","type":"string"},{"const":"bleap","type":"string"},{"const":"gliquid","type":"string"},{"const":"makina","type":"string"},{"const":"opencover","type":"string"},{"const":"PendleLooper","type":"string"},{"const":"tigris","type":"string"},{"const":"zia","type":"string"},{"const":"ZiaStaker","type":"string"},{"const":"zyfai","type":"string"},{"const":"UnclaimedDistributorCustom","type":"string"},{"const":"NoForwarding","type":"string"}]}}],"responses":{},"operationId":"getV4NodeBlock-difference"}},"/v4/offchain-billing/self/owed":{"get":{"tags":["OffchainBilling"],"description":"Your creator's off-chain owed position (X-API-Key): credit balance, pending accrual, owed, and a per-campaign pending breakdown. Scoped to your own key.","responses":{"200":{"description":"Off-chain owed position for a client","content":{"application/json":{"schema":{"$id":"offchainOwed","title":"OffchainOwed","description":"Off-chain owed position for a client","type":"object","properties":{"creatorId":{"type":"string"},"creditBalanceUsd":{"description":"Current credit balance (signed; negative = already owes)","type":"number"},"pendingAccrualUsd":{"description":"Distributed but not yet debited — what the next accrual adds","type":"number"},"owedUsd":{"description":"max(0, pendingAccrualUsd − creditBalanceUsd)","type":"number"},"lines":{"type":"array","items":{"$id":"offchainOwedLine","title":"OffchainOwedLine","description":"One campaign's pending accrual","type":"object","properties":{"campaignId":{"description":"Internal Campaign.id (database id)","type":"string"},"onchainCampaignId":{"description":"On-chain campaign identifier","type":"string"},"distributionChainId":{"description":"Chain where rewards are distributed","type":"number"},"chainName":{"description":"Human-readable distribution chain name","type":"string"},"creatorAddress":{"type":"string"},"startTimestamp":{"description":"Campaign start (unix seconds)","type":"string"},"endTimestamp":{"description":"Campaign end (unix seconds)","type":"string"},"ended":{"description":"Whether the campaign has ended (endTimestamp < now)","type":"boolean"},"currentWei":{"description":"Cumulative distributed (wei), creator address excluded","type":"string"},"accruedWei":{"description":"Cumulative distributed (wei) already accrued into credit debits","type":"string"},"pendingWei":{"description":"Distribution not yet accrued (wei)","type":"string"},"tokenSymbol":{"type":"string"},"tokenAddress":{"description":"Reward token address","type":"string"},"tokenDecimals":{"type":"number"},"tokenPriceUsd":{"type":"number"},"feeBps":{"description":"Off-chain fee in basis points","type":"number"},"pendingUsd":{"description":"fee × USD(pendingWei) — will be debited on next accrual","type":"number"}},"required":["campaignId","onchainCampaignId","distributionChainId","chainName","creatorAddress","startTimestamp","endTimestamp","ended","currentWei","accruedWei","pendingWei","tokenDecimals","tokenPriceUsd","feeBps","pendingUsd"]}}},"required":["creatorId","creditBalanceUsd","pendingAccrualUsd","owedUsd","lines"]}}}}},"operationId":"getV4Offchain-billingSelfOwed"}},"/v4/offchain-billing/self/pending":{"get":{"tags":["OffchainBilling"],"description":"Just your creator's pending off-chain accrual (X-API-Key) — the USD not yet debited.","responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"creatorId":{"type":"string"},"pendingAccrualUsd":{"type":"number"}},"required":["creatorId","pendingAccrualUsd"]}}}}},"operationId":"getV4Offchain-billingSelfPending"}},"/v4/offchain-billing/self/operations":{"get":{"tags":["OffchainBilling"],"description":"Your creator's off-chain accrual debits (X-API-Key), newest first.","responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"array","items":{"$id":"offchainOperation","title":"OffchainOperation","description":"Off-chain credit operation","type":"object","properties":{"id":{"type":"string"},"type":{"anyOf":[{"const":"ADD","type":"string"},{"const":"SUBTRACT","type":"string"}]},"amountUsd":{"type":"number"},"label":{"type":"string"},"timestamp":{"type":"string"}},"required":["id","type","amountUsd","label","timestamp"]}}}}}},"operationId":"getV4Offchain-billingSelfOperations"}},"/v4/opportunities/{id}":{"get":{"tags":["Opportunities"],"description":"Get a unique opportunity by ID (hash) or composite identifier (chainId-type-identifier). Use query parameters to include campaigns or filter results.","parameters":[{"name":"id","in":"path","required":true,"schema":{"pattern":"(([0-9]*)-([0-9A-Z]*)-(0x([0-9A-Za-z])*))|([0-9]{1,20})","description":"**Opportunity ID** (path-only). Two accepted forms: (1) internal numeric hash, ≤20 digits (e.g. `7673870997270712040`), or (2) composite `{chainId}-{type}-{identifier}` (e.g. `1-ERC20LOGPROCESSOR-0x35Cbe8542E70fa2f7F9cDF129F19e593F4b4f560`). The composite form is path-only — query filters (`?id=`, `?opportunityId=`) only accept the numeric form. NOT a campaign ID. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"test","in":"query","required":false,"schema":{"description":"Include test campaigns","type":"boolean"}},{"name":"point","in":"query","required":false,"schema":{"description":"Include point campaigns","type":"boolean"}},{"name":"tokenTypes","in":"query","required":false,"schema":{"description":"Filter by token type. Use POINT to include point campaigns and PRETGE to include preTGE campaigns.","type":"array","items":{"anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]}}},{"name":"campaigns","in":"query","required":false,"schema":{"description":"Include campaign data. Will slow down the request","default":false,"type":"boolean"}},{"name":"excludeSubCampaigns","in":"query","required":false,"schema":{"description":"Exclude subcampaigns from the results.","default":false,"type":"boolean"}}],"responses":{"200":{"description":"Response for status 200","anyOf":[{"type":"object","allOf":[{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"identifier":{"type":"string"},"chainId":{"type":"number"},"name":{"type":"string"},"description":{"type":"string"},"howToSteps":{"type":"array","items":{"type":"string"}},"status":{"anyOf":[{"const":"NONE","type":"string"},{"const":"PAST","type":"string"},{"const":"LIVE","type":"string"},{"const":"SOON","type":"string"}]},"action":{"anyOf":[{"const":"POOL","type":"string"},{"const":"HOLD","type":"string"},{"const":"DROP","type":"string"},{"const":"LEND","type":"string"},{"const":"BORROW","type":"string"},{"const":"LONG","type":"string"},{"const":"SHORT","type":"string"},{"const":"SWAP","type":"string"},{"const":"INVALID","type":"string"},{"const":"STAKE","type":"string"}]},"tags":{"type":"array","items":{"type":"string"}},"mainProtocol":{"type":"string"},"depositUrl":{"type":"string"},"depositUrls":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"url":{"type":"string"},"subtitle":{"type":"string"},"icon":{"type":"string"},"priority":{"type":"number"}},"required":["id","title","url","priority"]}},"explorerAddress":{"type":"string"},"hidden":{"type":"boolean"},"tvl":{"type":"number"},"apr":{"type":"number"},"dailyRewards":{"type":"number"},"maxDailyRewards":{"anyOf":[{"type":"number"},{"type":"null"}]},"liveCampaigns":{"type":"number"},"lastCampaignCreatedAt":{"type":"number"},"earliestCampaignStart":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"latestCampaignStart":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"earliestCampaignEnd":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"latestCampaignEnd":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"nativeApr":{"type":"number"},"totalApr":{"type":"number"},"maxApr":{"anyOf":[{"type":"number"},{"type":"null"}]},"liveCampaignsForCreator":{"type":"number"},"soonCampaignsForCreator":{"type":"number"},"pastCampaignsForCreator":{"type":"number"},"distributionType":{"type":"string"},"tokens":{"type":"array","items":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]}},"chain":{"$id":"chain","title":"Chain","description":"Chain","type":"object","properties":{"id":{"$id":"chainId","title":"Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"name":{"title":"Chain Name","description":"Legible name of the chain","type":"string"},"icon":{"title":"Icon URL","description":"URL to the icon of the chain","type":"string"},"liveCampaigns":{"title":"Live Campaigns","description":"Number of campaigns currently live on this chain","type":"number"},"endOfDisputePeriod":{"type":"number"},"explorers":{"type":"array","items":{"type":"object","properties":{"type":{"anyOf":[{"const":"ETHERSCAN","type":"string"},{"const":"BLOCKSCOUT","type":"string"},{"const":"SOLSCAN","type":"string"}]},"url":{"type":"string"},"chainId":{"type":"number"}},"required":["type","url","chainId"]}},"lastClaimsOnchainFetchTimestamp":{"title":"Last Claims Onchain Fetch Timestamp","description":"Timestamp of the last claims onchain fetch","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","icon","liveCampaigns","endOfDisputePeriod","lastClaimsOnchainFetchTimestamp"]},"activePrograms":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"type":"string"},"icon":{"type":"string"}},"required":["id","name"]}},"protocol":{"anyOf":[{"$id":"protocol","title":"Protocol","description":"Protocol","type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"icon":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"description":{"type":"string"},"url":{"type":"string"},"dailyRewards":{"type":"number"},"numberOfLiveCampaigns":{"type":"number"},"opportunityLiveTags":{"type":"array","items":{"type":"string"}},"banner":{"anyOf":[{"type":"string"},{"type":"null"}]},"opportunityBannerLight":{"anyOf":[{"type":"string"},{"type":"null"}]},"opportunityBannerDark":{"anyOf":[{"type":"string"},{"type":"null"}]},"trustData":{"anyOf":[{"type":"object","properties":{"slug":{"type":"string"},"category":{"anyOf":[{"type":"string"},{"type":"null"}]},"audits":{"anyOf":[{"type":"string"},{"type":"null"}]},"audit_links":{"type":"array","items":{"type":"string"}},"audit_note":{"anyOf":[{"type":"string"},{"type":"null"}]},"github":{"type":"array","items":{"type":"string"}},"twitter":{"anyOf":[{"type":"string"},{"type":"null"}]},"listedAt":{"anyOf":[{"type":"number"},{"type":"null"}]},"parentProtocol":{"anyOf":[{"type":"string"},{"type":"null"}]},"tvl":{"anyOf":[{"type":"number"},{"type":"null"}]},"hacks":{"type":"array","items":{"type":"object","properties":{"date":{"type":"number"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"amountUSD":{"anyOf":[{"type":"number"},{"type":"null"}]},"technique":{"anyOf":[{"type":"string"},{"type":"null"}]},"source":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["date","name","amountUSD","technique","source"]}},"syncedAt":{"type":"number"}},"required":["slug","category","audits","audit_links","audit_note","github","twitter","listedAt","parentProtocol","syncedAt"]},{"type":"null"}]}},"required":["id","name","icon","tags","description","url","banner","opportunityBannerLight","opportunityBannerDark","trustData"]},{"type":"null"}]},"aprRecord":{"type":"object","properties":{"cumulated":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"breakdowns":{"type":"array","items":{"type":"object","properties":{"identifier":{"type":"string"},"type":{"anyOf":[{"const":"CAMPAIGN","type":"string"},{"const":"TOKEN","type":"string"},{"const":"PROTOCOL","type":"string"}]},"value":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"distributionType":{"anyOf":[{"const":"DUTCH_AUCTION","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"AAVE_NET_APR","type":"string"},{"const":"ERC4626_APR","type":"string"},{"const":"ERC4626_SPREAD_CAPPED","type":"string"},{"const":"AAVE_V4_NET_APR","type":"string"},{"const":"DEEL_DISTRIBUTION","type":"string"},{"const":"SOFR_SPREAD_RATCHET","type":"string"},{"const":"ERC4626_TARGET_APR_WITH_MERKL","type":"string"},{"const":"TARGET_APR_WITH_MERKL","type":"string"},{"const":"NET_APR","type":"string"},{"const":"BORROW_SUBSIDY","type":"string"},{"const":"NET_APR_WITH_MERKL","type":"string"},{"const":"YIELD_BASIS_PID","type":"string"},{"const":"COMPOSED","type":"string"}]}},"required":["identifier","type","value","timestamp"]}}},"required":["cumulated","timestamp","breakdowns"]},"nativeAprRecord":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"value":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"amount":{"type":"bigint"},"rewardToken":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]},"breakdowns":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"value":{"type":"number"},"amount":{"type":"bigint"},"rewardToken":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]}},"required":["title","value"]}}},"required":["title","value","timestamp"]},"tvlRecord":{"type":"object","properties":{"total":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"breakdowns":{"type":"array","items":{"type":"object","properties":{"identifier":{"type":"string"},"type":{"anyOf":[{"const":"TOKEN","type":"string"},{"const":"PROTOCOL","type":"string"}]},"value":{"type":"number"}},"required":["identifier","type","value"]}}},"required":["total","timestamp","breakdowns"]},"rewardsRecord":{"type":"object","properties":{"total":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"breakdowns":{"type":"array","items":{"type":"object","properties":{"campaignId":{"type":"string"},"value":{"type":"number"},"maxValue":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"token":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]},"amount":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"distributionType":{"anyOf":[{"const":"DUTCH_AUCTION","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"AAVE_NET_APR","type":"string"},{"const":"ERC4626_APR","type":"string"},{"const":"ERC4626_SPREAD_CAPPED","type":"string"},{"const":"AAVE_V4_NET_APR","type":"string"},{"const":"DEEL_DISTRIBUTION","type":"string"},{"const":"SOFR_SPREAD_RATCHET","type":"string"},{"const":"ERC4626_TARGET_APR_WITH_MERKL","type":"string"},{"const":"TARGET_APR_WITH_MERKL","type":"string"},{"const":"NET_APR","type":"string"},{"const":"BORROW_SUBSIDY","type":"string"},{"const":"NET_APR_WITH_MERKL","type":"string"},{"const":"YIELD_BASIS_PID","type":"string"},{"const":"COMPOSED","type":"string"}]},"onChainCampaignId":{"type":"string"}},"required":["campaignId","value","timestamp","token","amount"]}}},"required":["total","timestamp","breakdowns"]}},"required":["id","type","identifier","chainId","name","description","howToSteps","status","action","tags","tvl","apr","dailyRewards","liveCampaigns","lastCampaignCreatedAt","tokens","chain","activePrograms"]},{"type":"object","properties":{"campaigns":{"type":"array","items":{"type":"object","properties":{"id":{"description":"Unique campaign id","type":"string"},"computeChainId":{"description":"Chain ID where campaign data is computed","type":"number"},"distributionChainId":{"description":"Chain ID where rewards are distributed","type":"number"},"campaignId":{"description":"A hash of the campaign, unique per chain. Can be used to identify campaigns across chains","type":"string"},"type":{"description":"Campaign type identifier","type":"string"},"subType":{"description":"Campaign subtype for protocols like Silo, Radiant, Morpho, Dolomite, Compound, Ajna and Euler","anyOf":[{"type":"number"},{"type":"null"}]},"amount":{"description":"Amount of reward token units being distributed by the campaign","type":"string"},"startTimestamp":{"description":"Unix timestamp when the campaign starts","anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]},{"type":"bigint"}]},"endTimestamp":{"description":"Unix timestamp when the campaign ends","anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]},{"type":"bigint"}]},"creatorAddress":{"description":"Ethereum address of the campaign creator","type":"string"},"apr":{"description":"Annual Percentage Rate for this campaign","type":"number"},"dailyRewards":{"description":"Total daily rewards distributed in USD","type":"number"},"creator":{"description":"Campaign creator information","type":"object","properties":{"address":{"description":"Creator's Ethereum address","type":"string"},"tags":{"description":"Tag associated with the creator","type":"array","items":{"type":"string"}},"creatorId":{"nullable":true,"anyOf":[{"description":"Merkl creator ID if registered","type":"string"},{"type":"null"}]}},"required":["address"]},"params":{"description":"Campaign-specific parameters"},"description":{"description":"Campaign description","type":"string"},"chain":{"$id":"chain","title":"Chain","description":"Chain","type":"object","properties":{"id":{"$id":"chainId","title":"Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"name":{"title":"Chain Name","description":"Legible name of the chain","type":"string"},"icon":{"title":"Icon URL","description":"URL to the icon of the chain","type":"string"},"liveCampaigns":{"title":"Live Campaigns","description":"Number of campaigns currently live on this chain","type":"number"},"endOfDisputePeriod":{"type":"number"},"explorers":{"type":"array","items":{"type":"object","properties":{"type":{"anyOf":[{"const":"ETHERSCAN","type":"string"},{"const":"BLOCKSCOUT","type":"string"},{"const":"SOLSCAN","type":"string"}]},"url":{"type":"string"},"chainId":{"type":"number"}},"required":["type","url","chainId"]}},"lastClaimsOnchainFetchTimestamp":{"title":"Last Claims Onchain Fetch Timestamp","description":"Timestamp of the last claims onchain fetch","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","icon","liveCampaigns","endOfDisputePeriod","lastClaimsOnchainFetchTimestamp"]},"rewardTokenId":{"description":"Internal ID of the reward token","type":"string"},"rewardToken":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]},"opportunityId":{"description":"ID of the associated opportunity","type":"string"},"distributionChain":{"$id":"chain","title":"Chain","description":"Chain","type":"object","properties":{"id":{"$id":"chainId","title":"Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"name":{"title":"Chain Name","description":"Legible name of the chain","type":"string"},"icon":{"title":"Icon URL","description":"URL to the icon of the chain","type":"string"},"liveCampaigns":{"title":"Live Campaigns","description":"Number of campaigns currently live on this chain","type":"number"},"endOfDisputePeriod":{"type":"number"},"explorers":{"type":"array","items":{"type":"object","properties":{"type":{"anyOf":[{"const":"ETHERSCAN","type":"string"},{"const":"BLOCKSCOUT","type":"string"},{"const":"SOLSCAN","type":"string"}]},"url":{"type":"string"},"chainId":{"type":"number"}},"required":["type","url","chainId"]}},"lastClaimsOnchainFetchTimestamp":{"title":"Last Claims Onchain Fetch Timestamp","description":"Timestamp of the last claims onchain fetch","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","icon","liveCampaigns","endOfDisputePeriod","lastClaimsOnchainFetchTimestamp"]},"distributionType":{"description":"Type of reward distribution mechanism","anyOf":[{"const":"DUTCH_AUCTION","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"AAVE_NET_APR","type":"string"},{"const":"ERC4626_APR","type":"string"},{"const":"ERC4626_SPREAD_CAPPED","type":"string"},{"const":"AAVE_V4_NET_APR","type":"string"},{"const":"DEEL_DISTRIBUTION","type":"string"},{"const":"SOFR_SPREAD_RATCHET","type":"string"},{"const":"ERC4626_TARGET_APR_WITH_MERKL","type":"string"},{"const":"TARGET_APR_WITH_MERKL","type":"string"},{"const":"NET_APR","type":"string"},{"const":"BORROW_SUBSIDY","type":"string"},{"const":"NET_APR_WITH_MERKL","type":"string"},{"const":"YIELD_BASIS_PID","type":"string"},{"const":"COMPOSED","type":"string"}]},"campaignStatus":{"type":"object","properties":{"campaignId":{"type":"string"},"computedUntil":{"anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}]},"processingStarted":{"anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}]},"status":{"type":"string"},"preComputeProcessingStarted":{"anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}]},"preComputeStatus":{"type":"string"},"delay":{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]},"error":{"type":"string"},"details":{}},"required":["campaignId","computedUntil","processingStarted","status","preComputeProcessingStarted","preComputeStatus"]},"createdAt":{"format":"date","description":"ISO date when the campaign was created","type":"string"},"rootCampaignId":{"description":"ID of the root campaign for hierarchical campaigns","anyOf":[{"type":"string"},{"type":"null"}]},"parentCampaignId":{"description":"ID of the parent campaign for sub-campaigns","anyOf":[{"type":"string"},{"type":"null"}]},"childCampaignIds":{"description":"List of child campaign IDs","type":"array","items":{"type":"string"}},"dailyRewardsBreakdown":{"description":"Daily breakdown of rewards","type":"array","items":{"type":"object","properties":{"campaignId":{"type":"string"},"value":{"type":"number"},"maxValue":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"token":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]},"amount":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"distributionType":{"anyOf":[{"const":"DUTCH_AUCTION","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"AAVE_NET_APR","type":"string"},{"const":"ERC4626_APR","type":"string"},{"const":"ERC4626_SPREAD_CAPPED","type":"string"},{"const":"AAVE_V4_NET_APR","type":"string"},{"const":"DEEL_DISTRIBUTION","type":"string"},{"const":"SOFR_SPREAD_RATCHET","type":"string"},{"const":"ERC4626_TARGET_APR_WITH_MERKL","type":"string"},{"const":"TARGET_APR_WITH_MERKL","type":"string"},{"const":"NET_APR","type":"string"},{"const":"BORROW_SUBSIDY","type":"string"},{"const":"NET_APR_WITH_MERKL","type":"string"},{"const":"YIELD_BASIS_PID","type":"string"},{"const":"COMPOSED","type":"string"}]},"onChainCampaignId":{"type":"string"}},"required":["campaignId","value","timestamp","token","amount"]}},"pauseCompute":{"description":"ISO timestamp when computation was paused","anyOf":[{"type":"string"},{"type":"null"}]},"pausePrecompute":{"description":"Reason for pausing precomputation, or null if not paused","anyOf":[{"type":"string"},{"type":"null"}]},"hasOverrides":{"description":"Whether this campaign has previous config overrides","type":"boolean"},"isPrivate":{"description":"Indicates if the campaign is private","type":"boolean"},"hidden":{"description":"Whether the campaign is hidden from non-test API results","type":"boolean"},"hideLeaderboard":{"description":"Whether leaderboard, ranks and reward breakdowns are hidden for this campaign","type":"boolean"},"campaignEncodingHash":{"description":"Hash of the campaign configuration encoding","type":"string"}},"required":["id","computeChainId","distributionChainId","campaignId","type","amount","startTimestamp","endTimestamp","creatorAddress","params","chain","rewardToken","campaignStatus","createdAt","isPrivate"]}}}}]},{"type":"object","allOf":[{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"identifier":{"type":"string"},"chainId":{"type":"number"},"name":{"type":"string"},"description":{"type":"string"},"howToSteps":{"type":"array","items":{"type":"string"}},"status":{"anyOf":[{"const":"NONE","type":"string"},{"const":"PAST","type":"string"},{"const":"LIVE","type":"string"},{"const":"SOON","type":"string"}]},"action":{"anyOf":[{"const":"POOL","type":"string"},{"const":"HOLD","type":"string"},{"const":"DROP","type":"string"},{"const":"LEND","type":"string"},{"const":"BORROW","type":"string"},{"const":"LONG","type":"string"},{"const":"SHORT","type":"string"},{"const":"SWAP","type":"string"},{"const":"INVALID","type":"string"},{"const":"STAKE","type":"string"}]},"tags":{"type":"array","items":{"type":"string"}},"mainProtocol":{"type":"string"},"depositUrl":{"type":"string"},"depositUrls":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"url":{"type":"string"},"subtitle":{"type":"string"},"icon":{"type":"string"},"priority":{"type":"number"}},"required":["id","title","url","priority"]}},"explorerAddress":{"type":"string"},"hidden":{"type":"boolean"},"tvl":{"type":"number"},"apr":{"type":"number"},"dailyRewards":{"type":"number"},"maxDailyRewards":{"anyOf":[{"type":"number"},{"type":"null"}]},"liveCampaigns":{"type":"number"},"lastCampaignCreatedAt":{"type":"number"},"earliestCampaignStart":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"latestCampaignStart":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"earliestCampaignEnd":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"latestCampaignEnd":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"nativeApr":{"type":"number"},"totalApr":{"type":"number"},"maxApr":{"anyOf":[{"type":"number"},{"type":"null"}]},"liveCampaignsForCreator":{"type":"number"},"soonCampaignsForCreator":{"type":"number"},"pastCampaignsForCreator":{"type":"number"},"distributionType":{"type":"string"},"tokens":{"type":"array","items":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]}},"chain":{"$id":"chain","title":"Chain","description":"Chain","type":"object","properties":{"id":{"$id":"chainId","title":"Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"name":{"title":"Chain Name","description":"Legible name of the chain","type":"string"},"icon":{"title":"Icon URL","description":"URL to the icon of the chain","type":"string"},"liveCampaigns":{"title":"Live Campaigns","description":"Number of campaigns currently live on this chain","type":"number"},"endOfDisputePeriod":{"type":"number"},"explorers":{"type":"array","items":{"type":"object","properties":{"type":{"anyOf":[{"const":"ETHERSCAN","type":"string"},{"const":"BLOCKSCOUT","type":"string"},{"const":"SOLSCAN","type":"string"}]},"url":{"type":"string"},"chainId":{"type":"number"}},"required":["type","url","chainId"]}},"lastClaimsOnchainFetchTimestamp":{"title":"Last Claims Onchain Fetch Timestamp","description":"Timestamp of the last claims onchain fetch","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","icon","liveCampaigns","endOfDisputePeriod","lastClaimsOnchainFetchTimestamp"]},"activePrograms":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"type":"string"},"icon":{"type":"string"}},"required":["id","name"]}},"protocol":{"anyOf":[{"$id":"protocol","title":"Protocol","description":"Protocol","type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"icon":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"description":{"type":"string"},"url":{"type":"string"},"dailyRewards":{"type":"number"},"numberOfLiveCampaigns":{"type":"number"},"opportunityLiveTags":{"type":"array","items":{"type":"string"}},"banner":{"anyOf":[{"type":"string"},{"type":"null"}]},"opportunityBannerLight":{"anyOf":[{"type":"string"},{"type":"null"}]},"opportunityBannerDark":{"anyOf":[{"type":"string"},{"type":"null"}]},"trustData":{"anyOf":[{"type":"object","properties":{"slug":{"type":"string"},"category":{"anyOf":[{"type":"string"},{"type":"null"}]},"audits":{"anyOf":[{"type":"string"},{"type":"null"}]},"audit_links":{"type":"array","items":{"type":"string"}},"audit_note":{"anyOf":[{"type":"string"},{"type":"null"}]},"github":{"type":"array","items":{"type":"string"}},"twitter":{"anyOf":[{"type":"string"},{"type":"null"}]},"listedAt":{"anyOf":[{"type":"number"},{"type":"null"}]},"parentProtocol":{"anyOf":[{"type":"string"},{"type":"null"}]},"tvl":{"anyOf":[{"type":"number"},{"type":"null"}]},"hacks":{"type":"array","items":{"type":"object","properties":{"date":{"type":"number"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"amountUSD":{"anyOf":[{"type":"number"},{"type":"null"}]},"technique":{"anyOf":[{"type":"string"},{"type":"null"}]},"source":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["date","name","amountUSD","technique","source"]}},"syncedAt":{"type":"number"}},"required":["slug","category","audits","audit_links","audit_note","github","twitter","listedAt","parentProtocol","syncedAt"]},{"type":"null"}]}},"required":["id","name","icon","tags","description","url","banner","opportunityBannerLight","opportunityBannerDark","trustData"]},{"type":"null"}]},"aprRecord":{"type":"object","properties":{"cumulated":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"breakdowns":{"type":"array","items":{"type":"object","properties":{"identifier":{"type":"string"},"type":{"anyOf":[{"const":"CAMPAIGN","type":"string"},{"const":"TOKEN","type":"string"},{"const":"PROTOCOL","type":"string"}]},"value":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"distributionType":{"anyOf":[{"const":"DUTCH_AUCTION","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"AAVE_NET_APR","type":"string"},{"const":"ERC4626_APR","type":"string"},{"const":"ERC4626_SPREAD_CAPPED","type":"string"},{"const":"AAVE_V4_NET_APR","type":"string"},{"const":"DEEL_DISTRIBUTION","type":"string"},{"const":"SOFR_SPREAD_RATCHET","type":"string"},{"const":"ERC4626_TARGET_APR_WITH_MERKL","type":"string"},{"const":"TARGET_APR_WITH_MERKL","type":"string"},{"const":"NET_APR","type":"string"},{"const":"BORROW_SUBSIDY","type":"string"},{"const":"NET_APR_WITH_MERKL","type":"string"},{"const":"YIELD_BASIS_PID","type":"string"},{"const":"COMPOSED","type":"string"}]}},"required":["identifier","type","value","timestamp"]}}},"required":["cumulated","timestamp","breakdowns"]},"nativeAprRecord":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"value":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"amount":{"type":"bigint"},"rewardToken":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]},"breakdowns":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"value":{"type":"number"},"amount":{"type":"bigint"},"rewardToken":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]}},"required":["title","value"]}}},"required":["title","value","timestamp"]},"tvlRecord":{"type":"object","properties":{"total":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"breakdowns":{"type":"array","items":{"type":"object","properties":{"identifier":{"type":"string"},"type":{"anyOf":[{"const":"TOKEN","type":"string"},{"const":"PROTOCOL","type":"string"}]},"value":{"type":"number"}},"required":["identifier","type","value"]}}},"required":["total","timestamp","breakdowns"]},"rewardsRecord":{"type":"object","properties":{"total":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"breakdowns":{"type":"array","items":{"type":"object","properties":{"campaignId":{"type":"string"},"value":{"type":"number"},"maxValue":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"token":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]},"amount":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"distributionType":{"anyOf":[{"const":"DUTCH_AUCTION","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"AAVE_NET_APR","type":"string"},{"const":"ERC4626_APR","type":"string"},{"const":"ERC4626_SPREAD_CAPPED","type":"string"},{"const":"AAVE_V4_NET_APR","type":"string"},{"const":"DEEL_DISTRIBUTION","type":"string"},{"const":"SOFR_SPREAD_RATCHET","type":"string"},{"const":"ERC4626_TARGET_APR_WITH_MERKL","type":"string"},{"const":"TARGET_APR_WITH_MERKL","type":"string"},{"const":"NET_APR","type":"string"},{"const":"BORROW_SUBSIDY","type":"string"},{"const":"NET_APR_WITH_MERKL","type":"string"},{"const":"YIELD_BASIS_PID","type":"string"},{"const":"COMPOSED","type":"string"}]},"onChainCampaignId":{"type":"string"}},"required":["campaignId","value","timestamp","token","amount"]}}},"required":["total","timestamp","breakdowns"]}},"required":["id","type","identifier","chainId","name","description","howToSteps","status","action","tags","tvl","apr","dailyRewards","liveCampaigns","lastCampaignCreatedAt","tokens","chain","activePrograms"]},{"type":"object","properties":{"campaigns":{"type":"array","items":{"type":"object","properties":{"id":{"description":"Unique campaign id","type":"string"},"computeChainId":{"description":"Chain ID where campaign data is computed","type":"number"},"distributionChainId":{"description":"Chain ID where rewards are distributed","type":"number"},"campaignId":{"description":"A hash of the campaign, unique per chain. Can be used to identify campaigns across chains","type":"string"},"type":{"description":"Campaign type identifier","type":"string"},"subType":{"description":"Campaign subtype for protocols like Silo, Radiant, Morpho, Dolomite, Compound, Ajna and Euler","anyOf":[{"type":"number"},{"type":"null"}]},"amount":{"description":"Amount of reward token units being distributed by the campaign","type":"string"},"startTimestamp":{"description":"Unix timestamp when the campaign starts","anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]},{"type":"bigint"}]},"endTimestamp":{"description":"Unix timestamp when the campaign ends","anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]},{"type":"bigint"}]},"creatorAddress":{"description":"Ethereum address of the campaign creator","type":"string"},"apr":{"description":"Annual Percentage Rate for this campaign","type":"number"},"dailyRewards":{"description":"Total daily rewards distributed in USD","type":"number"},"creator":{"description":"Campaign creator information","type":"object","properties":{"address":{"description":"Creator's Ethereum address","type":"string"},"tags":{"description":"Tag associated with the creator","type":"array","items":{"type":"string"}},"creatorId":{"nullable":true,"anyOf":[{"description":"Merkl creator ID if registered","type":"string"},{"type":"null"}]}},"required":["address"]},"params":{"description":"Campaign-specific parameters"},"description":{"description":"Campaign description","type":"string"},"chain":{"$id":"chain","title":"Chain","description":"Chain","type":"object","properties":{"id":{"$id":"chainId","title":"Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"name":{"title":"Chain Name","description":"Legible name of the chain","type":"string"},"icon":{"title":"Icon URL","description":"URL to the icon of the chain","type":"string"},"liveCampaigns":{"title":"Live Campaigns","description":"Number of campaigns currently live on this chain","type":"number"},"endOfDisputePeriod":{"type":"number"},"explorers":{"type":"array","items":{"type":"object","properties":{"type":{"anyOf":[{"const":"ETHERSCAN","type":"string"},{"const":"BLOCKSCOUT","type":"string"},{"const":"SOLSCAN","type":"string"}]},"url":{"type":"string"},"chainId":{"type":"number"}},"required":["type","url","chainId"]}},"lastClaimsOnchainFetchTimestamp":{"title":"Last Claims Onchain Fetch Timestamp","description":"Timestamp of the last claims onchain fetch","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","icon","liveCampaigns","endOfDisputePeriod","lastClaimsOnchainFetchTimestamp"]},"rewardTokenId":{"description":"Internal ID of the reward token","type":"string"},"rewardToken":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]},"opportunityId":{"description":"ID of the associated opportunity","type":"string"},"distributionChain":{"$id":"chain","title":"Chain","description":"Chain","type":"object","properties":{"id":{"$id":"chainId","title":"Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"name":{"title":"Chain Name","description":"Legible name of the chain","type":"string"},"icon":{"title":"Icon URL","description":"URL to the icon of the chain","type":"string"},"liveCampaigns":{"title":"Live Campaigns","description":"Number of campaigns currently live on this chain","type":"number"},"endOfDisputePeriod":{"type":"number"},"explorers":{"type":"array","items":{"type":"object","properties":{"type":{"anyOf":[{"const":"ETHERSCAN","type":"string"},{"const":"BLOCKSCOUT","type":"string"},{"const":"SOLSCAN","type":"string"}]},"url":{"type":"string"},"chainId":{"type":"number"}},"required":["type","url","chainId"]}},"lastClaimsOnchainFetchTimestamp":{"title":"Last Claims Onchain Fetch Timestamp","description":"Timestamp of the last claims onchain fetch","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","icon","liveCampaigns","endOfDisputePeriod","lastClaimsOnchainFetchTimestamp"]},"distributionType":{"description":"Type of reward distribution mechanism","anyOf":[{"const":"DUTCH_AUCTION","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"AAVE_NET_APR","type":"string"},{"const":"ERC4626_APR","type":"string"},{"const":"ERC4626_SPREAD_CAPPED","type":"string"},{"const":"AAVE_V4_NET_APR","type":"string"},{"const":"DEEL_DISTRIBUTION","type":"string"},{"const":"SOFR_SPREAD_RATCHET","type":"string"},{"const":"ERC4626_TARGET_APR_WITH_MERKL","type":"string"},{"const":"TARGET_APR_WITH_MERKL","type":"string"},{"const":"NET_APR","type":"string"},{"const":"BORROW_SUBSIDY","type":"string"},{"const":"NET_APR_WITH_MERKL","type":"string"},{"const":"YIELD_BASIS_PID","type":"string"},{"const":"COMPOSED","type":"string"}]},"campaignStatus":{"type":"object","properties":{"campaignId":{"type":"string"},"computedUntil":{"anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}]},"processingStarted":{"anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}]},"status":{"type":"string"},"preComputeProcessingStarted":{"anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}]},"preComputeStatus":{"type":"string"},"delay":{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]},"error":{"type":"string"},"details":{}},"required":["campaignId","computedUntil","processingStarted","status","preComputeProcessingStarted","preComputeStatus"]},"createdAt":{"format":"date","description":"ISO date when the campaign was created","type":"string"},"rootCampaignId":{"description":"ID of the root campaign for hierarchical campaigns","anyOf":[{"type":"string"},{"type":"null"}]},"parentCampaignId":{"description":"ID of the parent campaign for sub-campaigns","anyOf":[{"type":"string"},{"type":"null"}]},"childCampaignIds":{"description":"List of child campaign IDs","type":"array","items":{"type":"string"}},"dailyRewardsBreakdown":{"description":"Daily breakdown of rewards","type":"array","items":{"type":"object","properties":{"campaignId":{"type":"string"},"value":{"type":"number"},"maxValue":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"token":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]},"amount":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"distributionType":{"anyOf":[{"const":"DUTCH_AUCTION","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"AAVE_NET_APR","type":"string"},{"const":"ERC4626_APR","type":"string"},{"const":"ERC4626_SPREAD_CAPPED","type":"string"},{"const":"AAVE_V4_NET_APR","type":"string"},{"const":"DEEL_DISTRIBUTION","type":"string"},{"const":"SOFR_SPREAD_RATCHET","type":"string"},{"const":"ERC4626_TARGET_APR_WITH_MERKL","type":"string"},{"const":"TARGET_APR_WITH_MERKL","type":"string"},{"const":"NET_APR","type":"string"},{"const":"BORROW_SUBSIDY","type":"string"},{"const":"NET_APR_WITH_MERKL","type":"string"},{"const":"YIELD_BASIS_PID","type":"string"},{"const":"COMPOSED","type":"string"}]},"onChainCampaignId":{"type":"string"}},"required":["campaignId","value","timestamp","token","amount"]}},"pauseCompute":{"description":"ISO timestamp when computation was paused","anyOf":[{"type":"string"},{"type":"null"}]},"pausePrecompute":{"description":"Reason for pausing precomputation, or null if not paused","anyOf":[{"type":"string"},{"type":"null"}]},"hasOverrides":{"description":"Whether this campaign has previous config overrides","type":"boolean"},"isPrivate":{"description":"Indicates if the campaign is private","type":"boolean"},"hidden":{"description":"Whether the campaign is hidden from non-test API results","type":"boolean"},"hideLeaderboard":{"description":"Whether leaderboard, ranks and reward breakdowns are hidden for this campaign","type":"boolean"},"campaignEncodingHash":{"description":"Hash of the campaign configuration encoding","type":"string"}},"required":["id","computeChainId","distributionChainId","campaignId","type","amount","startTimestamp","endTimestamp","creatorAddress","params","chain","rewardToken","campaignStatus","createdAt","isPrivate"]}}},"required":["campaigns"]}]}],"content":{"application/json":{"schema":{"anyOf":[{"type":"object","allOf":[{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"identifier":{"type":"string"},"chainId":{"type":"number"},"name":{"type":"string"},"description":{"type":"string"},"howToSteps":{"type":"array","items":{"type":"string"}},"status":{"anyOf":[{"const":"NONE","type":"string"},{"const":"PAST","type":"string"},{"const":"LIVE","type":"string"},{"const":"SOON","type":"string"}]},"action":{"anyOf":[{"const":"POOL","type":"string"},{"const":"HOLD","type":"string"},{"const":"DROP","type":"string"},{"const":"LEND","type":"string"},{"const":"BORROW","type":"string"},{"const":"LONG","type":"string"},{"const":"SHORT","type":"string"},{"const":"SWAP","type":"string"},{"const":"INVALID","type":"string"},{"const":"STAKE","type":"string"}]},"tags":{"type":"array","items":{"type":"string"}},"mainProtocol":{"type":"string"},"depositUrl":{"type":"string"},"depositUrls":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"url":{"type":"string"},"subtitle":{"type":"string"},"icon":{"type":"string"},"priority":{"type":"number"}},"required":["id","title","url","priority"]}},"explorerAddress":{"type":"string"},"hidden":{"type":"boolean"},"tvl":{"type":"number"},"apr":{"type":"number"},"dailyRewards":{"type":"number"},"maxDailyRewards":{"anyOf":[{"type":"number"},{"type":"null"}]},"liveCampaigns":{"type":"number"},"lastCampaignCreatedAt":{"type":"number"},"earliestCampaignStart":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"latestCampaignStart":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"earliestCampaignEnd":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"latestCampaignEnd":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"nativeApr":{"type":"number"},"totalApr":{"type":"number"},"maxApr":{"anyOf":[{"type":"number"},{"type":"null"}]},"liveCampaignsForCreator":{"type":"number"},"soonCampaignsForCreator":{"type":"number"},"pastCampaignsForCreator":{"type":"number"},"distributionType":{"type":"string"},"tokens":{"type":"array","items":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]}},"chain":{"$id":"chain","title":"Chain","description":"Chain","type":"object","properties":{"id":{"$id":"chainId","title":"Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"name":{"title":"Chain Name","description":"Legible name of the chain","type":"string"},"icon":{"title":"Icon URL","description":"URL to the icon of the chain","type":"string"},"liveCampaigns":{"title":"Live Campaigns","description":"Number of campaigns currently live on this chain","type":"number"},"endOfDisputePeriod":{"type":"number"},"explorers":{"type":"array","items":{"type":"object","properties":{"type":{"anyOf":[{"const":"ETHERSCAN","type":"string"},{"const":"BLOCKSCOUT","type":"string"},{"const":"SOLSCAN","type":"string"}]},"url":{"type":"string"},"chainId":{"type":"number"}},"required":["type","url","chainId"]}},"lastClaimsOnchainFetchTimestamp":{"title":"Last Claims Onchain Fetch Timestamp","description":"Timestamp of the last claims onchain fetch","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","icon","liveCampaigns","endOfDisputePeriod","lastClaimsOnchainFetchTimestamp"]},"activePrograms":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"type":"string"},"icon":{"type":"string"}},"required":["id","name"]}},"protocol":{"anyOf":[{"$id":"protocol","title":"Protocol","description":"Protocol","type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"icon":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"description":{"type":"string"},"url":{"type":"string"},"dailyRewards":{"type":"number"},"numberOfLiveCampaigns":{"type":"number"},"opportunityLiveTags":{"type":"array","items":{"type":"string"}},"banner":{"anyOf":[{"type":"string"},{"type":"null"}]},"opportunityBannerLight":{"anyOf":[{"type":"string"},{"type":"null"}]},"opportunityBannerDark":{"anyOf":[{"type":"string"},{"type":"null"}]},"trustData":{"anyOf":[{"type":"object","properties":{"slug":{"type":"string"},"category":{"anyOf":[{"type":"string"},{"type":"null"}]},"audits":{"anyOf":[{"type":"string"},{"type":"null"}]},"audit_links":{"type":"array","items":{"type":"string"}},"audit_note":{"anyOf":[{"type":"string"},{"type":"null"}]},"github":{"type":"array","items":{"type":"string"}},"twitter":{"anyOf":[{"type":"string"},{"type":"null"}]},"listedAt":{"anyOf":[{"type":"number"},{"type":"null"}]},"parentProtocol":{"anyOf":[{"type":"string"},{"type":"null"}]},"tvl":{"anyOf":[{"type":"number"},{"type":"null"}]},"hacks":{"type":"array","items":{"type":"object","properties":{"date":{"type":"number"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"amountUSD":{"anyOf":[{"type":"number"},{"type":"null"}]},"technique":{"anyOf":[{"type":"string"},{"type":"null"}]},"source":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["date","name","amountUSD","technique","source"]}},"syncedAt":{"type":"number"}},"required":["slug","category","audits","audit_links","audit_note","github","twitter","listedAt","parentProtocol","syncedAt"]},{"type":"null"}]}},"required":["id","name","icon","tags","description","url","banner","opportunityBannerLight","opportunityBannerDark","trustData"]},{"type":"null"}]},"aprRecord":{"type":"object","properties":{"cumulated":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"breakdowns":{"type":"array","items":{"type":"object","properties":{"identifier":{"type":"string"},"type":{"anyOf":[{"const":"CAMPAIGN","type":"string"},{"const":"TOKEN","type":"string"},{"const":"PROTOCOL","type":"string"}]},"value":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"distributionType":{"anyOf":[{"const":"DUTCH_AUCTION","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"AAVE_NET_APR","type":"string"},{"const":"ERC4626_APR","type":"string"},{"const":"ERC4626_SPREAD_CAPPED","type":"string"},{"const":"AAVE_V4_NET_APR","type":"string"},{"const":"DEEL_DISTRIBUTION","type":"string"},{"const":"SOFR_SPREAD_RATCHET","type":"string"},{"const":"ERC4626_TARGET_APR_WITH_MERKL","type":"string"},{"const":"TARGET_APR_WITH_MERKL","type":"string"},{"const":"NET_APR","type":"string"},{"const":"BORROW_SUBSIDY","type":"string"},{"const":"NET_APR_WITH_MERKL","type":"string"},{"const":"YIELD_BASIS_PID","type":"string"},{"const":"COMPOSED","type":"string"}]}},"required":["identifier","type","value","timestamp"]}}},"required":["cumulated","timestamp","breakdowns"]},"nativeAprRecord":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"value":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"amount":{"type":"bigint"},"rewardToken":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]},"breakdowns":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"value":{"type":"number"},"amount":{"type":"bigint"},"rewardToken":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]}},"required":["title","value"]}}},"required":["title","value","timestamp"]},"tvlRecord":{"type":"object","properties":{"total":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"breakdowns":{"type":"array","items":{"type":"object","properties":{"identifier":{"type":"string"},"type":{"anyOf":[{"const":"TOKEN","type":"string"},{"const":"PROTOCOL","type":"string"}]},"value":{"type":"number"}},"required":["identifier","type","value"]}}},"required":["total","timestamp","breakdowns"]},"rewardsRecord":{"type":"object","properties":{"total":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"breakdowns":{"type":"array","items":{"type":"object","properties":{"campaignId":{"type":"string"},"value":{"type":"number"},"maxValue":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"token":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]},"amount":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"distributionType":{"anyOf":[{"const":"DUTCH_AUCTION","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"AAVE_NET_APR","type":"string"},{"const":"ERC4626_APR","type":"string"},{"const":"ERC4626_SPREAD_CAPPED","type":"string"},{"const":"AAVE_V4_NET_APR","type":"string"},{"const":"DEEL_DISTRIBUTION","type":"string"},{"const":"SOFR_SPREAD_RATCHET","type":"string"},{"const":"ERC4626_TARGET_APR_WITH_MERKL","type":"string"},{"const":"TARGET_APR_WITH_MERKL","type":"string"},{"const":"NET_APR","type":"string"},{"const":"BORROW_SUBSIDY","type":"string"},{"const":"NET_APR_WITH_MERKL","type":"string"},{"const":"YIELD_BASIS_PID","type":"string"},{"const":"COMPOSED","type":"string"}]},"onChainCampaignId":{"type":"string"}},"required":["campaignId","value","timestamp","token","amount"]}}},"required":["total","timestamp","breakdowns"]}},"required":["id","type","identifier","chainId","name","description","howToSteps","status","action","tags","tvl","apr","dailyRewards","liveCampaigns","lastCampaignCreatedAt","tokens","chain","activePrograms"]},{"type":"object","properties":{"campaigns":{"type":"array","items":{"type":"object","properties":{"id":{"description":"Unique campaign id","type":"string"},"computeChainId":{"description":"Chain ID where campaign data is computed","type":"number"},"distributionChainId":{"description":"Chain ID where rewards are distributed","type":"number"},"campaignId":{"description":"A hash of the campaign, unique per chain. Can be used to identify campaigns across chains","type":"string"},"type":{"description":"Campaign type identifier","type":"string"},"subType":{"description":"Campaign subtype for protocols like Silo, Radiant, Morpho, Dolomite, Compound, Ajna and Euler","anyOf":[{"type":"number"},{"type":"null"}]},"amount":{"description":"Amount of reward token units being distributed by the campaign","type":"string"},"startTimestamp":{"description":"Unix timestamp when the campaign starts","anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]},{"type":"bigint"}]},"endTimestamp":{"description":"Unix timestamp when the campaign ends","anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]},{"type":"bigint"}]},"creatorAddress":{"description":"Ethereum address of the campaign creator","type":"string"},"apr":{"description":"Annual Percentage Rate for this campaign","type":"number"},"dailyRewards":{"description":"Total daily rewards distributed in USD","type":"number"},"creator":{"description":"Campaign creator information","type":"object","properties":{"address":{"description":"Creator's Ethereum address","type":"string"},"tags":{"description":"Tag associated with the creator","type":"array","items":{"type":"string"}},"creatorId":{"nullable":true,"anyOf":[{"description":"Merkl creator ID if registered","type":"string"},{"type":"null"}]}},"required":["address"]},"params":{"description":"Campaign-specific parameters"},"description":{"description":"Campaign description","type":"string"},"chain":{"$id":"chain","title":"Chain","description":"Chain","type":"object","properties":{"id":{"$id":"chainId","title":"Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"name":{"title":"Chain Name","description":"Legible name of the chain","type":"string"},"icon":{"title":"Icon URL","description":"URL to the icon of the chain","type":"string"},"liveCampaigns":{"title":"Live Campaigns","description":"Number of campaigns currently live on this chain","type":"number"},"endOfDisputePeriod":{"type":"number"},"explorers":{"type":"array","items":{"type":"object","properties":{"type":{"anyOf":[{"const":"ETHERSCAN","type":"string"},{"const":"BLOCKSCOUT","type":"string"},{"const":"SOLSCAN","type":"string"}]},"url":{"type":"string"},"chainId":{"type":"number"}},"required":["type","url","chainId"]}},"lastClaimsOnchainFetchTimestamp":{"title":"Last Claims Onchain Fetch Timestamp","description":"Timestamp of the last claims onchain fetch","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","icon","liveCampaigns","endOfDisputePeriod","lastClaimsOnchainFetchTimestamp"]},"rewardTokenId":{"description":"Internal ID of the reward token","type":"string"},"rewardToken":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]},"opportunityId":{"description":"ID of the associated opportunity","type":"string"},"distributionChain":{"$id":"chain","title":"Chain","description":"Chain","type":"object","properties":{"id":{"$id":"chainId","title":"Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"name":{"title":"Chain Name","description":"Legible name of the chain","type":"string"},"icon":{"title":"Icon URL","description":"URL to the icon of the chain","type":"string"},"liveCampaigns":{"title":"Live Campaigns","description":"Number of campaigns currently live on this chain","type":"number"},"endOfDisputePeriod":{"type":"number"},"explorers":{"type":"array","items":{"type":"object","properties":{"type":{"anyOf":[{"const":"ETHERSCAN","type":"string"},{"const":"BLOCKSCOUT","type":"string"},{"const":"SOLSCAN","type":"string"}]},"url":{"type":"string"},"chainId":{"type":"number"}},"required":["type","url","chainId"]}},"lastClaimsOnchainFetchTimestamp":{"title":"Last Claims Onchain Fetch Timestamp","description":"Timestamp of the last claims onchain fetch","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","icon","liveCampaigns","endOfDisputePeriod","lastClaimsOnchainFetchTimestamp"]},"distributionType":{"description":"Type of reward distribution mechanism","anyOf":[{"const":"DUTCH_AUCTION","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"AAVE_NET_APR","type":"string"},{"const":"ERC4626_APR","type":"string"},{"const":"ERC4626_SPREAD_CAPPED","type":"string"},{"const":"AAVE_V4_NET_APR","type":"string"},{"const":"DEEL_DISTRIBUTION","type":"string"},{"const":"SOFR_SPREAD_RATCHET","type":"string"},{"const":"ERC4626_TARGET_APR_WITH_MERKL","type":"string"},{"const":"TARGET_APR_WITH_MERKL","type":"string"},{"const":"NET_APR","type":"string"},{"const":"BORROW_SUBSIDY","type":"string"},{"const":"NET_APR_WITH_MERKL","type":"string"},{"const":"YIELD_BASIS_PID","type":"string"},{"const":"COMPOSED","type":"string"}]},"campaignStatus":{"type":"object","properties":{"campaignId":{"type":"string"},"computedUntil":{"anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}]},"processingStarted":{"anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}]},"status":{"type":"string"},"preComputeProcessingStarted":{"anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}]},"preComputeStatus":{"type":"string"},"delay":{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]},"error":{"type":"string"},"details":{}},"required":["campaignId","computedUntil","processingStarted","status","preComputeProcessingStarted","preComputeStatus"]},"createdAt":{"format":"date","description":"ISO date when the campaign was created","type":"string"},"rootCampaignId":{"description":"ID of the root campaign for hierarchical campaigns","anyOf":[{"type":"string"},{"type":"null"}]},"parentCampaignId":{"description":"ID of the parent campaign for sub-campaigns","anyOf":[{"type":"string"},{"type":"null"}]},"childCampaignIds":{"description":"List of child campaign IDs","type":"array","items":{"type":"string"}},"dailyRewardsBreakdown":{"description":"Daily breakdown of rewards","type":"array","items":{"type":"object","properties":{"campaignId":{"type":"string"},"value":{"type":"number"},"maxValue":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"token":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]},"amount":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"distributionType":{"anyOf":[{"const":"DUTCH_AUCTION","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"AAVE_NET_APR","type":"string"},{"const":"ERC4626_APR","type":"string"},{"const":"ERC4626_SPREAD_CAPPED","type":"string"},{"const":"AAVE_V4_NET_APR","type":"string"},{"const":"DEEL_DISTRIBUTION","type":"string"},{"const":"SOFR_SPREAD_RATCHET","type":"string"},{"const":"ERC4626_TARGET_APR_WITH_MERKL","type":"string"},{"const":"TARGET_APR_WITH_MERKL","type":"string"},{"const":"NET_APR","type":"string"},{"const":"BORROW_SUBSIDY","type":"string"},{"const":"NET_APR_WITH_MERKL","type":"string"},{"const":"YIELD_BASIS_PID","type":"string"},{"const":"COMPOSED","type":"string"}]},"onChainCampaignId":{"type":"string"}},"required":["campaignId","value","timestamp","token","amount"]}},"pauseCompute":{"description":"ISO timestamp when computation was paused","anyOf":[{"type":"string"},{"type":"null"}]},"pausePrecompute":{"description":"Reason for pausing precomputation, or null if not paused","anyOf":[{"type":"string"},{"type":"null"}]},"hasOverrides":{"description":"Whether this campaign has previous config overrides","type":"boolean"},"isPrivate":{"description":"Indicates if the campaign is private","type":"boolean"},"hidden":{"description":"Whether the campaign is hidden from non-test API results","type":"boolean"},"hideLeaderboard":{"description":"Whether leaderboard, ranks and reward breakdowns are hidden for this campaign","type":"boolean"},"campaignEncodingHash":{"description":"Hash of the campaign configuration encoding","type":"string"}},"required":["id","computeChainId","distributionChainId","campaignId","type","amount","startTimestamp","endTimestamp","creatorAddress","params","chain","rewardToken","campaignStatus","createdAt","isPrivate"]}}}}]},{"type":"object","allOf":[{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"identifier":{"type":"string"},"chainId":{"type":"number"},"name":{"type":"string"},"description":{"type":"string"},"howToSteps":{"type":"array","items":{"type":"string"}},"status":{"anyOf":[{"const":"NONE","type":"string"},{"const":"PAST","type":"string"},{"const":"LIVE","type":"string"},{"const":"SOON","type":"string"}]},"action":{"anyOf":[{"const":"POOL","type":"string"},{"const":"HOLD","type":"string"},{"const":"DROP","type":"string"},{"const":"LEND","type":"string"},{"const":"BORROW","type":"string"},{"const":"LONG","type":"string"},{"const":"SHORT","type":"string"},{"const":"SWAP","type":"string"},{"const":"INVALID","type":"string"},{"const":"STAKE","type":"string"}]},"tags":{"type":"array","items":{"type":"string"}},"mainProtocol":{"type":"string"},"depositUrl":{"type":"string"},"depositUrls":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"url":{"type":"string"},"subtitle":{"type":"string"},"icon":{"type":"string"},"priority":{"type":"number"}},"required":["id","title","url","priority"]}},"explorerAddress":{"type":"string"},"hidden":{"type":"boolean"},"tvl":{"type":"number"},"apr":{"type":"number"},"dailyRewards":{"type":"number"},"maxDailyRewards":{"anyOf":[{"type":"number"},{"type":"null"}]},"liveCampaigns":{"type":"number"},"lastCampaignCreatedAt":{"type":"number"},"earliestCampaignStart":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"latestCampaignStart":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"earliestCampaignEnd":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"latestCampaignEnd":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"nativeApr":{"type":"number"},"totalApr":{"type":"number"},"maxApr":{"anyOf":[{"type":"number"},{"type":"null"}]},"liveCampaignsForCreator":{"type":"number"},"soonCampaignsForCreator":{"type":"number"},"pastCampaignsForCreator":{"type":"number"},"distributionType":{"type":"string"},"tokens":{"type":"array","items":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]}},"chain":{"$id":"chain","title":"Chain","description":"Chain","type":"object","properties":{"id":{"$id":"chainId","title":"Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"name":{"title":"Chain Name","description":"Legible name of the chain","type":"string"},"icon":{"title":"Icon URL","description":"URL to the icon of the chain","type":"string"},"liveCampaigns":{"title":"Live Campaigns","description":"Number of campaigns currently live on this chain","type":"number"},"endOfDisputePeriod":{"type":"number"},"explorers":{"type":"array","items":{"type":"object","properties":{"type":{"anyOf":[{"const":"ETHERSCAN","type":"string"},{"const":"BLOCKSCOUT","type":"string"},{"const":"SOLSCAN","type":"string"}]},"url":{"type":"string"},"chainId":{"type":"number"}},"required":["type","url","chainId"]}},"lastClaimsOnchainFetchTimestamp":{"title":"Last Claims Onchain Fetch Timestamp","description":"Timestamp of the last claims onchain fetch","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","icon","liveCampaigns","endOfDisputePeriod","lastClaimsOnchainFetchTimestamp"]},"activePrograms":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"type":"string"},"icon":{"type":"string"}},"required":["id","name"]}},"protocol":{"anyOf":[{"$id":"protocol","title":"Protocol","description":"Protocol","type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"icon":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"description":{"type":"string"},"url":{"type":"string"},"dailyRewards":{"type":"number"},"numberOfLiveCampaigns":{"type":"number"},"opportunityLiveTags":{"type":"array","items":{"type":"string"}},"banner":{"anyOf":[{"type":"string"},{"type":"null"}]},"opportunityBannerLight":{"anyOf":[{"type":"string"},{"type":"null"}]},"opportunityBannerDark":{"anyOf":[{"type":"string"},{"type":"null"}]},"trustData":{"anyOf":[{"type":"object","properties":{"slug":{"type":"string"},"category":{"anyOf":[{"type":"string"},{"type":"null"}]},"audits":{"anyOf":[{"type":"string"},{"type":"null"}]},"audit_links":{"type":"array","items":{"type":"string"}},"audit_note":{"anyOf":[{"type":"string"},{"type":"null"}]},"github":{"type":"array","items":{"type":"string"}},"twitter":{"anyOf":[{"type":"string"},{"type":"null"}]},"listedAt":{"anyOf":[{"type":"number"},{"type":"null"}]},"parentProtocol":{"anyOf":[{"type":"string"},{"type":"null"}]},"tvl":{"anyOf":[{"type":"number"},{"type":"null"}]},"hacks":{"type":"array","items":{"type":"object","properties":{"date":{"type":"number"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"amountUSD":{"anyOf":[{"type":"number"},{"type":"null"}]},"technique":{"anyOf":[{"type":"string"},{"type":"null"}]},"source":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["date","name","amountUSD","technique","source"]}},"syncedAt":{"type":"number"}},"required":["slug","category","audits","audit_links","audit_note","github","twitter","listedAt","parentProtocol","syncedAt"]},{"type":"null"}]}},"required":["id","name","icon","tags","description","url","banner","opportunityBannerLight","opportunityBannerDark","trustData"]},{"type":"null"}]},"aprRecord":{"type":"object","properties":{"cumulated":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"breakdowns":{"type":"array","items":{"type":"object","properties":{"identifier":{"type":"string"},"type":{"anyOf":[{"const":"CAMPAIGN","type":"string"},{"const":"TOKEN","type":"string"},{"const":"PROTOCOL","type":"string"}]},"value":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"distributionType":{"anyOf":[{"const":"DUTCH_AUCTION","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"AAVE_NET_APR","type":"string"},{"const":"ERC4626_APR","type":"string"},{"const":"ERC4626_SPREAD_CAPPED","type":"string"},{"const":"AAVE_V4_NET_APR","type":"string"},{"const":"DEEL_DISTRIBUTION","type":"string"},{"const":"SOFR_SPREAD_RATCHET","type":"string"},{"const":"ERC4626_TARGET_APR_WITH_MERKL","type":"string"},{"const":"TARGET_APR_WITH_MERKL","type":"string"},{"const":"NET_APR","type":"string"},{"const":"BORROW_SUBSIDY","type":"string"},{"const":"NET_APR_WITH_MERKL","type":"string"},{"const":"YIELD_BASIS_PID","type":"string"},{"const":"COMPOSED","type":"string"}]}},"required":["identifier","type","value","timestamp"]}}},"required":["cumulated","timestamp","breakdowns"]},"nativeAprRecord":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"value":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"amount":{"type":"bigint"},"rewardToken":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]},"breakdowns":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"value":{"type":"number"},"amount":{"type":"bigint"},"rewardToken":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]}},"required":["title","value"]}}},"required":["title","value","timestamp"]},"tvlRecord":{"type":"object","properties":{"total":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"breakdowns":{"type":"array","items":{"type":"object","properties":{"identifier":{"type":"string"},"type":{"anyOf":[{"const":"TOKEN","type":"string"},{"const":"PROTOCOL","type":"string"}]},"value":{"type":"number"}},"required":["identifier","type","value"]}}},"required":["total","timestamp","breakdowns"]},"rewardsRecord":{"type":"object","properties":{"total":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"breakdowns":{"type":"array","items":{"type":"object","properties":{"campaignId":{"type":"string"},"value":{"type":"number"},"maxValue":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"token":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]},"amount":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"distributionType":{"anyOf":[{"const":"DUTCH_AUCTION","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"AAVE_NET_APR","type":"string"},{"const":"ERC4626_APR","type":"string"},{"const":"ERC4626_SPREAD_CAPPED","type":"string"},{"const":"AAVE_V4_NET_APR","type":"string"},{"const":"DEEL_DISTRIBUTION","type":"string"},{"const":"SOFR_SPREAD_RATCHET","type":"string"},{"const":"ERC4626_TARGET_APR_WITH_MERKL","type":"string"},{"const":"TARGET_APR_WITH_MERKL","type":"string"},{"const":"NET_APR","type":"string"},{"const":"BORROW_SUBSIDY","type":"string"},{"const":"NET_APR_WITH_MERKL","type":"string"},{"const":"YIELD_BASIS_PID","type":"string"},{"const":"COMPOSED","type":"string"}]},"onChainCampaignId":{"type":"string"}},"required":["campaignId","value","timestamp","token","amount"]}}},"required":["total","timestamp","breakdowns"]}},"required":["id","type","identifier","chainId","name","description","howToSteps","status","action","tags","tvl","apr","dailyRewards","liveCampaigns","lastCampaignCreatedAt","tokens","chain","activePrograms"]},{"type":"object","properties":{"campaigns":{"type":"array","items":{"type":"object","properties":{"id":{"description":"Unique campaign id","type":"string"},"computeChainId":{"description":"Chain ID where campaign data is computed","type":"number"},"distributionChainId":{"description":"Chain ID where rewards are distributed","type":"number"},"campaignId":{"description":"A hash of the campaign, unique per chain. Can be used to identify campaigns across chains","type":"string"},"type":{"description":"Campaign type identifier","type":"string"},"subType":{"description":"Campaign subtype for protocols like Silo, Radiant, Morpho, Dolomite, Compound, Ajna and Euler","anyOf":[{"type":"number"},{"type":"null"}]},"amount":{"description":"Amount of reward token units being distributed by the campaign","type":"string"},"startTimestamp":{"description":"Unix timestamp when the campaign starts","anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]},{"type":"bigint"}]},"endTimestamp":{"description":"Unix timestamp when the campaign ends","anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]},{"type":"bigint"}]},"creatorAddress":{"description":"Ethereum address of the campaign creator","type":"string"},"apr":{"description":"Annual Percentage Rate for this campaign","type":"number"},"dailyRewards":{"description":"Total daily rewards distributed in USD","type":"number"},"creator":{"description":"Campaign creator information","type":"object","properties":{"address":{"description":"Creator's Ethereum address","type":"string"},"tags":{"description":"Tag associated with the creator","type":"array","items":{"type":"string"}},"creatorId":{"nullable":true,"anyOf":[{"description":"Merkl creator ID if registered","type":"string"},{"type":"null"}]}},"required":["address"]},"params":{"description":"Campaign-specific parameters"},"description":{"description":"Campaign description","type":"string"},"chain":{"$id":"chain","title":"Chain","description":"Chain","type":"object","properties":{"id":{"$id":"chainId","title":"Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"name":{"title":"Chain Name","description":"Legible name of the chain","type":"string"},"icon":{"title":"Icon URL","description":"URL to the icon of the chain","type":"string"},"liveCampaigns":{"title":"Live Campaigns","description":"Number of campaigns currently live on this chain","type":"number"},"endOfDisputePeriod":{"type":"number"},"explorers":{"type":"array","items":{"type":"object","properties":{"type":{"anyOf":[{"const":"ETHERSCAN","type":"string"},{"const":"BLOCKSCOUT","type":"string"},{"const":"SOLSCAN","type":"string"}]},"url":{"type":"string"},"chainId":{"type":"number"}},"required":["type","url","chainId"]}},"lastClaimsOnchainFetchTimestamp":{"title":"Last Claims Onchain Fetch Timestamp","description":"Timestamp of the last claims onchain fetch","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","icon","liveCampaigns","endOfDisputePeriod","lastClaimsOnchainFetchTimestamp"]},"rewardTokenId":{"description":"Internal ID of the reward token","type":"string"},"rewardToken":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]},"opportunityId":{"description":"ID of the associated opportunity","type":"string"},"distributionChain":{"$id":"chain","title":"Chain","description":"Chain","type":"object","properties":{"id":{"$id":"chainId","title":"Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"name":{"title":"Chain Name","description":"Legible name of the chain","type":"string"},"icon":{"title":"Icon URL","description":"URL to the icon of the chain","type":"string"},"liveCampaigns":{"title":"Live Campaigns","description":"Number of campaigns currently live on this chain","type":"number"},"endOfDisputePeriod":{"type":"number"},"explorers":{"type":"array","items":{"type":"object","properties":{"type":{"anyOf":[{"const":"ETHERSCAN","type":"string"},{"const":"BLOCKSCOUT","type":"string"},{"const":"SOLSCAN","type":"string"}]},"url":{"type":"string"},"chainId":{"type":"number"}},"required":["type","url","chainId"]}},"lastClaimsOnchainFetchTimestamp":{"title":"Last Claims Onchain Fetch Timestamp","description":"Timestamp of the last claims onchain fetch","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","icon","liveCampaigns","endOfDisputePeriod","lastClaimsOnchainFetchTimestamp"]},"distributionType":{"description":"Type of reward distribution mechanism","anyOf":[{"const":"DUTCH_AUCTION","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"AAVE_NET_APR","type":"string"},{"const":"ERC4626_APR","type":"string"},{"const":"ERC4626_SPREAD_CAPPED","type":"string"},{"const":"AAVE_V4_NET_APR","type":"string"},{"const":"DEEL_DISTRIBUTION","type":"string"},{"const":"SOFR_SPREAD_RATCHET","type":"string"},{"const":"ERC4626_TARGET_APR_WITH_MERKL","type":"string"},{"const":"TARGET_APR_WITH_MERKL","type":"string"},{"const":"NET_APR","type":"string"},{"const":"BORROW_SUBSIDY","type":"string"},{"const":"NET_APR_WITH_MERKL","type":"string"},{"const":"YIELD_BASIS_PID","type":"string"},{"const":"COMPOSED","type":"string"}]},"campaignStatus":{"type":"object","properties":{"campaignId":{"type":"string"},"computedUntil":{"anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}]},"processingStarted":{"anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}]},"status":{"type":"string"},"preComputeProcessingStarted":{"anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}]},"preComputeStatus":{"type":"string"},"delay":{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]},"error":{"type":"string"},"details":{}},"required":["campaignId","computedUntil","processingStarted","status","preComputeProcessingStarted","preComputeStatus"]},"createdAt":{"format":"date","description":"ISO date when the campaign was created","type":"string"},"rootCampaignId":{"description":"ID of the root campaign for hierarchical campaigns","anyOf":[{"type":"string"},{"type":"null"}]},"parentCampaignId":{"description":"ID of the parent campaign for sub-campaigns","anyOf":[{"type":"string"},{"type":"null"}]},"childCampaignIds":{"description":"List of child campaign IDs","type":"array","items":{"type":"string"}},"dailyRewardsBreakdown":{"description":"Daily breakdown of rewards","type":"array","items":{"type":"object","properties":{"campaignId":{"type":"string"},"value":{"type":"number"},"maxValue":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"token":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]},"amount":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"distributionType":{"anyOf":[{"const":"DUTCH_AUCTION","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"AAVE_NET_APR","type":"string"},{"const":"ERC4626_APR","type":"string"},{"const":"ERC4626_SPREAD_CAPPED","type":"string"},{"const":"AAVE_V4_NET_APR","type":"string"},{"const":"DEEL_DISTRIBUTION","type":"string"},{"const":"SOFR_SPREAD_RATCHET","type":"string"},{"const":"ERC4626_TARGET_APR_WITH_MERKL","type":"string"},{"const":"TARGET_APR_WITH_MERKL","type":"string"},{"const":"NET_APR","type":"string"},{"const":"BORROW_SUBSIDY","type":"string"},{"const":"NET_APR_WITH_MERKL","type":"string"},{"const":"YIELD_BASIS_PID","type":"string"},{"const":"COMPOSED","type":"string"}]},"onChainCampaignId":{"type":"string"}},"required":["campaignId","value","timestamp","token","amount"]}},"pauseCompute":{"description":"ISO timestamp when computation was paused","anyOf":[{"type":"string"},{"type":"null"}]},"pausePrecompute":{"description":"Reason for pausing precomputation, or null if not paused","anyOf":[{"type":"string"},{"type":"null"}]},"hasOverrides":{"description":"Whether this campaign has previous config overrides","type":"boolean"},"isPrivate":{"description":"Indicates if the campaign is private","type":"boolean"},"hidden":{"description":"Whether the campaign is hidden from non-test API results","type":"boolean"},"hideLeaderboard":{"description":"Whether leaderboard, ranks and reward breakdowns are hidden for this campaign","type":"boolean"},"campaignEncodingHash":{"description":"Hash of the campaign configuration encoding","type":"string"}},"required":["id","computeChainId","distributionChainId","campaignId","type","amount","startTimestamp","endTimestamp","creatorAddress","params","chain","rewardToken","campaignStatus","createdAt","isPrivate"]}}},"required":["campaigns"]}]}]}}}},"404":{"description":"Response for status 404","properties":{"type":{"default":"/errors/not-found","type":"string"},"title":{"default":"Not Found","type":"string"},"status":{"default":404,"type":"number"},"detail":{"default":"Not Found","type":"string"}},"required":["type","title","status","detail"],"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"/errors/not-found","type":"string"},"title":{"default":"Not Found","type":"string"},"status":{"default":404,"type":"number"},"detail":{"default":"Not Found","type":"string"}},"required":["type","title","status","detail"]}}}},"500":{"description":"Response for status 500","properties":{"type":{"description":"URI reference identifying the problem type","type":"string"},"title":{"description":"Short, stable, human-readable summary","type":"string"},"status":{"description":"HTTP status code","type":"number"},"detail":{"description":"Human-readable explanation specific to this occurrence","type":"string"}},"required":["type","title","status","detail"],"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"description":"URI reference identifying the problem type","type":"string"},"title":{"description":"Short, stable, human-readable summary","type":"string"},"status":{"description":"HTTP status code","type":"number"},"detail":{"description":"Human-readable explanation specific to this occurrence","type":"string"}},"required":["type","title","status","detail"]}}}}},"operationId":"getV4OpportunitiesById"}},"/v4/opportunities/{id}/storing-ids":{"get":{"tags":["Opportunities"],"description":"Get the storingId(s) backing an opportunity, grouped by root campaign. Returns one tree per root campaign matching the requested statuses (default `LIVE`; past root campaigns are excluded). Each node lists its own storingIds, with sub-campaigns nested under `subCampaigns`. Sub-campaigns of a matching root are not status-filtered. The same storingId may appear in more than one tree. Stateless campaigns return an empty `storingIds` array.","parameters":[{"name":"id","in":"path","required":true,"schema":{"pattern":"(([0-9]*)-([0-9A-Z]*)-(0x([0-9A-Za-z])*))|([0-9]{1,20})","description":"**Opportunity ID** (path-only). Two accepted forms: (1) internal numeric hash, ≤20 digits (e.g. `7673870997270712040`), or (2) composite `{chainId}-{type}-{identifier}` (e.g. `1-ERC20LOGPROCESSOR-0x35Cbe8542E70fa2f7F9cDF129F19e593F4b4f560`). The composite form is path-only — query filters (`?id=`, `?opportunityId=`) only accept the numeric form. NOT a campaign ID. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"campaignStatus","in":"query","required":false,"schema":{"description":"Comma-separated statuses to include at the root campaign level (`LIVE`, `PAST`, `SOON`). Default `LIVE` excludes ended root campaigns. Sub-campaigns under a kept root are not status-filtered.","default":"LIVE","type":"RegExp","source":"^(LIVE|PAST|SOON)(,(LIVE|PAST|SOON)){0,2}$","flags":""}}],"responses":{"200":{"description":"Response for status 200","items":{"$id":"T4","type":"object","properties":{"campaignId":{"description":"On-chain campaign id","type":"string"},"storingIds":{"description":"Indexing storingId(s) owned by this campaign only (not children's).","type":"array","items":{"type":"string"}},"subCampaigns":{"description":"Direct sub-campaign nodes; [] for leaves. Always present.","type":"array","items":{"$ref":"T4"}}},"required":["campaignId","storingIds","subCampaigns"]},"content":{"application/json":{"schema":{"type":"array","items":{"$id":"T4","type":"object","properties":{"campaignId":{"description":"On-chain campaign id","type":"string"},"storingIds":{"description":"Indexing storingId(s) owned by this campaign only (not children's).","type":"array","items":{"type":"string"}},"subCampaigns":{"description":"Direct sub-campaign nodes; [] for leaves. Always present.","type":"array","items":{"$ref":"T4"}}},"required":["campaignId","storingIds","subCampaigns"]}}}}},"404":{"description":"Response for status 404","properties":{"type":{"default":"/errors/not-found","type":"string"},"title":{"default":"Not Found","type":"string"},"status":{"default":404,"type":"number"},"detail":{"default":"Not Found","type":"string"}},"required":["type","title","status","detail"],"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"/errors/not-found","type":"string"},"title":{"default":"Not Found","type":"string"},"status":{"default":404,"type":"number"},"detail":{"default":"Not Found","type":"string"}},"required":["type","title","status","detail"]}}}},"500":{"description":"Response for status 500","properties":{"type":{"description":"URI reference identifying the problem type","type":"string"},"title":{"description":"Short, stable, human-readable summary","type":"string"},"status":{"description":"HTTP status code","type":"number"},"detail":{"description":"Human-readable explanation specific to this occurrence","type":"string"}},"required":["type","title","status","detail"],"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"description":"URI reference identifying the problem type","type":"string"},"title":{"description":"Short, stable, human-readable summary","type":"string"},"status":{"description":"HTTP status code","type":"number"},"detail":{"description":"Human-readable explanation specific to this occurrence","type":"string"}},"required":["type","title","status","detail"]}}}}},"operationId":"getV4OpportunitiesByIdStoring-ids"}},"/v4/opportunities/{id}/campaigns":{"get":{"tags":["Opportunities"],"description":"Get a unique opportunity by ID (hash) or composite identifier (chainId-type-identifier), including related campaigns. Use query parameters to filter results.","parameters":[{"name":"id","in":"path","required":true,"schema":{"pattern":"(([0-9]*)-([0-9A-Z]*)-(0x([0-9A-Za-z])*))|([0-9]{1,20})","description":"**Opportunity ID** (path-only). Two accepted forms: (1) internal numeric hash, ≤20 digits (e.g. `7673870997270712040`), or (2) composite `{chainId}-{type}-{identifier}` (e.g. `1-ERC20LOGPROCESSOR-0x35Cbe8542E70fa2f7F9cDF129F19e593F4b4f560`). The composite form is path-only — query filters (`?id=`, `?opportunityId=`) only accept the numeric form. NOT a campaign ID. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"test","in":"query","required":false,"schema":{"description":"Include test campaigns","type":"boolean"}},{"name":"point","in":"query","required":false,"schema":{"description":"Include point campaigns","type":"boolean"}},{"name":"tokenTypes","in":"query","required":false,"schema":{"description":"Filter by token type. Use POINT to include point campaigns and PRETGE to include preTGE campaigns.","type":"array","items":{"anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]}}},{"name":"campaigns","in":"query","required":false,"schema":{"description":"Include campaign data. Will slow down the request","default":false,"type":"boolean"}},{"name":"excludeSubCampaigns","in":"query","required":false,"schema":{"description":"Exclude subcampaigns from the results.","default":false,"type":"boolean"}}],"responses":{"200":{"description":"Response for status 200","allOf":[{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"identifier":{"type":"string"},"chainId":{"type":"number"},"name":{"type":"string"},"description":{"type":"string"},"howToSteps":{"type":"array","items":{"type":"string"}},"status":{"anyOf":[{"const":"NONE","type":"string"},{"const":"PAST","type":"string"},{"const":"LIVE","type":"string"},{"const":"SOON","type":"string"}]},"action":{"anyOf":[{"const":"POOL","type":"string"},{"const":"HOLD","type":"string"},{"const":"DROP","type":"string"},{"const":"LEND","type":"string"},{"const":"BORROW","type":"string"},{"const":"LONG","type":"string"},{"const":"SHORT","type":"string"},{"const":"SWAP","type":"string"},{"const":"INVALID","type":"string"},{"const":"STAKE","type":"string"}]},"tags":{"type":"array","items":{"type":"string"}},"mainProtocol":{"type":"string"},"depositUrl":{"type":"string"},"depositUrls":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"url":{"type":"string"},"subtitle":{"type":"string"},"icon":{"type":"string"},"priority":{"type":"number"}},"required":["id","title","url","priority"]}},"explorerAddress":{"type":"string"},"hidden":{"type":"boolean"},"tvl":{"type":"number"},"apr":{"type":"number"},"dailyRewards":{"type":"number"},"maxDailyRewards":{"anyOf":[{"type":"number"},{"type":"null"}]},"liveCampaigns":{"type":"number"},"lastCampaignCreatedAt":{"type":"number"},"earliestCampaignStart":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"latestCampaignStart":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"earliestCampaignEnd":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"latestCampaignEnd":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"nativeApr":{"type":"number"},"totalApr":{"type":"number"},"maxApr":{"anyOf":[{"type":"number"},{"type":"null"}]},"liveCampaignsForCreator":{"type":"number"},"soonCampaignsForCreator":{"type":"number"},"pastCampaignsForCreator":{"type":"number"},"distributionType":{"type":"string"},"tokens":{"type":"array","items":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]}},"chain":{"$id":"chain","title":"Chain","description":"Chain","type":"object","properties":{"id":{"$id":"chainId","title":"Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"name":{"title":"Chain Name","description":"Legible name of the chain","type":"string"},"icon":{"title":"Icon URL","description":"URL to the icon of the chain","type":"string"},"liveCampaigns":{"title":"Live Campaigns","description":"Number of campaigns currently live on this chain","type":"number"},"endOfDisputePeriod":{"type":"number"},"explorers":{"type":"array","items":{"type":"object","properties":{"type":{"anyOf":[{"const":"ETHERSCAN","type":"string"},{"const":"BLOCKSCOUT","type":"string"},{"const":"SOLSCAN","type":"string"}]},"url":{"type":"string"},"chainId":{"type":"number"}},"required":["type","url","chainId"]}},"lastClaimsOnchainFetchTimestamp":{"title":"Last Claims Onchain Fetch Timestamp","description":"Timestamp of the last claims onchain fetch","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","icon","liveCampaigns","endOfDisputePeriod","lastClaimsOnchainFetchTimestamp"]},"activePrograms":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"type":"string"},"icon":{"type":"string"}},"required":["id","name"]}},"protocol":{"anyOf":[{"$id":"protocol","title":"Protocol","description":"Protocol","type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"icon":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"description":{"type":"string"},"url":{"type":"string"},"dailyRewards":{"type":"number"},"numberOfLiveCampaigns":{"type":"number"},"opportunityLiveTags":{"type":"array","items":{"type":"string"}},"banner":{"anyOf":[{"type":"string"},{"type":"null"}]},"opportunityBannerLight":{"anyOf":[{"type":"string"},{"type":"null"}]},"opportunityBannerDark":{"anyOf":[{"type":"string"},{"type":"null"}]},"trustData":{"anyOf":[{"type":"object","properties":{"slug":{"type":"string"},"category":{"anyOf":[{"type":"string"},{"type":"null"}]},"audits":{"anyOf":[{"type":"string"},{"type":"null"}]},"audit_links":{"type":"array","items":{"type":"string"}},"audit_note":{"anyOf":[{"type":"string"},{"type":"null"}]},"github":{"type":"array","items":{"type":"string"}},"twitter":{"anyOf":[{"type":"string"},{"type":"null"}]},"listedAt":{"anyOf":[{"type":"number"},{"type":"null"}]},"parentProtocol":{"anyOf":[{"type":"string"},{"type":"null"}]},"tvl":{"anyOf":[{"type":"number"},{"type":"null"}]},"hacks":{"type":"array","items":{"type":"object","properties":{"date":{"type":"number"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"amountUSD":{"anyOf":[{"type":"number"},{"type":"null"}]},"technique":{"anyOf":[{"type":"string"},{"type":"null"}]},"source":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["date","name","amountUSD","technique","source"]}},"syncedAt":{"type":"number"}},"required":["slug","category","audits","audit_links","audit_note","github","twitter","listedAt","parentProtocol","syncedAt"]},{"type":"null"}]}},"required":["id","name","icon","tags","description","url","banner","opportunityBannerLight","opportunityBannerDark","trustData"]},{"type":"null"}]},"aprRecord":{"type":"object","properties":{"cumulated":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"breakdowns":{"type":"array","items":{"type":"object","properties":{"identifier":{"type":"string"},"type":{"anyOf":[{"const":"CAMPAIGN","type":"string"},{"const":"TOKEN","type":"string"},{"const":"PROTOCOL","type":"string"}]},"value":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"distributionType":{"anyOf":[{"const":"DUTCH_AUCTION","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"AAVE_NET_APR","type":"string"},{"const":"ERC4626_APR","type":"string"},{"const":"ERC4626_SPREAD_CAPPED","type":"string"},{"const":"AAVE_V4_NET_APR","type":"string"},{"const":"DEEL_DISTRIBUTION","type":"string"},{"const":"SOFR_SPREAD_RATCHET","type":"string"},{"const":"ERC4626_TARGET_APR_WITH_MERKL","type":"string"},{"const":"TARGET_APR_WITH_MERKL","type":"string"},{"const":"NET_APR","type":"string"},{"const":"BORROW_SUBSIDY","type":"string"},{"const":"NET_APR_WITH_MERKL","type":"string"},{"const":"YIELD_BASIS_PID","type":"string"},{"const":"COMPOSED","type":"string"}]}},"required":["identifier","type","value","timestamp"]}}},"required":["cumulated","timestamp","breakdowns"]},"nativeAprRecord":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"value":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"amount":{"type":"bigint"},"rewardToken":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]},"breakdowns":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"value":{"type":"number"},"amount":{"type":"bigint"},"rewardToken":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]}},"required":["title","value"]}}},"required":["title","value","timestamp"]},"tvlRecord":{"type":"object","properties":{"total":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"breakdowns":{"type":"array","items":{"type":"object","properties":{"identifier":{"type":"string"},"type":{"anyOf":[{"const":"TOKEN","type":"string"},{"const":"PROTOCOL","type":"string"}]},"value":{"type":"number"}},"required":["identifier","type","value"]}}},"required":["total","timestamp","breakdowns"]},"rewardsRecord":{"type":"object","properties":{"total":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"breakdowns":{"type":"array","items":{"type":"object","properties":{"campaignId":{"type":"string"},"value":{"type":"number"},"maxValue":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"token":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]},"amount":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"distributionType":{"anyOf":[{"const":"DUTCH_AUCTION","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"AAVE_NET_APR","type":"string"},{"const":"ERC4626_APR","type":"string"},{"const":"ERC4626_SPREAD_CAPPED","type":"string"},{"const":"AAVE_V4_NET_APR","type":"string"},{"const":"DEEL_DISTRIBUTION","type":"string"},{"const":"SOFR_SPREAD_RATCHET","type":"string"},{"const":"ERC4626_TARGET_APR_WITH_MERKL","type":"string"},{"const":"TARGET_APR_WITH_MERKL","type":"string"},{"const":"NET_APR","type":"string"},{"const":"BORROW_SUBSIDY","type":"string"},{"const":"NET_APR_WITH_MERKL","type":"string"},{"const":"YIELD_BASIS_PID","type":"string"},{"const":"COMPOSED","type":"string"}]},"onChainCampaignId":{"type":"string"}},"required":["campaignId","value","timestamp","token","amount"]}}},"required":["total","timestamp","breakdowns"]}},"required":["id","type","identifier","chainId","name","description","howToSteps","status","action","tags","tvl","apr","dailyRewards","liveCampaigns","lastCampaignCreatedAt","tokens","chain","activePrograms"]},{"type":"object","properties":{"campaigns":{"type":"array","items":{"type":"object","properties":{"id":{"description":"Unique campaign id","type":"string"},"computeChainId":{"description":"Chain ID where campaign data is computed","type":"number"},"distributionChainId":{"description":"Chain ID where rewards are distributed","type":"number"},"campaignId":{"description":"A hash of the campaign, unique per chain. Can be used to identify campaigns across chains","type":"string"},"type":{"description":"Campaign type identifier","type":"string"},"subType":{"description":"Campaign subtype for protocols like Silo, Radiant, Morpho, Dolomite, Compound, Ajna and Euler","anyOf":[{"type":"number"},{"type":"null"}]},"amount":{"description":"Amount of reward token units being distributed by the campaign","type":"string"},"startTimestamp":{"description":"Unix timestamp when the campaign starts","anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]},{"type":"bigint"}]},"endTimestamp":{"description":"Unix timestamp when the campaign ends","anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]},{"type":"bigint"}]},"creatorAddress":{"description":"Ethereum address of the campaign creator","type":"string"},"apr":{"description":"Annual Percentage Rate for this campaign","type":"number"},"dailyRewards":{"description":"Total daily rewards distributed in USD","type":"number"},"creator":{"description":"Campaign creator information","type":"object","properties":{"address":{"description":"Creator's Ethereum address","type":"string"},"tags":{"description":"Tag associated with the creator","type":"array","items":{"type":"string"}},"creatorId":{"nullable":true,"anyOf":[{"description":"Merkl creator ID if registered","type":"string"},{"type":"null"}]}},"required":["address"]},"params":{"description":"Campaign-specific parameters"},"description":{"description":"Campaign description","type":"string"},"chain":{"$id":"chain","title":"Chain","description":"Chain","type":"object","properties":{"id":{"$id":"chainId","title":"Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"name":{"title":"Chain Name","description":"Legible name of the chain","type":"string"},"icon":{"title":"Icon URL","description":"URL to the icon of the chain","type":"string"},"liveCampaigns":{"title":"Live Campaigns","description":"Number of campaigns currently live on this chain","type":"number"},"endOfDisputePeriod":{"type":"number"},"explorers":{"type":"array","items":{"type":"object","properties":{"type":{"anyOf":[{"const":"ETHERSCAN","type":"string"},{"const":"BLOCKSCOUT","type":"string"},{"const":"SOLSCAN","type":"string"}]},"url":{"type":"string"},"chainId":{"type":"number"}},"required":["type","url","chainId"]}},"lastClaimsOnchainFetchTimestamp":{"title":"Last Claims Onchain Fetch Timestamp","description":"Timestamp of the last claims onchain fetch","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","icon","liveCampaigns","endOfDisputePeriod","lastClaimsOnchainFetchTimestamp"]},"rewardTokenId":{"description":"Internal ID of the reward token","type":"string"},"rewardToken":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]},"opportunityId":{"description":"ID of the associated opportunity","type":"string"},"distributionChain":{"$id":"chain","title":"Chain","description":"Chain","type":"object","properties":{"id":{"$id":"chainId","title":"Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"name":{"title":"Chain Name","description":"Legible name of the chain","type":"string"},"icon":{"title":"Icon URL","description":"URL to the icon of the chain","type":"string"},"liveCampaigns":{"title":"Live Campaigns","description":"Number of campaigns currently live on this chain","type":"number"},"endOfDisputePeriod":{"type":"number"},"explorers":{"type":"array","items":{"type":"object","properties":{"type":{"anyOf":[{"const":"ETHERSCAN","type":"string"},{"const":"BLOCKSCOUT","type":"string"},{"const":"SOLSCAN","type":"string"}]},"url":{"type":"string"},"chainId":{"type":"number"}},"required":["type","url","chainId"]}},"lastClaimsOnchainFetchTimestamp":{"title":"Last Claims Onchain Fetch Timestamp","description":"Timestamp of the last claims onchain fetch","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","icon","liveCampaigns","endOfDisputePeriod","lastClaimsOnchainFetchTimestamp"]},"distributionType":{"description":"Type of reward distribution mechanism","anyOf":[{"const":"DUTCH_AUCTION","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"AAVE_NET_APR","type":"string"},{"const":"ERC4626_APR","type":"string"},{"const":"ERC4626_SPREAD_CAPPED","type":"string"},{"const":"AAVE_V4_NET_APR","type":"string"},{"const":"DEEL_DISTRIBUTION","type":"string"},{"const":"SOFR_SPREAD_RATCHET","type":"string"},{"const":"ERC4626_TARGET_APR_WITH_MERKL","type":"string"},{"const":"TARGET_APR_WITH_MERKL","type":"string"},{"const":"NET_APR","type":"string"},{"const":"BORROW_SUBSIDY","type":"string"},{"const":"NET_APR_WITH_MERKL","type":"string"},{"const":"YIELD_BASIS_PID","type":"string"},{"const":"COMPOSED","type":"string"}]},"campaignStatus":{"type":"object","properties":{"campaignId":{"type":"string"},"computedUntil":{"anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}]},"processingStarted":{"anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}]},"status":{"type":"string"},"preComputeProcessingStarted":{"anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}]},"preComputeStatus":{"type":"string"},"delay":{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]},"error":{"type":"string"},"details":{}},"required":["campaignId","computedUntil","processingStarted","status","preComputeProcessingStarted","preComputeStatus"]},"createdAt":{"format":"date","description":"ISO date when the campaign was created","type":"string"},"rootCampaignId":{"description":"ID of the root campaign for hierarchical campaigns","anyOf":[{"type":"string"},{"type":"null"}]},"parentCampaignId":{"description":"ID of the parent campaign for sub-campaigns","anyOf":[{"type":"string"},{"type":"null"}]},"childCampaignIds":{"description":"List of child campaign IDs","type":"array","items":{"type":"string"}},"dailyRewardsBreakdown":{"description":"Daily breakdown of rewards","type":"array","items":{"type":"object","properties":{"campaignId":{"type":"string"},"value":{"type":"number"},"maxValue":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"token":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]},"amount":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"distributionType":{"anyOf":[{"const":"DUTCH_AUCTION","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"AAVE_NET_APR","type":"string"},{"const":"ERC4626_APR","type":"string"},{"const":"ERC4626_SPREAD_CAPPED","type":"string"},{"const":"AAVE_V4_NET_APR","type":"string"},{"const":"DEEL_DISTRIBUTION","type":"string"},{"const":"SOFR_SPREAD_RATCHET","type":"string"},{"const":"ERC4626_TARGET_APR_WITH_MERKL","type":"string"},{"const":"TARGET_APR_WITH_MERKL","type":"string"},{"const":"NET_APR","type":"string"},{"const":"BORROW_SUBSIDY","type":"string"},{"const":"NET_APR_WITH_MERKL","type":"string"},{"const":"YIELD_BASIS_PID","type":"string"},{"const":"COMPOSED","type":"string"}]},"onChainCampaignId":{"type":"string"}},"required":["campaignId","value","timestamp","token","amount"]}},"pauseCompute":{"description":"ISO timestamp when computation was paused","anyOf":[{"type":"string"},{"type":"null"}]},"pausePrecompute":{"description":"Reason for pausing precomputation, or null if not paused","anyOf":[{"type":"string"},{"type":"null"}]},"hasOverrides":{"description":"Whether this campaign has previous config overrides","type":"boolean"},"isPrivate":{"description":"Indicates if the campaign is private","type":"boolean"},"hidden":{"description":"Whether the campaign is hidden from non-test API results","type":"boolean"},"hideLeaderboard":{"description":"Whether leaderboard, ranks and reward breakdowns are hidden for this campaign","type":"boolean"},"campaignEncodingHash":{"description":"Hash of the campaign configuration encoding","type":"string"}},"required":["id","computeChainId","distributionChainId","campaignId","type","amount","startTimestamp","endTimestamp","creatorAddress","params","chain","rewardToken","campaignStatus","createdAt","isPrivate"]}}},"required":["campaigns"]}],"content":{"application/json":{"schema":{"type":"object","allOf":[{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"identifier":{"type":"string"},"chainId":{"type":"number"},"name":{"type":"string"},"description":{"type":"string"},"howToSteps":{"type":"array","items":{"type":"string"}},"status":{"anyOf":[{"const":"NONE","type":"string"},{"const":"PAST","type":"string"},{"const":"LIVE","type":"string"},{"const":"SOON","type":"string"}]},"action":{"anyOf":[{"const":"POOL","type":"string"},{"const":"HOLD","type":"string"},{"const":"DROP","type":"string"},{"const":"LEND","type":"string"},{"const":"BORROW","type":"string"},{"const":"LONG","type":"string"},{"const":"SHORT","type":"string"},{"const":"SWAP","type":"string"},{"const":"INVALID","type":"string"},{"const":"STAKE","type":"string"}]},"tags":{"type":"array","items":{"type":"string"}},"mainProtocol":{"type":"string"},"depositUrl":{"type":"string"},"depositUrls":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"url":{"type":"string"},"subtitle":{"type":"string"},"icon":{"type":"string"},"priority":{"type":"number"}},"required":["id","title","url","priority"]}},"explorerAddress":{"type":"string"},"hidden":{"type":"boolean"},"tvl":{"type":"number"},"apr":{"type":"number"},"dailyRewards":{"type":"number"},"maxDailyRewards":{"anyOf":[{"type":"number"},{"type":"null"}]},"liveCampaigns":{"type":"number"},"lastCampaignCreatedAt":{"type":"number"},"earliestCampaignStart":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"latestCampaignStart":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"earliestCampaignEnd":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"latestCampaignEnd":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"nativeApr":{"type":"number"},"totalApr":{"type":"number"},"maxApr":{"anyOf":[{"type":"number"},{"type":"null"}]},"liveCampaignsForCreator":{"type":"number"},"soonCampaignsForCreator":{"type":"number"},"pastCampaignsForCreator":{"type":"number"},"distributionType":{"type":"string"},"tokens":{"type":"array","items":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]}},"chain":{"$id":"chain","title":"Chain","description":"Chain","type":"object","properties":{"id":{"$id":"chainId","title":"Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"name":{"title":"Chain Name","description":"Legible name of the chain","type":"string"},"icon":{"title":"Icon URL","description":"URL to the icon of the chain","type":"string"},"liveCampaigns":{"title":"Live Campaigns","description":"Number of campaigns currently live on this chain","type":"number"},"endOfDisputePeriod":{"type":"number"},"explorers":{"type":"array","items":{"type":"object","properties":{"type":{"anyOf":[{"const":"ETHERSCAN","type":"string"},{"const":"BLOCKSCOUT","type":"string"},{"const":"SOLSCAN","type":"string"}]},"url":{"type":"string"},"chainId":{"type":"number"}},"required":["type","url","chainId"]}},"lastClaimsOnchainFetchTimestamp":{"title":"Last Claims Onchain Fetch Timestamp","description":"Timestamp of the last claims onchain fetch","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","icon","liveCampaigns","endOfDisputePeriod","lastClaimsOnchainFetchTimestamp"]},"activePrograms":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"type":"string"},"icon":{"type":"string"}},"required":["id","name"]}},"protocol":{"anyOf":[{"$id":"protocol","title":"Protocol","description":"Protocol","type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"icon":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"description":{"type":"string"},"url":{"type":"string"},"dailyRewards":{"type":"number"},"numberOfLiveCampaigns":{"type":"number"},"opportunityLiveTags":{"type":"array","items":{"type":"string"}},"banner":{"anyOf":[{"type":"string"},{"type":"null"}]},"opportunityBannerLight":{"anyOf":[{"type":"string"},{"type":"null"}]},"opportunityBannerDark":{"anyOf":[{"type":"string"},{"type":"null"}]},"trustData":{"anyOf":[{"type":"object","properties":{"slug":{"type":"string"},"category":{"anyOf":[{"type":"string"},{"type":"null"}]},"audits":{"anyOf":[{"type":"string"},{"type":"null"}]},"audit_links":{"type":"array","items":{"type":"string"}},"audit_note":{"anyOf":[{"type":"string"},{"type":"null"}]},"github":{"type":"array","items":{"type":"string"}},"twitter":{"anyOf":[{"type":"string"},{"type":"null"}]},"listedAt":{"anyOf":[{"type":"number"},{"type":"null"}]},"parentProtocol":{"anyOf":[{"type":"string"},{"type":"null"}]},"tvl":{"anyOf":[{"type":"number"},{"type":"null"}]},"hacks":{"type":"array","items":{"type":"object","properties":{"date":{"type":"number"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"amountUSD":{"anyOf":[{"type":"number"},{"type":"null"}]},"technique":{"anyOf":[{"type":"string"},{"type":"null"}]},"source":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["date","name","amountUSD","technique","source"]}},"syncedAt":{"type":"number"}},"required":["slug","category","audits","audit_links","audit_note","github","twitter","listedAt","parentProtocol","syncedAt"]},{"type":"null"}]}},"required":["id","name","icon","tags","description","url","banner","opportunityBannerLight","opportunityBannerDark","trustData"]},{"type":"null"}]},"aprRecord":{"type":"object","properties":{"cumulated":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"breakdowns":{"type":"array","items":{"type":"object","properties":{"identifier":{"type":"string"},"type":{"anyOf":[{"const":"CAMPAIGN","type":"string"},{"const":"TOKEN","type":"string"},{"const":"PROTOCOL","type":"string"}]},"value":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"distributionType":{"anyOf":[{"const":"DUTCH_AUCTION","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"AAVE_NET_APR","type":"string"},{"const":"ERC4626_APR","type":"string"},{"const":"ERC4626_SPREAD_CAPPED","type":"string"},{"const":"AAVE_V4_NET_APR","type":"string"},{"const":"DEEL_DISTRIBUTION","type":"string"},{"const":"SOFR_SPREAD_RATCHET","type":"string"},{"const":"ERC4626_TARGET_APR_WITH_MERKL","type":"string"},{"const":"TARGET_APR_WITH_MERKL","type":"string"},{"const":"NET_APR","type":"string"},{"const":"BORROW_SUBSIDY","type":"string"},{"const":"NET_APR_WITH_MERKL","type":"string"},{"const":"YIELD_BASIS_PID","type":"string"},{"const":"COMPOSED","type":"string"}]}},"required":["identifier","type","value","timestamp"]}}},"required":["cumulated","timestamp","breakdowns"]},"nativeAprRecord":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"value":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"amount":{"type":"bigint"},"rewardToken":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]},"breakdowns":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"value":{"type":"number"},"amount":{"type":"bigint"},"rewardToken":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]}},"required":["title","value"]}}},"required":["title","value","timestamp"]},"tvlRecord":{"type":"object","properties":{"total":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"breakdowns":{"type":"array","items":{"type":"object","properties":{"identifier":{"type":"string"},"type":{"anyOf":[{"const":"TOKEN","type":"string"},{"const":"PROTOCOL","type":"string"}]},"value":{"type":"number"}},"required":["identifier","type","value"]}}},"required":["total","timestamp","breakdowns"]},"rewardsRecord":{"type":"object","properties":{"total":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"breakdowns":{"type":"array","items":{"type":"object","properties":{"campaignId":{"type":"string"},"value":{"type":"number"},"maxValue":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"token":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]},"amount":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"distributionType":{"anyOf":[{"const":"DUTCH_AUCTION","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"AAVE_NET_APR","type":"string"},{"const":"ERC4626_APR","type":"string"},{"const":"ERC4626_SPREAD_CAPPED","type":"string"},{"const":"AAVE_V4_NET_APR","type":"string"},{"const":"DEEL_DISTRIBUTION","type":"string"},{"const":"SOFR_SPREAD_RATCHET","type":"string"},{"const":"ERC4626_TARGET_APR_WITH_MERKL","type":"string"},{"const":"TARGET_APR_WITH_MERKL","type":"string"},{"const":"NET_APR","type":"string"},{"const":"BORROW_SUBSIDY","type":"string"},{"const":"NET_APR_WITH_MERKL","type":"string"},{"const":"YIELD_BASIS_PID","type":"string"},{"const":"COMPOSED","type":"string"}]},"onChainCampaignId":{"type":"string"}},"required":["campaignId","value","timestamp","token","amount"]}}},"required":["total","timestamp","breakdowns"]}},"required":["id","type","identifier","chainId","name","description","howToSteps","status","action","tags","tvl","apr","dailyRewards","liveCampaigns","lastCampaignCreatedAt","tokens","chain","activePrograms"]},{"type":"object","properties":{"campaigns":{"type":"array","items":{"type":"object","properties":{"id":{"description":"Unique campaign id","type":"string"},"computeChainId":{"description":"Chain ID where campaign data is computed","type":"number"},"distributionChainId":{"description":"Chain ID where rewards are distributed","type":"number"},"campaignId":{"description":"A hash of the campaign, unique per chain. Can be used to identify campaigns across chains","type":"string"},"type":{"description":"Campaign type identifier","type":"string"},"subType":{"description":"Campaign subtype for protocols like Silo, Radiant, Morpho, Dolomite, Compound, Ajna and Euler","anyOf":[{"type":"number"},{"type":"null"}]},"amount":{"description":"Amount of reward token units being distributed by the campaign","type":"string"},"startTimestamp":{"description":"Unix timestamp when the campaign starts","anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]},{"type":"bigint"}]},"endTimestamp":{"description":"Unix timestamp when the campaign ends","anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]},{"type":"bigint"}]},"creatorAddress":{"description":"Ethereum address of the campaign creator","type":"string"},"apr":{"description":"Annual Percentage Rate for this campaign","type":"number"},"dailyRewards":{"description":"Total daily rewards distributed in USD","type":"number"},"creator":{"description":"Campaign creator information","type":"object","properties":{"address":{"description":"Creator's Ethereum address","type":"string"},"tags":{"description":"Tag associated with the creator","type":"array","items":{"type":"string"}},"creatorId":{"nullable":true,"anyOf":[{"description":"Merkl creator ID if registered","type":"string"},{"type":"null"}]}},"required":["address"]},"params":{"description":"Campaign-specific parameters"},"description":{"description":"Campaign description","type":"string"},"chain":{"$id":"chain","title":"Chain","description":"Chain","type":"object","properties":{"id":{"$id":"chainId","title":"Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"name":{"title":"Chain Name","description":"Legible name of the chain","type":"string"},"icon":{"title":"Icon URL","description":"URL to the icon of the chain","type":"string"},"liveCampaigns":{"title":"Live Campaigns","description":"Number of campaigns currently live on this chain","type":"number"},"endOfDisputePeriod":{"type":"number"},"explorers":{"type":"array","items":{"type":"object","properties":{"type":{"anyOf":[{"const":"ETHERSCAN","type":"string"},{"const":"BLOCKSCOUT","type":"string"},{"const":"SOLSCAN","type":"string"}]},"url":{"type":"string"},"chainId":{"type":"number"}},"required":["type","url","chainId"]}},"lastClaimsOnchainFetchTimestamp":{"title":"Last Claims Onchain Fetch Timestamp","description":"Timestamp of the last claims onchain fetch","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","icon","liveCampaigns","endOfDisputePeriod","lastClaimsOnchainFetchTimestamp"]},"rewardTokenId":{"description":"Internal ID of the reward token","type":"string"},"rewardToken":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]},"opportunityId":{"description":"ID of the associated opportunity","type":"string"},"distributionChain":{"$id":"chain","title":"Chain","description":"Chain","type":"object","properties":{"id":{"$id":"chainId","title":"Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"name":{"title":"Chain Name","description":"Legible name of the chain","type":"string"},"icon":{"title":"Icon URL","description":"URL to the icon of the chain","type":"string"},"liveCampaigns":{"title":"Live Campaigns","description":"Number of campaigns currently live on this chain","type":"number"},"endOfDisputePeriod":{"type":"number"},"explorers":{"type":"array","items":{"type":"object","properties":{"type":{"anyOf":[{"const":"ETHERSCAN","type":"string"},{"const":"BLOCKSCOUT","type":"string"},{"const":"SOLSCAN","type":"string"}]},"url":{"type":"string"},"chainId":{"type":"number"}},"required":["type","url","chainId"]}},"lastClaimsOnchainFetchTimestamp":{"title":"Last Claims Onchain Fetch Timestamp","description":"Timestamp of the last claims onchain fetch","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","icon","liveCampaigns","endOfDisputePeriod","lastClaimsOnchainFetchTimestamp"]},"distributionType":{"description":"Type of reward distribution mechanism","anyOf":[{"const":"DUTCH_AUCTION","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"AAVE_NET_APR","type":"string"},{"const":"ERC4626_APR","type":"string"},{"const":"ERC4626_SPREAD_CAPPED","type":"string"},{"const":"AAVE_V4_NET_APR","type":"string"},{"const":"DEEL_DISTRIBUTION","type":"string"},{"const":"SOFR_SPREAD_RATCHET","type":"string"},{"const":"ERC4626_TARGET_APR_WITH_MERKL","type":"string"},{"const":"TARGET_APR_WITH_MERKL","type":"string"},{"const":"NET_APR","type":"string"},{"const":"BORROW_SUBSIDY","type":"string"},{"const":"NET_APR_WITH_MERKL","type":"string"},{"const":"YIELD_BASIS_PID","type":"string"},{"const":"COMPOSED","type":"string"}]},"campaignStatus":{"type":"object","properties":{"campaignId":{"type":"string"},"computedUntil":{"anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}]},"processingStarted":{"anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}]},"status":{"type":"string"},"preComputeProcessingStarted":{"anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}]},"preComputeStatus":{"type":"string"},"delay":{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]},"error":{"type":"string"},"details":{}},"required":["campaignId","computedUntil","processingStarted","status","preComputeProcessingStarted","preComputeStatus"]},"createdAt":{"format":"date","description":"ISO date when the campaign was created","type":"string"},"rootCampaignId":{"description":"ID of the root campaign for hierarchical campaigns","anyOf":[{"type":"string"},{"type":"null"}]},"parentCampaignId":{"description":"ID of the parent campaign for sub-campaigns","anyOf":[{"type":"string"},{"type":"null"}]},"childCampaignIds":{"description":"List of child campaign IDs","type":"array","items":{"type":"string"}},"dailyRewardsBreakdown":{"description":"Daily breakdown of rewards","type":"array","items":{"type":"object","properties":{"campaignId":{"type":"string"},"value":{"type":"number"},"maxValue":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"token":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]},"amount":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"distributionType":{"anyOf":[{"const":"DUTCH_AUCTION","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"AAVE_NET_APR","type":"string"},{"const":"ERC4626_APR","type":"string"},{"const":"ERC4626_SPREAD_CAPPED","type":"string"},{"const":"AAVE_V4_NET_APR","type":"string"},{"const":"DEEL_DISTRIBUTION","type":"string"},{"const":"SOFR_SPREAD_RATCHET","type":"string"},{"const":"ERC4626_TARGET_APR_WITH_MERKL","type":"string"},{"const":"TARGET_APR_WITH_MERKL","type":"string"},{"const":"NET_APR","type":"string"},{"const":"BORROW_SUBSIDY","type":"string"},{"const":"NET_APR_WITH_MERKL","type":"string"},{"const":"YIELD_BASIS_PID","type":"string"},{"const":"COMPOSED","type":"string"}]},"onChainCampaignId":{"type":"string"}},"required":["campaignId","value","timestamp","token","amount"]}},"pauseCompute":{"description":"ISO timestamp when computation was paused","anyOf":[{"type":"string"},{"type":"null"}]},"pausePrecompute":{"description":"Reason for pausing precomputation, or null if not paused","anyOf":[{"type":"string"},{"type":"null"}]},"hasOverrides":{"description":"Whether this campaign has previous config overrides","type":"boolean"},"isPrivate":{"description":"Indicates if the campaign is private","type":"boolean"},"hidden":{"description":"Whether the campaign is hidden from non-test API results","type":"boolean"},"hideLeaderboard":{"description":"Whether leaderboard, ranks and reward breakdowns are hidden for this campaign","type":"boolean"},"campaignEncodingHash":{"description":"Hash of the campaign configuration encoding","type":"string"}},"required":["id","computeChainId","distributionChainId","campaignId","type","amount","startTimestamp","endTimestamp","creatorAddress","params","chain","rewardToken","campaignStatus","createdAt","isPrivate"]}}},"required":["campaigns"]}]}}}},"404":{"description":"Response for status 404","properties":{"type":{"default":"/errors/not-found","type":"string"},"title":{"default":"Not Found","type":"string"},"status":{"default":404,"type":"number"},"detail":{"default":"Not Found","type":"string"}},"required":["type","title","status","detail"],"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"/errors/not-found","type":"string"},"title":{"default":"Not Found","type":"string"},"status":{"default":404,"type":"number"},"detail":{"default":"Not Found","type":"string"}},"required":["type","title","status","detail"]}}}},"500":{"description":"Response for status 500","properties":{"type":{"description":"URI reference identifying the problem type","type":"string"},"title":{"description":"Short, stable, human-readable summary","type":"string"},"status":{"description":"HTTP status code","type":"number"},"detail":{"description":"Human-readable explanation specific to this occurrence","type":"string"}},"required":["type","title","status","detail"],"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"description":"URI reference identifying the problem type","type":"string"},"title":{"description":"Short, stable, human-readable summary","type":"string"},"status":{"description":"HTTP status code","type":"number"},"detail":{"description":"Human-readable explanation specific to this occurrence","type":"string"}},"required":["type","title","status","detail"]}}}}},"operationId":"getV4OpportunitiesByIdCampaigns"}},"/v4/opportunities/{id}/apr-records":{"get":{"tags":["Opportunities"],"description":"Get historical APR records for an opportunity.","parameters":[{"name":"id","in":"path","required":true,"schema":{"pattern":"(([0-9]*)-([0-9A-Z]*)-(0x([0-9A-Za-z])*))|([0-9]{1,20})","description":"**Opportunity ID** (path-only). Two accepted forms: (1) internal numeric hash, ≤20 digits (e.g. `7673870997270712040`), or (2) composite `{chainId}-{type}-{identifier}` (e.g. `1-ERC20LOGPROCESSOR-0x35Cbe8542E70fa2f7F9cDF129F19e593F4b4f560`). The composite form is path-only — query filters (`?id=`, `?opportunityId=`) only accept the numeric form. NOT a campaign ID. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"page","in":"query","required":false,"schema":{"minimum":0,"description":"0-indexed page number","default":0,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":0,"description":"0-indexed page number","default":0,"type":"number"}]}},{"name":"items","in":"query","required":false,"schema":{"minimum":1,"maximum":200,"description":"Number of items returned by page","default":100,"errorMessage":"Items must be between 1 and 200","anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"maximum":200,"description":"Number of items returned by page","default":100,"errorMessage":"Items must be between 1 and 200","type":"number"}]}},{"name":"from","in":"query","required":false,"schema":{"description":"Lower bound (inclusive) for the record's unix timestamp, in seconds.","type":"number"}},{"name":"to","in":"query","required":false,"schema":{"description":"Upper bound (inclusive) for the record's unix timestamp, in seconds.","type":"number"}},{"name":"grain","in":"query","required":false,"schema":{"default":"DAY","description":"Resolution of the returned records. `DAY` (the default) is one point per UTC day and is kept indefinitely. `RAW` (one point per sample) and `HOUR` are kept for a limited window.","anyOf":[{"const":"COMPUTE","type":"string"},{"const":"RAW","type":"string"},{"const":"HOUR","type":"string"},{"const":"DAY","type":"string"}]}}],"operationId":"getV4OpportunitiesByIdApr-records"}},"/v4/opportunities/{id}/tvl-records":{"get":{"tags":["Opportunities"],"description":"Get historical TVL records for an opportunity.","parameters":[{"name":"id","in":"path","required":true,"schema":{"pattern":"(([0-9]*)-([0-9A-Z]*)-(0x([0-9A-Za-z])*))|([0-9]{1,20})","description":"**Opportunity ID** (path-only). Two accepted forms: (1) internal numeric hash, ≤20 digits (e.g. `7673870997270712040`), or (2) composite `{chainId}-{type}-{identifier}` (e.g. `1-ERC20LOGPROCESSOR-0x35Cbe8542E70fa2f7F9cDF129F19e593F4b4f560`). The composite form is path-only — query filters (`?id=`, `?opportunityId=`) only accept the numeric form. NOT a campaign ID. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"page","in":"query","required":false,"schema":{"minimum":0,"description":"0-indexed page number","default":0,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":0,"description":"0-indexed page number","default":0,"type":"number"}]}},{"name":"items","in":"query","required":false,"schema":{"minimum":1,"maximum":200,"description":"Number of items returned by page","default":100,"errorMessage":"Items must be between 1 and 200","anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"maximum":200,"description":"Number of items returned by page","default":100,"errorMessage":"Items must be between 1 and 200","type":"number"}]}},{"name":"from","in":"query","required":false,"schema":{"description":"Lower bound (inclusive) for the record's unix timestamp, in seconds.","type":"number"}},{"name":"to","in":"query","required":false,"schema":{"description":"Upper bound (inclusive) for the record's unix timestamp, in seconds.","type":"number"}},{"name":"grain","in":"query","required":false,"schema":{"default":"DAY","description":"Resolution of the returned records. `DAY` (the default) is one point per UTC day and is kept indefinitely. `RAW` (one point per sample) and `HOUR` are kept for a limited window. For SOFR_SPREAD_RATCHET opportunities the default is `COMPUTE` (one point per engine compute) instead, because they have no `DAY` series.","anyOf":[{"const":"COMPUTE","type":"string"},{"const":"RAW","type":"string"},{"const":"HOUR","type":"string"},{"const":"DAY","type":"string"}]}}],"operationId":"getV4OpportunitiesByIdTvl-records"}},"/v4/opportunities/{id}/native-apr-records":{"get":{"tags":["Opportunities"],"description":"Get historical native APR records for an opportunity.","parameters":[{"name":"id","in":"path","required":true,"schema":{"pattern":"(([0-9]*)-([0-9A-Z]*)-(0x([0-9A-Za-z])*))|([0-9]{1,20})","description":"**Opportunity ID** (path-only). Two accepted forms: (1) internal numeric hash, ≤20 digits (e.g. `7673870997270712040`), or (2) composite `{chainId}-{type}-{identifier}` (e.g. `1-ERC20LOGPROCESSOR-0x35Cbe8542E70fa2f7F9cDF129F19e593F4b4f560`). The composite form is path-only — query filters (`?id=`, `?opportunityId=`) only accept the numeric form. NOT a campaign ID. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"page","in":"query","required":false,"schema":{"minimum":0,"description":"0-indexed page number","default":0,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":0,"description":"0-indexed page number","default":0,"type":"number"}]}},{"name":"items","in":"query","required":false,"schema":{"minimum":1,"maximum":200,"description":"Number of items returned by page","default":100,"errorMessage":"Items must be between 1 and 200","anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"maximum":200,"description":"Number of items returned by page","default":100,"errorMessage":"Items must be between 1 and 200","type":"number"}]}},{"name":"from","in":"query","required":false,"schema":{"description":"Lower bound (inclusive) for the record's unix timestamp, in seconds.","type":"number"}},{"name":"to","in":"query","required":false,"schema":{"description":"Upper bound (inclusive) for the record's unix timestamp, in seconds.","type":"number"}},{"name":"grain","in":"query","required":false,"schema":{"default":"DAY","description":"Resolution of the returned records. `DAY` (the default) is one point per UTC day and is kept indefinitely. `RAW` (one point per sample) and `HOUR` are kept for a limited window.","anyOf":[{"const":"COMPUTE","type":"string"},{"const":"RAW","type":"string"},{"const":"HOUR","type":"string"},{"const":"DAY","type":"string"}]}}],"operationId":"getV4OpportunitiesByIdNative-apr-records"}},"/v4/opportunities/":{"get":{"tags":["Opportunities"],"description":"**Retrieve Multiple Opportunities**\n<p>This endpoint enables you to search for opportunities by providing specific criteria through query parameters.</p>\n\n#### Request Examples\n\n##### List opportunities by protocol name\n```bash\ncurl \"https://api.merkl.xyz/v4/opportunities?name=Euler\"\n```\n\nReturns all opportunities associated with the Euler protocol, including aggregate metrics.\n\n##### Filter by tag\n```bash\ncurl \"https://api.merkl.xyz/v4/opportunities?tags=zksync\"\n```\n\nReturns opportunities tagged with \"zksync\" across all supported protocols.\n","parameters":[{"name":"page","in":"query","required":false,"schema":{"minimum":0,"description":"0-indexed page number","default":0,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":0,"description":"0-indexed page number","default":0,"type":"number"}]}},{"name":"items","in":"query","required":false,"schema":{"minimum":1,"maximum":100,"description":"Number of items returned by page","default":20,"errorMessage":"Items must be between 1 and 100","anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"maximum":100,"description":"Number of items returned by page","default":20,"errorMessage":"Items must be between 1 and 100","type":"number"}]}},{"name":"name","in":"query","required":false,"schema":{"description":"Filter by name","type":"string"}},{"name":"search","in":"query","required":false,"schema":{"description":"Search amongst multiple values (token, protocols, tags, campaigns)","type":"string"}},{"name":"campaignId","in":"query","required":false,"schema":{"description":"Filter opportunities linked to a given **on-chain campaign ID** (32-byte hex hash, e.g. `0x93cf385c2a446a7596820601caf25e63bfc4939efa9a89a6f21563b58ee54eb1`). This is `Campaign.campaignId` in responses, NOT the internal `Campaign.id` (numeric hash). Returns `[]` if no campaign matches. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"creatorSlug","in":"query","required":false,"schema":{"description":"Filter by creator slug","type":"string"}},{"name":"chainId","in":"query","required":false,"schema":{"description":"A comma separated list of chain ids. Example: ?chainId=1,42161<br>You can get the list of all supported chains by calling [GET /v4/chains](#tag/chains/GET/v4/chains/)","type":"RegExp","source":"^\\d+(,\\d+)*$","flags":""}},{"name":"action","in":"query","required":false,"schema":{"description":"A comma seprated list actions. Legal values are: POOL, HOLD, DROP, LEND, BORROW, LONG, SHORT, SWAP, INVALID, STAKE","type":"string"}},{"name":"tokenTypes","in":"query","required":false,"schema":{"description":"Filter by token type. Use POINT to include point campaigns and PRETGE to include preTGE campaigns. By default every token is returned.","type":"array","items":{"anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]}}},{"name":"point","in":"query","required":false,"schema":{"description":"Include opportunities with point campaigns","type":"boolean"}},{"name":"type","in":"query","required":false,"schema":{"description":"A comma separated list of Opportunity type","type":"string"}},{"name":"creatorAddress","in":"query","required":false,"schema":{"description":"Filter by creator address","type":"string"}},{"name":"tags","in":"query","required":false,"schema":{"description":"Filter by tag","type":"string"}},{"name":"test","in":"query","required":false,"schema":{"description":"Include opportunities with test campaigns","default":false,"type":"boolean"}},{"name":"minimumTvl","in":"query","required":false,"schema":{"description":"Minimum TVL threshold in USD","type":"number"}},{"name":"maximumTvl","in":"query","required":false,"schema":{"description":"Maximum TVL threshold in USD","type":"number"}},{"name":"minimumApr","in":"query","required":false,"schema":{"description":"Minimum APR threshold","type":"number"}},{"name":"maximumApr","in":"query","required":false,"schema":{"description":"Maximum APR threshold","type":"number"}},{"name":"minimumDailyRewards","in":"query","required":false,"schema":{"description":"Minimum daily rewards threshold in USD","type":"number"}},{"name":"maximumDailyRewards","in":"query","required":false,"schema":{"description":"Maximum daily rewards threshold in USD","type":"number"}},{"name":"minimumCreatedAt","in":"query","required":false,"schema":{"description":"Filter opportunities whose last campaign was created at or after this Unix timestamp (seconds)","type":"number"}},{"name":"maximumCreatedAt","in":"query","required":false,"schema":{"description":"Filter opportunities whose last campaign was created at or before this Unix timestamp (seconds)","type":"number"}},{"name":"status","in":"query","required":false,"schema":{"description":"A comma separeted list of status. Legal values are: `LIVE`, `PAST`, `SOON`","type":"RegExp","source":"^(LIVE|PAST|SOON)(,(LIVE|PAST|SOON)){0,2}$","flags":""}},{"name":"identifier","in":"query","required":false,"schema":{"description":"Filter by opportunity identifier (a.k.a. `mainParameter`). Free-form string, often a pool/vault/market address (e.g. `0x35Cbe8542E70fa2f7F9cDF129F19e593F4b4f560`) or an arbitrary on-chain hash for non-address opportunities. NOT a campaign ID. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"id","in":"query","required":false,"schema":{"description":"A comma-separated list of **internal opportunity IDs** (`Opportunity.id`, numeric hash). Example: `?id=5877322385708089533,1234567890`. NOT campaign IDs. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"campaigns","in":"query","required":false,"schema":{"description":"Include campaign data. Will slow down the request. Default: false","type":"boolean"}},{"name":"tokens","in":"query","required":false,"schema":{"description":"A comma separated list of token symbol. Use to filter by token","type":"string"}},{"name":"stablecoin","in":"query","required":false,"schema":{"description":"Filter opportunities that include at least one stablecoin token","default":false,"type":"boolean"}},{"name":"rewardTokenSymbol","in":"query","required":false,"schema":{"description":"Filter by opportunity that have at least 1 campaigns where the reward token has this symbol","type":"string"}},{"name":"sort","in":"query","required":false,"schema":{"description":"Sort by `apr`, `tvl`, `rewards`, `maxDailyRewards`, last campaign creation date, campaign start times, or campaign end times","type":"RegExp","source":"^(apr|tvl|rewards|maxDailyRewards|lastCampaignCreatedAt|endingSoon|endingLast|startingSoon|startingLast)$","flags":""}},{"name":"order","in":"query","required":false,"schema":{"description":"`asc` to sort in ascending order or `desc` to sort in descending order.","default":"desc","type":"RegExp","source":"desc|asc","flags":""}},{"name":"distributionTypes","in":"query","required":false,"schema":{"type":"array","items":{"description":"Filter by reward mechanism. Legal values are: `FIX_REWARD`, `MAX_REWARD`, `DUTCH_AUCTION`, `TOTAL_APR`. Default: no filter","anyOf":[{"const":"FIX_REWARD","type":"string"},{"const":"MAX_REWARD","type":"string"},{"const":"DUTCH_AUCTION","type":"string"},{"const":"TOTAL_APR","type":"string"}]}}},{"name":"mainProtocolId","in":"query","required":false,"schema":{"description":"A comma-separated list of **protocol slugs** (e.g. `aave,morpho,uniswap`). NOT numeric IDs. List slugs at [GET /v4/protocols](#tag/protocols/GET/v4/protocols/). See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"programSlugs","in":"query","required":false,"schema":{"description":"A comma separated list of program ids or slugs. You can get the list of all supported programs by calling [GET /v4/programs](#tag/programs/GET/v4/programs/)","type":"string"}},{"name":"chainName","in":"query","required":false,"schema":{"description":"A comma separated list of chain names. Example: ?chainName=ethereum,arbitrum","type":"RegExp","source":"^[a-zA-Z0-9]+(,[a-zA-Z0-9]+)*$","flags":""}},{"name":"excludeSubCampaigns","in":"query","required":false,"schema":{"description":"Exclude sub-campaigns from the results. Default: false","default":false,"type":"boolean"}},{"name":"explorerAddress","in":"query","required":false,"schema":{"description":"Filter by **on-chain pool/vault/market address** (20-byte EVM address, e.g. `0x35Cbe8542E70fa2f7F9cDF129F19e593F4b4f560`). Often the most reliable way to look up an opportunity if you only know the underlying contract. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"withInvalids","in":"query","required":false,"schema":{"description":"Include opportunities that have been marked as invalid","default":false,"type":"boolean"}},{"name":"campaignTypes","in":"query","required":false,"schema":{"description":"A comma separated list of CampaignType enum numeric values. Example: ?campaignTypes=18,19","type":"RegExp","source":"^\\d+(,\\d+)*$","flags":""}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"array","items":{"anyOf":[{"type":"object","allOf":[{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"identifier":{"type":"string"},"chainId":{"type":"number"},"name":{"type":"string"},"description":{"type":"string"},"howToSteps":{"type":"array","items":{"type":"string"}},"status":{"anyOf":[{"const":"NONE","type":"string"},{"const":"PAST","type":"string"},{"const":"LIVE","type":"string"},{"const":"SOON","type":"string"}]},"action":{"anyOf":[{"const":"POOL","type":"string"},{"const":"HOLD","type":"string"},{"const":"DROP","type":"string"},{"const":"LEND","type":"string"},{"const":"BORROW","type":"string"},{"const":"LONG","type":"string"},{"const":"SHORT","type":"string"},{"const":"SWAP","type":"string"},{"const":"INVALID","type":"string"},{"const":"STAKE","type":"string"}]},"tags":{"type":"array","items":{"type":"string"}},"mainProtocol":{"type":"string"},"depositUrl":{"type":"string"},"depositUrls":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"url":{"type":"string"},"subtitle":{"type":"string"},"icon":{"type":"string"},"priority":{"type":"number"}},"required":["id","title","url","priority"]}},"explorerAddress":{"type":"string"},"hidden":{"type":"boolean"},"tvl":{"type":"number"},"apr":{"type":"number"},"dailyRewards":{"type":"number"},"maxDailyRewards":{"anyOf":[{"type":"number"},{"type":"null"}]},"liveCampaigns":{"type":"number"},"lastCampaignCreatedAt":{"type":"number"},"earliestCampaignStart":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"latestCampaignStart":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"earliestCampaignEnd":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"latestCampaignEnd":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"nativeApr":{"type":"number"},"totalApr":{"type":"number"},"maxApr":{"anyOf":[{"type":"number"},{"type":"null"}]},"liveCampaignsForCreator":{"type":"number"},"soonCampaignsForCreator":{"type":"number"},"pastCampaignsForCreator":{"type":"number"},"distributionType":{"type":"string"},"tokens":{"type":"array","items":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]}},"chain":{"$id":"chain","title":"Chain","description":"Chain","type":"object","properties":{"id":{"$id":"chainId","title":"Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"name":{"title":"Chain Name","description":"Legible name of the chain","type":"string"},"icon":{"title":"Icon URL","description":"URL to the icon of the chain","type":"string"},"liveCampaigns":{"title":"Live Campaigns","description":"Number of campaigns currently live on this chain","type":"number"},"endOfDisputePeriod":{"type":"number"},"explorers":{"type":"array","items":{"type":"object","properties":{"type":{"anyOf":[{"const":"ETHERSCAN","type":"string"},{"const":"BLOCKSCOUT","type":"string"},{"const":"SOLSCAN","type":"string"}]},"url":{"type":"string"},"chainId":{"type":"number"}},"required":["type","url","chainId"]}},"lastClaimsOnchainFetchTimestamp":{"title":"Last Claims Onchain Fetch Timestamp","description":"Timestamp of the last claims onchain fetch","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","icon","liveCampaigns","endOfDisputePeriod","lastClaimsOnchainFetchTimestamp"]},"activePrograms":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"type":"string"},"icon":{"type":"string"}},"required":["id","name"]}},"protocol":{"anyOf":[{"$id":"protocol","title":"Protocol","description":"Protocol","type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"icon":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"description":{"type":"string"},"url":{"type":"string"},"dailyRewards":{"type":"number"},"numberOfLiveCampaigns":{"type":"number"},"opportunityLiveTags":{"type":"array","items":{"type":"string"}},"banner":{"anyOf":[{"type":"string"},{"type":"null"}]},"opportunityBannerLight":{"anyOf":[{"type":"string"},{"type":"null"}]},"opportunityBannerDark":{"anyOf":[{"type":"string"},{"type":"null"}]},"trustData":{"anyOf":[{"type":"object","properties":{"slug":{"type":"string"},"category":{"anyOf":[{"type":"string"},{"type":"null"}]},"audits":{"anyOf":[{"type":"string"},{"type":"null"}]},"audit_links":{"type":"array","items":{"type":"string"}},"audit_note":{"anyOf":[{"type":"string"},{"type":"null"}]},"github":{"type":"array","items":{"type":"string"}},"twitter":{"anyOf":[{"type":"string"},{"type":"null"}]},"listedAt":{"anyOf":[{"type":"number"},{"type":"null"}]},"parentProtocol":{"anyOf":[{"type":"string"},{"type":"null"}]},"tvl":{"anyOf":[{"type":"number"},{"type":"null"}]},"hacks":{"type":"array","items":{"type":"object","properties":{"date":{"type":"number"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"amountUSD":{"anyOf":[{"type":"number"},{"type":"null"}]},"technique":{"anyOf":[{"type":"string"},{"type":"null"}]},"source":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["date","name","amountUSD","technique","source"]}},"syncedAt":{"type":"number"}},"required":["slug","category","audits","audit_links","audit_note","github","twitter","listedAt","parentProtocol","syncedAt"]},{"type":"null"}]}},"required":["id","name","icon","tags","description","url","banner","opportunityBannerLight","opportunityBannerDark","trustData"]},{"type":"null"}]},"aprRecord":{"type":"object","properties":{"cumulated":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"breakdowns":{"type":"array","items":{"type":"object","properties":{"identifier":{"type":"string"},"type":{"anyOf":[{"const":"CAMPAIGN","type":"string"},{"const":"TOKEN","type":"string"},{"const":"PROTOCOL","type":"string"}]},"value":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"distributionType":{"anyOf":[{"const":"DUTCH_AUCTION","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"AAVE_NET_APR","type":"string"},{"const":"ERC4626_APR","type":"string"},{"const":"ERC4626_SPREAD_CAPPED","type":"string"},{"const":"AAVE_V4_NET_APR","type":"string"},{"const":"DEEL_DISTRIBUTION","type":"string"},{"const":"SOFR_SPREAD_RATCHET","type":"string"},{"const":"ERC4626_TARGET_APR_WITH_MERKL","type":"string"},{"const":"TARGET_APR_WITH_MERKL","type":"string"},{"const":"NET_APR","type":"string"},{"const":"BORROW_SUBSIDY","type":"string"},{"const":"NET_APR_WITH_MERKL","type":"string"},{"const":"YIELD_BASIS_PID","type":"string"},{"const":"COMPOSED","type":"string"}]}},"required":["identifier","type","value","timestamp"]}}},"required":["cumulated","timestamp","breakdowns"]},"nativeAprRecord":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"value":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"amount":{"type":"bigint"},"rewardToken":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]},"breakdowns":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"value":{"type":"number"},"amount":{"type":"bigint"},"rewardToken":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]}},"required":["title","value"]}}},"required":["title","value","timestamp"]},"tvlRecord":{"type":"object","properties":{"total":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"breakdowns":{"type":"array","items":{"type":"object","properties":{"identifier":{"type":"string"},"type":{"anyOf":[{"const":"TOKEN","type":"string"},{"const":"PROTOCOL","type":"string"}]},"value":{"type":"number"}},"required":["identifier","type","value"]}}},"required":["total","timestamp","breakdowns"]},"rewardsRecord":{"type":"object","properties":{"total":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"breakdowns":{"type":"array","items":{"type":"object","properties":{"campaignId":{"type":"string"},"value":{"type":"number"},"maxValue":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"token":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]},"amount":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"distributionType":{"anyOf":[{"const":"DUTCH_AUCTION","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"AAVE_NET_APR","type":"string"},{"const":"ERC4626_APR","type":"string"},{"const":"ERC4626_SPREAD_CAPPED","type":"string"},{"const":"AAVE_V4_NET_APR","type":"string"},{"const":"DEEL_DISTRIBUTION","type":"string"},{"const":"SOFR_SPREAD_RATCHET","type":"string"},{"const":"ERC4626_TARGET_APR_WITH_MERKL","type":"string"},{"const":"TARGET_APR_WITH_MERKL","type":"string"},{"const":"NET_APR","type":"string"},{"const":"BORROW_SUBSIDY","type":"string"},{"const":"NET_APR_WITH_MERKL","type":"string"},{"const":"YIELD_BASIS_PID","type":"string"},{"const":"COMPOSED","type":"string"}]},"onChainCampaignId":{"type":"string"}},"required":["campaignId","value","timestamp","token","amount"]}}},"required":["total","timestamp","breakdowns"]}},"required":["id","type","identifier","chainId","name","description","howToSteps","status","action","tags","tvl","apr","dailyRewards","liveCampaigns","lastCampaignCreatedAt","tokens","chain","activePrograms"]},{"type":"object","properties":{"campaigns":{"type":"array","items":{"type":"object","properties":{"id":{"description":"Unique campaign id","type":"string"},"computeChainId":{"description":"Chain ID where campaign data is computed","type":"number"},"distributionChainId":{"description":"Chain ID where rewards are distributed","type":"number"},"campaignId":{"description":"A hash of the campaign, unique per chain. Can be used to identify campaigns across chains","type":"string"},"type":{"description":"Campaign type identifier","type":"string"},"subType":{"description":"Campaign subtype for protocols like Silo, Radiant, Morpho, Dolomite, Compound, Ajna and Euler","anyOf":[{"type":"number"},{"type":"null"}]},"amount":{"description":"Amount of reward token units being distributed by the campaign","type":"string"},"startTimestamp":{"description":"Unix timestamp when the campaign starts","anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]},{"type":"bigint"}]},"endTimestamp":{"description":"Unix timestamp when the campaign ends","anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]},{"type":"bigint"}]},"creatorAddress":{"description":"Ethereum address of the campaign creator","type":"string"},"apr":{"description":"Annual Percentage Rate for this campaign","type":"number"},"dailyRewards":{"description":"Total daily rewards distributed in USD","type":"number"},"creator":{"description":"Campaign creator information","type":"object","properties":{"address":{"description":"Creator's Ethereum address","type":"string"},"tags":{"description":"Tag associated with the creator","type":"array","items":{"type":"string"}},"creatorId":{"nullable":true,"anyOf":[{"description":"Merkl creator ID if registered","type":"string"},{"type":"null"}]}},"required":["address"]},"params":{"description":"Campaign-specific parameters"},"description":{"description":"Campaign description","type":"string"},"chain":{"$id":"chain","title":"Chain","description":"Chain","type":"object","properties":{"id":{"$id":"chainId","title":"Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"name":{"title":"Chain Name","description":"Legible name of the chain","type":"string"},"icon":{"title":"Icon URL","description":"URL to the icon of the chain","type":"string"},"liveCampaigns":{"title":"Live Campaigns","description":"Number of campaigns currently live on this chain","type":"number"},"endOfDisputePeriod":{"type":"number"},"explorers":{"type":"array","items":{"type":"object","properties":{"type":{"anyOf":[{"const":"ETHERSCAN","type":"string"},{"const":"BLOCKSCOUT","type":"string"},{"const":"SOLSCAN","type":"string"}]},"url":{"type":"string"},"chainId":{"type":"number"}},"required":["type","url","chainId"]}},"lastClaimsOnchainFetchTimestamp":{"title":"Last Claims Onchain Fetch Timestamp","description":"Timestamp of the last claims onchain fetch","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","icon","liveCampaigns","endOfDisputePeriod","lastClaimsOnchainFetchTimestamp"]},"rewardTokenId":{"description":"Internal ID of the reward token","type":"string"},"rewardToken":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]},"opportunityId":{"description":"ID of the associated opportunity","type":"string"},"distributionChain":{"$id":"chain","title":"Chain","description":"Chain","type":"object","properties":{"id":{"$id":"chainId","title":"Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"name":{"title":"Chain Name","description":"Legible name of the chain","type":"string"},"icon":{"title":"Icon URL","description":"URL to the icon of the chain","type":"string"},"liveCampaigns":{"title":"Live Campaigns","description":"Number of campaigns currently live on this chain","type":"number"},"endOfDisputePeriod":{"type":"number"},"explorers":{"type":"array","items":{"type":"object","properties":{"type":{"anyOf":[{"const":"ETHERSCAN","type":"string"},{"const":"BLOCKSCOUT","type":"string"},{"const":"SOLSCAN","type":"string"}]},"url":{"type":"string"},"chainId":{"type":"number"}},"required":["type","url","chainId"]}},"lastClaimsOnchainFetchTimestamp":{"title":"Last Claims Onchain Fetch Timestamp","description":"Timestamp of the last claims onchain fetch","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","icon","liveCampaigns","endOfDisputePeriod","lastClaimsOnchainFetchTimestamp"]},"distributionType":{"description":"Type of reward distribution mechanism","anyOf":[{"const":"DUTCH_AUCTION","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"AAVE_NET_APR","type":"string"},{"const":"ERC4626_APR","type":"string"},{"const":"ERC4626_SPREAD_CAPPED","type":"string"},{"const":"AAVE_V4_NET_APR","type":"string"},{"const":"DEEL_DISTRIBUTION","type":"string"},{"const":"SOFR_SPREAD_RATCHET","type":"string"},{"const":"ERC4626_TARGET_APR_WITH_MERKL","type":"string"},{"const":"TARGET_APR_WITH_MERKL","type":"string"},{"const":"NET_APR","type":"string"},{"const":"BORROW_SUBSIDY","type":"string"},{"const":"NET_APR_WITH_MERKL","type":"string"},{"const":"YIELD_BASIS_PID","type":"string"},{"const":"COMPOSED","type":"string"}]},"campaignStatus":{"type":"object","properties":{"campaignId":{"type":"string"},"computedUntil":{"anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}]},"processingStarted":{"anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}]},"status":{"type":"string"},"preComputeProcessingStarted":{"anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}]},"preComputeStatus":{"type":"string"},"delay":{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]},"error":{"type":"string"},"details":{}},"required":["campaignId","computedUntil","processingStarted","status","preComputeProcessingStarted","preComputeStatus"]},"createdAt":{"format":"date","description":"ISO date when the campaign was created","type":"string"},"rootCampaignId":{"description":"ID of the root campaign for hierarchical campaigns","anyOf":[{"type":"string"},{"type":"null"}]},"parentCampaignId":{"description":"ID of the parent campaign for sub-campaigns","anyOf":[{"type":"string"},{"type":"null"}]},"childCampaignIds":{"description":"List of child campaign IDs","type":"array","items":{"type":"string"}},"dailyRewardsBreakdown":{"description":"Daily breakdown of rewards","type":"array","items":{"type":"object","properties":{"campaignId":{"type":"string"},"value":{"type":"number"},"maxValue":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"token":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]},"amount":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"distributionType":{"anyOf":[{"const":"DUTCH_AUCTION","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"AAVE_NET_APR","type":"string"},{"const":"ERC4626_APR","type":"string"},{"const":"ERC4626_SPREAD_CAPPED","type":"string"},{"const":"AAVE_V4_NET_APR","type":"string"},{"const":"DEEL_DISTRIBUTION","type":"string"},{"const":"SOFR_SPREAD_RATCHET","type":"string"},{"const":"ERC4626_TARGET_APR_WITH_MERKL","type":"string"},{"const":"TARGET_APR_WITH_MERKL","type":"string"},{"const":"NET_APR","type":"string"},{"const":"BORROW_SUBSIDY","type":"string"},{"const":"NET_APR_WITH_MERKL","type":"string"},{"const":"YIELD_BASIS_PID","type":"string"},{"const":"COMPOSED","type":"string"}]},"onChainCampaignId":{"type":"string"}},"required":["campaignId","value","timestamp","token","amount"]}},"pauseCompute":{"description":"ISO timestamp when computation was paused","anyOf":[{"type":"string"},{"type":"null"}]},"pausePrecompute":{"description":"Reason for pausing precomputation, or null if not paused","anyOf":[{"type":"string"},{"type":"null"}]},"hasOverrides":{"description":"Whether this campaign has previous config overrides","type":"boolean"},"isPrivate":{"description":"Indicates if the campaign is private","type":"boolean"},"hidden":{"description":"Whether the campaign is hidden from non-test API results","type":"boolean"},"hideLeaderboard":{"description":"Whether leaderboard, ranks and reward breakdowns are hidden for this campaign","type":"boolean"},"campaignEncodingHash":{"description":"Hash of the campaign configuration encoding","type":"string"}},"required":["id","computeChainId","distributionChainId","campaignId","type","amount","startTimestamp","endTimestamp","creatorAddress","params","chain","rewardToken","campaignStatus","createdAt","isPrivate"]}}}}]},{"type":"object","allOf":[{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"identifier":{"type":"string"},"chainId":{"type":"number"},"name":{"type":"string"},"description":{"type":"string"},"howToSteps":{"type":"array","items":{"type":"string"}},"status":{"anyOf":[{"const":"NONE","type":"string"},{"const":"PAST","type":"string"},{"const":"LIVE","type":"string"},{"const":"SOON","type":"string"}]},"action":{"anyOf":[{"const":"POOL","type":"string"},{"const":"HOLD","type":"string"},{"const":"DROP","type":"string"},{"const":"LEND","type":"string"},{"const":"BORROW","type":"string"},{"const":"LONG","type":"string"},{"const":"SHORT","type":"string"},{"const":"SWAP","type":"string"},{"const":"INVALID","type":"string"},{"const":"STAKE","type":"string"}]},"tags":{"type":"array","items":{"type":"string"}},"mainProtocol":{"type":"string"},"depositUrl":{"type":"string"},"depositUrls":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"url":{"type":"string"},"subtitle":{"type":"string"},"icon":{"type":"string"},"priority":{"type":"number"}},"required":["id","title","url","priority"]}},"explorerAddress":{"type":"string"},"hidden":{"type":"boolean"},"tvl":{"type":"number"},"apr":{"type":"number"},"dailyRewards":{"type":"number"},"maxDailyRewards":{"anyOf":[{"type":"number"},{"type":"null"}]},"liveCampaigns":{"type":"number"},"lastCampaignCreatedAt":{"type":"number"},"earliestCampaignStart":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"latestCampaignStart":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"earliestCampaignEnd":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"latestCampaignEnd":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"nativeApr":{"type":"number"},"totalApr":{"type":"number"},"maxApr":{"anyOf":[{"type":"number"},{"type":"null"}]},"liveCampaignsForCreator":{"type":"number"},"soonCampaignsForCreator":{"type":"number"},"pastCampaignsForCreator":{"type":"number"},"distributionType":{"type":"string"},"tokens":{"type":"array","items":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]}},"chain":{"$id":"chain","title":"Chain","description":"Chain","type":"object","properties":{"id":{"$id":"chainId","title":"Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"name":{"title":"Chain Name","description":"Legible name of the chain","type":"string"},"icon":{"title":"Icon URL","description":"URL to the icon of the chain","type":"string"},"liveCampaigns":{"title":"Live Campaigns","description":"Number of campaigns currently live on this chain","type":"number"},"endOfDisputePeriod":{"type":"number"},"explorers":{"type":"array","items":{"type":"object","properties":{"type":{"anyOf":[{"const":"ETHERSCAN","type":"string"},{"const":"BLOCKSCOUT","type":"string"},{"const":"SOLSCAN","type":"string"}]},"url":{"type":"string"},"chainId":{"type":"number"}},"required":["type","url","chainId"]}},"lastClaimsOnchainFetchTimestamp":{"title":"Last Claims Onchain Fetch Timestamp","description":"Timestamp of the last claims onchain fetch","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","icon","liveCampaigns","endOfDisputePeriod","lastClaimsOnchainFetchTimestamp"]},"activePrograms":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"type":"string"},"icon":{"type":"string"}},"required":["id","name"]}},"protocol":{"anyOf":[{"$id":"protocol","title":"Protocol","description":"Protocol","type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"icon":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"description":{"type":"string"},"url":{"type":"string"},"dailyRewards":{"type":"number"},"numberOfLiveCampaigns":{"type":"number"},"opportunityLiveTags":{"type":"array","items":{"type":"string"}},"banner":{"anyOf":[{"type":"string"},{"type":"null"}]},"opportunityBannerLight":{"anyOf":[{"type":"string"},{"type":"null"}]},"opportunityBannerDark":{"anyOf":[{"type":"string"},{"type":"null"}]},"trustData":{"anyOf":[{"type":"object","properties":{"slug":{"type":"string"},"category":{"anyOf":[{"type":"string"},{"type":"null"}]},"audits":{"anyOf":[{"type":"string"},{"type":"null"}]},"audit_links":{"type":"array","items":{"type":"string"}},"audit_note":{"anyOf":[{"type":"string"},{"type":"null"}]},"github":{"type":"array","items":{"type":"string"}},"twitter":{"anyOf":[{"type":"string"},{"type":"null"}]},"listedAt":{"anyOf":[{"type":"number"},{"type":"null"}]},"parentProtocol":{"anyOf":[{"type":"string"},{"type":"null"}]},"tvl":{"anyOf":[{"type":"number"},{"type":"null"}]},"hacks":{"type":"array","items":{"type":"object","properties":{"date":{"type":"number"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"amountUSD":{"anyOf":[{"type":"number"},{"type":"null"}]},"technique":{"anyOf":[{"type":"string"},{"type":"null"}]},"source":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["date","name","amountUSD","technique","source"]}},"syncedAt":{"type":"number"}},"required":["slug","category","audits","audit_links","audit_note","github","twitter","listedAt","parentProtocol","syncedAt"]},{"type":"null"}]}},"required":["id","name","icon","tags","description","url","banner","opportunityBannerLight","opportunityBannerDark","trustData"]},{"type":"null"}]},"aprRecord":{"type":"object","properties":{"cumulated":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"breakdowns":{"type":"array","items":{"type":"object","properties":{"identifier":{"type":"string"},"type":{"anyOf":[{"const":"CAMPAIGN","type":"string"},{"const":"TOKEN","type":"string"},{"const":"PROTOCOL","type":"string"}]},"value":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"distributionType":{"anyOf":[{"const":"DUTCH_AUCTION","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"AAVE_NET_APR","type":"string"},{"const":"ERC4626_APR","type":"string"},{"const":"ERC4626_SPREAD_CAPPED","type":"string"},{"const":"AAVE_V4_NET_APR","type":"string"},{"const":"DEEL_DISTRIBUTION","type":"string"},{"const":"SOFR_SPREAD_RATCHET","type":"string"},{"const":"ERC4626_TARGET_APR_WITH_MERKL","type":"string"},{"const":"TARGET_APR_WITH_MERKL","type":"string"},{"const":"NET_APR","type":"string"},{"const":"BORROW_SUBSIDY","type":"string"},{"const":"NET_APR_WITH_MERKL","type":"string"},{"const":"YIELD_BASIS_PID","type":"string"},{"const":"COMPOSED","type":"string"}]}},"required":["identifier","type","value","timestamp"]}}},"required":["cumulated","timestamp","breakdowns"]},"nativeAprRecord":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"value":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"amount":{"type":"bigint"},"rewardToken":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]},"breakdowns":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"value":{"type":"number"},"amount":{"type":"bigint"},"rewardToken":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]}},"required":["title","value"]}}},"required":["title","value","timestamp"]},"tvlRecord":{"type":"object","properties":{"total":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"breakdowns":{"type":"array","items":{"type":"object","properties":{"identifier":{"type":"string"},"type":{"anyOf":[{"const":"TOKEN","type":"string"},{"const":"PROTOCOL","type":"string"}]},"value":{"type":"number"}},"required":["identifier","type","value"]}}},"required":["total","timestamp","breakdowns"]},"rewardsRecord":{"type":"object","properties":{"total":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"breakdowns":{"type":"array","items":{"type":"object","properties":{"campaignId":{"type":"string"},"value":{"type":"number"},"maxValue":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"token":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]},"amount":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"distributionType":{"anyOf":[{"const":"DUTCH_AUCTION","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"AAVE_NET_APR","type":"string"},{"const":"ERC4626_APR","type":"string"},{"const":"ERC4626_SPREAD_CAPPED","type":"string"},{"const":"AAVE_V4_NET_APR","type":"string"},{"const":"DEEL_DISTRIBUTION","type":"string"},{"const":"SOFR_SPREAD_RATCHET","type":"string"},{"const":"ERC4626_TARGET_APR_WITH_MERKL","type":"string"},{"const":"TARGET_APR_WITH_MERKL","type":"string"},{"const":"NET_APR","type":"string"},{"const":"BORROW_SUBSIDY","type":"string"},{"const":"NET_APR_WITH_MERKL","type":"string"},{"const":"YIELD_BASIS_PID","type":"string"},{"const":"COMPOSED","type":"string"}]},"onChainCampaignId":{"type":"string"}},"required":["campaignId","value","timestamp","token","amount"]}}},"required":["total","timestamp","breakdowns"]}},"required":["id","type","identifier","chainId","name","description","howToSteps","status","action","tags","tvl","apr","dailyRewards","liveCampaigns","lastCampaignCreatedAt","tokens","chain","activePrograms"]},{"type":"object","properties":{"campaigns":{"type":"array","items":{"type":"object","properties":{"id":{"description":"Unique campaign id","type":"string"},"computeChainId":{"description":"Chain ID where campaign data is computed","type":"number"},"distributionChainId":{"description":"Chain ID where rewards are distributed","type":"number"},"campaignId":{"description":"A hash of the campaign, unique per chain. Can be used to identify campaigns across chains","type":"string"},"type":{"description":"Campaign type identifier","type":"string"},"subType":{"description":"Campaign subtype for protocols like Silo, Radiant, Morpho, Dolomite, Compound, Ajna and Euler","anyOf":[{"type":"number"},{"type":"null"}]},"amount":{"description":"Amount of reward token units being distributed by the campaign","type":"string"},"startTimestamp":{"description":"Unix timestamp when the campaign starts","anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]},{"type":"bigint"}]},"endTimestamp":{"description":"Unix timestamp when the campaign ends","anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]},{"type":"bigint"}]},"creatorAddress":{"description":"Ethereum address of the campaign creator","type":"string"},"apr":{"description":"Annual Percentage Rate for this campaign","type":"number"},"dailyRewards":{"description":"Total daily rewards distributed in USD","type":"number"},"creator":{"description":"Campaign creator information","type":"object","properties":{"address":{"description":"Creator's Ethereum address","type":"string"},"tags":{"description":"Tag associated with the creator","type":"array","items":{"type":"string"}},"creatorId":{"nullable":true,"anyOf":[{"description":"Merkl creator ID if registered","type":"string"},{"type":"null"}]}},"required":["address"]},"params":{"description":"Campaign-specific parameters"},"description":{"description":"Campaign description","type":"string"},"chain":{"$id":"chain","title":"Chain","description":"Chain","type":"object","properties":{"id":{"$id":"chainId","title":"Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"name":{"title":"Chain Name","description":"Legible name of the chain","type":"string"},"icon":{"title":"Icon URL","description":"URL to the icon of the chain","type":"string"},"liveCampaigns":{"title":"Live Campaigns","description":"Number of campaigns currently live on this chain","type":"number"},"endOfDisputePeriod":{"type":"number"},"explorers":{"type":"array","items":{"type":"object","properties":{"type":{"anyOf":[{"const":"ETHERSCAN","type":"string"},{"const":"BLOCKSCOUT","type":"string"},{"const":"SOLSCAN","type":"string"}]},"url":{"type":"string"},"chainId":{"type":"number"}},"required":["type","url","chainId"]}},"lastClaimsOnchainFetchTimestamp":{"title":"Last Claims Onchain Fetch Timestamp","description":"Timestamp of the last claims onchain fetch","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","icon","liveCampaigns","endOfDisputePeriod","lastClaimsOnchainFetchTimestamp"]},"rewardTokenId":{"description":"Internal ID of the reward token","type":"string"},"rewardToken":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]},"opportunityId":{"description":"ID of the associated opportunity","type":"string"},"distributionChain":{"$id":"chain","title":"Chain","description":"Chain","type":"object","properties":{"id":{"$id":"chainId","title":"Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"name":{"title":"Chain Name","description":"Legible name of the chain","type":"string"},"icon":{"title":"Icon URL","description":"URL to the icon of the chain","type":"string"},"liveCampaigns":{"title":"Live Campaigns","description":"Number of campaigns currently live on this chain","type":"number"},"endOfDisputePeriod":{"type":"number"},"explorers":{"type":"array","items":{"type":"object","properties":{"type":{"anyOf":[{"const":"ETHERSCAN","type":"string"},{"const":"BLOCKSCOUT","type":"string"},{"const":"SOLSCAN","type":"string"}]},"url":{"type":"string"},"chainId":{"type":"number"}},"required":["type","url","chainId"]}},"lastClaimsOnchainFetchTimestamp":{"title":"Last Claims Onchain Fetch Timestamp","description":"Timestamp of the last claims onchain fetch","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","icon","liveCampaigns","endOfDisputePeriod","lastClaimsOnchainFetchTimestamp"]},"distributionType":{"description":"Type of reward distribution mechanism","anyOf":[{"const":"DUTCH_AUCTION","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"AAVE_NET_APR","type":"string"},{"const":"ERC4626_APR","type":"string"},{"const":"ERC4626_SPREAD_CAPPED","type":"string"},{"const":"AAVE_V4_NET_APR","type":"string"},{"const":"DEEL_DISTRIBUTION","type":"string"},{"const":"SOFR_SPREAD_RATCHET","type":"string"},{"const":"ERC4626_TARGET_APR_WITH_MERKL","type":"string"},{"const":"TARGET_APR_WITH_MERKL","type":"string"},{"const":"NET_APR","type":"string"},{"const":"BORROW_SUBSIDY","type":"string"},{"const":"NET_APR_WITH_MERKL","type":"string"},{"const":"YIELD_BASIS_PID","type":"string"},{"const":"COMPOSED","type":"string"}]},"campaignStatus":{"type":"object","properties":{"campaignId":{"type":"string"},"computedUntil":{"anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}]},"processingStarted":{"anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}]},"status":{"type":"string"},"preComputeProcessingStarted":{"anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}]},"preComputeStatus":{"type":"string"},"delay":{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]},"error":{"type":"string"},"details":{}},"required":["campaignId","computedUntil","processingStarted","status","preComputeProcessingStarted","preComputeStatus"]},"createdAt":{"format":"date","description":"ISO date when the campaign was created","type":"string"},"rootCampaignId":{"description":"ID of the root campaign for hierarchical campaigns","anyOf":[{"type":"string"},{"type":"null"}]},"parentCampaignId":{"description":"ID of the parent campaign for sub-campaigns","anyOf":[{"type":"string"},{"type":"null"}]},"childCampaignIds":{"description":"List of child campaign IDs","type":"array","items":{"type":"string"}},"dailyRewardsBreakdown":{"description":"Daily breakdown of rewards","type":"array","items":{"type":"object","properties":{"campaignId":{"type":"string"},"value":{"type":"number"},"maxValue":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"token":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]},"amount":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"distributionType":{"anyOf":[{"const":"DUTCH_AUCTION","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"AAVE_NET_APR","type":"string"},{"const":"ERC4626_APR","type":"string"},{"const":"ERC4626_SPREAD_CAPPED","type":"string"},{"const":"AAVE_V4_NET_APR","type":"string"},{"const":"DEEL_DISTRIBUTION","type":"string"},{"const":"SOFR_SPREAD_RATCHET","type":"string"},{"const":"ERC4626_TARGET_APR_WITH_MERKL","type":"string"},{"const":"TARGET_APR_WITH_MERKL","type":"string"},{"const":"NET_APR","type":"string"},{"const":"BORROW_SUBSIDY","type":"string"},{"const":"NET_APR_WITH_MERKL","type":"string"},{"const":"YIELD_BASIS_PID","type":"string"},{"const":"COMPOSED","type":"string"}]},"onChainCampaignId":{"type":"string"}},"required":["campaignId","value","timestamp","token","amount"]}},"pauseCompute":{"description":"ISO timestamp when computation was paused","anyOf":[{"type":"string"},{"type":"null"}]},"pausePrecompute":{"description":"Reason for pausing precomputation, or null if not paused","anyOf":[{"type":"string"},{"type":"null"}]},"hasOverrides":{"description":"Whether this campaign has previous config overrides","type":"boolean"},"isPrivate":{"description":"Indicates if the campaign is private","type":"boolean"},"hidden":{"description":"Whether the campaign is hidden from non-test API results","type":"boolean"},"hideLeaderboard":{"description":"Whether leaderboard, ranks and reward breakdowns are hidden for this campaign","type":"boolean"},"campaignEncodingHash":{"description":"Hash of the campaign configuration encoding","type":"string"}},"required":["id","computeChainId","distributionChainId","campaignId","type","amount","startTimestamp","endTimestamp","creatorAddress","params","chain","rewardToken","campaignStatus","createdAt","isPrivate"]}}},"required":["campaigns"]}]},{"type":"null"}]}}}}}},"operationId":"getV4Opportunities"}},"/v4/opportunities/count":{"get":{"tags":["Opportunities"],"description":"Get the count of opportunities corresponding to the query.","parameters":[{"name":"page","in":"query","required":false,"schema":{"minimum":0,"description":"0-indexed page number","default":0,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":0,"description":"0-indexed page number","default":0,"type":"number"}]}},{"name":"items","in":"query","required":false,"schema":{"minimum":1,"maximum":100,"description":"Number of items returned by page","default":20,"errorMessage":"Items must be between 1 and 100","anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"maximum":100,"description":"Number of items returned by page","default":20,"errorMessage":"Items must be between 1 and 100","type":"number"}]}},{"name":"name","in":"query","required":false,"schema":{"description":"Filter by name","type":"string"}},{"name":"search","in":"query","required":false,"schema":{"description":"Search amongst multiple values (token, protocols, tags, campaigns)","type":"string"}},{"name":"campaignId","in":"query","required":false,"schema":{"description":"Filter opportunities linked to a given **on-chain campaign ID** (32-byte hex hash, e.g. `0x93cf385c2a446a7596820601caf25e63bfc4939efa9a89a6f21563b58ee54eb1`). This is `Campaign.campaignId` in responses, NOT the internal `Campaign.id` (numeric hash). Returns `[]` if no campaign matches. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"creatorSlug","in":"query","required":false,"schema":{"description":"Filter by creator slug","type":"string"}},{"name":"chainId","in":"query","required":false,"schema":{"description":"A comma separated list of chain ids. Example: ?chainId=1,42161<br>You can get the list of all supported chains by calling [GET /v4/chains](#tag/chains/GET/v4/chains/)","type":"RegExp","source":"^\\d+(,\\d+)*$","flags":""}},{"name":"action","in":"query","required":false,"schema":{"description":"A comma seprated list actions. Legal values are: POOL, HOLD, DROP, LEND, BORROW, LONG, SHORT, SWAP, INVALID, STAKE","type":"string"}},{"name":"tokenTypes","in":"query","required":false,"schema":{"description":"Filter by token type. Use POINT to include point campaigns and PRETGE to include preTGE campaigns. By default every token is returned.","type":"array","items":{"anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]}}},{"name":"point","in":"query","required":false,"schema":{"description":"Include opportunities with point campaigns","type":"boolean"}},{"name":"type","in":"query","required":false,"schema":{"description":"A comma separated list of Opportunity type","type":"string"}},{"name":"creatorAddress","in":"query","required":false,"schema":{"description":"Filter by creator address","type":"string"}},{"name":"tags","in":"query","required":false,"schema":{"description":"Filter by tag","type":"string"}},{"name":"test","in":"query","required":false,"schema":{"description":"Include opportunities with test campaigns","default":false,"type":"boolean"}},{"name":"minimumTvl","in":"query","required":false,"schema":{"description":"Minimum TVL threshold in USD","type":"number"}},{"name":"maximumTvl","in":"query","required":false,"schema":{"description":"Maximum TVL threshold in USD","type":"number"}},{"name":"minimumApr","in":"query","required":false,"schema":{"description":"Minimum APR threshold","type":"number"}},{"name":"maximumApr","in":"query","required":false,"schema":{"description":"Maximum APR threshold","type":"number"}},{"name":"minimumDailyRewards","in":"query","required":false,"schema":{"description":"Minimum daily rewards threshold in USD","type":"number"}},{"name":"maximumDailyRewards","in":"query","required":false,"schema":{"description":"Maximum daily rewards threshold in USD","type":"number"}},{"name":"minimumCreatedAt","in":"query","required":false,"schema":{"description":"Filter opportunities whose last campaign was created at or after this Unix timestamp (seconds)","type":"number"}},{"name":"maximumCreatedAt","in":"query","required":false,"schema":{"description":"Filter opportunities whose last campaign was created at or before this Unix timestamp (seconds)","type":"number"}},{"name":"status","in":"query","required":false,"schema":{"description":"A comma separeted list of status. Legal values are: `LIVE`, `PAST`, `SOON`","type":"RegExp","source":"^(LIVE|PAST|SOON)(,(LIVE|PAST|SOON)){0,2}$","flags":""}},{"name":"identifier","in":"query","required":false,"schema":{"description":"Filter by opportunity identifier (a.k.a. `mainParameter`). Free-form string, often a pool/vault/market address (e.g. `0x35Cbe8542E70fa2f7F9cDF129F19e593F4b4f560`) or an arbitrary on-chain hash for non-address opportunities. NOT a campaign ID. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"id","in":"query","required":false,"schema":{"description":"A comma-separated list of **internal opportunity IDs** (`Opportunity.id`, numeric hash). Example: `?id=5877322385708089533,1234567890`. NOT campaign IDs. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"campaigns","in":"query","required":false,"schema":{"description":"Include campaign data. Will slow down the request. Default: false","type":"boolean"}},{"name":"tokens","in":"query","required":false,"schema":{"description":"A comma separated list of token symbol. Use to filter by token","type":"string"}},{"name":"stablecoin","in":"query","required":false,"schema":{"description":"Filter opportunities that include at least one stablecoin token","default":false,"type":"boolean"}},{"name":"rewardTokenSymbol","in":"query","required":false,"schema":{"description":"Filter by opportunity that have at least 1 campaigns where the reward token has this symbol","type":"string"}},{"name":"sort","in":"query","required":false,"schema":{"description":"Sort by `apr`, `tvl`, `rewards`, `maxDailyRewards`, last campaign creation date, campaign start times, or campaign end times","type":"RegExp","source":"^(apr|tvl|rewards|maxDailyRewards|lastCampaignCreatedAt|endingSoon|endingLast|startingSoon|startingLast)$","flags":""}},{"name":"order","in":"query","required":false,"schema":{"description":"`asc` to sort in ascending order or `desc` to sort in descending order.","default":"desc","type":"RegExp","source":"desc|asc","flags":""}},{"name":"distributionTypes","in":"query","required":false,"schema":{"type":"array","items":{"description":"Filter by reward mechanism. Legal values are: `FIX_REWARD`, `MAX_REWARD`, `DUTCH_AUCTION`, `TOTAL_APR`. Default: no filter","anyOf":[{"const":"FIX_REWARD","type":"string"},{"const":"MAX_REWARD","type":"string"},{"const":"DUTCH_AUCTION","type":"string"},{"const":"TOTAL_APR","type":"string"}]}}},{"name":"mainProtocolId","in":"query","required":false,"schema":{"description":"A comma-separated list of **protocol slugs** (e.g. `aave,morpho,uniswap`). NOT numeric IDs. List slugs at [GET /v4/protocols](#tag/protocols/GET/v4/protocols/). See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"programSlugs","in":"query","required":false,"schema":{"description":"A comma separated list of program ids or slugs. You can get the list of all supported programs by calling [GET /v4/programs](#tag/programs/GET/v4/programs/)","type":"string"}},{"name":"chainName","in":"query","required":false,"schema":{"description":"A comma separated list of chain names. Example: ?chainName=ethereum,arbitrum","type":"RegExp","source":"^[a-zA-Z0-9]+(,[a-zA-Z0-9]+)*$","flags":""}},{"name":"excludeSubCampaigns","in":"query","required":false,"schema":{"description":"Exclude sub-campaigns from the results. Default: false","default":false,"type":"boolean"}},{"name":"explorerAddress","in":"query","required":false,"schema":{"description":"Filter by **on-chain pool/vault/market address** (20-byte EVM address, e.g. `0x35Cbe8542E70fa2f7F9cDF129F19e593F4b4f560`). Often the most reliable way to look up an opportunity if you only know the underlying contract. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"withInvalids","in":"query","required":false,"schema":{"description":"Include opportunities that have been marked as invalid","default":false,"type":"boolean"}},{"name":"campaignTypes","in":"query","required":false,"schema":{"description":"A comma separated list of CampaignType enum numeric values. Example: ?campaignTypes=18,19","type":"RegExp","source":"^\\d+(,\\d+)*$","flags":""}}],"responses":{"200":{"description":"Response for status 200","content":{"text/plain":{"schema":{"type":"number"}}}}},"operationId":"getV4OpportunitiesCount"}},"/v4/opportunities/bins/apr":{"get":{"tags":["Opportunities"],"description":"Get the APR distribution of opportunities matching the query, grouped into bins.","parameters":[{"name":"page","in":"query","required":false,"schema":{"minimum":0,"description":"0-indexed page number","default":0,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":0,"description":"0-indexed page number","default":0,"type":"number"}]}},{"name":"items","in":"query","required":false,"schema":{"minimum":1,"maximum":100,"description":"Number of items returned by page","default":20,"errorMessage":"Items must be between 1 and 100","anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"maximum":100,"description":"Number of items returned by page","default":20,"errorMessage":"Items must be between 1 and 100","type":"number"}]}},{"name":"name","in":"query","required":false,"schema":{"description":"Filter by name","type":"string"}},{"name":"search","in":"query","required":false,"schema":{"description":"Search amongst multiple values (token, protocols, tags, campaigns)","type":"string"}},{"name":"campaignId","in":"query","required":false,"schema":{"description":"Filter opportunities linked to a given **on-chain campaign ID** (32-byte hex hash, e.g. `0x93cf385c2a446a7596820601caf25e63bfc4939efa9a89a6f21563b58ee54eb1`). This is `Campaign.campaignId` in responses, NOT the internal `Campaign.id` (numeric hash). Returns `[]` if no campaign matches. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"creatorSlug","in":"query","required":false,"schema":{"description":"Filter by creator slug","type":"string"}},{"name":"chainId","in":"query","required":false,"schema":{"description":"A comma separated list of chain ids. Example: ?chainId=1,42161<br>You can get the list of all supported chains by calling [GET /v4/chains](#tag/chains/GET/v4/chains/)","type":"RegExp","source":"^\\d+(,\\d+)*$","flags":""}},{"name":"action","in":"query","required":false,"schema":{"description":"A comma seprated list actions. Legal values are: POOL, HOLD, DROP, LEND, BORROW, LONG, SHORT, SWAP, INVALID, STAKE","type":"string"}},{"name":"tokenTypes","in":"query","required":false,"schema":{"description":"Filter by token type. Use POINT to include point campaigns and PRETGE to include preTGE campaigns. By default every token is returned.","type":"array","items":{"anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]}}},{"name":"point","in":"query","required":false,"schema":{"description":"Include opportunities with point campaigns","type":"boolean"}},{"name":"type","in":"query","required":false,"schema":{"description":"A comma separated list of Opportunity type","type":"string"}},{"name":"creatorAddress","in":"query","required":false,"schema":{"description":"Filter by creator address","type":"string"}},{"name":"tags","in":"query","required":false,"schema":{"description":"Filter by tag","type":"string"}},{"name":"test","in":"query","required":false,"schema":{"description":"Include opportunities with test campaigns","default":false,"type":"boolean"}},{"name":"minimumTvl","in":"query","required":false,"schema":{"description":"Minimum TVL threshold in USD","type":"number"}},{"name":"maximumTvl","in":"query","required":false,"schema":{"description":"Maximum TVL threshold in USD","type":"number"}},{"name":"minimumApr","in":"query","required":false,"schema":{"description":"Minimum APR threshold","type":"number"}},{"name":"maximumApr","in":"query","required":false,"schema":{"description":"Maximum APR threshold","type":"number"}},{"name":"minimumDailyRewards","in":"query","required":false,"schema":{"description":"Minimum daily rewards threshold in USD","type":"number"}},{"name":"maximumDailyRewards","in":"query","required":false,"schema":{"description":"Maximum daily rewards threshold in USD","type":"number"}},{"name":"minimumCreatedAt","in":"query","required":false,"schema":{"description":"Filter opportunities whose last campaign was created at or after this Unix timestamp (seconds)","type":"number"}},{"name":"maximumCreatedAt","in":"query","required":false,"schema":{"description":"Filter opportunities whose last campaign was created at or before this Unix timestamp (seconds)","type":"number"}},{"name":"status","in":"query","required":false,"schema":{"description":"A comma separeted list of status. Legal values are: `LIVE`, `PAST`, `SOON`","type":"RegExp","source":"^(LIVE|PAST|SOON)(,(LIVE|PAST|SOON)){0,2}$","flags":""}},{"name":"identifier","in":"query","required":false,"schema":{"description":"Filter by opportunity identifier (a.k.a. `mainParameter`). Free-form string, often a pool/vault/market address (e.g. `0x35Cbe8542E70fa2f7F9cDF129F19e593F4b4f560`) or an arbitrary on-chain hash for non-address opportunities. NOT a campaign ID. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"id","in":"query","required":false,"schema":{"description":"A comma-separated list of **internal opportunity IDs** (`Opportunity.id`, numeric hash). Example: `?id=5877322385708089533,1234567890`. NOT campaign IDs. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"campaigns","in":"query","required":false,"schema":{"description":"Include campaign data. Will slow down the request. Default: false","type":"boolean"}},{"name":"tokens","in":"query","required":false,"schema":{"description":"A comma separated list of token symbol. Use to filter by token","type":"string"}},{"name":"stablecoin","in":"query","required":false,"schema":{"description":"Filter opportunities that include at least one stablecoin token","default":false,"type":"boolean"}},{"name":"rewardTokenSymbol","in":"query","required":false,"schema":{"description":"Filter by opportunity that have at least 1 campaigns where the reward token has this symbol","type":"string"}},{"name":"sort","in":"query","required":false,"schema":{"description":"Sort by `apr`, `tvl`, `rewards`, `maxDailyRewards`, last campaign creation date, campaign start times, or campaign end times","type":"RegExp","source":"^(apr|tvl|rewards|maxDailyRewards|lastCampaignCreatedAt|endingSoon|endingLast|startingSoon|startingLast)$","flags":""}},{"name":"order","in":"query","required":false,"schema":{"description":"`asc` to sort in ascending order or `desc` to sort in descending order.","default":"desc","type":"RegExp","source":"desc|asc","flags":""}},{"name":"distributionTypes","in":"query","required":false,"schema":{"type":"array","items":{"description":"Filter by reward mechanism. Legal values are: `FIX_REWARD`, `MAX_REWARD`, `DUTCH_AUCTION`, `TOTAL_APR`. Default: no filter","anyOf":[{"const":"FIX_REWARD","type":"string"},{"const":"MAX_REWARD","type":"string"},{"const":"DUTCH_AUCTION","type":"string"},{"const":"TOTAL_APR","type":"string"}]}}},{"name":"mainProtocolId","in":"query","required":false,"schema":{"description":"A comma-separated list of **protocol slugs** (e.g. `aave,morpho,uniswap`). NOT numeric IDs. List slugs at [GET /v4/protocols](#tag/protocols/GET/v4/protocols/). See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"programSlugs","in":"query","required":false,"schema":{"description":"A comma separated list of program ids or slugs. You can get the list of all supported programs by calling [GET /v4/programs](#tag/programs/GET/v4/programs/)","type":"string"}},{"name":"chainName","in":"query","required":false,"schema":{"description":"A comma separated list of chain names. Example: ?chainName=ethereum,arbitrum","type":"RegExp","source":"^[a-zA-Z0-9]+(,[a-zA-Z0-9]+)*$","flags":""}},{"name":"excludeSubCampaigns","in":"query","required":false,"schema":{"description":"Exclude sub-campaigns from the results. Default: false","default":false,"type":"boolean"}},{"name":"explorerAddress","in":"query","required":false,"schema":{"description":"Filter by **on-chain pool/vault/market address** (20-byte EVM address, e.g. `0x35Cbe8542E70fa2f7F9cDF129F19e593F4b4f560`). Often the most reliable way to look up an opportunity if you only know the underlying contract. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"withInvalids","in":"query","required":false,"schema":{"description":"Include opportunities that have been marked as invalid","default":false,"type":"boolean"}},{"name":"campaignTypes","in":"query","required":false,"schema":{"description":"A comma separated list of CampaignType enum numeric values. Example: ?campaignTypes=18,19","type":"RegExp","source":"^\\d+(,\\d+)*$","flags":""}}],"responses":{"200":{"description":"Response for status 200","properties":{"data":{"type":"array","items":{"type":"object","properties":{"count":{"type":"number"},"min":{"type":"number"},"max":{"type":"number"}},"required":["count","min","max"]}}},"required":["data"],"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"count":{"type":"number"},"min":{"type":"number"},"max":{"type":"number"}},"required":["count","min","max"]}}},"required":["data"]}}}}},"operationId":"getV4OpportunitiesBinsApr"}},"/v4/opportunities/bins/tvl":{"get":{"tags":["Opportunities"],"description":"Get the TVL distribution of opportunities matching the query, grouped into bins.","parameters":[{"name":"page","in":"query","required":false,"schema":{"minimum":0,"description":"0-indexed page number","default":0,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":0,"description":"0-indexed page number","default":0,"type":"number"}]}},{"name":"items","in":"query","required":false,"schema":{"minimum":1,"maximum":100,"description":"Number of items returned by page","default":20,"errorMessage":"Items must be between 1 and 100","anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"maximum":100,"description":"Number of items returned by page","default":20,"errorMessage":"Items must be between 1 and 100","type":"number"}]}},{"name":"name","in":"query","required":false,"schema":{"description":"Filter by name","type":"string"}},{"name":"search","in":"query","required":false,"schema":{"description":"Search amongst multiple values (token, protocols, tags, campaigns)","type":"string"}},{"name":"campaignId","in":"query","required":false,"schema":{"description":"Filter opportunities linked to a given **on-chain campaign ID** (32-byte hex hash, e.g. `0x93cf385c2a446a7596820601caf25e63bfc4939efa9a89a6f21563b58ee54eb1`). This is `Campaign.campaignId` in responses, NOT the internal `Campaign.id` (numeric hash). Returns `[]` if no campaign matches. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"creatorSlug","in":"query","required":false,"schema":{"description":"Filter by creator slug","type":"string"}},{"name":"chainId","in":"query","required":false,"schema":{"description":"A comma separated list of chain ids. Example: ?chainId=1,42161<br>You can get the list of all supported chains by calling [GET /v4/chains](#tag/chains/GET/v4/chains/)","type":"RegExp","source":"^\\d+(,\\d+)*$","flags":""}},{"name":"action","in":"query","required":false,"schema":{"description":"A comma seprated list actions. Legal values are: POOL, HOLD, DROP, LEND, BORROW, LONG, SHORT, SWAP, INVALID, STAKE","type":"string"}},{"name":"tokenTypes","in":"query","required":false,"schema":{"description":"Filter by token type. Use POINT to include point campaigns and PRETGE to include preTGE campaigns. By default every token is returned.","type":"array","items":{"anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]}}},{"name":"point","in":"query","required":false,"schema":{"description":"Include opportunities with point campaigns","type":"boolean"}},{"name":"type","in":"query","required":false,"schema":{"description":"A comma separated list of Opportunity type","type":"string"}},{"name":"creatorAddress","in":"query","required":false,"schema":{"description":"Filter by creator address","type":"string"}},{"name":"tags","in":"query","required":false,"schema":{"description":"Filter by tag","type":"string"}},{"name":"test","in":"query","required":false,"schema":{"description":"Include opportunities with test campaigns","default":false,"type":"boolean"}},{"name":"minimumTvl","in":"query","required":false,"schema":{"description":"Minimum TVL threshold in USD","type":"number"}},{"name":"maximumTvl","in":"query","required":false,"schema":{"description":"Maximum TVL threshold in USD","type":"number"}},{"name":"minimumApr","in":"query","required":false,"schema":{"description":"Minimum APR threshold","type":"number"}},{"name":"maximumApr","in":"query","required":false,"schema":{"description":"Maximum APR threshold","type":"number"}},{"name":"minimumDailyRewards","in":"query","required":false,"schema":{"description":"Minimum daily rewards threshold in USD","type":"number"}},{"name":"maximumDailyRewards","in":"query","required":false,"schema":{"description":"Maximum daily rewards threshold in USD","type":"number"}},{"name":"minimumCreatedAt","in":"query","required":false,"schema":{"description":"Filter opportunities whose last campaign was created at or after this Unix timestamp (seconds)","type":"number"}},{"name":"maximumCreatedAt","in":"query","required":false,"schema":{"description":"Filter opportunities whose last campaign was created at or before this Unix timestamp (seconds)","type":"number"}},{"name":"status","in":"query","required":false,"schema":{"description":"A comma separeted list of status. Legal values are: `LIVE`, `PAST`, `SOON`","type":"RegExp","source":"^(LIVE|PAST|SOON)(,(LIVE|PAST|SOON)){0,2}$","flags":""}},{"name":"identifier","in":"query","required":false,"schema":{"description":"Filter by opportunity identifier (a.k.a. `mainParameter`). Free-form string, often a pool/vault/market address (e.g. `0x35Cbe8542E70fa2f7F9cDF129F19e593F4b4f560`) or an arbitrary on-chain hash for non-address opportunities. NOT a campaign ID. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"id","in":"query","required":false,"schema":{"description":"A comma-separated list of **internal opportunity IDs** (`Opportunity.id`, numeric hash). Example: `?id=5877322385708089533,1234567890`. NOT campaign IDs. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"campaigns","in":"query","required":false,"schema":{"description":"Include campaign data. Will slow down the request. Default: false","type":"boolean"}},{"name":"tokens","in":"query","required":false,"schema":{"description":"A comma separated list of token symbol. Use to filter by token","type":"string"}},{"name":"stablecoin","in":"query","required":false,"schema":{"description":"Filter opportunities that include at least one stablecoin token","default":false,"type":"boolean"}},{"name":"rewardTokenSymbol","in":"query","required":false,"schema":{"description":"Filter by opportunity that have at least 1 campaigns where the reward token has this symbol","type":"string"}},{"name":"sort","in":"query","required":false,"schema":{"description":"Sort by `apr`, `tvl`, `rewards`, `maxDailyRewards`, last campaign creation date, campaign start times, or campaign end times","type":"RegExp","source":"^(apr|tvl|rewards|maxDailyRewards|lastCampaignCreatedAt|endingSoon|endingLast|startingSoon|startingLast)$","flags":""}},{"name":"order","in":"query","required":false,"schema":{"description":"`asc` to sort in ascending order or `desc` to sort in descending order.","default":"desc","type":"RegExp","source":"desc|asc","flags":""}},{"name":"distributionTypes","in":"query","required":false,"schema":{"type":"array","items":{"description":"Filter by reward mechanism. Legal values are: `FIX_REWARD`, `MAX_REWARD`, `DUTCH_AUCTION`, `TOTAL_APR`. Default: no filter","anyOf":[{"const":"FIX_REWARD","type":"string"},{"const":"MAX_REWARD","type":"string"},{"const":"DUTCH_AUCTION","type":"string"},{"const":"TOTAL_APR","type":"string"}]}}},{"name":"mainProtocolId","in":"query","required":false,"schema":{"description":"A comma-separated list of **protocol slugs** (e.g. `aave,morpho,uniswap`). NOT numeric IDs. List slugs at [GET /v4/protocols](#tag/protocols/GET/v4/protocols/). See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"programSlugs","in":"query","required":false,"schema":{"description":"A comma separated list of program ids or slugs. You can get the list of all supported programs by calling [GET /v4/programs](#tag/programs/GET/v4/programs/)","type":"string"}},{"name":"chainName","in":"query","required":false,"schema":{"description":"A comma separated list of chain names. Example: ?chainName=ethereum,arbitrum","type":"RegExp","source":"^[a-zA-Z0-9]+(,[a-zA-Z0-9]+)*$","flags":""}},{"name":"excludeSubCampaigns","in":"query","required":false,"schema":{"description":"Exclude sub-campaigns from the results. Default: false","default":false,"type":"boolean"}},{"name":"explorerAddress","in":"query","required":false,"schema":{"description":"Filter by **on-chain pool/vault/market address** (20-byte EVM address, e.g. `0x35Cbe8542E70fa2f7F9cDF129F19e593F4b4f560`). Often the most reliable way to look up an opportunity if you only know the underlying contract. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"withInvalids","in":"query","required":false,"schema":{"description":"Include opportunities that have been marked as invalid","default":false,"type":"boolean"}},{"name":"campaignTypes","in":"query","required":false,"schema":{"description":"A comma separated list of CampaignType enum numeric values. Example: ?campaignTypes=18,19","type":"RegExp","source":"^\\d+(,\\d+)*$","flags":""}}],"responses":{"200":{"description":"Response for status 200","properties":{"data":{"type":"array","items":{"type":"object","properties":{"count":{"type":"number"},"min":{"type":"number"},"max":{"type":"number"}},"required":["count","min","max"]}}},"required":["data"],"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"count":{"type":"number"},"min":{"type":"number"},"max":{"type":"number"}},"required":["count","min","max"]}}},"required":["data"]}}}}},"operationId":"getV4OpportunitiesBinsTvl"}},"/v4/opportunities/bins/daily-rewards":{"get":{"tags":["Opportunities"],"description":"Get the daily rewards distribution of opportunities matching the query, grouped into bins.","parameters":[{"name":"page","in":"query","required":false,"schema":{"minimum":0,"description":"0-indexed page number","default":0,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":0,"description":"0-indexed page number","default":0,"type":"number"}]}},{"name":"items","in":"query","required":false,"schema":{"minimum":1,"maximum":100,"description":"Number of items returned by page","default":20,"errorMessage":"Items must be between 1 and 100","anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"maximum":100,"description":"Number of items returned by page","default":20,"errorMessage":"Items must be between 1 and 100","type":"number"}]}},{"name":"name","in":"query","required":false,"schema":{"description":"Filter by name","type":"string"}},{"name":"search","in":"query","required":false,"schema":{"description":"Search amongst multiple values (token, protocols, tags, campaigns)","type":"string"}},{"name":"campaignId","in":"query","required":false,"schema":{"description":"Filter opportunities linked to a given **on-chain campaign ID** (32-byte hex hash, e.g. `0x93cf385c2a446a7596820601caf25e63bfc4939efa9a89a6f21563b58ee54eb1`). This is `Campaign.campaignId` in responses, NOT the internal `Campaign.id` (numeric hash). Returns `[]` if no campaign matches. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"creatorSlug","in":"query","required":false,"schema":{"description":"Filter by creator slug","type":"string"}},{"name":"chainId","in":"query","required":false,"schema":{"description":"A comma separated list of chain ids. Example: ?chainId=1,42161<br>You can get the list of all supported chains by calling [GET /v4/chains](#tag/chains/GET/v4/chains/)","type":"RegExp","source":"^\\d+(,\\d+)*$","flags":""}},{"name":"action","in":"query","required":false,"schema":{"description":"A comma seprated list actions. Legal values are: POOL, HOLD, DROP, LEND, BORROW, LONG, SHORT, SWAP, INVALID, STAKE","type":"string"}},{"name":"tokenTypes","in":"query","required":false,"schema":{"description":"Filter by token type. Use POINT to include point campaigns and PRETGE to include preTGE campaigns. By default every token is returned.","type":"array","items":{"anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]}}},{"name":"point","in":"query","required":false,"schema":{"description":"Include opportunities with point campaigns","type":"boolean"}},{"name":"type","in":"query","required":false,"schema":{"description":"A comma separated list of Opportunity type","type":"string"}},{"name":"creatorAddress","in":"query","required":false,"schema":{"description":"Filter by creator address","type":"string"}},{"name":"tags","in":"query","required":false,"schema":{"description":"Filter by tag","type":"string"}},{"name":"test","in":"query","required":false,"schema":{"description":"Include opportunities with test campaigns","default":false,"type":"boolean"}},{"name":"minimumTvl","in":"query","required":false,"schema":{"description":"Minimum TVL threshold in USD","type":"number"}},{"name":"maximumTvl","in":"query","required":false,"schema":{"description":"Maximum TVL threshold in USD","type":"number"}},{"name":"minimumApr","in":"query","required":false,"schema":{"description":"Minimum APR threshold","type":"number"}},{"name":"maximumApr","in":"query","required":false,"schema":{"description":"Maximum APR threshold","type":"number"}},{"name":"minimumDailyRewards","in":"query","required":false,"schema":{"description":"Minimum daily rewards threshold in USD","type":"number"}},{"name":"maximumDailyRewards","in":"query","required":false,"schema":{"description":"Maximum daily rewards threshold in USD","type":"number"}},{"name":"minimumCreatedAt","in":"query","required":false,"schema":{"description":"Filter opportunities whose last campaign was created at or after this Unix timestamp (seconds)","type":"number"}},{"name":"maximumCreatedAt","in":"query","required":false,"schema":{"description":"Filter opportunities whose last campaign was created at or before this Unix timestamp (seconds)","type":"number"}},{"name":"status","in":"query","required":false,"schema":{"description":"A comma separeted list of status. Legal values are: `LIVE`, `PAST`, `SOON`","type":"RegExp","source":"^(LIVE|PAST|SOON)(,(LIVE|PAST|SOON)){0,2}$","flags":""}},{"name":"identifier","in":"query","required":false,"schema":{"description":"Filter by opportunity identifier (a.k.a. `mainParameter`). Free-form string, often a pool/vault/market address (e.g. `0x35Cbe8542E70fa2f7F9cDF129F19e593F4b4f560`) or an arbitrary on-chain hash for non-address opportunities. NOT a campaign ID. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"id","in":"query","required":false,"schema":{"description":"A comma-separated list of **internal opportunity IDs** (`Opportunity.id`, numeric hash). Example: `?id=5877322385708089533,1234567890`. NOT campaign IDs. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"campaigns","in":"query","required":false,"schema":{"description":"Include campaign data. Will slow down the request. Default: false","type":"boolean"}},{"name":"tokens","in":"query","required":false,"schema":{"description":"A comma separated list of token symbol. Use to filter by token","type":"string"}},{"name":"stablecoin","in":"query","required":false,"schema":{"description":"Filter opportunities that include at least one stablecoin token","default":false,"type":"boolean"}},{"name":"rewardTokenSymbol","in":"query","required":false,"schema":{"description":"Filter by opportunity that have at least 1 campaigns where the reward token has this symbol","type":"string"}},{"name":"sort","in":"query","required":false,"schema":{"description":"Sort by `apr`, `tvl`, `rewards`, `maxDailyRewards`, last campaign creation date, campaign start times, or campaign end times","type":"RegExp","source":"^(apr|tvl|rewards|maxDailyRewards|lastCampaignCreatedAt|endingSoon|endingLast|startingSoon|startingLast)$","flags":""}},{"name":"order","in":"query","required":false,"schema":{"description":"`asc` to sort in ascending order or `desc` to sort in descending order.","default":"desc","type":"RegExp","source":"desc|asc","flags":""}},{"name":"distributionTypes","in":"query","required":false,"schema":{"type":"array","items":{"description":"Filter by reward mechanism. Legal values are: `FIX_REWARD`, `MAX_REWARD`, `DUTCH_AUCTION`, `TOTAL_APR`. Default: no filter","anyOf":[{"const":"FIX_REWARD","type":"string"},{"const":"MAX_REWARD","type":"string"},{"const":"DUTCH_AUCTION","type":"string"},{"const":"TOTAL_APR","type":"string"}]}}},{"name":"mainProtocolId","in":"query","required":false,"schema":{"description":"A comma-separated list of **protocol slugs** (e.g. `aave,morpho,uniswap`). NOT numeric IDs. List slugs at [GET /v4/protocols](#tag/protocols/GET/v4/protocols/). See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"programSlugs","in":"query","required":false,"schema":{"description":"A comma separated list of program ids or slugs. You can get the list of all supported programs by calling [GET /v4/programs](#tag/programs/GET/v4/programs/)","type":"string"}},{"name":"chainName","in":"query","required":false,"schema":{"description":"A comma separated list of chain names. Example: ?chainName=ethereum,arbitrum","type":"RegExp","source":"^[a-zA-Z0-9]+(,[a-zA-Z0-9]+)*$","flags":""}},{"name":"excludeSubCampaigns","in":"query","required":false,"schema":{"description":"Exclude sub-campaigns from the results. Default: false","default":false,"type":"boolean"}},{"name":"explorerAddress","in":"query","required":false,"schema":{"description":"Filter by **on-chain pool/vault/market address** (20-byte EVM address, e.g. `0x35Cbe8542E70fa2f7F9cDF129F19e593F4b4f560`). Often the most reliable way to look up an opportunity if you only know the underlying contract. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"withInvalids","in":"query","required":false,"schema":{"description":"Include opportunities that have been marked as invalid","default":false,"type":"boolean"}},{"name":"campaignTypes","in":"query","required":false,"schema":{"description":"A comma separated list of CampaignType enum numeric values. Example: ?campaignTypes=18,19","type":"RegExp","source":"^\\d+(,\\d+)*$","flags":""}}],"responses":{"200":{"description":"Response for status 200","properties":{"data":{"type":"array","items":{"type":"object","properties":{"count":{"type":"number"},"min":{"type":"number"},"max":{"type":"number"}},"required":["count","min","max"]}}},"required":["data"],"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"count":{"type":"number"},"min":{"type":"number"},"max":{"type":"number"}},"required":["count","min","max"]}}},"required":["data"]}}}}},"operationId":"getV4OpportunitiesBinsDaily-rewards"}},"/v4/opportunities/aggregate/{field}":{"get":{"tags":["Opportunities"],"description":"Aggregate opportunities by a specific field (chainId, protocolId, tags, etc.).","parameters":[{"name":"field","in":"path","required":true,"schema":{"description":"Field to aggregate by. Supported values: dailyRewards, tvl, apr","anyOf":[{"const":"dailyRewards","type":"string"},{"const":"tvl","type":"string"},{"const":"apr","type":"string"}]}},{"name":"page","in":"query","required":false,"schema":{"minimum":0,"description":"0-indexed page number","default":0,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":0,"description":"0-indexed page number","default":0,"type":"number"}]}},{"name":"items","in":"query","required":false,"schema":{"minimum":1,"maximum":100,"description":"Number of items returned by page","default":20,"errorMessage":"Items must be between 1 and 100","anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"maximum":100,"description":"Number of items returned by page","default":20,"errorMessage":"Items must be between 1 and 100","type":"number"}]}},{"name":"name","in":"query","required":false,"schema":{"description":"Filter by name","type":"string"}},{"name":"search","in":"query","required":false,"schema":{"description":"Search amongst multiple values (token, protocols, tags, campaigns)","type":"string"}},{"name":"campaignId","in":"query","required":false,"schema":{"description":"Filter opportunities linked to a given **on-chain campaign ID** (32-byte hex hash, e.g. `0x93cf385c2a446a7596820601caf25e63bfc4939efa9a89a6f21563b58ee54eb1`). This is `Campaign.campaignId` in responses, NOT the internal `Campaign.id` (numeric hash). Returns `[]` if no campaign matches. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"creatorSlug","in":"query","required":false,"schema":{"description":"Filter by creator slug","type":"string"}},{"name":"chainId","in":"query","required":false,"schema":{"description":"A comma separated list of chain ids. Example: ?chainId=1,42161<br>You can get the list of all supported chains by calling [GET /v4/chains](#tag/chains/GET/v4/chains/)","type":"RegExp","source":"^\\d+(,\\d+)*$","flags":""}},{"name":"action","in":"query","required":false,"schema":{"description":"A comma seprated list actions. Legal values are: POOL, HOLD, DROP, LEND, BORROW, LONG, SHORT, SWAP, INVALID, STAKE","type":"string"}},{"name":"tokenTypes","in":"query","required":false,"schema":{"description":"Filter by token type. Use POINT to include point campaigns and PRETGE to include preTGE campaigns. By default every token is returned.","type":"array","items":{"anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]}}},{"name":"point","in":"query","required":false,"schema":{"description":"Include opportunities with point campaigns","type":"boolean"}},{"name":"type","in":"query","required":false,"schema":{"description":"A comma separated list of Opportunity type","type":"string"}},{"name":"creatorAddress","in":"query","required":false,"schema":{"description":"Filter by creator address","type":"string"}},{"name":"tags","in":"query","required":false,"schema":{"description":"Filter by tag","type":"string"}},{"name":"test","in":"query","required":false,"schema":{"description":"Include opportunities with test campaigns","default":false,"type":"boolean"}},{"name":"minimumTvl","in":"query","required":false,"schema":{"description":"Minimum TVL threshold in USD","type":"number"}},{"name":"maximumTvl","in":"query","required":false,"schema":{"description":"Maximum TVL threshold in USD","type":"number"}},{"name":"minimumApr","in":"query","required":false,"schema":{"description":"Minimum APR threshold","type":"number"}},{"name":"maximumApr","in":"query","required":false,"schema":{"description":"Maximum APR threshold","type":"number"}},{"name":"minimumDailyRewards","in":"query","required":false,"schema":{"description":"Minimum daily rewards threshold in USD","type":"number"}},{"name":"maximumDailyRewards","in":"query","required":false,"schema":{"description":"Maximum daily rewards threshold in USD","type":"number"}},{"name":"minimumCreatedAt","in":"query","required":false,"schema":{"description":"Filter opportunities whose last campaign was created at or after this Unix timestamp (seconds)","type":"number"}},{"name":"maximumCreatedAt","in":"query","required":false,"schema":{"description":"Filter opportunities whose last campaign was created at or before this Unix timestamp (seconds)","type":"number"}},{"name":"status","in":"query","required":false,"schema":{"description":"A comma separeted list of status. Legal values are: `LIVE`, `PAST`, `SOON`","type":"RegExp","source":"^(LIVE|PAST|SOON)(,(LIVE|PAST|SOON)){0,2}$","flags":""}},{"name":"identifier","in":"query","required":false,"schema":{"description":"Filter by opportunity identifier (a.k.a. `mainParameter`). Free-form string, often a pool/vault/market address (e.g. `0x35Cbe8542E70fa2f7F9cDF129F19e593F4b4f560`) or an arbitrary on-chain hash for non-address opportunities. NOT a campaign ID. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"id","in":"query","required":false,"schema":{"description":"A comma-separated list of **internal opportunity IDs** (`Opportunity.id`, numeric hash). Example: `?id=5877322385708089533,1234567890`. NOT campaign IDs. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"campaigns","in":"query","required":false,"schema":{"description":"Include campaign data. Will slow down the request. Default: false","type":"boolean"}},{"name":"tokens","in":"query","required":false,"schema":{"description":"A comma separated list of token symbol. Use to filter by token","type":"string"}},{"name":"stablecoin","in":"query","required":false,"schema":{"description":"Filter opportunities that include at least one stablecoin token","default":false,"type":"boolean"}},{"name":"rewardTokenSymbol","in":"query","required":false,"schema":{"description":"Filter by opportunity that have at least 1 campaigns where the reward token has this symbol","type":"string"}},{"name":"sort","in":"query","required":false,"schema":{"description":"Sort by `apr`, `tvl`, `rewards`, `maxDailyRewards`, last campaign creation date, campaign start times, or campaign end times","type":"RegExp","source":"^(apr|tvl|rewards|maxDailyRewards|lastCampaignCreatedAt|endingSoon|endingLast|startingSoon|startingLast)$","flags":""}},{"name":"order","in":"query","required":false,"schema":{"description":"`asc` to sort in ascending order or `desc` to sort in descending order.","default":"desc","type":"RegExp","source":"desc|asc","flags":""}},{"name":"distributionTypes","in":"query","required":false,"schema":{"type":"array","items":{"description":"Filter by reward mechanism. Legal values are: `FIX_REWARD`, `MAX_REWARD`, `DUTCH_AUCTION`, `TOTAL_APR`. Default: no filter","anyOf":[{"const":"FIX_REWARD","type":"string"},{"const":"MAX_REWARD","type":"string"},{"const":"DUTCH_AUCTION","type":"string"},{"const":"TOTAL_APR","type":"string"}]}}},{"name":"mainProtocolId","in":"query","required":false,"schema":{"description":"A comma-separated list of **protocol slugs** (e.g. `aave,morpho,uniswap`). NOT numeric IDs. List slugs at [GET /v4/protocols](#tag/protocols/GET/v4/protocols/). See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"programSlugs","in":"query","required":false,"schema":{"description":"A comma separated list of program ids or slugs. You can get the list of all supported programs by calling [GET /v4/programs](#tag/programs/GET/v4/programs/)","type":"string"}},{"name":"chainName","in":"query","required":false,"schema":{"description":"A comma separated list of chain names. Example: ?chainName=ethereum,arbitrum","type":"RegExp","source":"^[a-zA-Z0-9]+(,[a-zA-Z0-9]+)*$","flags":""}},{"name":"excludeSubCampaigns","in":"query","required":false,"schema":{"description":"Exclude sub-campaigns from the results. Default: false","default":false,"type":"boolean"}},{"name":"explorerAddress","in":"query","required":false,"schema":{"description":"Filter by **on-chain pool/vault/market address** (20-byte EVM address, e.g. `0x35Cbe8542E70fa2f7F9cDF129F19e593F4b4f560`). Often the most reliable way to look up an opportunity if you only know the underlying contract. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"withInvalids","in":"query","required":false,"schema":{"description":"Include opportunities that have been marked as invalid","default":false,"type":"boolean"}},{"name":"campaignTypes","in":"query","required":false,"schema":{"description":"A comma separated list of CampaignType enum numeric values. Example: ?campaignTypes=18,19","type":"RegExp","source":"^\\d+(,\\d+)*$","flags":""}}],"operationId":"getV4OpportunitiesAggregateByField"}},"/v4/opportunities/aggregate/max/{field}":{"get":{"tags":["Opportunities"],"description":"Get the maximum value for a specific field across filtered opportunities.","parameters":[{"name":"field","in":"path","required":true,"schema":{"description":"Field to aggregate by. Supported values: dailyRewards, tvl, apr","anyOf":[{"const":"dailyRewards","type":"string"},{"const":"tvl","type":"string"},{"const":"apr","type":"string"}]}},{"name":"page","in":"query","required":false,"schema":{"minimum":0,"description":"0-indexed page number","default":0,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":0,"description":"0-indexed page number","default":0,"type":"number"}]}},{"name":"items","in":"query","required":false,"schema":{"minimum":1,"maximum":100,"description":"Number of items returned by page","default":20,"errorMessage":"Items must be between 1 and 100","anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"maximum":100,"description":"Number of items returned by page","default":20,"errorMessage":"Items must be between 1 and 100","type":"number"}]}},{"name":"name","in":"query","required":false,"schema":{"description":"Filter by name","type":"string"}},{"name":"search","in":"query","required":false,"schema":{"description":"Search amongst multiple values (token, protocols, tags, campaigns)","type":"string"}},{"name":"campaignId","in":"query","required":false,"schema":{"description":"Filter opportunities linked to a given **on-chain campaign ID** (32-byte hex hash, e.g. `0x93cf385c2a446a7596820601caf25e63bfc4939efa9a89a6f21563b58ee54eb1`). This is `Campaign.campaignId` in responses, NOT the internal `Campaign.id` (numeric hash). Returns `[]` if no campaign matches. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"creatorSlug","in":"query","required":false,"schema":{"description":"Filter by creator slug","type":"string"}},{"name":"chainId","in":"query","required":false,"schema":{"description":"A comma separated list of chain ids. Example: ?chainId=1,42161<br>You can get the list of all supported chains by calling [GET /v4/chains](#tag/chains/GET/v4/chains/)","type":"RegExp","source":"^\\d+(,\\d+)*$","flags":""}},{"name":"action","in":"query","required":false,"schema":{"description":"A comma seprated list actions. Legal values are: POOL, HOLD, DROP, LEND, BORROW, LONG, SHORT, SWAP, INVALID, STAKE","type":"string"}},{"name":"tokenTypes","in":"query","required":false,"schema":{"description":"Filter by token type. Use POINT to include point campaigns and PRETGE to include preTGE campaigns. By default every token is returned.","type":"array","items":{"anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]}}},{"name":"point","in":"query","required":false,"schema":{"description":"Include opportunities with point campaigns","type":"boolean"}},{"name":"type","in":"query","required":false,"schema":{"description":"A comma separated list of Opportunity type","type":"string"}},{"name":"creatorAddress","in":"query","required":false,"schema":{"description":"Filter by creator address","type":"string"}},{"name":"tags","in":"query","required":false,"schema":{"description":"Filter by tag","type":"string"}},{"name":"test","in":"query","required":false,"schema":{"description":"Include opportunities with test campaigns","default":false,"type":"boolean"}},{"name":"minimumTvl","in":"query","required":false,"schema":{"description":"Minimum TVL threshold in USD","type":"number"}},{"name":"maximumTvl","in":"query","required":false,"schema":{"description":"Maximum TVL threshold in USD","type":"number"}},{"name":"minimumApr","in":"query","required":false,"schema":{"description":"Minimum APR threshold","type":"number"}},{"name":"maximumApr","in":"query","required":false,"schema":{"description":"Maximum APR threshold","type":"number"}},{"name":"minimumDailyRewards","in":"query","required":false,"schema":{"description":"Minimum daily rewards threshold in USD","type":"number"}},{"name":"maximumDailyRewards","in":"query","required":false,"schema":{"description":"Maximum daily rewards threshold in USD","type":"number"}},{"name":"minimumCreatedAt","in":"query","required":false,"schema":{"description":"Filter opportunities whose last campaign was created at or after this Unix timestamp (seconds)","type":"number"}},{"name":"maximumCreatedAt","in":"query","required":false,"schema":{"description":"Filter opportunities whose last campaign was created at or before this Unix timestamp (seconds)","type":"number"}},{"name":"status","in":"query","required":false,"schema":{"description":"A comma separeted list of status. Legal values are: `LIVE`, `PAST`, `SOON`","type":"RegExp","source":"^(LIVE|PAST|SOON)(,(LIVE|PAST|SOON)){0,2}$","flags":""}},{"name":"identifier","in":"query","required":false,"schema":{"description":"Filter by opportunity identifier (a.k.a. `mainParameter`). Free-form string, often a pool/vault/market address (e.g. `0x35Cbe8542E70fa2f7F9cDF129F19e593F4b4f560`) or an arbitrary on-chain hash for non-address opportunities. NOT a campaign ID. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"id","in":"query","required":false,"schema":{"description":"A comma-separated list of **internal opportunity IDs** (`Opportunity.id`, numeric hash). Example: `?id=5877322385708089533,1234567890`. NOT campaign IDs. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"campaigns","in":"query","required":false,"schema":{"description":"Include campaign data. Will slow down the request. Default: false","type":"boolean"}},{"name":"tokens","in":"query","required":false,"schema":{"description":"A comma separated list of token symbol. Use to filter by token","type":"string"}},{"name":"stablecoin","in":"query","required":false,"schema":{"description":"Filter opportunities that include at least one stablecoin token","default":false,"type":"boolean"}},{"name":"rewardTokenSymbol","in":"query","required":false,"schema":{"description":"Filter by opportunity that have at least 1 campaigns where the reward token has this symbol","type":"string"}},{"name":"sort","in":"query","required":false,"schema":{"description":"Sort by `apr`, `tvl`, `rewards`, `maxDailyRewards`, last campaign creation date, campaign start times, or campaign end times","type":"RegExp","source":"^(apr|tvl|rewards|maxDailyRewards|lastCampaignCreatedAt|endingSoon|endingLast|startingSoon|startingLast)$","flags":""}},{"name":"order","in":"query","required":false,"schema":{"description":"`asc` to sort in ascending order or `desc` to sort in descending order.","default":"desc","type":"RegExp","source":"desc|asc","flags":""}},{"name":"distributionTypes","in":"query","required":false,"schema":{"type":"array","items":{"description":"Filter by reward mechanism. Legal values are: `FIX_REWARD`, `MAX_REWARD`, `DUTCH_AUCTION`, `TOTAL_APR`. Default: no filter","anyOf":[{"const":"FIX_REWARD","type":"string"},{"const":"MAX_REWARD","type":"string"},{"const":"DUTCH_AUCTION","type":"string"},{"const":"TOTAL_APR","type":"string"}]}}},{"name":"mainProtocolId","in":"query","required":false,"schema":{"description":"A comma-separated list of **protocol slugs** (e.g. `aave,morpho,uniswap`). NOT numeric IDs. List slugs at [GET /v4/protocols](#tag/protocols/GET/v4/protocols/). See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"programSlugs","in":"query","required":false,"schema":{"description":"A comma separated list of program ids or slugs. You can get the list of all supported programs by calling [GET /v4/programs](#tag/programs/GET/v4/programs/)","type":"string"}},{"name":"chainName","in":"query","required":false,"schema":{"description":"A comma separated list of chain names. Example: ?chainName=ethereum,arbitrum","type":"RegExp","source":"^[a-zA-Z0-9]+(,[a-zA-Z0-9]+)*$","flags":""}},{"name":"excludeSubCampaigns","in":"query","required":false,"schema":{"description":"Exclude sub-campaigns from the results. Default: false","default":false,"type":"boolean"}},{"name":"explorerAddress","in":"query","required":false,"schema":{"description":"Filter by **on-chain pool/vault/market address** (20-byte EVM address, e.g. `0x35Cbe8542E70fa2f7F9cDF129F19e593F4b4f560`). Often the most reliable way to look up an opportunity if you only know the underlying contract. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"withInvalids","in":"query","required":false,"schema":{"description":"Include opportunities that have been marked as invalid","default":false,"type":"boolean"}},{"name":"campaignTypes","in":"query","required":false,"schema":{"description":"A comma separated list of CampaignType enum numeric values. Example: ?campaignTypes=18,19","type":"RegExp","source":"^\\d+(,\\d+)*$","flags":""}}],"operationId":"getV4OpportunitiesAggregateMaxByField"}},"/v4/opportunities/aggregate/min/{field}":{"get":{"tags":["Opportunities"],"description":"Get the minimum value for a specific field across filtered opportunities.","parameters":[{"name":"field","in":"path","required":true,"schema":{"description":"Field to aggregate by. Supported values: dailyRewards, tvl, apr","anyOf":[{"const":"dailyRewards","type":"string"},{"const":"tvl","type":"string"},{"const":"apr","type":"string"}]}},{"name":"page","in":"query","required":false,"schema":{"minimum":0,"description":"0-indexed page number","default":0,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":0,"description":"0-indexed page number","default":0,"type":"number"}]}},{"name":"items","in":"query","required":false,"schema":{"minimum":1,"maximum":100,"description":"Number of items returned by page","default":20,"errorMessage":"Items must be between 1 and 100","anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"maximum":100,"description":"Number of items returned by page","default":20,"errorMessage":"Items must be between 1 and 100","type":"number"}]}},{"name":"name","in":"query","required":false,"schema":{"description":"Filter by name","type":"string"}},{"name":"search","in":"query","required":false,"schema":{"description":"Search amongst multiple values (token, protocols, tags, campaigns)","type":"string"}},{"name":"campaignId","in":"query","required":false,"schema":{"description":"Filter opportunities linked to a given **on-chain campaign ID** (32-byte hex hash, e.g. `0x93cf385c2a446a7596820601caf25e63bfc4939efa9a89a6f21563b58ee54eb1`). This is `Campaign.campaignId` in responses, NOT the internal `Campaign.id` (numeric hash). Returns `[]` if no campaign matches. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"creatorSlug","in":"query","required":false,"schema":{"description":"Filter by creator slug","type":"string"}},{"name":"chainId","in":"query","required":false,"schema":{"description":"A comma separated list of chain ids. Example: ?chainId=1,42161<br>You can get the list of all supported chains by calling [GET /v4/chains](#tag/chains/GET/v4/chains/)","type":"RegExp","source":"^\\d+(,\\d+)*$","flags":""}},{"name":"action","in":"query","required":false,"schema":{"description":"A comma seprated list actions. Legal values are: POOL, HOLD, DROP, LEND, BORROW, LONG, SHORT, SWAP, INVALID, STAKE","type":"string"}},{"name":"tokenTypes","in":"query","required":false,"schema":{"description":"Filter by token type. Use POINT to include point campaigns and PRETGE to include preTGE campaigns. By default every token is returned.","type":"array","items":{"anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]}}},{"name":"point","in":"query","required":false,"schema":{"description":"Include opportunities with point campaigns","type":"boolean"}},{"name":"type","in":"query","required":false,"schema":{"description":"A comma separated list of Opportunity type","type":"string"}},{"name":"creatorAddress","in":"query","required":false,"schema":{"description":"Filter by creator address","type":"string"}},{"name":"tags","in":"query","required":false,"schema":{"description":"Filter by tag","type":"string"}},{"name":"test","in":"query","required":false,"schema":{"description":"Include opportunities with test campaigns","default":false,"type":"boolean"}},{"name":"minimumTvl","in":"query","required":false,"schema":{"description":"Minimum TVL threshold in USD","type":"number"}},{"name":"maximumTvl","in":"query","required":false,"schema":{"description":"Maximum TVL threshold in USD","type":"number"}},{"name":"minimumApr","in":"query","required":false,"schema":{"description":"Minimum APR threshold","type":"number"}},{"name":"maximumApr","in":"query","required":false,"schema":{"description":"Maximum APR threshold","type":"number"}},{"name":"minimumDailyRewards","in":"query","required":false,"schema":{"description":"Minimum daily rewards threshold in USD","type":"number"}},{"name":"maximumDailyRewards","in":"query","required":false,"schema":{"description":"Maximum daily rewards threshold in USD","type":"number"}},{"name":"minimumCreatedAt","in":"query","required":false,"schema":{"description":"Filter opportunities whose last campaign was created at or after this Unix timestamp (seconds)","type":"number"}},{"name":"maximumCreatedAt","in":"query","required":false,"schema":{"description":"Filter opportunities whose last campaign was created at or before this Unix timestamp (seconds)","type":"number"}},{"name":"status","in":"query","required":false,"schema":{"description":"A comma separeted list of status. Legal values are: `LIVE`, `PAST`, `SOON`","type":"RegExp","source":"^(LIVE|PAST|SOON)(,(LIVE|PAST|SOON)){0,2}$","flags":""}},{"name":"identifier","in":"query","required":false,"schema":{"description":"Filter by opportunity identifier (a.k.a. `mainParameter`). Free-form string, often a pool/vault/market address (e.g. `0x35Cbe8542E70fa2f7F9cDF129F19e593F4b4f560`) or an arbitrary on-chain hash for non-address opportunities. NOT a campaign ID. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"id","in":"query","required":false,"schema":{"description":"A comma-separated list of **internal opportunity IDs** (`Opportunity.id`, numeric hash). Example: `?id=5877322385708089533,1234567890`. NOT campaign IDs. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"campaigns","in":"query","required":false,"schema":{"description":"Include campaign data. Will slow down the request. Default: false","type":"boolean"}},{"name":"tokens","in":"query","required":false,"schema":{"description":"A comma separated list of token symbol. Use to filter by token","type":"string"}},{"name":"stablecoin","in":"query","required":false,"schema":{"description":"Filter opportunities that include at least one stablecoin token","default":false,"type":"boolean"}},{"name":"rewardTokenSymbol","in":"query","required":false,"schema":{"description":"Filter by opportunity that have at least 1 campaigns where the reward token has this symbol","type":"string"}},{"name":"sort","in":"query","required":false,"schema":{"description":"Sort by `apr`, `tvl`, `rewards`, `maxDailyRewards`, last campaign creation date, campaign start times, or campaign end times","type":"RegExp","source":"^(apr|tvl|rewards|maxDailyRewards|lastCampaignCreatedAt|endingSoon|endingLast|startingSoon|startingLast)$","flags":""}},{"name":"order","in":"query","required":false,"schema":{"description":"`asc` to sort in ascending order or `desc` to sort in descending order.","default":"desc","type":"RegExp","source":"desc|asc","flags":""}},{"name":"distributionTypes","in":"query","required":false,"schema":{"type":"array","items":{"description":"Filter by reward mechanism. Legal values are: `FIX_REWARD`, `MAX_REWARD`, `DUTCH_AUCTION`, `TOTAL_APR`. Default: no filter","anyOf":[{"const":"FIX_REWARD","type":"string"},{"const":"MAX_REWARD","type":"string"},{"const":"DUTCH_AUCTION","type":"string"},{"const":"TOTAL_APR","type":"string"}]}}},{"name":"mainProtocolId","in":"query","required":false,"schema":{"description":"A comma-separated list of **protocol slugs** (e.g. `aave,morpho,uniswap`). NOT numeric IDs. List slugs at [GET /v4/protocols](#tag/protocols/GET/v4/protocols/). See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"programSlugs","in":"query","required":false,"schema":{"description":"A comma separated list of program ids or slugs. You can get the list of all supported programs by calling [GET /v4/programs](#tag/programs/GET/v4/programs/)","type":"string"}},{"name":"chainName","in":"query","required":false,"schema":{"description":"A comma separated list of chain names. Example: ?chainName=ethereum,arbitrum","type":"RegExp","source":"^[a-zA-Z0-9]+(,[a-zA-Z0-9]+)*$","flags":""}},{"name":"excludeSubCampaigns","in":"query","required":false,"schema":{"description":"Exclude sub-campaigns from the results. Default: false","default":false,"type":"boolean"}},{"name":"explorerAddress","in":"query","required":false,"schema":{"description":"Filter by **on-chain pool/vault/market address** (20-byte EVM address, e.g. `0x35Cbe8542E70fa2f7F9cDF129F19e593F4b4f560`). Often the most reliable way to look up an opportunity if you only know the underlying contract. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"withInvalids","in":"query","required":false,"schema":{"description":"Include opportunities that have been marked as invalid","default":false,"type":"boolean"}},{"name":"campaignTypes","in":"query","required":false,"schema":{"description":"A comma separated list of CampaignType enum numeric values. Example: ?campaignTypes=18,19","type":"RegExp","source":"^\\d+(,\\d+)*$","flags":""}}],"operationId":"getV4OpportunitiesAggregateMinByField"}},"/v4/sofr-ratchet/campaign/{campaignId}":{"get":{"tags":["SOFR Spread Ratchet"],"description":"Current SOFR-spread-ratchet rate for a campaign, resolved from its own stored distribution settings (opportunityId, anchor, curve). Returns `campaignApr` (the baseline target or the boost gap, per the campaign's curve) plus the shared context: frozen mean TVL, last/next recalc, live SOFR, and the baseline/boosted APYs.","parameters":[{"name":"campaignId","in":"path","required":true,"schema":{"description":"Merkl campaign id.","type":"string"}}],"operationId":"getV4Sofr-ratchetCampaignByCampaignId"}},"/v4/sofr-ratchet/opportunity/{id}":{"get":{"tags":["SOFR Spread Ratchet"],"description":"Current SOFR-spread-ratchet rate for an opportunity at an explicit anchor: frozen 14-day-mean TVL with last/next recalc, live SOFR, and the resulting baseline/boosted APYs. Computed on the fly from the same shared logic the engine distributes against.","parameters":[{"name":"id","in":"path","required":true,"schema":{"pattern":"(([0-9]*)-([0-9A-Z]*)-(0x([0-9A-Za-z])*))|([0-9]{1,20})","description":"**Opportunity ID** (path-only). Two accepted forms: (1) internal numeric hash, ≤20 digits (e.g. `7673870997270712040`), or (2) composite `{chainId}-{type}-{identifier}` (e.g. `1-ERC20LOGPROCESSOR-0x35Cbe8542E70fa2f7F9cDF129F19e593F4b4f560`). The composite form is path-only — query filters (`?id=`, `?opportunityId=`) only accept the numeric form. NOT a campaign ID. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"anchor","in":"query","required":true,"schema":{"description":"Recalc anchor (unix s) = the owner (baseline) campaign's startTimestamp.","type":"number"}},{"name":"at","in":"query","required":false,"schema":{"description":"As-of time (unix s) to read the rate at; defaults to now.","type":"number"}},{"name":"period","in":"query","required":false,"schema":{"description":"Recalc period in seconds (default 14 days).","type":"number"}}],"operationId":"getV4Sofr-ratchetOpportunityById"}},"/v4/overrides/check":{"post":{"tags":["Overrides"],"description":"Validate if an override is allowed. Checks: (1) rewardToken cannot change, (2) amount cannot change, (3) startTimestamp cannot change after campaign starts, (4) endTimestamp must be in future.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"oldConfig":{},"newConfig":{}},"required":["oldConfig","newConfig"]}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"oldConfig":{},"newConfig":{}},"required":["oldConfig","newConfig"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"oldConfig":{},"newConfig":{}},"required":["oldConfig","newConfig"]}}},"required":true},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"isValid":{"description":"Whether the override is valid","type":"boolean"},"errors":{"description":"Validation errors if any","type":"array","items":{"type":"object","properties":{"path":{"description":"Field path that failed validation","type":"string"},"message":{"description":"Human-readable error message","type":"string"}},"required":["path","message"]}}},"required":["isValid","errors"]}}}}},"operationId":"postV4OverridesCheck"}},"/v4/overrides/{id}/previous-configs":{"get":{"tags":["Overrides"],"description":"Get all previous configs for a campaign, showing the opportunity each config was linked to before overrides","summary":"Get previous campaign configs","parameters":[{"name":"id","in":"path","required":true,"schema":{"description":"Campaign Database ID to fetch previous configs for","type":"string"}}],"responses":{"200":{"description":"Array of previous campaign configurations with their linked opportunities","content":{"application/json":{"schema":{"description":"Array of previous campaign configurations with their linked opportunities","type":"array","items":{"type":"object","properties":{"id":{"description":"Unique ID of the previous config record","type":"string"},"campaignId":{"description":"Campaign ID this config belongs to","type":"string"},"opportunityId":{"description":"Opportunity ID the config was pointing to","type":"string"},"config":{"description":"Previous campaign configuration snapshot"},"overrideTimestamp":{"description":"Unix timestamp when the override occurred","anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}]},"Opportunity":{"type":"object","properties":{"id":{"type":"string"},"chainId":{"type":"number"},"type":{"type":"string"},"identifier":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"}},"required":["id","chainId","type","identifier","name"]}},"required":["id","campaignId","opportunityId","config","overrideTimestamp","Opportunity"]}}}}}},"operationId":"getV4OverridesByIdPrevious-configs"}},"/v4/campaigns/{id}/access/grant":{"post":{"tags":["Campaign Privacy"],"description":"Grant access to a private campaign for a specific address.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"userAddress":{"pattern":"^0x[a-fA-F0-9]{40}$","description":"Ethereum address to grant/revoke access","type":"string"},"canManageAccess":{"description":"Whether the user can manage (grant/revoke) access for others","default":false,"type":"boolean"}},"required":["userAddress"]}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"userAddress":{"pattern":"^0x[a-fA-F0-9]{40}$","description":"Ethereum address to grant/revoke access","type":"string"},"canManageAccess":{"description":"Whether the user can manage (grant/revoke) access for others","default":false,"type":"boolean"}},"required":["userAddress"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"userAddress":{"pattern":"^0x[a-fA-F0-9]{40}$","description":"Ethereum address to grant/revoke access","type":"string"},"canManageAccess":{"description":"Whether the user can manage (grant/revoke) access for others","default":false,"type":"boolean"}},"required":["userAddress"]}}},"required":true},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"}},"required":["success","message"]}}}}},"operationId":"postV4CampaignsByIdAccessGrant"}},"/v4/campaigns/{id}/access/revoke":{"delete":{"tags":["Campaign Privacy"],"description":"Revoke access to a private campaign for a specific address.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"userAddress":{"pattern":"^0x[a-fA-F0-9]{40}$","description":"Ethereum address to grant/revoke access","type":"string"},"canManageAccess":{"description":"Whether the user can manage (grant/revoke) access for others","default":false,"type":"boolean"}},"required":["userAddress"]}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"userAddress":{"pattern":"^0x[a-fA-F0-9]{40}$","description":"Ethereum address to grant/revoke access","type":"string"},"canManageAccess":{"description":"Whether the user can manage (grant/revoke) access for others","default":false,"type":"boolean"}},"required":["userAddress"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"userAddress":{"pattern":"^0x[a-fA-F0-9]{40}$","description":"Ethereum address to grant/revoke access","type":"string"},"canManageAccess":{"description":"Whether the user can manage (grant/revoke) access for others","default":false,"type":"boolean"}},"required":["userAddress"]}}},"required":true},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"}},"required":["success","message"]}}}}},"operationId":"deleteV4CampaignsByIdAccessRevoke"}},"/v4/campaigns/{id}/access/list":{"get":{"tags":["Campaign Privacy"],"description":"List all addresses currently granted access to a private campaign.","responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"dynamicGrants":{"type":"array","items":{"type":"object","properties":{"userAddress":{"type":"string"},"canManageAccess":{"type":"boolean"}},"required":["userAddress","canManageAccess"]}}},"required":["dynamicGrants"]}}}}},"operationId":"getV4CampaignsByIdAccessList"}},"/v4/programs/":{"get":{"tags":["Programs"],"description":"**Retrieve Multiple Programs**\n<p>This endpoint enables you to search for programs by providing specific criteria through query parameters.</p>","parameters":[{"name":"page","in":"query","required":false,"schema":{"minimum":0,"description":"0-indexed page number","default":0,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":0,"description":"0-indexed page number","default":0,"type":"number"}]}},{"name":"items","in":"query","required":false,"schema":{"minimum":1,"maximum":100,"description":"Number of items returned by page","default":50,"errorMessage":"Items must be between 1 and 100","anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"maximum":100,"description":"Number of items returned by page","default":50,"errorMessage":"Items must be between 1 and 100","type":"number"}]}},{"name":"name","in":"query","required":false,"schema":{"description":"Filter programs by name (case-insensitive, partial match)","type":"string"}},{"name":"slugs","in":"query","required":false,"schema":{"description":"A comma separated list of program slugs. You can get the list of all supported programs by calling [GET /v4/programs](#tag/programs/GET/v4/programs/)","type":"string"}}],"operationId":"getV4Programs"}},"/v4/programs/{idOrSlug}":{"get":{"tags":["Programs"],"description":"**Retrieve a Program by id or slug**\n<p>This endpoint enables you to search for a program by providing its unique ID or slug identifier in the idOrSlug path parameter.</p>","parameters":[{"name":"idOrSlug","in":"path","required":true,"schema":{"description":"Program unique identifier or slug","type":"string"}}],"operationId":"getV4ProgramsByIdOrSlug"}},"/v4/programs/count":{"get":{"tags":["Programs"],"description":"Get the total count of all programs.","parameters":[{"name":"page","in":"query","required":false,"schema":{"minimum":0,"description":"0-indexed page number","default":0,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":0,"description":"0-indexed page number","default":0,"type":"number"}]}},{"name":"items","in":"query","required":false,"schema":{"minimum":1,"maximum":100,"description":"Number of items returned by page","default":50,"errorMessage":"Items must be between 1 and 100","anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"maximum":100,"description":"Number of items returned by page","default":50,"errorMessage":"Items must be between 1 and 100","type":"number"}]}},{"name":"name","in":"query","required":false,"schema":{"description":"Filter programs by name (case-insensitive, partial match)","type":"string"}},{"name":"slugs","in":"query","required":false,"schema":{"description":"A comma separated list of program slugs. You can get the list of all supported programs by calling [GET /v4/programs](#tag/programs/GET/v4/programs/)","type":"string"}}],"operationId":"getV4ProgramsCount"}},"/v4/protocols/":{"get":{"tags":["Protocols"],"description":"List protocols supported and integrated by Merkl. Use query parameters to filter by chain ID, tags, or other criteria.","parameters":[{"name":"page","in":"query","required":false,"schema":{"minimum":0,"description":"0-indexed page number","default":0,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":0,"description":"0-indexed page number","default":0,"type":"number"}]}},{"name":"items","in":"query","required":false,"schema":{"minimum":1,"maximum":500,"description":"Number of items returned by page","default":20,"errorMessage":"Items must be between 1 and 500","anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"maximum":500,"description":"Number of items returned by page","default":20,"errorMessage":"Items must be between 1 and 500","type":"number"}]}},{"name":"id","in":"query","required":false,"schema":{"description":"Filter by **protocol slug** (e.g. `aave`, `morpho`, `uniswap`). NOT a numeric ID. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"test","in":"query","required":false,"schema":{"description":"Includes protocols that have only test opportunities","default":false,"type":"boolean"}},{"name":"ids","in":"query","required":false,"schema":{"description":"Filter by multiple **protocol slugs** (e.g. `aave`, `morpho`).","type":"array","items":{"type":"string"}}},{"name":"name","in":"query","required":false,"schema":{"description":"Search protocols by name","type":"string"}},{"name":"tags","in":"query","required":false,"schema":{"description":"Filter by tags","type":"array","items":{"type":"string"}}},{"name":"opportunityTag","in":"query","required":false,"schema":{"description":"Filter by underlying tag opportunities","type":"string"}},{"name":"opportunityChain","in":"query","required":false,"schema":{"description":"Filter by underlying opportunity chains","anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"Filter by underlying opportunity chains","type":"number"}]}},{"name":"status","in":"query","required":false,"schema":{"description":"A comma separated list of campaign statuses used to filter campaigns counted in `numberOfLiveCampaigns` and `dailyRewards`. Legal values: `LIVE`, `PAST`, `SOON`. Defaults to `LIVE`.","type":"RegExp","source":"^(LIVE|PAST|SOON)(,(LIVE|PAST|SOON)){0,2}$","flags":""}},{"name":"tokenTypes","in":"query","required":false,"schema":{"description":"Filter campaigns counted in `numberOfLiveCampaigns` and `dailyRewards` by reward token type. Default: no filter.","type":"array","items":{"anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]}}},{"name":"excludeSubCampaigns","in":"query","required":false,"schema":{"description":"Exclude sub-campaigns from the campaigns counted in `numberOfLiveCampaigns` and `dailyRewards`. Default: false.","default":false,"type":"boolean"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"array","items":{"$id":"protocol","title":"Protocol","description":"Protocol","type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"icon":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"description":{"type":"string"},"url":{"type":"string"},"dailyRewards":{"type":"number"},"numberOfLiveCampaigns":{"type":"number"},"opportunityLiveTags":{"type":"array","items":{"type":"string"}},"banner":{"anyOf":[{"type":"string"},{"type":"null"}]},"opportunityBannerLight":{"anyOf":[{"type":"string"},{"type":"null"}]},"opportunityBannerDark":{"anyOf":[{"type":"string"},{"type":"null"}]},"trustData":{"anyOf":[{"type":"object","properties":{"slug":{"type":"string"},"category":{"anyOf":[{"type":"string"},{"type":"null"}]},"audits":{"anyOf":[{"type":"string"},{"type":"null"}]},"audit_links":{"type":"array","items":{"type":"string"}},"audit_note":{"anyOf":[{"type":"string"},{"type":"null"}]},"github":{"type":"array","items":{"type":"string"}},"twitter":{"anyOf":[{"type":"string"},{"type":"null"}]},"listedAt":{"anyOf":[{"type":"number"},{"type":"null"}]},"parentProtocol":{"anyOf":[{"type":"string"},{"type":"null"}]},"tvl":{"anyOf":[{"type":"number"},{"type":"null"}]},"hacks":{"type":"array","items":{"type":"object","properties":{"date":{"type":"number"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"amountUSD":{"anyOf":[{"type":"number"},{"type":"null"}]},"technique":{"anyOf":[{"type":"string"},{"type":"null"}]},"source":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["date","name","amountUSD","technique","source"]}},"syncedAt":{"type":"number"}},"required":["slug","category","audits","audit_links","audit_note","github","twitter","listedAt","parentProtocol","syncedAt"]},{"type":"null"}]}},"required":["id","name","icon","tags","description","url","banner","opportunityBannerLight","opportunityBannerDark","trustData"]}}}}}},"operationId":"getV4Protocols"}},"/v4/protocols/count":{"get":{"tags":["Protocols"],"description":"Get the number of protocols corresponding to the query. Use query parameters to filter the count.","parameters":[{"name":"page","in":"query","required":false,"schema":{"minimum":0,"description":"0-indexed page number","default":0,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":0,"description":"0-indexed page number","default":0,"type":"number"}]}},{"name":"items","in":"query","required":false,"schema":{"minimum":1,"maximum":500,"description":"Number of items returned by page","default":20,"errorMessage":"Items must be between 1 and 500","anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"maximum":500,"description":"Number of items returned by page","default":20,"errorMessage":"Items must be between 1 and 500","type":"number"}]}},{"name":"id","in":"query","required":false,"schema":{"description":"Filter by **protocol slug** (e.g. `aave`, `morpho`, `uniswap`). NOT a numeric ID. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"test","in":"query","required":false,"schema":{"description":"Includes protocols that have only test opportunities","default":false,"type":"boolean"}},{"name":"ids","in":"query","required":false,"schema":{"description":"Filter by multiple **protocol slugs** (e.g. `aave`, `morpho`).","type":"array","items":{"type":"string"}}},{"name":"name","in":"query","required":false,"schema":{"description":"Search protocols by name","type":"string"}},{"name":"tags","in":"query","required":false,"schema":{"description":"Filter by tags","type":"array","items":{"type":"string"}}},{"name":"opportunityTag","in":"query","required":false,"schema":{"description":"Filter by underlying tag opportunities","type":"string"}},{"name":"opportunityChain","in":"query","required":false,"schema":{"description":"Filter by underlying opportunity chains","anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"Filter by underlying opportunity chains","type":"number"}]}},{"name":"status","in":"query","required":false,"schema":{"description":"A comma separated list of campaign statuses used to filter campaigns counted in `numberOfLiveCampaigns` and `dailyRewards`. Legal values: `LIVE`, `PAST`, `SOON`. Defaults to `LIVE`.","type":"RegExp","source":"^(LIVE|PAST|SOON)(,(LIVE|PAST|SOON)){0,2}$","flags":""}},{"name":"tokenTypes","in":"query","required":false,"schema":{"description":"Filter campaigns counted in `numberOfLiveCampaigns` and `dailyRewards` by reward token type. Default: no filter.","type":"array","items":{"anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]}}},{"name":"excludeSubCampaigns","in":"query","required":false,"schema":{"description":"Exclude sub-campaigns from the campaigns counted in `numberOfLiveCampaigns` and `dailyRewards`. Default: false.","default":false,"type":"boolean"}}],"operationId":"getV4ProtocolsCount"}},"/v4/protocols/{id}":{"get":{"tags":["Protocols"],"description":"Get a protocol by its ID or name using id path parameter. This endpoint searches by protocol ID first, then falls back to name.","parameters":[{"name":"id","in":"path","required":true,"schema":{"description":"Protocol ID","type":"string"}}],"operationId":"getV4ProtocolsById"}},"/v4/reallocations/breakdown":{"get":{"tags":["Reallocations"],"description":"**Retrieve Reallocation Breakdown**\n<p>Returns aggregated reallocation amounts grouped by recipient and campaign.</p>\n<p>Filters only successful reallocation operations (reason = \"reallocation\").</p>\n<p>Use query parameters to filter by chain, recipients, and campaigns.</p>\n<p><strong>Authentication:</strong> Requires a valid API key passed via the <code>Authorization</code> header.</p>","parameters":[{"name":"chainId","in":"query","required":true,"schema":{"description":"Required. Distribution chain ID where reallocations occurred (numeric, e.g. `1` for Ethereum)","anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"Required. Distribution chain ID where reallocations occurred (numeric, e.g. `1` for Ethereum)","type":"number"}]}},{"name":"to","in":"query","required":false,"schema":{"description":"Filter by recipient address(es). Comma-separated or repeated query parameter supported. Returns reallocations TO these addresses.","type":"array","items":{"type":"string"}}},{"name":"campaignIds","in":"query","required":false,"schema":{"description":"Filter by **on-chain campaign ID(s)** (32-byte hex hash, e.g. `0x93cf385c...`). Comma-separated or repeated query parameter supported. NOT internal `Campaign.id`. See [ID types](/integrate-merkl/id-types).","type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"chainId":{"description":"Distribution chain ID where the reallocation occurred","type":"number"},"campaignId":{"description":"**On-chain campaign ID** (32-byte hex hash, e.g. `0x93cf385c...`). NOT internal `Campaign.id`. See [ID types](/integrate-merkl/id-types).","type":"string"},"to":{"description":"Recipient address receiving the reallocated rewards","type":"string"},"tokenAddress":{"description":"Address of the reward token","type":"string"},"tokenSymbol":{"description":"Human-readable symbol of the reward token (e.g. USDC, ANGLE)","type":"string"},"tokenDecimals":{"description":"Number of decimals for the reward token (e.g. 18 for ANGLE, 6 for USDC)","type":"number"},"amount":{"description":"Total reallocated amount in raw token units (wei). String format to preserve precision for large BigInt values. Divide by 10^tokenDecimals for human-readable amount.","type":"string"},"count":{"description":"Number of individual reallocation entries (LeafBreakdown records with reason=reallocation) aggregated into this total","type":"number"}},"required":["chainId","campaignId","to","tokenAddress","amount","count"]}}}}}},"operationId":"getV4ReallocationsBreakdown"}},"/v4/referral/code":{"get":{"tags":["Referral"],"description":"Returns the transaction to register user as a referrer on-chain and some additional state using chainId, referralKey, and address query parameters","parameters":[{"name":"chainId","in":"query","required":true,"schema":{"type":"number"}},{"name":"referralKey","in":"query","required":true,"schema":{"type":"string"}},{"name":"address","in":"query","required":true,"schema":{"type":"string"}}],"operationId":"getV4ReferralCode"}},"/v4/referral/redeem":{"get":{"tags":["Referral"],"description":"Returns the transaction to redeem a referral code on-chain and some additional state using chainId, referralKey, and code query parameters","parameters":[{"name":"chainId","in":"query","required":true,"schema":{"type":"number"}},{"name":"referralKey","in":"query","required":true,"schema":{"type":"string"}},{"name":"code","in":"query","required":true,"schema":{"type":"string"}}],"operationId":"getV4ReferralRedeem"}},"/v4/rewards/":{"get":{"tags":["Rewards"],"description":"Returns all the addresses that received rewards for a given campaign, sorted by descending amounts. Use query parameters to filter by campaign ID, chain ID, and pagination.","parameters":[{"name":"page","in":"query","required":false,"schema":{"minimum":0,"description":"0-indexed page number","default":0,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":0,"description":"0-indexed page number","default":0,"type":"number"}]}},{"name":"items","in":"query","required":false,"schema":{"minimum":1,"maximum":1000,"description":"Number of items returned by page","default":20,"errorMessage":"Items must be between 1 and 1000","anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"maximum":1000,"description":"Number of items returned by page","default":20,"errorMessage":"Items must be between 1 and 1000","type":"number"}]}},{"name":"chainId","in":"query","required":true,"schema":{"description":"Distribution chain ID (numeric, e.g. `1` for Ethereum). See [ID types](/integrate-merkl/id-types).","anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"Distribution chain ID (numeric, e.g. `1` for Ethereum). See [ID types](/integrate-merkl/id-types).","type":"number"}]}},{"name":"campaignId","in":"query","required":true,"schema":{"description":"**On-chain campaign ID** (32-byte hex hash, e.g. `0x93cf385c2a446a7596820601caf25e63bfc4939efa9a89a6f21563b58ee54eb1`). NOT the internal `Campaign.id` (numeric hash). See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"hide","in":"query","required":false,"schema":{"description":"If true, hides creator and admin from the results.","type":"boolean"}}],"operationId":"getV4Rewards"}},"/v4/rewards/total":{"get":{"tags":["Rewards"],"description":"Returns the total amount distributed for a given campaign. Use query parameters to specify campaign ID and chain ID.","parameters":[{"name":"page","in":"query","required":false,"schema":{"minimum":0,"description":"0-indexed page number","default":0,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":0,"description":"0-indexed page number","default":0,"type":"number"}]}},{"name":"items","in":"query","required":false,"schema":{"minimum":1,"maximum":1000,"description":"Number of items returned by page","default":20,"errorMessage":"Items must be between 1 and 1000","anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"maximum":1000,"description":"Number of items returned by page","default":20,"errorMessage":"Items must be between 1 and 1000","type":"number"}]}},{"name":"chainId","in":"query","required":true,"schema":{"description":"Distribution chain ID (numeric, e.g. `1` for Ethereum). See [ID types](/integrate-merkl/id-types).","anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"Distribution chain ID (numeric, e.g. `1` for Ethereum). See [ID types](/integrate-merkl/id-types).","type":"number"}]}},{"name":"campaignId","in":"query","required":true,"schema":{"description":"**On-chain campaign ID** (32-byte hex hash, e.g. `0x93cf385c2a446a7596820601caf25e63bfc4939efa9a89a6f21563b58ee54eb1`). NOT the internal `Campaign.id` (numeric hash). See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"hide","in":"query","required":false,"schema":{"description":"If true, hides creator and admin from the results.","type":"boolean"}}],"operationId":"getV4RewardsTotal"}},"/v4/rewards/count":{"get":{"tags":["Rewards"],"description":"Returns the number of recipients that earned rewards in a given campaign. Use query parameters to specify campaign ID and chain ID.","parameters":[{"name":"page","in":"query","required":false,"schema":{"minimum":0,"description":"0-indexed page number","default":0,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":0,"description":"0-indexed page number","default":0,"type":"number"}]}},{"name":"items","in":"query","required":false,"schema":{"minimum":1,"maximum":1000,"description":"Number of items returned by page","default":20,"errorMessage":"Items must be between 1 and 1000","anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"maximum":1000,"description":"Number of items returned by page","default":20,"errorMessage":"Items must be between 1 and 1000","type":"number"}]}},{"name":"chainId","in":"query","required":true,"schema":{"description":"Distribution chain ID (numeric, e.g. `1` for Ethereum). See [ID types](/integrate-merkl/id-types).","anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"Distribution chain ID (numeric, e.g. `1` for Ethereum). See [ID types](/integrate-merkl/id-types).","type":"number"}]}},{"name":"campaignId","in":"query","required":true,"schema":{"description":"**On-chain campaign ID** (32-byte hex hash, e.g. `0x93cf385c2a446a7596820601caf25e63bfc4939efa9a89a6f21563b58ee54eb1`). NOT the internal `Campaign.id` (numeric hash). See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"hide","in":"query","required":false,"schema":{"description":"If true, hides creator and admin from the results.","type":"boolean"}}],"operationId":"getV4RewardsCount"}},"/v4/rewards/rank":{"get":{"tags":["Rewards"],"description":"Returns the rank of a user in a campaign leaderboard, based on reward amount. Returns an empty array if the rank is not yet available.","parameters":[{"name":"chainId","in":"query","required":true,"schema":{"description":"Distribution chain ID (numeric, e.g. `1` for Ethereum). See [ID types](/integrate-merkl/id-types).","anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"Distribution chain ID (numeric, e.g. `1` for Ethereum). See [ID types](/integrate-merkl/id-types).","type":"number"}]}},{"name":"campaignId","in":"query","required":true,"schema":{"description":"**On-chain campaign ID** (32-byte hex hash, e.g. `0x93cf385c...`). NOT the internal `Campaign.id`. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"userAddress","in":"query","required":true,"schema":{"description":"Wallet address to look up rank for.","type":"string"}},{"name":"hide","in":"query","required":false,"schema":{"description":"If true, excludes creator and admin from ranking (adjusts rank accordingly).","type":"boolean"}}],"operationId":"getV4RewardsRank"}},"/v4/rewards/campaign/{campaignId}/list":{"get":{"tags":["Rewards"],"description":"Get rewards for a specific campaign by campaignId path parameter and list of addresses","parameters":[{"name":"campaignId","in":"path","required":true,"schema":{"description":"**On-chain campaign ID** (32-byte hex hash, e.g. `0x93cf385c...`). NOT the internal `Campaign.id`. See [ID types](/integrate-merkl/id-types).","type":"string"}},{"name":"addresses","in":"query","required":true,"schema":{"type":"array","items":{"type":"string"}}}],"operationId":"getV4RewardsCampaignByCampaignIdList"}},"/v4/rewards/token/":{"get":{"tags":["Rewards"],"description":"Returns all the addresses that received rewards of a given token, sorted by descending amounts. Use query parameters to specify token address, chain ID, and pagination.","parameters":[{"name":"page","in":"query","required":false,"schema":{"minimum":0,"description":"0-indexed page number","default":0,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":0,"description":"0-indexed page number","default":0,"type":"number"}]}},{"name":"items","in":"query","required":false,"schema":{"minimum":1,"maximum":1000,"description":"Number of items returned by page","default":20,"errorMessage":"Items must be between 1 and 1000","anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"maximum":1000,"description":"Number of items returned by page","default":20,"errorMessage":"Items must be between 1 and 1000","type":"number"}]}},{"name":"chainId","in":"query","required":true,"schema":{"description":"Chain ID","anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"Chain ID","type":"number"}]}},{"name":"address","in":"query","required":true,"schema":{"description":"Token Address","type":"string"}},{"name":"recipient","in":"query","required":false,"schema":{"description":"Recipient","type":"string"}},{"name":"excludeAddresses","in":"query","required":false,"schema":{"anyOf":[{"description":"Comma-separated recipient addresses whose unclaimed rewards are excluded from the total.","type":"string"},{"type":"array","items":{"description":"Recipient addresses whose unclaimed rewards are excluded from the total.","type":"string"}}]}},{"name":"test","in":"query","required":false,"schema":{"description":"If not true, hides creator and admin from the results.","type":"boolean"}}],"operationId":"getV4RewardsToken"}},"/v4/rewards/token/total":{"get":{"tags":["Rewards"],"description":"Returns the total amount distributed for a given token. Use query parameters to specify token address and chain ID.","parameters":[{"name":"page","in":"query","required":false,"schema":{"minimum":0,"description":"0-indexed page number","default":0,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":0,"description":"0-indexed page number","default":0,"type":"number"}]}},{"name":"items","in":"query","required":false,"schema":{"minimum":1,"maximum":1000,"description":"Number of items returned by page","default":20,"errorMessage":"Items must be between 1 and 1000","anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"maximum":1000,"description":"Number of items returned by page","default":20,"errorMessage":"Items must be between 1 and 1000","type":"number"}]}},{"name":"chainId","in":"query","required":true,"schema":{"description":"Chain ID","anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"Chain ID","type":"number"}]}},{"name":"address","in":"query","required":true,"schema":{"description":"Token Address","type":"string"}},{"name":"recipient","in":"query","required":false,"schema":{"description":"Recipient","type":"string"}},{"name":"excludeAddresses","in":"query","required":false,"schema":{"anyOf":[{"description":"Comma-separated recipient addresses whose unclaimed rewards are excluded from the total.","type":"string"},{"type":"array","items":{"description":"Recipient addresses whose unclaimed rewards are excluded from the total.","type":"string"}}]}},{"name":"test","in":"query","required":false,"schema":{"description":"If not true, hides creator and admin from the results.","type":"boolean"}}],"operationId":"getV4RewardsTokenTotal"}},"/v4/rewards/token/count":{"get":{"tags":["Rewards"],"description":"Returns the number of recipients that earned rewards in a given token. Use query parameters to specify token address and chain ID.","parameters":[{"name":"page","in":"query","required":false,"schema":{"minimum":0,"description":"0-indexed page number","default":0,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":0,"description":"0-indexed page number","default":0,"type":"number"}]}},{"name":"items","in":"query","required":false,"schema":{"minimum":1,"maximum":1000,"description":"Number of items returned by page","default":20,"errorMessage":"Items must be between 1 and 1000","anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"maximum":1000,"description":"Number of items returned by page","default":20,"errorMessage":"Items must be between 1 and 1000","type":"number"}]}},{"name":"chainId","in":"query","required":true,"schema":{"description":"Chain ID","anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"Chain ID","type":"number"}]}},{"name":"address","in":"query","required":true,"schema":{"description":"Token Address","type":"string"}},{"name":"recipient","in":"query","required":false,"schema":{"description":"Recipient","type":"string"}},{"name":"excludeAddresses","in":"query","required":false,"schema":{"anyOf":[{"description":"Comma-separated recipient addresses whose unclaimed rewards are excluded from the total.","type":"string"},{"type":"array","items":{"description":"Recipient addresses whose unclaimed rewards are excluded from the total.","type":"string"}}]}},{"name":"test","in":"query","required":false,"schema":{"description":"If not true, hides creator and admin from the results.","type":"boolean"}}],"operationId":"getV4RewardsTokenCount"}},"/v4/rewards/token/unclaimed":{"get":{"tags":["Rewards"],"description":"Returns the total unclaimed amount (distributed minus claimed) for a given token. Use query parameters to specify token address and chain ID.","parameters":[{"name":"page","in":"query","required":false,"schema":{"minimum":0,"description":"0-indexed page number","default":0,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":0,"description":"0-indexed page number","default":0,"type":"number"}]}},{"name":"items","in":"query","required":false,"schema":{"minimum":1,"maximum":1000,"description":"Number of items returned by page","default":20,"errorMessage":"Items must be between 1 and 1000","anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"maximum":1000,"description":"Number of items returned by page","default":20,"errorMessage":"Items must be between 1 and 1000","type":"number"}]}},{"name":"chainId","in":"query","required":true,"schema":{"description":"Chain ID","anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"Chain ID","type":"number"}]}},{"name":"address","in":"query","required":true,"schema":{"description":"Token Address","type":"string"}},{"name":"recipient","in":"query","required":false,"schema":{"description":"Recipient","type":"string"}},{"name":"excludeAddresses","in":"query","required":false,"schema":{"anyOf":[{"description":"Comma-separated recipient addresses whose unclaimed rewards are excluded from the total.","type":"string"},{"type":"array","items":{"description":"Recipient addresses whose unclaimed rewards are excluded from the total.","type":"string"}}]}},{"name":"test","in":"query","required":false,"schema":{"description":"If not true, hides creator and admin from the results.","type":"boolean"}}],"operationId":"getV4RewardsTokenUnclaimed"}},"/v4/rewards/unclaim/":{"get":{"tags":["Rewards"],"description":"Returns the total of unclaimed rewards for given campaigns. Use query parameters to specify chain ID and campaign IDs.","parameters":[{"name":"chainId","in":"query","required":true,"schema":{"description":"Distribution chain ID (numeric, e.g. `1` for Ethereum). See [ID types](/integrate-merkl/id-types).","anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"Distribution chain ID (numeric, e.g. `1` for Ethereum). See [ID types](/integrate-merkl/id-types).","type":"number"}]}},{"name":"campaignIds","in":"query","required":true,"schema":{"anyOf":[{"description":"Comma-separated **on-chain campaign IDs** (32-byte hex hashes, e.g. `0x93cf385c...`). NOT internal `Campaign.id` values. See [ID types](/integrate-merkl/id-types).","type":"string"},{"type":"array","items":{"description":"**On-chain campaign IDs** (32-byte hex hashes). NOT internal `Campaign.id` values. See [ID types](/integrate-merkl/id-types).","type":"string"}}]}}],"operationId":"getV4RewardsUnclaim"}},"/v4/rewards/unclaim/batch":{"post":{"tags":["Rewards"],"description":"Returns unclaimed rewards for campaigns across multiple chains in a single call. Pass an array of `{ campaignId, distributionChainId }` objects.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"campaigns":{"type":"array","items":{"type":"object","properties":{"campaignId":{"description":"On-chain campaign ID (32-byte hex hash). See [ID types](/integrate-merkl/id-types).","type":"string"},"distributionChainId":{"description":"Distribution chain ID (numeric, e.g. `1` for Ethereum). See [ID types](/integrate-merkl/id-types).","anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"Distribution chain ID (numeric, e.g. `1` for Ethereum). See [ID types](/integrate-merkl/id-types).","type":"number"}]}},"required":["campaignId","distributionChainId"]}}},"required":["campaigns"]}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"campaigns":{"type":"array","items":{"type":"object","properties":{"campaignId":{"description":"On-chain campaign ID (32-byte hex hash). See [ID types](/integrate-merkl/id-types).","type":"string"},"distributionChainId":{"description":"Distribution chain ID (numeric, e.g. `1` for Ethereum). See [ID types](/integrate-merkl/id-types).","anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"Distribution chain ID (numeric, e.g. `1` for Ethereum). See [ID types](/integrate-merkl/id-types).","type":"number"}]}},"required":["campaignId","distributionChainId"]}}},"required":["campaigns"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"campaigns":{"type":"array","items":{"type":"object","properties":{"campaignId":{"description":"On-chain campaign ID (32-byte hex hash). See [ID types](/integrate-merkl/id-types).","type":"string"},"distributionChainId":{"description":"Distribution chain ID (numeric, e.g. `1` for Ethereum). See [ID types](/integrate-merkl/id-types).","anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"Distribution chain ID (numeric, e.g. `1` for Ethereum). See [ID types](/integrate-merkl/id-types).","type":"number"}]}},"required":["campaignId","distributionChainId"]}}},"required":["campaigns"]}}},"required":true},"operationId":"postV4RewardsUnclaimBatch"}},"/v4/confidential-rewards/zama":{"get":{"tags":["Rewards"],"description":"Returns a campaign's leaderboard with every reward amount FHE-encrypted for Zama's confidential\ndistribution: `(recipient, encryptedAmount, inputProof)` triples ready for `FHE.fromExternal`.\nMerkl performs the encryption, so the distributor never receives a cleartext amount.\n\n**Only amounts are confidential.** Recipient addresses are returned in cleartext — the\ndistributor must know who to pay. The participant set and count are therefore visible.\n\n**The consuming contract is fixed by this route**, not a parameter, and is echoed back as\n`contractAddress`. It is currently a placeholder, so proofs are structurally valid but NOT\nredeemable on-chain — they exercise the pipeline only. `userAddress` IS a parameter: it is\nbound into every proof alongside the contract, the chain ID and the chain's fhEVM ACL address,\nand a proof built for a different submitting address is rejected on-chain and cannot be\nrepaired after the fact.\n\n**One proof covers several recipients** — `recipientsPerProof` (32 for `euint64`) entries share\nan `inputProof`, grouped by `proofId`. Submit a group together, or pass the same proof in each\nof several transactions; both verify.\n\n**Amounts must fit the FHE type.** `euint64` (the ERC-7984 type, and the default) caps one\namount at 2^64-1, which is only ~18.44 tokens of an 18-decimal reward. Use `amountDecimals` to\nrequest a coarser denomination, or a wider `fheType`. Overflow returns 422 and never wraps.\n\nAmounts are settled committed rewards, aggregated per recipient across reasons. Uncommitted\nengine state (TempLeaves) is excluded.\n\nPrivate campaigns are refused. Campaigns that hide their leaderboard ARE supported — the\nencryption is what keeps the leaderboard hidden.\n\nResults are ordered by recipient address, which is independent of the amounts — an\namount-ordered response would reveal the full ranking even though every amount is encrypted.\nNot configurable, and it makes paging repeatable.","parameters":[{"name":"page","in":"query","required":false,"schema":{"minimum":0,"description":"0-indexed page number","default":0,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":0,"description":"0-indexed page number","default":0,"type":"number"}]}},{"name":"items","in":"query","required":false,"schema":{"minimum":1,"maximum":1000,"description":"Number of items returned by page","default":32,"errorMessage":"Items must be between 1 and 1000","anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"maximum":1000,"description":"Number of items returned by page","default":32,"errorMessage":"Items must be between 1 and 1000","type":"number"}]}},{"name":"chainId","in":"query","required":true,"schema":{"description":"Distribution chain ID of the Merkl campaign (numeric, e.g. `1` for Ethereum).","anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"Distribution chain ID of the Merkl campaign (numeric, e.g. `1` for Ethereum).","type":"number"}]}},{"name":"campaignId","in":"query","required":true,"schema":{"description":"**On-chain campaign ID** (32-byte hex hash, e.g. `0x93cf385c...`). NOT the internal `Campaign.id`.","type":"string"}},{"name":"fheChainId","in":"query","required":false,"schema":{"description":"Chain the encrypted inputs will be consumed on, if different from `chainId`. The proof binds this chain's ID and fhEVM ACL address, so it must match the chain the distributor is deployed on. Defaults to `chainId`.","anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"Chain the encrypted inputs will be consumed on, if different from `chainId`. The proof binds this chain's ID and fhEVM ACL address, so it must match the chain the distributor is deployed on. Defaults to `chainId`.","type":"number"}]}},{"name":"userAddress","in":"query","required":true,"schema":{"description":"Address that will submit the consuming transaction (`msg.sender`). **Bound into every input proof**, alongside the fixed consuming contract this route encrypts for.","type":"string"}},{"name":"fheType","in":"query","required":false,"schema":{"default":"euint64","description":"FHE type to encrypt amounts into. `euint64` is what ERC-7984 confidential tokens use and is the default; it caps a single amount at 2^64-1, so raw 18-decimal wei amounts above ~18.44 tokens need `amountDecimals` or a wider type.","anyOf":[{"const":"euint64","type":"string"},{"const":"euint128","type":"string"},{"const":"euint256","type":"string"}]}},{"name":"amountDecimals","in":"query","required":false,"schema":{"minimum":0,"maximum":36,"description":"Denomination to express amounts in, as a number of decimals. Omit for raw reward-token wei. Set below the reward token's own decimals to rescale (e.g. `6` on an 18-decimal token divides by 1e12) so amounts fit `euint64`. Rescaling truncates: the response reports the exact dust dropped.","anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":0,"maximum":36,"description":"Denomination to express amounts in, as a number of decimals. Omit for raw reward-token wei. Set below the reward token's own decimals to rescale (e.g. `6` on an 18-decimal token divides by 1e12) so amounts fit `euint64`. Rescaling truncates: the response reports the exact dust dropped.","type":"number"}]}},{"name":"hide","in":"query","required":false,"schema":{"description":"If true, excludes the campaign creator, the Merkl multisig and the Merkl dumper.","type":"boolean"}}],"operationId":"getV4Confidential-rewardsZama"}},"/v4/schemas/":{"get":{"tags":["Schemas"],"summary":"List schema groups (BETA)","description":"**List schema groups**<p>Returns every schema group exposed by this API. A <em>group</em> binds an enum (e.g. <code>CampaignType</code>) to a family of TypeBox JSON Schemas describing the inputs the Merkl engine accepts for each value of that enum.</p><p>Current groups:</p><ul><li><code>campaignType</code> — config inputs of a campaign of a given <code>CampaignType</code>.</li><li><code>campaignTypeExtended</code> — same as <code>campaignType</code> plus <code>distributionChainId</code> and <code>campaignId</code>.</li><li><code>distributionMethod</code> — parameters of a given <code>DistributionMethod</code>.</li><li><code>computeScoreMethod</code> — parameters of a given <code>ComputeScoreMethod</code>.</li><li><code>hookType</code> — parameters of a given <code>HookType</code>.</li><li><code>processorType</code> — config of a given <code>ProcessorType</code>.</li></ul><p>Pair this endpoint with <a href=\"#tag/Enums\"><code>/v4/enums</code></a> for the enum value ↔ key mapping.</p><p>⚠️ <strong>Beta:</strong> response shape may change without notice.</p>","responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"groups":{"description":"Available schema groups","type":"array","items":{"type":"object","properties":{"name":{"description":"Schema group name (e.g., campaignType)","type":"string"},"enumName":{"description":"Underlying enum name (e.g., CampaignType)","type":"string"},"valueType":{"description":"Type of the discriminator values used to address a schema in this group","anyOf":[{"const":"number","type":"string"},{"const":"string","type":"string"}]},"count":{"description":"Number of schemas available in the group","type":"number"},"description":{"description":"Human-readable description of the schema group","type":"string"}},"required":["name","enumName","valueType","count","description"]}}},"required":["groups"]}}}}},"operationId":"getV4Schemas"}},"/v4/schemas/{groupName}":{"get":{"tags":["Schemas"],"summary":"List schemas in a group (BETA)","description":"**List schemas in a group**<p>Returns every entry of the enum backing the given group. Each entry contains the addressable <code>value</code>, the enum <code>key</code> and an optional human-readable <code>description</code>. Use one of these <code>value</code>s (or the <code>key</code>) as <code>:typeId</code> in <code>GET /v4/schemas/:groupName/:typeId</code>.</p><p>Example: <code>GET /v4/schemas/distributionMethod</code> returns the list of <code>DistributionMethod</code> values for which a JSON Schema is available.</p><p>Responds <code>404</code> if <code>groupName</code> is not a known group — see <code>GET /v4/schemas</code> for the list of valid groups.</p>","parameters":[{"name":"groupName","in":"path","required":true,"schema":{"description":"Schema group name","examples":["campaignType","distributionMethod","computeScoreMethod","hookType","processorType"],"type":"string"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"description":"Schema group name","type":"string"},"enumName":{"description":"Underlying enum name","type":"string"},"valueType":{"description":"Type of the discriminator values","anyOf":[{"const":"number","type":"string"},{"const":"string","type":"string"}]},"entries":{"description":"All schemas available in this group","type":"array","items":{"type":"object","properties":{"value":{"description":"Enum value addressing this schema","anyOf":[{"type":"string"},{"type":"number"}]},"key":{"description":"Enum key","type":"string"},"description":{"description":"Optional human-readable description","type":"string"}},"required":["value","key"]}}},"required":["name","enumName","valueType","entries"]}}}}},"operationId":"getV4SchemasByGroupName"}},"/v4/schemas/{groupName}/{typeId}":{"get":{"tags":["Schemas"],"summary":"Get raw JSON Schema for a typed input (BETA)","description":"**Get raw JSON Schema for a typed input**<p>Returns the raw TypeBox JSON Schema describing the inputs accepted for a specific entry of a group. The returned object is a standard JSON Schema document and can be consumed directly by tooling such as <code>ajv</code>, <code>openapi-typescript</code>, <code>json-schema-to-ts</code> or <code>quicktype</code>.</p><p><code>:typeId</code> accepts either:</p><ul><li>the enum <strong>value</strong> — e.g. <code>1</code> for <code>CampaignType.INVALID</code>, or <code>FIX_APR</code> for <code>DistributionMethod.FIX_APR</code>;</li><li>the enum <strong>key</strong> — e.g. <code>INVALID</code> for <code>CampaignType.INVALID</code>.</li></ul><p>Examples:</p><ul><li><code>GET /v4/schemas/campaignType/1</code></li><li><code>GET /v4/schemas/distributionMethod/FIX_APR</code></li><li><code>GET /v4/schemas/hookType/APIBOOST</code></li></ul><p>Responds <code>404</code> if either <code>groupName</code> is unknown or <code>typeId</code> does not match any value/key of the underlying enum.</p><p>⚠️ <strong>Beta:</strong> the returned schema may evolve as the engine evolves.</p>","parameters":[{"name":"groupName","in":"path","required":true,"schema":{"description":"Schema group name","examples":["campaignType","distributionMethod"],"type":"string"}},{"name":"typeId","in":"path","required":true,"schema":{"description":"Enum value or enum key addressing the schema within the group","examples":["1","INVALID","AIRDROP"],"type":"string"}}],"responses":{},"operationId":"getV4SchemasByGroupNameByTypeId"}},"/v4/templates/":{"get":{"tags":["Templates"],"description":"Get all templates filtered by query parameters","parameters":[{"name":"protocolId","in":"query","required":false,"schema":{"description":"Filter templates by protocol ID","type":"string"}},{"name":"search","in":"query","required":false,"schema":{"description":"Search templates by name or description","type":"string"}},{"name":"action","in":"query","required":false,"schema":{"description":"Filter templates by opportunity actions","type":"array","items":{"anyOf":[{"const":"POOL","type":"string"},{"const":"HOLD","type":"string"},{"const":"DROP","type":"string"},{"const":"LEND","type":"string"},{"const":"BORROW","type":"string"},{"const":"LONG","type":"string"},{"const":"SHORT","type":"string"},{"const":"SWAP","type":"string"},{"const":"INVALID","type":"string"},{"const":"STAKE","type":"string"}]}}},{"name":"page","in":"query","required":false,"schema":{"minimum":0,"description":"0-indexed page number","default":0,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":0,"description":"0-indexed page number","default":0,"type":"number"}]}},{"name":"items","in":"query","required":false,"schema":{"minimum":1,"maximum":100,"description":"Number of items returned by page","default":50,"errorMessage":"Items must be between 1 and 100","anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"maximum":100,"description":"Number of items returned by page","default":50,"errorMessage":"Items must be between 1 and 100","type":"number"}]}}],"operationId":"getV4Templates"}},"/v4/templates/count":{"get":{"tags":["Templates"],"description":"Count templates matching the query filters","parameters":[{"name":"protocolId","in":"query","required":false,"schema":{"description":"Filter templates by protocol ID","type":"string"}},{"name":"search","in":"query","required":false,"schema":{"description":"Search templates by name or description","type":"string"}},{"name":"action","in":"query","required":false,"schema":{"description":"Filter templates by opportunity actions","type":"array","items":{"anyOf":[{"const":"POOL","type":"string"},{"const":"HOLD","type":"string"},{"const":"DROP","type":"string"},{"const":"LEND","type":"string"},{"const":"BORROW","type":"string"},{"const":"LONG","type":"string"},{"const":"SHORT","type":"string"},{"const":"SWAP","type":"string"},{"const":"INVALID","type":"string"},{"const":"STAKE","type":"string"}]}}},{"name":"page","in":"query","required":false,"schema":{"minimum":0,"description":"0-indexed page number","default":0,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":0,"description":"0-indexed page number","default":0,"type":"number"}]}},{"name":"items","in":"query","required":false,"schema":{"minimum":1,"maximum":100,"description":"Number of items returned by page","default":50,"errorMessage":"Items must be between 1 and 100","anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"maximum":100,"description":"Number of items returned by page","default":50,"errorMessage":"Items must be between 1 and 100","type":"number"}]}}],"operationId":"getV4TemplatesCount"}},"/v4/templates/{id}":{"get":{"tags":["Templates"],"description":"Find one template by ID (UUID), slug or name","parameters":[{"name":"id","in":"path","required":true,"schema":{"description":"Identifier of the template: UUID, slug (e.g. `aave-v3-lend`) or exact name","type":"string"}}],"operationId":"getV4TemplatesById"}},"/v4/tokens/prices/history":{"get":{"tags":["Tokens"],"description":"Get historical price snapshots for a token. Resolve by symbol (optionally scoped to a chainId) or by exact chainId+address.","parameters":[{"name":"symbol","in":"query","required":false,"schema":{"description":"Token symbol (case-insensitive). Matches symbol or displaySymbol.","type":"string"}},{"name":"address","in":"query","required":false,"schema":{"description":"Token address. Requires chainId for a unique result.","type":"string"}},{"name":"chainId","in":"query","required":false,"schema":{"description":"Chain ID. Required alongside address for a unique result; optional when using symbol.","anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"Chain ID. Required alongside address for a unique result; optional when using symbol.","type":"number"}]}},{"name":"from","in":"query","required":false,"schema":{"description":"Start day as Unix day integer (days since 1970-01-01 UTC). Defaults to today - 365 days.","anyOf":[{"format":"integer","default":0,"type":"string"},{"description":"Start day as Unix day integer (days since 1970-01-01 UTC). Defaults to today - 365 days.","type":"integer"}]}},{"name":"to","in":"query","required":false,"schema":{"description":"End day as Unix day integer (days since 1970-01-01 UTC). Defaults to today UTC.","anyOf":[{"format":"integer","default":0,"type":"string"},{"description":"End day as Unix day integer (days since 1970-01-01 UTC). Defaults to today UTC.","type":"integer"}]}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"day":{"description":"Unix day (days since 1970-01-01 UTC)","anyOf":[{"format":"integer","default":0,"type":"string"},{"description":"Unix day (days since 1970-01-01 UTC)","type":"integer"}]},"open":{"type":"number"},"close":{"type":"number"},"min":{"type":"number"},"max":{"type":"number"},"source":{"nullable":true,"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["day","open","close","min","max","source"]}}}}}},"operationId":"getV4TokensPricesHistory"}},"/v4/tokens/wrappers":{"get":{"tags":["Tokens"],"description":"List every Merkl token wrapper a creator distributes, one entry per wrapper and distribution chain, live campaigns first. Wrappers are discovered through the campaigns that distribute them, so a wrapper deployed but never used in a campaign is not returned. Only static data is served here — read the holder, balances and allowance from chain.","parameters":[{"name":"creatorId","in":"query","required":false,"schema":{"description":"Merkl **creator ID** (e.g. `morpho`). Matches every wallet address linked to that creator. Mutually exclusive with `creatorAddress` — one of the two is required.","examples":["morpho"],"type":"string"}},{"name":"creatorAddress","in":"query","required":false,"schema":{"description":"Single creator wallet address. Use when the address is not linked to a creator record. Mutually exclusive with `creatorId`.","type":"string"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"distributionChainId":{"description":"Chain the wrapper is deployed on, i.e. where its campaigns distribute rewards.","type":"number"},"wrapper":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]},"underlying":{"description":"Token the wrapper pays out on claim, when Merkl resolved it. Null when unknown.","anyOf":[{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]},{"type":"null"}]},"campaignCount":{"description":"Mother campaigns of this creator distributing the wrapper.","type":"number"},"liveCampaignCount":{"description":"Subset of `campaignCount` currently running.","type":"number"},"lastCampaignEndTimestamp":{"description":"End timestamp (unix seconds) of the latest campaign distributing the wrapper.","type":"number"}},"required":["distributionChainId","wrapper","underlying","campaignCount","liveCampaignCount","lastCampaignEndTimestamp"]}}}}}},"operationId":"getV4TokensWrappers"}},"/v4/tokens/reward":{"get":{"tags":["Tokens"],"description":"Get all tokens that are accepted as reward tokens across all chains.","parameters":[{"name":"chainId","in":"query","required":false,"schema":{"description":"Comma-separated list of chain IDs to filter by","examples":["1","1,137,8453"],"type":"RegExp","source":"^\\d+(,\\d+)*$","flags":""}},{"name":"search","in":"query","required":false,"schema":{"description":"Search by token symbol, name, or address","examples":["USDC"],"type":"string"}}],"operationId":"getV4TokensReward"}},"/v4/tokens/reward/{chainId}":{"get":{"tags":["Tokens"],"description":"Get the list of tokens that are accepted as reward tokens on a given chain.","parameters":[{"name":"chainId","in":"path","required":true,"schema":{"description":"Chain ID to get reward tokens for","examples":[1],"anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"Chain ID to get reward tokens for","examples":[1],"type":"number"}]}},{"name":"tokenTypes","in":"query","required":false,"schema":{"description":"Filter by token type. Use POINT to include point campaigns and PRETGE to include preTGE campaigns.","examples":[["POINT"],["POINT","PRETGE"]],"type":"array","items":{"anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]}}}],"operationId":"getV4TokensRewardByChainId"}},"/v4/tokens/whitelist":{"post":{"tags":["Tokens"],"description":"Submit a token whitelist request for review.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"explainer":{"maxLength":500,"description":"Short explanation of the token to add.","type":"string"},"address":{"maxLength":66,"description":"Token address in checksum format.","type":"string"},"chainId":{"description":"Chain ID of the network where the token is deployed.","anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"Chain ID of the network where the token is deployed.","type":"number"}]},"iconUrl":{"maxLength":1024,"description":"Publicly accessible HTTPS URL for the token icon. Mutually exclusive with iconFile.","type":"string"},"iconFile":{"type":"object","properties":{"data":{"maxLength":1398102,"description":"Base64-encoded icon file bytes (max 1 MB raw).","type":"string"},"mimeType":{"description":"Image MIME type (e.g. image/png).","type":"string"},"filename":{"maxLength":255,"description":"Original filename (e.g. token.svg).","type":"string"}},"required":["data","mimeType","filename"]},"protocolName":{"maxLength":100,"description":"Name of the protocol submitting the request.","type":"string"},"requesterType":{"description":"Whether the requester submits as an individual or a company. Required.","anyOf":[{"const":"individual","type":"string"},{"const":"company","type":"string"}]},"companyName":{"maxLength":100,"description":"Company name — required when requesterType is 'company'.","type":"string"},"telegramHandle":{"maxLength":100,"description":"Telegram handle to notify once the token is whitelisted.","type":"string"},"displaySymbol":{"maxLength":50,"description":"Override symbol shown in the UI. Defaults to on-chain symbol.","type":"string"},"coingeckoApiId":{"maxLength":100,"description":"CoinGecko API ID for price sourcing and APR/TVL calculation.","type":"string"},"tokenName":{"maxLength":100,"description":"Token name, resolved client-side.","type":"string"},"tokenSymbol":{"maxLength":50,"description":"Token symbol, resolved client-side.","type":"string"}},"required":["explainer","address","chainId","protocolName","requesterType","telegramHandle"]}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"explainer":{"maxLength":500,"description":"Short explanation of the token to add.","type":"string"},"address":{"maxLength":66,"description":"Token address in checksum format.","type":"string"},"chainId":{"description":"Chain ID of the network where the token is deployed.","anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"Chain ID of the network where the token is deployed.","type":"number"}]},"iconUrl":{"maxLength":1024,"description":"Publicly accessible HTTPS URL for the token icon. Mutually exclusive with iconFile.","type":"string"},"iconFile":{"type":"object","properties":{"data":{"maxLength":1398102,"description":"Base64-encoded icon file bytes (max 1 MB raw).","type":"string"},"mimeType":{"description":"Image MIME type (e.g. image/png).","type":"string"},"filename":{"maxLength":255,"description":"Original filename (e.g. token.svg).","type":"string"}},"required":["data","mimeType","filename"]},"protocolName":{"maxLength":100,"description":"Name of the protocol submitting the request.","type":"string"},"requesterType":{"description":"Whether the requester submits as an individual or a company. Required.","anyOf":[{"const":"individual","type":"string"},{"const":"company","type":"string"}]},"companyName":{"maxLength":100,"description":"Company name — required when requesterType is 'company'.","type":"string"},"telegramHandle":{"maxLength":100,"description":"Telegram handle to notify once the token is whitelisted.","type":"string"},"displaySymbol":{"maxLength":50,"description":"Override symbol shown in the UI. Defaults to on-chain symbol.","type":"string"},"coingeckoApiId":{"maxLength":100,"description":"CoinGecko API ID for price sourcing and APR/TVL calculation.","type":"string"},"tokenName":{"maxLength":100,"description":"Token name, resolved client-side.","type":"string"},"tokenSymbol":{"maxLength":50,"description":"Token symbol, resolved client-side.","type":"string"}},"required":["explainer","address","chainId","protocolName","requesterType","telegramHandle"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"explainer":{"maxLength":500,"description":"Short explanation of the token to add.","type":"string"},"address":{"maxLength":66,"description":"Token address in checksum format.","type":"string"},"chainId":{"description":"Chain ID of the network where the token is deployed.","anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"Chain ID of the network where the token is deployed.","type":"number"}]},"iconUrl":{"maxLength":1024,"description":"Publicly accessible HTTPS URL for the token icon. Mutually exclusive with iconFile.","type":"string"},"iconFile":{"type":"object","properties":{"data":{"maxLength":1398102,"description":"Base64-encoded icon file bytes (max 1 MB raw).","type":"string"},"mimeType":{"description":"Image MIME type (e.g. image/png).","type":"string"},"filename":{"maxLength":255,"description":"Original filename (e.g. token.svg).","type":"string"}},"required":["data","mimeType","filename"]},"protocolName":{"maxLength":100,"description":"Name of the protocol submitting the request.","type":"string"},"requesterType":{"description":"Whether the requester submits as an individual or a company. Required.","anyOf":[{"const":"individual","type":"string"},{"const":"company","type":"string"}]},"companyName":{"maxLength":100,"description":"Company name — required when requesterType is 'company'.","type":"string"},"telegramHandle":{"maxLength":100,"description":"Telegram handle to notify once the token is whitelisted.","type":"string"},"displaySymbol":{"maxLength":50,"description":"Override symbol shown in the UI. Defaults to on-chain symbol.","type":"string"},"coingeckoApiId":{"maxLength":100,"description":"CoinGecko API ID for price sourcing and APR/TVL calculation.","type":"string"},"tokenName":{"maxLength":100,"description":"Token name, resolved client-side.","type":"string"},"tokenSymbol":{"maxLength":50,"description":"Token symbol, resolved client-side.","type":"string"}},"required":["explainer","address","chainId","protocolName","requesterType","telegramHandle"]}}},"required":true},"operationId":"postV4TokensWhitelist"}},"/v4/users/{address}/rewards":{"get":{"tags":["Users"],"description":"Get the rewards associated to a user on a given chain.\n\n#### Request Examples\n\n##### Fetch rewards for a user wallet on a specific chain\n```bash\ncurl \"https://api.merkl.xyz/v4/users/0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb/rewards?chainId=1\"\n```\n\nUse the returned proofs to build a claim transaction [integrating-user-reward](https://docs.merkl.xyz/integrate-merkl/app#integrating-user-reward)\n\n\nRetrieve user rewards aggregated by chain. Use query parameters to filter by chain IDs, reward type, and claimability.","parameters":[{"name":"address","in":"path","required":true,"schema":{"description":"User address","type":"string"}},{"name":"chainId","in":"query","required":true,"schema":{"description":"List of chain IDs to query rewards for","type":"array","items":{"type":"string"}}},{"name":"reloadChainId","in":"query","required":false,"schema":{"description":"An optional chainId to bypass the cache and check if there was very recently a claim on this chain","anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"An optional chainId to bypass the cache and check if there was very recently a claim on this chain","type":"number"}]}},{"name":"test","in":"query","required":false,"schema":{"description":"Include test token rewards","type":"boolean"}},{"name":"claimableOnly","in":"query","required":false,"schema":{"description":"Include only claimable rewards (to avoid transferring zero amounts)","type":"boolean"}},{"name":"breakdownPage","in":"query","required":false,"schema":{"description":"0-indexed pagination for rewards[number].breakdowns. 1000 items per page.","default":0,"deprecated":true,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"0-indexed pagination for rewards[number].breakdowns. 1000 items per page.","default":0,"deprecated":true,"type":"number"}]}},{"name":"type","in":"query","required":false,"schema":{"description":"Filter rewards by token type","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]}},{"name":"showPrivate","in":"query","required":false,"schema":{"description":"When true, decode private campaign IDs instead of returning the zero hash. Requires the caller's identity (JWT, API key owner, or BackOffice) to match the queried address — otherwise returns 403. Also bypasses CDN cache.","type":"boolean"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"chain":{"$id":"chain","title":"Chain","description":"Chain","type":"object","properties":{"id":{"$id":"chainId","title":"Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"name":{"title":"Chain Name","description":"Legible name of the chain","type":"string"},"icon":{"title":"Icon URL","description":"URL to the icon of the chain","type":"string"},"liveCampaigns":{"title":"Live Campaigns","description":"Number of campaigns currently live on this chain","type":"number"},"endOfDisputePeriod":{"type":"number"},"explorers":{"type":"array","items":{"type":"object","properties":{"type":{"anyOf":[{"const":"ETHERSCAN","type":"string"},{"const":"BLOCKSCOUT","type":"string"},{"const":"SOLSCAN","type":"string"}]},"url":{"type":"string"},"chainId":{"type":"number"}},"required":["type","url","chainId"]}},"lastClaimsOnchainFetchTimestamp":{"title":"Last Claims Onchain Fetch Timestamp","description":"Timestamp of the last claims onchain fetch","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","icon","liveCampaigns","endOfDisputePeriod","lastClaimsOnchainFetchTimestamp"]},"rewards":{"description":"List of rewards for each token","type":"array","items":{"description":"Reward details for a token","type":"object","properties":{"root":{"description":"Merkle tree root hash for the reward claim","type":"string"},"recipient":{"description":"Address of the reward recipient","type":"string"},"proofs":{"description":"Merkle proofs for reward verification","type":"array","items":{"type":"string"}},"token":{"description":"Token information","type":"object","properties":{"address":{"description":"Token contract address","type":"string"},"chainId":{"description":"Chain ID where the token exists","type":"number"},"symbol":{"description":"Token symbol","type":"string"},"decimals":{"description":"Token decimals","type":"number"}},"required":["address","chainId","symbol","decimals"]},"breakdowns":{"description":"Detailed breakdowns of rewards by reason and campaign","type":"array","items":{"description":"Reward breakdown","type":"object","properties":{"reason":{"description":"Reason identifier for the reward","type":"string"},"amount":{"description":"Total reward amount for this reason","type":"string"},"claimed":{"description":"Amount already claimed","type":"string"},"pending":{"description":"Amount pending claim","type":"string"},"campaignId":{"description":"ID of the campaign that generated this reward","type":"string"},"opportunityId":{"description":"ID of the opportunity this breakdown is attributed to","type":"string"},"campaignStatus":{"type":"object","properties":{"campaignId":{"type":"string"},"computedUntil":{"anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}]},"processingStarted":{"anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}]},"status":{"type":"string"},"preComputeProcessingStarted":{"anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}]},"preComputeStatus":{"type":"string"},"delay":{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]},"error":{"type":"string"},"details":{}},"required":["campaignId","computedUntil","processingStarted","status","preComputeProcessingStarted","preComputeStatus"]}},"required":["reason","amount","claimed","pending","campaignId","opportunityId"]}},"claimed":{"description":"Total amount claimed by the user","anyOf":[{"type":"bigint"},{"type":"string"}]},"amount":{"description":"Total reward amount","anyOf":[{"type":"bigint"},{"type":"string"}]},"pending":{"description":"Total pending reward amount","anyOf":[{"type":"bigint"},{"type":"string"}]}},"required":["root","recipient","proofs","token","breakdowns","claimed","amount","pending"]}}},"required":["chain","rewards"]}}}}}},"operationId":"getV4UsersByAddressRewards"}},"/v4/users/{address}/protocols/{protocolId}/rewards":{"get":{"tags":["Users"],"description":"Retrieve claimable rewards for a user scoped to a single protocol. Breakdowns and amounts reflect only campaigns attributed to the requested protocol. The returned `proofs` and `root` still claim the full per-token leaf on-chain.","parameters":[{"name":"address","in":"path","required":true,"schema":{"description":"User wallet address","type":"string"}},{"name":"protocolId","in":"path","required":true,"schema":{"description":"Main protocol ID to filter rewards by","type":"string"}},{"name":"chainId","in":"query","required":true,"schema":{"description":"List of chain IDs to query rewards for","type":"array","items":{"type":"string"}}},{"name":"reloadChainId","in":"query","required":false,"schema":{"description":"An optional chainId to bypass the cache and check if there was very recently a claim on this chain","anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"An optional chainId to bypass the cache and check if there was very recently a claim on this chain","type":"number"}]}},{"name":"test","in":"query","required":false,"schema":{"description":"Include test token rewards","type":"boolean"}},{"name":"claimableOnly","in":"query","required":false,"schema":{"description":"Include only claimable rewards (to avoid transferring zero amounts)","type":"boolean"}},{"name":"breakdownPage","in":"query","required":false,"schema":{"description":"0-indexed pagination for rewards[number].breakdowns. 1000 items per page.","default":0,"deprecated":true,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"0-indexed pagination for rewards[number].breakdowns. 1000 items per page.","default":0,"deprecated":true,"type":"number"}]}},{"name":"type","in":"query","required":false,"schema":{"description":"Filter rewards by token type","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]}},{"name":"showPrivate","in":"query","required":false,"schema":{"description":"When true, decode private campaign IDs instead of returning the zero hash. Requires the caller's identity (JWT, API key owner, or BackOffice) to match the queried address — otherwise returns 403. Also bypasses CDN cache.","type":"boolean"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"chain":{"$id":"chain","title":"Chain","description":"Chain","type":"object","properties":{"id":{"$id":"chainId","title":"Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"name":{"title":"Chain Name","description":"Legible name of the chain","type":"string"},"icon":{"title":"Icon URL","description":"URL to the icon of the chain","type":"string"},"liveCampaigns":{"title":"Live Campaigns","description":"Number of campaigns currently live on this chain","type":"number"},"endOfDisputePeriod":{"type":"number"},"explorers":{"type":"array","items":{"type":"object","properties":{"type":{"anyOf":[{"const":"ETHERSCAN","type":"string"},{"const":"BLOCKSCOUT","type":"string"},{"const":"SOLSCAN","type":"string"}]},"url":{"type":"string"},"chainId":{"type":"number"}},"required":["type","url","chainId"]}},"lastClaimsOnchainFetchTimestamp":{"title":"Last Claims Onchain Fetch Timestamp","description":"Timestamp of the last claims onchain fetch","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","icon","liveCampaigns","endOfDisputePeriod","lastClaimsOnchainFetchTimestamp"]},"rewards":{"description":"List of rewards for each token","type":"array","items":{"description":"Reward details for a token","type":"object","properties":{"root":{"description":"Merkle tree root hash for the reward claim","type":"string"},"recipient":{"description":"Address of the reward recipient","type":"string"},"proofs":{"description":"Merkle proofs for reward verification","type":"array","items":{"type":"string"}},"token":{"description":"Token information","type":"object","properties":{"address":{"description":"Token contract address","type":"string"},"chainId":{"description":"Chain ID where the token exists","type":"number"},"symbol":{"description":"Token symbol","type":"string"},"decimals":{"description":"Token decimals","type":"number"}},"required":["address","chainId","symbol","decimals"]},"breakdowns":{"description":"Detailed breakdowns of rewards by reason and campaign","type":"array","items":{"description":"Reward breakdown","type":"object","properties":{"reason":{"description":"Reason identifier for the reward","type":"string"},"amount":{"description":"Total reward amount for this reason","type":"string"},"claimed":{"description":"Amount already claimed","type":"string"},"pending":{"description":"Amount pending claim","type":"string"},"campaignId":{"description":"ID of the campaign that generated this reward","type":"string"},"opportunityId":{"description":"ID of the opportunity this breakdown is attributed to","type":"string"},"campaignStatus":{"type":"object","properties":{"campaignId":{"type":"string"},"computedUntil":{"anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}]},"processingStarted":{"anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}]},"status":{"type":"string"},"preComputeProcessingStarted":{"anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}]},"preComputeStatus":{"type":"string"},"delay":{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]},"error":{"type":"string"},"details":{}},"required":["campaignId","computedUntil","processingStarted","status","preComputeProcessingStarted","preComputeStatus"]}},"required":["reason","amount","claimed","pending","campaignId","opportunityId"]}},"claimed":{"description":"Total amount claimed by the user","anyOf":[{"type":"bigint"},{"type":"string"}]},"amount":{"description":"Total reward amount","anyOf":[{"type":"bigint"},{"type":"string"}]},"pending":{"description":"Total pending reward amount","anyOf":[{"type":"bigint"},{"type":"string"}]}},"required":["root","recipient","proofs","token","breakdowns","claimed","amount","pending"]}}},"required":["chain","rewards"]}}}}}},"operationId":"getV4UsersByAddressProtocolsByProtocolIdRewards"}},"/v4/users/{address}/terms":{"get":{"tags":["Users"],"description":"Check if a user address has signed Merkl's terms for a specific chain. Provide the user's wallet address and chain ID.","parameters":[{"name":"address","in":"path","required":true,"schema":{"description":"User address","type":"string"}},{"name":"chainId","in":"query","required":true,"schema":{"description":"Chain ID to check terms acceptance for","anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"Chain ID to check terms acceptance for","type":"number"}]}}],"operationId":"getV4UsersByAddressTerms"}},"/v4/users/{address}/recipient/{token}":{"get":{"tags":["Users"],"description":"Get the recipient address for a given user address and specific token.","parameters":[{"name":"address","in":"path","required":true,"schema":{"description":"The user address to check","type":"string"}},{"name":"token","in":"path","required":true,"schema":{"description":"The token address to check","type":"string"}},{"name":"chainId","in":"query","required":true,"schema":{"description":"Chain ID to check terms acceptance for","anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"Chain ID to check terms acceptance for","type":"number"}]}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"recipient":{"type":"string"}},"required":["recipient"]}}}}},"operationId":"getV4UsersByAddressRecipientByToken"}},"/v4/users/{address}/operator/{operatorAddress}":{"get":{"tags":["Users"],"description":"Check if an address is an operator for a given user address.","parameters":[{"name":"address","in":"path","required":true,"schema":{"description":"The user address to check","type":"string"}},{"name":"operatorAddress","in":"path","required":true,"schema":{"description":"The operator address to check","type":"string"}},{"name":"chainId","in":"query","required":true,"schema":{"description":"Chain ID to check terms acceptance for","anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"Chain ID to check terms acceptance for","type":"number"}]}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"isOperator":{"type":"boolean"}},"required":["isOperator"]}}}}},"operationId":"getV4UsersByAddressOperatorByOperatorAddress"}},"/v4/users/{address}/wrapped":{"get":{"tags":["Users"],"description":"Get a summary of a user's claimed rewards, including their most-used protocol and most-claimed token by USD value.","parameters":[{"name":"address","in":"path","required":true,"schema":{"description":"User address","type":"string"}}],"operationId":"getV4UsersByAddressWrapped"}},"/v4/users/{address}/rewards/stats":{"get":{"tags":["Users"],"description":"Lightweight USD totals for a user — total earned, currently claimable, and pending. Supports optional filters: chainId, chains, tokens, protocols, isTest, isPreTGE.","parameters":[{"name":"address","in":"path","required":true,"schema":{"description":"User address","type":"string"}},{"name":"chainId","in":"query","required":false,"schema":{"description":"Filter by chain IDs","type":"array","items":{"type":"string"}}},{"name":"tokens","in":"query","required":false,"schema":{"description":"Filter by reward token addresses","type":"array","items":{"type":"string"}}},{"name":"protocols","in":"query","required":false,"schema":{"description":"Filter by main protocol IDs","type":"array","items":{"type":"string"}}},{"name":"tags","in":"query","required":false,"schema":{"description":"Filter by opportunity tags (whitelabel scoping)","type":"array","items":{"type":"string"}}},{"name":"isTest","in":"query","required":false,"schema":{"description":"Include test token rewards","type":"boolean"}},{"name":"isPreTGE","in":"query","required":false,"schema":{"description":"When true, restrict to preTGE (PRETGE) token rewards","type":"boolean"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"totalEarnedUSD":{"description":"All-time earned (claimed + claimable + pending) in USD","type":"string"},"pendingUSD":{"description":"Earned but not yet claimable (not in any merkle root), in USD","type":"string"},"claimableUSD":{"description":"Currently claimable (in live root, not yet claimed on-chain), in USD","type":"string"}},"required":["totalEarnedUSD","pendingUSD","claimableUSD"]}}}}},"operationId":"getV4UsersByAddressRewardsStats"}},"/v4/users/{address}/rewards/summary":{"get":{"tags":["Users"],"description":"Per-chain rewards rollup with USD totals and per-token raw amounts. A lightweight alternative to /rewards that omits full campaign breakdowns. Supports optional filters: chainId, chains, tokens, protocols, isTest, isPreTGE.","parameters":[{"name":"address","in":"path","required":true,"schema":{"description":"User address","type":"string"}},{"name":"chainId","in":"query","required":false,"schema":{"description":"Filter by chain IDs","type":"array","items":{"type":"string"}}},{"name":"tokens","in":"query","required":false,"schema":{"description":"Filter by reward token addresses","type":"array","items":{"type":"string"}}},{"name":"protocols","in":"query","required":false,"schema":{"description":"Filter by main protocol IDs","type":"array","items":{"type":"string"}}},{"name":"tags","in":"query","required":false,"schema":{"description":"Filter by opportunity tags (whitelabel scoping)","type":"array","items":{"type":"string"}}},{"name":"isTest","in":"query","required":false,"schema":{"description":"Include test token rewards","type":"boolean"}},{"name":"isPreTGE","in":"query","required":false,"schema":{"description":"When true, restrict to preTGE (PRETGE) token rewards","type":"boolean"}},{"name":"reloadChainId","in":"query","required":false,"schema":{"description":"Chain ID to bypass cache and check for recent claims","anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"Chain ID to bypass cache and check for recent claims","type":"number"}]}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"chain":{"$id":"chain","title":"Chain","description":"Chain","type":"object","properties":{"id":{"$id":"chainId","title":"Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"name":{"title":"Chain Name","description":"Legible name of the chain","type":"string"},"icon":{"title":"Icon URL","description":"URL to the icon of the chain","type":"string"},"liveCampaigns":{"title":"Live Campaigns","description":"Number of campaigns currently live on this chain","type":"number"},"endOfDisputePeriod":{"type":"number"},"explorers":{"type":"array","items":{"type":"object","properties":{"type":{"anyOf":[{"const":"ETHERSCAN","type":"string"},{"const":"BLOCKSCOUT","type":"string"},{"const":"SOLSCAN","type":"string"}]},"url":{"type":"string"},"chainId":{"type":"number"}},"required":["type","url","chainId"]}},"lastClaimsOnchainFetchTimestamp":{"title":"Last Claims Onchain Fetch Timestamp","description":"Timestamp of the last claims onchain fetch","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","icon","liveCampaigns","endOfDisputePeriod","lastClaimsOnchainFetchTimestamp"]},"amountUSD":{"description":"Sum of reward amounts on this chain in USD (live tree — includes claimed). Point tokens are excluded from this total; read `rewards` for point balances.","type":"string"},"claimedUSD":{"description":"Sum of claimed amounts on this chain in USD. Point tokens are excluded.","type":"string"},"pendingUSD":{"description":"Sum of pending amounts on this chain in USD (not yet in any merkle root). Point tokens are excluded.","type":"string"},"rewards":{"type":"array","items":{"type":"object","properties":{"token":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]},"amount":{"description":"Total reward amount in token wei (live tree)","type":"string"},"claimed":{"description":"Amount already claimed in token wei","type":"string"},"pending":{"description":"Amount pending in token wei (not yet in merkle root)","type":"string"},"proofs":{"description":"Merkle proofs required to claim this token reward on-chain","type":"array","items":{"description":"Merkle proof hash","type":"string"}}},"required":["token","amount","claimed","pending","proofs"]}}},"required":["chain","amountUSD","claimedUSD","pendingUSD","rewards"]}}}}}},"operationId":"getV4UsersByAddressRewardsSummary"}},"/v4/users/{address}/rewards/active-opportunities":{"get":{"tags":["Users"],"description":"Active opportunities for a user — LIVE status with rewards still claimable or pending. Aggregated by opportunity and sorted by APR descending. Settled amounts reflect recent distribution state and may be up to 30 minutes behind; pending amounts are computed live. `withStoringIds=true` additionally returns the storingIds backing each opportunity, for mapping the caller's on-chain positions (analytics positions route).","parameters":[{"name":"address","in":"path","required":true,"schema":{"description":"User address","type":"string"}},{"name":"chainId","in":"query","required":false,"schema":{"description":"Filter by chain IDs","type":"array","items":{"type":"string"}}},{"name":"tokens","in":"query","required":false,"schema":{"description":"Filter by reward token addresses","type":"array","items":{"type":"string"}}},{"name":"protocols","in":"query","required":false,"schema":{"description":"Filter by main protocol IDs","type":"array","items":{"type":"string"}}},{"name":"tags","in":"query","required":false,"schema":{"description":"Filter by opportunity tags (whitelabel scoping)","type":"array","items":{"type":"string"}}},{"name":"isTest","in":"query","required":false,"schema":{"description":"Include test token rewards","type":"boolean"}},{"name":"isPreTGE","in":"query","required":false,"schema":{"description":"When true, restrict to preTGE (PRETGE) token rewards","type":"boolean"}},{"name":"withStoringIds","in":"query","required":false,"schema":{"description":"Also return the storingIds backing each opportunity (LIVE root campaigns' full sub-campaign trees), so callers can fetch and map their on-chain positions through the analytics positions route. Off by default so existing consumers keep the endpoint's original latency.","type":"boolean"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"opportunity":{"type":"object","allOf":[{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"identifier":{"type":"string"},"chainId":{"type":"number"},"name":{"type":"string"},"description":{"type":"string"},"howToSteps":{"type":"array","items":{"type":"string"}},"status":{"anyOf":[{"const":"NONE","type":"string"},{"const":"PAST","type":"string"},{"const":"LIVE","type":"string"},{"const":"SOON","type":"string"}]},"action":{"anyOf":[{"const":"POOL","type":"string"},{"const":"HOLD","type":"string"},{"const":"DROP","type":"string"},{"const":"LEND","type":"string"},{"const":"BORROW","type":"string"},{"const":"LONG","type":"string"},{"const":"SHORT","type":"string"},{"const":"SWAP","type":"string"},{"const":"INVALID","type":"string"},{"const":"STAKE","type":"string"}]},"tags":{"type":"array","items":{"type":"string"}},"mainProtocol":{"type":"string"},"depositUrl":{"type":"string"},"depositUrls":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"url":{"type":"string"},"subtitle":{"type":"string"},"icon":{"type":"string"},"priority":{"type":"number"}},"required":["id","title","url","priority"]}},"explorerAddress":{"type":"string"},"hidden":{"type":"boolean"},"tvl":{"type":"number"},"apr":{"type":"number"},"dailyRewards":{"type":"number"},"maxDailyRewards":{"anyOf":[{"type":"number"},{"type":"null"}]},"liveCampaigns":{"type":"number"},"lastCampaignCreatedAt":{"type":"number"},"earliestCampaignStart":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"latestCampaignStart":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"earliestCampaignEnd":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"latestCampaignEnd":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"nativeApr":{"type":"number"},"totalApr":{"type":"number"},"maxApr":{"anyOf":[{"type":"number"},{"type":"null"}]},"liveCampaignsForCreator":{"type":"number"},"soonCampaignsForCreator":{"type":"number"},"pastCampaignsForCreator":{"type":"number"},"distributionType":{"type":"string"},"tokens":{"type":"array","items":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]}},"chain":{"$id":"chain","title":"Chain","description":"Chain","type":"object","properties":{"id":{"$id":"chainId","title":"Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"name":{"title":"Chain Name","description":"Legible name of the chain","type":"string"},"icon":{"title":"Icon URL","description":"URL to the icon of the chain","type":"string"},"liveCampaigns":{"title":"Live Campaigns","description":"Number of campaigns currently live on this chain","type":"number"},"endOfDisputePeriod":{"type":"number"},"explorers":{"type":"array","items":{"type":"object","properties":{"type":{"anyOf":[{"const":"ETHERSCAN","type":"string"},{"const":"BLOCKSCOUT","type":"string"},{"const":"SOLSCAN","type":"string"}]},"url":{"type":"string"},"chainId":{"type":"number"}},"required":["type","url","chainId"]}},"lastClaimsOnchainFetchTimestamp":{"title":"Last Claims Onchain Fetch Timestamp","description":"Timestamp of the last claims onchain fetch","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","icon","liveCampaigns","endOfDisputePeriod","lastClaimsOnchainFetchTimestamp"]},"activePrograms":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"type":"string"},"icon":{"type":"string"}},"required":["id","name"]}},"protocol":{"anyOf":[{"$id":"protocol","title":"Protocol","description":"Protocol","type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"icon":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"description":{"type":"string"},"url":{"type":"string"},"dailyRewards":{"type":"number"},"numberOfLiveCampaigns":{"type":"number"},"opportunityLiveTags":{"type":"array","items":{"type":"string"}},"banner":{"anyOf":[{"type":"string"},{"type":"null"}]},"opportunityBannerLight":{"anyOf":[{"type":"string"},{"type":"null"}]},"opportunityBannerDark":{"anyOf":[{"type":"string"},{"type":"null"}]},"trustData":{"anyOf":[{"type":"object","properties":{"slug":{"type":"string"},"category":{"anyOf":[{"type":"string"},{"type":"null"}]},"audits":{"anyOf":[{"type":"string"},{"type":"null"}]},"audit_links":{"type":"array","items":{"type":"string"}},"audit_note":{"anyOf":[{"type":"string"},{"type":"null"}]},"github":{"type":"array","items":{"type":"string"}},"twitter":{"anyOf":[{"type":"string"},{"type":"null"}]},"listedAt":{"anyOf":[{"type":"number"},{"type":"null"}]},"parentProtocol":{"anyOf":[{"type":"string"},{"type":"null"}]},"tvl":{"anyOf":[{"type":"number"},{"type":"null"}]},"hacks":{"type":"array","items":{"type":"object","properties":{"date":{"type":"number"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"amountUSD":{"anyOf":[{"type":"number"},{"type":"null"}]},"technique":{"anyOf":[{"type":"string"},{"type":"null"}]},"source":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["date","name","amountUSD","technique","source"]}},"syncedAt":{"type":"number"}},"required":["slug","category","audits","audit_links","audit_note","github","twitter","listedAt","parentProtocol","syncedAt"]},{"type":"null"}]}},"required":["id","name","icon","tags","description","url","banner","opportunityBannerLight","opportunityBannerDark","trustData"]},{"type":"null"}]},"aprRecord":{"type":"object","properties":{"cumulated":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"breakdowns":{"type":"array","items":{"type":"object","properties":{"identifier":{"type":"string"},"type":{"anyOf":[{"const":"CAMPAIGN","type":"string"},{"const":"TOKEN","type":"string"},{"const":"PROTOCOL","type":"string"}]},"value":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"distributionType":{"anyOf":[{"const":"DUTCH_AUCTION","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"AAVE_NET_APR","type":"string"},{"const":"ERC4626_APR","type":"string"},{"const":"ERC4626_SPREAD_CAPPED","type":"string"},{"const":"AAVE_V4_NET_APR","type":"string"},{"const":"DEEL_DISTRIBUTION","type":"string"},{"const":"SOFR_SPREAD_RATCHET","type":"string"},{"const":"ERC4626_TARGET_APR_WITH_MERKL","type":"string"},{"const":"TARGET_APR_WITH_MERKL","type":"string"},{"const":"NET_APR","type":"string"},{"const":"BORROW_SUBSIDY","type":"string"},{"const":"NET_APR_WITH_MERKL","type":"string"},{"const":"YIELD_BASIS_PID","type":"string"},{"const":"COMPOSED","type":"string"}]}},"required":["identifier","type","value","timestamp"]}}},"required":["cumulated","timestamp","breakdowns"]},"nativeAprRecord":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"value":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"amount":{"type":"bigint"},"rewardToken":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]},"breakdowns":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"value":{"type":"number"},"amount":{"type":"bigint"},"rewardToken":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]}},"required":["title","value"]}}},"required":["title","value","timestamp"]},"tvlRecord":{"type":"object","properties":{"total":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"breakdowns":{"type":"array","items":{"type":"object","properties":{"identifier":{"type":"string"},"type":{"anyOf":[{"const":"TOKEN","type":"string"},{"const":"PROTOCOL","type":"string"}]},"value":{"type":"number"}},"required":["identifier","type","value"]}}},"required":["total","timestamp","breakdowns"]},"rewardsRecord":{"type":"object","properties":{"total":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"breakdowns":{"type":"array","items":{"type":"object","properties":{"campaignId":{"type":"string"},"value":{"type":"number"},"maxValue":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"token":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]},"amount":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"distributionType":{"anyOf":[{"const":"DUTCH_AUCTION","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"AAVE_NET_APR","type":"string"},{"const":"ERC4626_APR","type":"string"},{"const":"ERC4626_SPREAD_CAPPED","type":"string"},{"const":"AAVE_V4_NET_APR","type":"string"},{"const":"DEEL_DISTRIBUTION","type":"string"},{"const":"SOFR_SPREAD_RATCHET","type":"string"},{"const":"ERC4626_TARGET_APR_WITH_MERKL","type":"string"},{"const":"TARGET_APR_WITH_MERKL","type":"string"},{"const":"NET_APR","type":"string"},{"const":"BORROW_SUBSIDY","type":"string"},{"const":"NET_APR_WITH_MERKL","type":"string"},{"const":"YIELD_BASIS_PID","type":"string"},{"const":"COMPOSED","type":"string"}]},"onChainCampaignId":{"type":"string"}},"required":["campaignId","value","timestamp","token","amount"]}}},"required":["total","timestamp","breakdowns"]}},"required":["id","type","identifier","chainId","name","description","howToSteps","status","action","tags","tvl","apr","dailyRewards","liveCampaigns","lastCampaignCreatedAt","tokens","chain","activePrograms"]},{"type":"object","properties":{"campaigns":{"type":"array","items":{"type":"object","properties":{"id":{"description":"Unique campaign id","type":"string"},"computeChainId":{"description":"Chain ID where campaign data is computed","type":"number"},"distributionChainId":{"description":"Chain ID where rewards are distributed","type":"number"},"campaignId":{"description":"A hash of the campaign, unique per chain. Can be used to identify campaigns across chains","type":"string"},"type":{"description":"Campaign type identifier","type":"string"},"subType":{"description":"Campaign subtype for protocols like Silo, Radiant, Morpho, Dolomite, Compound, Ajna and Euler","anyOf":[{"type":"number"},{"type":"null"}]},"amount":{"description":"Amount of reward token units being distributed by the campaign","type":"string"},"startTimestamp":{"description":"Unix timestamp when the campaign starts","anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]},{"type":"bigint"}]},"endTimestamp":{"description":"Unix timestamp when the campaign ends","anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]},{"type":"bigint"}]},"creatorAddress":{"description":"Ethereum address of the campaign creator","type":"string"},"apr":{"description":"Annual Percentage Rate for this campaign","type":"number"},"dailyRewards":{"description":"Total daily rewards distributed in USD","type":"number"},"creator":{"description":"Campaign creator information","type":"object","properties":{"address":{"description":"Creator's Ethereum address","type":"string"},"tags":{"description":"Tag associated with the creator","type":"array","items":{"type":"string"}},"creatorId":{"nullable":true,"anyOf":[{"description":"Merkl creator ID if registered","type":"string"},{"type":"null"}]}},"required":["address"]},"params":{"description":"Campaign-specific parameters"},"description":{"description":"Campaign description","type":"string"},"chain":{"$id":"chain","title":"Chain","description":"Chain","type":"object","properties":{"id":{"$id":"chainId","title":"Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"name":{"title":"Chain Name","description":"Legible name of the chain","type":"string"},"icon":{"title":"Icon URL","description":"URL to the icon of the chain","type":"string"},"liveCampaigns":{"title":"Live Campaigns","description":"Number of campaigns currently live on this chain","type":"number"},"endOfDisputePeriod":{"type":"number"},"explorers":{"type":"array","items":{"type":"object","properties":{"type":{"anyOf":[{"const":"ETHERSCAN","type":"string"},{"const":"BLOCKSCOUT","type":"string"},{"const":"SOLSCAN","type":"string"}]},"url":{"type":"string"},"chainId":{"type":"number"}},"required":["type","url","chainId"]}},"lastClaimsOnchainFetchTimestamp":{"title":"Last Claims Onchain Fetch Timestamp","description":"Timestamp of the last claims onchain fetch","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","icon","liveCampaigns","endOfDisputePeriod","lastClaimsOnchainFetchTimestamp"]},"rewardTokenId":{"description":"Internal ID of the reward token","type":"string"},"rewardToken":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]},"opportunityId":{"description":"ID of the associated opportunity","type":"string"},"distributionChain":{"$id":"chain","title":"Chain","description":"Chain","type":"object","properties":{"id":{"$id":"chainId","title":"Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"name":{"title":"Chain Name","description":"Legible name of the chain","type":"string"},"icon":{"title":"Icon URL","description":"URL to the icon of the chain","type":"string"},"liveCampaigns":{"title":"Live Campaigns","description":"Number of campaigns currently live on this chain","type":"number"},"endOfDisputePeriod":{"type":"number"},"explorers":{"type":"array","items":{"type":"object","properties":{"type":{"anyOf":[{"const":"ETHERSCAN","type":"string"},{"const":"BLOCKSCOUT","type":"string"},{"const":"SOLSCAN","type":"string"}]},"url":{"type":"string"},"chainId":{"type":"number"}},"required":["type","url","chainId"]}},"lastClaimsOnchainFetchTimestamp":{"title":"Last Claims Onchain Fetch Timestamp","description":"Timestamp of the last claims onchain fetch","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","icon","liveCampaigns","endOfDisputePeriod","lastClaimsOnchainFetchTimestamp"]},"distributionType":{"description":"Type of reward distribution mechanism","anyOf":[{"const":"DUTCH_AUCTION","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"AAVE_NET_APR","type":"string"},{"const":"ERC4626_APR","type":"string"},{"const":"ERC4626_SPREAD_CAPPED","type":"string"},{"const":"AAVE_V4_NET_APR","type":"string"},{"const":"DEEL_DISTRIBUTION","type":"string"},{"const":"SOFR_SPREAD_RATCHET","type":"string"},{"const":"ERC4626_TARGET_APR_WITH_MERKL","type":"string"},{"const":"TARGET_APR_WITH_MERKL","type":"string"},{"const":"NET_APR","type":"string"},{"const":"BORROW_SUBSIDY","type":"string"},{"const":"NET_APR_WITH_MERKL","type":"string"},{"const":"YIELD_BASIS_PID","type":"string"},{"const":"COMPOSED","type":"string"}]},"campaignStatus":{"type":"object","properties":{"campaignId":{"type":"string"},"computedUntil":{"anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}]},"processingStarted":{"anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}]},"status":{"type":"string"},"preComputeProcessingStarted":{"anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}]},"preComputeStatus":{"type":"string"},"delay":{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]},"error":{"type":"string"},"details":{}},"required":["campaignId","computedUntil","processingStarted","status","preComputeProcessingStarted","preComputeStatus"]},"createdAt":{"format":"date","description":"ISO date when the campaign was created","type":"string"},"rootCampaignId":{"description":"ID of the root campaign for hierarchical campaigns","anyOf":[{"type":"string"},{"type":"null"}]},"parentCampaignId":{"description":"ID of the parent campaign for sub-campaigns","anyOf":[{"type":"string"},{"type":"null"}]},"childCampaignIds":{"description":"List of child campaign IDs","type":"array","items":{"type":"string"}},"dailyRewardsBreakdown":{"description":"Daily breakdown of rewards","type":"array","items":{"type":"object","properties":{"campaignId":{"type":"string"},"value":{"type":"number"},"maxValue":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"token":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]},"amount":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"distributionType":{"anyOf":[{"const":"DUTCH_AUCTION","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"AAVE_NET_APR","type":"string"},{"const":"ERC4626_APR","type":"string"},{"const":"ERC4626_SPREAD_CAPPED","type":"string"},{"const":"AAVE_V4_NET_APR","type":"string"},{"const":"DEEL_DISTRIBUTION","type":"string"},{"const":"SOFR_SPREAD_RATCHET","type":"string"},{"const":"ERC4626_TARGET_APR_WITH_MERKL","type":"string"},{"const":"TARGET_APR_WITH_MERKL","type":"string"},{"const":"NET_APR","type":"string"},{"const":"BORROW_SUBSIDY","type":"string"},{"const":"NET_APR_WITH_MERKL","type":"string"},{"const":"YIELD_BASIS_PID","type":"string"},{"const":"COMPOSED","type":"string"}]},"onChainCampaignId":{"type":"string"}},"required":["campaignId","value","timestamp","token","amount"]}},"pauseCompute":{"description":"ISO timestamp when computation was paused","anyOf":[{"type":"string"},{"type":"null"}]},"pausePrecompute":{"description":"Reason for pausing precomputation, or null if not paused","anyOf":[{"type":"string"},{"type":"null"}]},"hasOverrides":{"description":"Whether this campaign has previous config overrides","type":"boolean"},"isPrivate":{"description":"Indicates if the campaign is private","type":"boolean"},"hidden":{"description":"Whether the campaign is hidden from non-test API results","type":"boolean"},"hideLeaderboard":{"description":"Whether leaderboard, ranks and reward breakdowns are hidden for this campaign","type":"boolean"},"campaignEncodingHash":{"description":"Hash of the campaign configuration encoding","type":"string"}},"required":["id","computeChainId","distributionChainId","campaignId","type","amount","startTimestamp","endTimestamp","creatorAddress","params","chain","rewardToken","campaignStatus","createdAt","isPrivate"]}}}}]},"earnedTokens":{"type":"array","items":{"type":"object","properties":{"token":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]},"amount":{"description":"Total earned (live tree + pending) in token wei","type":"string"},"chain":{"$id":"chain","title":"Chain","description":"Chain","type":"object","properties":{"id":{"$id":"chainId","title":"Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"name":{"title":"Chain Name","description":"Legible name of the chain","type":"string"},"icon":{"title":"Icon URL","description":"URL to the icon of the chain","type":"string"},"liveCampaigns":{"title":"Live Campaigns","description":"Number of campaigns currently live on this chain","type":"number"},"endOfDisputePeriod":{"type":"number"},"explorers":{"type":"array","items":{"type":"object","properties":{"type":{"anyOf":[{"const":"ETHERSCAN","type":"string"},{"const":"BLOCKSCOUT","type":"string"},{"const":"SOLSCAN","type":"string"}]},"url":{"type":"string"},"chainId":{"type":"number"}},"required":["type","url","chainId"]}},"lastClaimsOnchainFetchTimestamp":{"title":"Last Claims Onchain Fetch Timestamp","description":"Timestamp of the last claims onchain fetch","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","icon","liveCampaigns","endOfDisputePeriod","lastClaimsOnchainFetchTimestamp"]}},"required":["token","amount","chain"]}},"storingIds":{"description":"Only when `withStoringIds=true`: every storingId of the LIVE root campaigns' full sub-campaign trees. Use them to fetch and map the caller's on-chain positions via `GET /v4/analytics/positions/{address}?indexingIds=...` (that route names the same value `indexingId`). Empty array = resolved, nothing backs this opportunity; field absent = resolution failed for this opportunity (the rest of the response is unaffected).","type":"array","items":{"type":"object","properties":{"id":{"description":"Indexing/storingId under which positions backing this opportunity are tracked","type":"string"},"viaSubCampaign":{"description":"True when this storingId belongs to a sub-campaign only (forwarded/wrapper position, e.g. held via a vault) rather than a root campaign","type":"boolean"}},"required":["id"]}}},"required":["opportunity","earnedTokens"]}}}}}},"operationId":"getV4UsersByAddressRewardsActive-opportunities"}},"/v4/users/{address}/rewards/chains/{chainId}/breakdowns":{"get":{"tags":["Users"],"description":"Per-chain opportunity breakdown for a user. Aggregated by opportunity with one row per token carrying claimed, pending, and server-computed claimable amounts.","parameters":[{"name":"address","in":"path","required":true,"schema":{"description":"User wallet address","type":"string"}},{"name":"chainId","in":"path","required":true,"schema":{"description":"Chain ID to fetch breakdown for","anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"Chain ID to fetch breakdown for","type":"number"}]}},{"name":"tokens","in":"query","required":false,"schema":{"description":"Filter by reward token addresses","type":"array","items":{"type":"string"}}},{"name":"protocols","in":"query","required":false,"schema":{"description":"Filter by main protocol IDs","type":"array","items":{"type":"string"}}},{"name":"tags","in":"query","required":false,"schema":{"description":"Filter by opportunity tags (whitelabel scoping)","type":"array","items":{"type":"string"}}},{"name":"isTest","in":"query","required":false,"schema":{"description":"Include test token rewards","type":"boolean"}},{"name":"isPreTGE","in":"query","required":false,"schema":{"description":"When true, restrict to preTGE (PRETGE) token rewards","type":"boolean"}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"chain":{"$id":"chain","title":"Chain","description":"Chain","type":"object","properties":{"id":{"$id":"chainId","title":"Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"name":{"title":"Chain Name","description":"Legible name of the chain","type":"string"},"icon":{"title":"Icon URL","description":"URL to the icon of the chain","type":"string"},"liveCampaigns":{"title":"Live Campaigns","description":"Number of campaigns currently live on this chain","type":"number"},"endOfDisputePeriod":{"type":"number"},"explorers":{"type":"array","items":{"type":"object","properties":{"type":{"anyOf":[{"const":"ETHERSCAN","type":"string"},{"const":"BLOCKSCOUT","type":"string"},{"const":"SOLSCAN","type":"string"}]},"url":{"type":"string"},"chainId":{"type":"number"}},"required":["type","url","chainId"]}},"lastClaimsOnchainFetchTimestamp":{"title":"Last Claims Onchain Fetch Timestamp","description":"Timestamp of the last claims onchain fetch","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","icon","liveCampaigns","endOfDisputePeriod","lastClaimsOnchainFetchTimestamp"]},"opportunities":{"type":"array","items":{"type":"object","properties":{"opportunity":{"type":"object","allOf":[{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"identifier":{"type":"string"},"chainId":{"type":"number"},"name":{"type":"string"},"description":{"type":"string"},"howToSteps":{"type":"array","items":{"type":"string"}},"status":{"anyOf":[{"const":"NONE","type":"string"},{"const":"PAST","type":"string"},{"const":"LIVE","type":"string"},{"const":"SOON","type":"string"}]},"action":{"anyOf":[{"const":"POOL","type":"string"},{"const":"HOLD","type":"string"},{"const":"DROP","type":"string"},{"const":"LEND","type":"string"},{"const":"BORROW","type":"string"},{"const":"LONG","type":"string"},{"const":"SHORT","type":"string"},{"const":"SWAP","type":"string"},{"const":"INVALID","type":"string"},{"const":"STAKE","type":"string"}]},"tags":{"type":"array","items":{"type":"string"}},"mainProtocol":{"type":"string"},"depositUrl":{"type":"string"},"depositUrls":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"url":{"type":"string"},"subtitle":{"type":"string"},"icon":{"type":"string"},"priority":{"type":"number"}},"required":["id","title","url","priority"]}},"explorerAddress":{"type":"string"},"hidden":{"type":"boolean"},"tvl":{"type":"number"},"apr":{"type":"number"},"dailyRewards":{"type":"number"},"maxDailyRewards":{"anyOf":[{"type":"number"},{"type":"null"}]},"liveCampaigns":{"type":"number"},"lastCampaignCreatedAt":{"type":"number"},"earliestCampaignStart":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"latestCampaignStart":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"earliestCampaignEnd":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"latestCampaignEnd":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"nativeApr":{"type":"number"},"totalApr":{"type":"number"},"maxApr":{"anyOf":[{"type":"number"},{"type":"null"}]},"liveCampaignsForCreator":{"type":"number"},"soonCampaignsForCreator":{"type":"number"},"pastCampaignsForCreator":{"type":"number"},"distributionType":{"type":"string"},"tokens":{"type":"array","items":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]}},"chain":{"$id":"chain","title":"Chain","description":"Chain","type":"object","properties":{"id":{"$id":"chainId","title":"Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"name":{"title":"Chain Name","description":"Legible name of the chain","type":"string"},"icon":{"title":"Icon URL","description":"URL to the icon of the chain","type":"string"},"liveCampaigns":{"title":"Live Campaigns","description":"Number of campaigns currently live on this chain","type":"number"},"endOfDisputePeriod":{"type":"number"},"explorers":{"type":"array","items":{"type":"object","properties":{"type":{"anyOf":[{"const":"ETHERSCAN","type":"string"},{"const":"BLOCKSCOUT","type":"string"},{"const":"SOLSCAN","type":"string"}]},"url":{"type":"string"},"chainId":{"type":"number"}},"required":["type","url","chainId"]}},"lastClaimsOnchainFetchTimestamp":{"title":"Last Claims Onchain Fetch Timestamp","description":"Timestamp of the last claims onchain fetch","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","icon","liveCampaigns","endOfDisputePeriod","lastClaimsOnchainFetchTimestamp"]},"activePrograms":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"type":"string"},"icon":{"type":"string"}},"required":["id","name"]}},"protocol":{"anyOf":[{"$id":"protocol","title":"Protocol","description":"Protocol","type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"icon":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"description":{"type":"string"},"url":{"type":"string"},"dailyRewards":{"type":"number"},"numberOfLiveCampaigns":{"type":"number"},"opportunityLiveTags":{"type":"array","items":{"type":"string"}},"banner":{"anyOf":[{"type":"string"},{"type":"null"}]},"opportunityBannerLight":{"anyOf":[{"type":"string"},{"type":"null"}]},"opportunityBannerDark":{"anyOf":[{"type":"string"},{"type":"null"}]},"trustData":{"anyOf":[{"type":"object","properties":{"slug":{"type":"string"},"category":{"anyOf":[{"type":"string"},{"type":"null"}]},"audits":{"anyOf":[{"type":"string"},{"type":"null"}]},"audit_links":{"type":"array","items":{"type":"string"}},"audit_note":{"anyOf":[{"type":"string"},{"type":"null"}]},"github":{"type":"array","items":{"type":"string"}},"twitter":{"anyOf":[{"type":"string"},{"type":"null"}]},"listedAt":{"anyOf":[{"type":"number"},{"type":"null"}]},"parentProtocol":{"anyOf":[{"type":"string"},{"type":"null"}]},"tvl":{"anyOf":[{"type":"number"},{"type":"null"}]},"hacks":{"type":"array","items":{"type":"object","properties":{"date":{"type":"number"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"amountUSD":{"anyOf":[{"type":"number"},{"type":"null"}]},"technique":{"anyOf":[{"type":"string"},{"type":"null"}]},"source":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["date","name","amountUSD","technique","source"]}},"syncedAt":{"type":"number"}},"required":["slug","category","audits","audit_links","audit_note","github","twitter","listedAt","parentProtocol","syncedAt"]},{"type":"null"}]}},"required":["id","name","icon","tags","description","url","banner","opportunityBannerLight","opportunityBannerDark","trustData"]},{"type":"null"}]},"aprRecord":{"type":"object","properties":{"cumulated":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"breakdowns":{"type":"array","items":{"type":"object","properties":{"identifier":{"type":"string"},"type":{"anyOf":[{"const":"CAMPAIGN","type":"string"},{"const":"TOKEN","type":"string"},{"const":"PROTOCOL","type":"string"}]},"value":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"distributionType":{"anyOf":[{"const":"DUTCH_AUCTION","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"AAVE_NET_APR","type":"string"},{"const":"ERC4626_APR","type":"string"},{"const":"ERC4626_SPREAD_CAPPED","type":"string"},{"const":"AAVE_V4_NET_APR","type":"string"},{"const":"DEEL_DISTRIBUTION","type":"string"},{"const":"SOFR_SPREAD_RATCHET","type":"string"},{"const":"ERC4626_TARGET_APR_WITH_MERKL","type":"string"},{"const":"TARGET_APR_WITH_MERKL","type":"string"},{"const":"NET_APR","type":"string"},{"const":"BORROW_SUBSIDY","type":"string"},{"const":"NET_APR_WITH_MERKL","type":"string"},{"const":"YIELD_BASIS_PID","type":"string"},{"const":"COMPOSED","type":"string"}]}},"required":["identifier","type","value","timestamp"]}}},"required":["cumulated","timestamp","breakdowns"]},"nativeAprRecord":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"value":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"amount":{"type":"bigint"},"rewardToken":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]},"breakdowns":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"value":{"type":"number"},"amount":{"type":"bigint"},"rewardToken":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]}},"required":["title","value"]}}},"required":["title","value","timestamp"]},"tvlRecord":{"type":"object","properties":{"total":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"breakdowns":{"type":"array","items":{"type":"object","properties":{"identifier":{"type":"string"},"type":{"anyOf":[{"const":"TOKEN","type":"string"},{"const":"PROTOCOL","type":"string"}]},"value":{"type":"number"}},"required":["identifier","type","value"]}}},"required":["total","timestamp","breakdowns"]},"rewardsRecord":{"type":"object","properties":{"total":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"breakdowns":{"type":"array","items":{"type":"object","properties":{"campaignId":{"type":"string"},"value":{"type":"number"},"maxValue":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"token":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]},"amount":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"distributionType":{"anyOf":[{"const":"DUTCH_AUCTION","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"AAVE_NET_APR","type":"string"},{"const":"ERC4626_APR","type":"string"},{"const":"ERC4626_SPREAD_CAPPED","type":"string"},{"const":"AAVE_V4_NET_APR","type":"string"},{"const":"DEEL_DISTRIBUTION","type":"string"},{"const":"SOFR_SPREAD_RATCHET","type":"string"},{"const":"ERC4626_TARGET_APR_WITH_MERKL","type":"string"},{"const":"TARGET_APR_WITH_MERKL","type":"string"},{"const":"NET_APR","type":"string"},{"const":"BORROW_SUBSIDY","type":"string"},{"const":"NET_APR_WITH_MERKL","type":"string"},{"const":"YIELD_BASIS_PID","type":"string"},{"const":"COMPOSED","type":"string"}]},"onChainCampaignId":{"type":"string"}},"required":["campaignId","value","timestamp","token","amount"]}}},"required":["total","timestamp","breakdowns"]}},"required":["id","type","identifier","chainId","name","description","howToSteps","status","action","tags","tvl","apr","dailyRewards","liveCampaigns","lastCampaignCreatedAt","tokens","chain","activePrograms"]},{"type":"object","properties":{"campaigns":{"type":"array","items":{"type":"object","properties":{"id":{"description":"Unique campaign id","type":"string"},"computeChainId":{"description":"Chain ID where campaign data is computed","type":"number"},"distributionChainId":{"description":"Chain ID where rewards are distributed","type":"number"},"campaignId":{"description":"A hash of the campaign, unique per chain. Can be used to identify campaigns across chains","type":"string"},"type":{"description":"Campaign type identifier","type":"string"},"subType":{"description":"Campaign subtype for protocols like Silo, Radiant, Morpho, Dolomite, Compound, Ajna and Euler","anyOf":[{"type":"number"},{"type":"null"}]},"amount":{"description":"Amount of reward token units being distributed by the campaign","type":"string"},"startTimestamp":{"description":"Unix timestamp when the campaign starts","anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]},{"type":"bigint"}]},"endTimestamp":{"description":"Unix timestamp when the campaign ends","anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]},{"type":"bigint"}]},"creatorAddress":{"description":"Ethereum address of the campaign creator","type":"string"},"apr":{"description":"Annual Percentage Rate for this campaign","type":"number"},"dailyRewards":{"description":"Total daily rewards distributed in USD","type":"number"},"creator":{"description":"Campaign creator information","type":"object","properties":{"address":{"description":"Creator's Ethereum address","type":"string"},"tags":{"description":"Tag associated with the creator","type":"array","items":{"type":"string"}},"creatorId":{"nullable":true,"anyOf":[{"description":"Merkl creator ID if registered","type":"string"},{"type":"null"}]}},"required":["address"]},"params":{"description":"Campaign-specific parameters"},"description":{"description":"Campaign description","type":"string"},"chain":{"$id":"chain","title":"Chain","description":"Chain","type":"object","properties":{"id":{"$id":"chainId","title":"Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"name":{"title":"Chain Name","description":"Legible name of the chain","type":"string"},"icon":{"title":"Icon URL","description":"URL to the icon of the chain","type":"string"},"liveCampaigns":{"title":"Live Campaigns","description":"Number of campaigns currently live on this chain","type":"number"},"endOfDisputePeriod":{"type":"number"},"explorers":{"type":"array","items":{"type":"object","properties":{"type":{"anyOf":[{"const":"ETHERSCAN","type":"string"},{"const":"BLOCKSCOUT","type":"string"},{"const":"SOLSCAN","type":"string"}]},"url":{"type":"string"},"chainId":{"type":"number"}},"required":["type","url","chainId"]}},"lastClaimsOnchainFetchTimestamp":{"title":"Last Claims Onchain Fetch Timestamp","description":"Timestamp of the last claims onchain fetch","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","icon","liveCampaigns","endOfDisputePeriod","lastClaimsOnchainFetchTimestamp"]},"rewardTokenId":{"description":"Internal ID of the reward token","type":"string"},"rewardToken":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]},"opportunityId":{"description":"ID of the associated opportunity","type":"string"},"distributionChain":{"$id":"chain","title":"Chain","description":"Chain","type":"object","properties":{"id":{"$id":"chainId","title":"Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"name":{"title":"Chain Name","description":"Legible name of the chain","type":"string"},"icon":{"title":"Icon URL","description":"URL to the icon of the chain","type":"string"},"liveCampaigns":{"title":"Live Campaigns","description":"Number of campaigns currently live on this chain","type":"number"},"endOfDisputePeriod":{"type":"number"},"explorers":{"type":"array","items":{"type":"object","properties":{"type":{"anyOf":[{"const":"ETHERSCAN","type":"string"},{"const":"BLOCKSCOUT","type":"string"},{"const":"SOLSCAN","type":"string"}]},"url":{"type":"string"},"chainId":{"type":"number"}},"required":["type","url","chainId"]}},"lastClaimsOnchainFetchTimestamp":{"title":"Last Claims Onchain Fetch Timestamp","description":"Timestamp of the last claims onchain fetch","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","icon","liveCampaigns","endOfDisputePeriod","lastClaimsOnchainFetchTimestamp"]},"distributionType":{"description":"Type of reward distribution mechanism","anyOf":[{"const":"DUTCH_AUCTION","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"AAVE_NET_APR","type":"string"},{"const":"ERC4626_APR","type":"string"},{"const":"ERC4626_SPREAD_CAPPED","type":"string"},{"const":"AAVE_V4_NET_APR","type":"string"},{"const":"DEEL_DISTRIBUTION","type":"string"},{"const":"SOFR_SPREAD_RATCHET","type":"string"},{"const":"ERC4626_TARGET_APR_WITH_MERKL","type":"string"},{"const":"TARGET_APR_WITH_MERKL","type":"string"},{"const":"NET_APR","type":"string"},{"const":"BORROW_SUBSIDY","type":"string"},{"const":"NET_APR_WITH_MERKL","type":"string"},{"const":"YIELD_BASIS_PID","type":"string"},{"const":"COMPOSED","type":"string"}]},"campaignStatus":{"type":"object","properties":{"campaignId":{"type":"string"},"computedUntil":{"anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}]},"processingStarted":{"anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}]},"status":{"type":"string"},"preComputeProcessingStarted":{"anyOf":[{"type":"string"},{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]}]},"preComputeStatus":{"type":"string"},"delay":{"anyOf":[{"format":"numeric","default":0,"type":"string"},{"type":"number"}]},"error":{"type":"string"},"details":{}},"required":["campaignId","computedUntil","processingStarted","status","preComputeProcessingStarted","preComputeStatus"]},"createdAt":{"format":"date","description":"ISO date when the campaign was created","type":"string"},"rootCampaignId":{"description":"ID of the root campaign for hierarchical campaigns","anyOf":[{"type":"string"},{"type":"null"}]},"parentCampaignId":{"description":"ID of the parent campaign for sub-campaigns","anyOf":[{"type":"string"},{"type":"null"}]},"childCampaignIds":{"description":"List of child campaign IDs","type":"array","items":{"type":"string"}},"dailyRewardsBreakdown":{"description":"Daily breakdown of rewards","type":"array","items":{"type":"object","properties":{"campaignId":{"type":"string"},"value":{"type":"number"},"maxValue":{"type":"number"},"timestamp":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"token":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]},"amount":{"anyOf":[{"type":"bigint"},{"type":"string"}]},"distributionType":{"anyOf":[{"const":"DUTCH_AUCTION","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"FIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"FIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE","type":"string"},{"const":"MAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"MAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT","type":"string"},{"const":"AAVE_NET_APR","type":"string"},{"const":"ERC4626_APR","type":"string"},{"const":"ERC4626_SPREAD_CAPPED","type":"string"},{"const":"AAVE_V4_NET_APR","type":"string"},{"const":"DEEL_DISTRIBUTION","type":"string"},{"const":"SOFR_SPREAD_RATCHET","type":"string"},{"const":"ERC4626_TARGET_APR_WITH_MERKL","type":"string"},{"const":"TARGET_APR_WITH_MERKL","type":"string"},{"const":"NET_APR","type":"string"},{"const":"BORROW_SUBSIDY","type":"string"},{"const":"NET_APR_WITH_MERKL","type":"string"},{"const":"YIELD_BASIS_PID","type":"string"},{"const":"COMPOSED","type":"string"}]},"onChainCampaignId":{"type":"string"}},"required":["campaignId","value","timestamp","token","amount"]}},"pauseCompute":{"description":"ISO timestamp when computation was paused","anyOf":[{"type":"string"},{"type":"null"}]},"pausePrecompute":{"description":"Reason for pausing precomputation, or null if not paused","anyOf":[{"type":"string"},{"type":"null"}]},"hasOverrides":{"description":"Whether this campaign has previous config overrides","type":"boolean"},"isPrivate":{"description":"Indicates if the campaign is private","type":"boolean"},"hidden":{"description":"Whether the campaign is hidden from non-test API results","type":"boolean"},"hideLeaderboard":{"description":"Whether leaderboard, ranks and reward breakdowns are hidden for this campaign","type":"boolean"},"campaignEncodingHash":{"description":"Hash of the campaign configuration encoding","type":"string"}},"required":["id","computeChainId","distributionChainId","campaignId","type","amount","startTimestamp","endTimestamp","creatorAddress","params","chain","rewardToken","campaignStatus","createdAt","isPrivate"]}}}}]},"tokens":{"type":"array","items":{"type":"object","properties":{"token":{"$id":"token","title":"Token","description":"Token","type":"object","properties":{"id":{"title":"Token ID","description":"Unique identifier for the token","type":"string"},"name":{"title":"Token Name","description":"Full name of the token","examples":["Ethereum"],"anyOf":[{"type":"string"},{"type":"null"}]},"chainId":{"$id":"chainId","title":"Token Chain ID","description":"Chain Id","minimum":1,"type":"integer"},"address":{"$id":"address","title":"Token Address","description":"Address","pattern":"^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}|[CG][A-Z0-9]{55}|0x[a-fA-F0-9]{64})$","type":"string"},"decimals":{"title":"Decimals","description":"Number of decimals for the token","examples":[18],"type":"number"},"symbol":{"title":"Symbol","description":"Symbol of the token","examples":["ETH"],"type":"string"},"icon":{"title":"Icon URL","description":"URL to the token icon image","type":"string"},"verified":{"title":"Verified","description":"Whether the token is verified","type":"boolean"},"isNative":{"title":"Is Native","description":"Whether this is a native blockchain token","type":"boolean"},"isTest":{"title":"Is Test","description":"Whether this is a test token","type":"boolean"},"type":{"title":"Token Type","description":"Type of the token (TOKEN, PRETGE, POINT)","anyOf":[{"const":"TOKEN","type":"string"},{"const":"PRETGE","type":"string"},{"const":"POINT","type":"string"}]},"price":{"title":"Price","description":"Current price of the token in USD","anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"title":"Updated At","description":"Unix timestamp of last price update","anyOf":[{"type":"number"},{"type":"null"}]},"priceSource":{"title":"Price Source","description":"Source of the price information","anyOf":[{"type":"string"},{"type":"null"}]},"displaySymbol":{"title":"Display Symbol","description":"Custom display symbol override","type":"string"},"underlyingTokenId":{"title":"Underlying Token ID","description":"If this token is a wrapper, the ID of the underlying token","type":"string"},"priceAlertDismissedAt":{"type":"number"},"priceAlertCount":{"type":"number"}},"required":["id","name","chainId","address","decimals","symbol","icon","verified","isNative","isTest","type"]},"claimed":{"description":"Already-claimed amount in token wei","type":"string"},"pending":{"description":"Pending amount (not yet in merkle root) in token wei","type":"string"},"claimable":{"description":"Claimable now in token wei (live tree amount minus claimed) — computed server-side","type":"string"}},"required":["token","claimed","pending","claimable"]}}},"required":["opportunity","tokens"]}}},"required":["chain","opportunities"]}}}}},"operationId":"getV4UsersByAddressRewardsChainsByChainIdBreakdowns"}},"/v4/users/{address}/rewards/breakdowns":{"get":{"tags":["Users"],"description":"Per-chain rewards with full opportunity breakdowns and proofs. Returns the same shape as `/v4/users/{address}/rewards` but with the breakdowns included. Limited to roughly 1000 breakdowns per response; responses exceeding this limit omit the breakdowns. For high-volume users, paginate via `/v4/leaves/{recipient}/breakdowns` instead.","parameters":[{"name":"address","in":"path","required":true,"schema":{"description":"User address","type":"string"}},{"name":"tags","in":"query","required":false,"schema":{"description":"Only get reward breakdowns for opportunities with this tag","type":"string"}},{"name":"chainIds","in":"query","required":false,"schema":{"description":"Filter by chain IDs","type":"array","items":{"type":"string"}}},{"name":"reloadChainId","in":"query","required":false,"schema":{"description":"Chain ID to bypass cache and check for recent claims","anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"Chain ID to bypass cache and check for recent claims","type":"number"}]}},{"name":"test","in":"query","required":false,"schema":{"description":"Include test token rewards","type":"boolean"}},{"name":"claimableOnly","in":"query","required":false,"schema":{"description":"Include only claimable rewards (to avoid transferring zero amounts)","type":"boolean"}},{"name":"showPrivate","in":"query","required":false,"schema":{"description":"When true, decode private campaign IDs instead of returning the zero hash. Requires the caller's identity (JWT, API key owner, or BackOffice) to match the queried address — otherwise returns 403. Also bypasses CDN cache.","type":"boolean"}}],"operationId":"getV4UsersByAddressRewardsBreakdowns"}},"/v4/volume/entries":{"get":{"tags":["Volume"],"description":"List volume entries, filterable by program, clientId, chainId and a timestamp range (all optional, AND-combined). Paginated via page/items. Each entry includes its parent VolumeConfig.","parameters":[{"name":"page","in":"query","required":false,"schema":{"minimum":0,"description":"0-indexed page number","default":0,"anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":0,"description":"0-indexed page number","default":0,"type":"number"}]}},{"name":"items","in":"query","required":false,"schema":{"minimum":1,"maximum":500,"description":"Number of items returned by page","default":50,"errorMessage":"Items must be between 1 and 500","anyOf":[{"format":"numeric","default":0,"type":"string"},{"minimum":1,"maximum":500,"description":"Number of items returned by page","default":50,"errorMessage":"Items must be between 1 and 500","type":"number"}]}},{"name":"program","in":"query","required":false,"schema":{"description":"Filter by the config's program.","type":"string"}},{"name":"clientId","in":"query","required":false,"schema":{"description":"Filter by the config's clientId.","type":"string"}},{"name":"chainId","in":"query","required":false,"schema":{"description":"Filter by the config's chainId.","anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"Filter by the config's chainId.","type":"number"}]}},{"name":"fromTimestamp","in":"query","required":false,"schema":{"description":"Only entries with timestamp >= this (unix seconds).","anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"Only entries with timestamp >= this (unix seconds).","type":"number"}]}},{"name":"toTimestamp","in":"query","required":false,"schema":{"description":"Only entries with timestamp <= this (unix seconds).","anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"Only entries with timestamp <= this (unix seconds).","type":"number"}]}}],"operationId":"getV4VolumeEntries"}},"/v4/volume/user":{"get":{"tags":["Volume"],"description":"Aggregated volume for a single user (recipient), filterable by program, clientId, chainId and a timestamp range (all optional, AND-combined). Returns the summed amountUSD and matching entry count.","parameters":[{"name":"recipient","in":"query","required":true,"schema":{"description":"The user's wallet address (case-insensitive).","type":"string"}},{"name":"program","in":"query","required":false,"schema":{"description":"Filter by the config's program.","type":"string"}},{"name":"clientId","in":"query","required":false,"schema":{"description":"Filter by the config's clientId.","type":"string"}},{"name":"chainId","in":"query","required":false,"schema":{"description":"Filter by the config's chainId.","anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"Filter by the config's chainId.","type":"number"}]}},{"name":"fromTimestamp","in":"query","required":false,"schema":{"description":"Only entries with timestamp >= this (unix seconds).","anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"Only entries with timestamp >= this (unix seconds).","type":"number"}]}},{"name":"toTimestamp","in":"query","required":false,"schema":{"description":"Only entries with timestamp <= this (unix seconds).","anyOf":[{"format":"numeric","default":0,"type":"string"},{"description":"Only entries with timestamp <= this (unix seconds).","type":"number"}]}}],"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"recipient":{"description":"The queried wallet address.","type":"string"},"volumeUSD":{"description":"Sum of amountUSD across matching entries.","type":"number"},"entryCount":{"description":"Number of matching entries.","type":"number"}},"required":["recipient","volumeUSD","entryCount"]}}}}},"operationId":"getV4VolumeUser"}},"/v4/volume/boost":{"post":{"tags":["Volume"],"description":"Compute a boost per address: an address with at least one VolumeEntry in a config matching the optional clientId and program filters gets a 1x boost (base 1e9). Addresses without a matching entry are omitted; the zero address is always included with \"0\".","parameters":[{"name":"clientId","in":"query","required":false,"schema":{"description":"Filter by the config's clientId.","type":"string"}},{"name":"program","in":"query","required":false,"schema":{"description":"Filter by the config's program.","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"addresses":{"maxItems":500,"description":"Wallet addresses to look up (case-insensitive). Up to 500 per request.","type":"array","items":{"type":"string"}}},"required":["addresses"]}},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"addresses":{"maxItems":500,"description":"Wallet addresses to look up (case-insensitive). Up to 500 per request.","type":"array","items":{"type":"string"}}},"required":["addresses"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"addresses":{"maxItems":500,"description":"Wallet addresses to look up (case-insensitive). Up to 500 per request.","type":"array","items":{"type":"string"}}},"required":["addresses"]}}},"required":true},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"address":{"description":"The queried wallet address.","type":"string"},"boost":{"description":"Summed entry amount for the address, as a decimal string. \"0\" when none match.","type":"string"}},"required":["address","boost"]}}}}}},"operationId":"postV4VolumeBoost"}},"/v4/volume/facets":{"get":{"tags":["Volume"],"description":"List the available programs and client ids to filter volume entries by.","responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","properties":{"programs":{"type":"array","items":{"type":"string"}},"clientIds":{"type":"array","items":{"type":"string"}}},"required":["programs","clientIds"]}}}}},"operationId":"getV4VolumeFacets"}},"/graphql/v1":{"get":{"tags":["GraphQL"],"description":"GraphQL endpoint. POST a query to execute it, or open the URL in a browser to load GraphiQL for interactive exploration of the schema.","operationId":"allGraphqlV1"},"post":{"tags":["GraphQL"],"description":"GraphQL endpoint. POST a query to execute it, or open the URL in a browser to load GraphiQL for interactive exploration of the schema.","operationId":"allGraphqlV1"},"put":{"tags":["GraphQL"],"description":"GraphQL endpoint. POST a query to execute it, or open the URL in a browser to load GraphiQL for interactive exploration of the schema.","operationId":"allGraphqlV1"},"delete":{"tags":["GraphQL"],"description":"GraphQL endpoint. POST a query to execute it, or open the URL in a browser to load GraphiQL for interactive exploration of the schema.","operationId":"allGraphqlV1"},"patch":{"tags":["GraphQL"],"description":"GraphQL endpoint. POST a query to execute it, or open the URL in a browser to load GraphiQL for interactive exploration of the schema.","operationId":"allGraphqlV1"},"head":{"tags":["GraphQL"],"description":"GraphQL endpoint. POST a query to execute it, or open the URL in a browser to load GraphiQL for interactive exploration of the schema.","operationId":"allGraphqlV1"},"options":{"tags":["GraphQL"],"description":"GraphQL endpoint. POST a query to execute it, or open the URL in a browser to load GraphiQL for interactive exploration of the schema.","operationId":"allGraphqlV1"},"trace":{"tags":["GraphQL"],"description":"GraphQL endpoint. POST a query to execute it, or open the URL in a browser to load GraphiQL for interactive exploration of the schema.","operationId":"allGraphqlV1"}}}}