{"openapi":"3.1.0","info":{"title":"Verana Indexer API","description":"REST API for the Verana indexer: ecosystems (EC), credential schemas (CS), participants, trust deposits (TD), metrics, and indexer meta.","version":"1.2.1"},"servers":[{"url":"https://idx.devnet.verana.network","description":"Current host"}],"paths":{"/v4/trqp/v2/authorization":{"post":{"tags":["TRQP"],"summary":"TRQP Authorize (IDX-TRQP-QRY-1)","description":"Trust Registry Query Protocol v2 authorization predicate (ecosystem -> corporation). Answers whether entity_id (a corporation DID) is authorized by authority_id (an ecosystem DID) for action on resource (a VPR schema URI) at a given time. Derived from ACTIVE Participant entries. Request/response use the upstream ToIP TSWG TRQP schemas verbatim; the response additionally carries an optional top-level `verana` breadcrumb object as described by the Verana TRQP profile descriptor (GET /v4/trqp/v2/profile).","operationId":"trqpAuthorize","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["authority_id","entity_id","action","resource"],"properties":{"authority_id":{"type":"string","pattern":"^did:","description":"Ecosystem DID (the authority)."},"entity_id":{"type":"string","pattern":"^did:","description":"Corporation DID (the entity being asked about)."},"action":{"type":"string","enum":["issue","verify","grant_issue","grant_verify","govern"],"description":"Maps to Participant.role via the Verana TRQP profile action_role_map."},"resource":{"type":"string","pattern":"^vpr:verana:[a-z0-9-]+:cs:[0-9]+$","description":"VPR schema URI, e.g. vpr:verana:vna-mainnet-1:cs:42."},"context":{"type":"object","description":"Optional TRQP context. `session_id` (Verana profile extension) takes precedence over `time`.","properties":{"time":{"type":"string","format":"date-time","description":"Evaluation time (RFC 3339). Defaults to now."},"session_id":{"type":"string","description":"Binds the answer to a Verana participant session; denied with `session not found` when it does not exist or does not match the entity's corporation."}}}}}}}},"responses":{"200":{"description":"Authorization decision (upstream TRQP authorization response plus the optional Verana breadcrumb).","content":{"application/json":{"schema":{"type":"object","properties":{"authority_id":{"type":"string"},"entity_id":{"type":"string"},"action":{"type":"string"},"resource":{"type":"string"},"authorized":{"type":"boolean"},"time_requested":{"type":"string","format":"date-time"},"time_evaluated":{"type":"string","format":"date-time"},"message":{"type":"string","description":"Present only on session-scoped denials (e.g. `session not found`)."},"verana":{"type":"object","description":"Verana-specific breadcrumb for the grounding Participant row. Omitted when no Participant matched.","properties":{"participant_state":{"type":"string","enum":["ACTIVE","FUTURE","INACTIVE","EXPIRED","REVOKED","SLASHED","REPAID"]},"since":{"type":"string","format":"date-time"},"deposit":{"type":"string","description":"Cosmos amount-denom pair, e.g. 10000000uvna."}}}}}}}},"400":{"description":"Malformed request (invalid action, resource grammar, or context.time)."}}}},"/v4/trqp/v2/recognition":{"post":{"tags":["TRQP"],"summary":"TRQP Recognize (IDX-TRQP-QRY-2)","description":"Trust Registry Query Protocol v2 recognition predicate (corporation -> ecosystem). Answers whether authority_id (a corporation DID) recognizes entity_id (an ecosystem DID) as authoritative for resource (a VPR schema URI) at a given time. Action-invariant in v4: the answer is true iff authority_id is the controlling Corporation of entity_id AND resource is a Credential Schema governed by that ecosystem. Request/response use the upstream ToIP TSWG TRQP schemas verbatim; the response additionally carries an optional top-level `verana` breadcrumb object as described by the Verana TRQP profile descriptor (GET /v4/trqp/v2/profile).","operationId":"trqpRecognize","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["authority_id","entity_id","action","resource"],"properties":{"authority_id":{"type":"string","pattern":"^did:","description":"Corporation DID (the authority doing the recognizing)."},"entity_id":{"type":"string","pattern":"^did:","description":"Ecosystem DID (the entity being recognized)."},"action":{"type":"string","enum":["issue","verify","grant_issue","grant_verify","govern"],"description":"Preserved on the wire for TRQP conformance; the v4 answer is action-invariant."},"resource":{"type":"string","pattern":"^vpr:verana:[a-z0-9-]+:cs:[0-9]+$","description":"VPR schema URI, e.g. vpr:verana:vna-mainnet-1:cs:42."},"context":{"type":"object","description":"Optional TRQP context. `session_id` (Verana profile extension) takes precedence over `time`.","properties":{"time":{"type":"string","format":"date-time","description":"Evaluation time (RFC 3339). Defaults to now."},"session_id":{"type":"string","description":"Binds the answer to a Verana participant session; denied with `session not found` when it does not exist or does not match the authority's corporation."}}}}}}}},"responses":{"200":{"description":"Recognition decision (upstream TRQP recognition response plus the optional Verana breadcrumb).","content":{"application/json":{"schema":{"type":"object","properties":{"authority_id":{"type":"string"},"entity_id":{"type":"string"},"action":{"type":"string"},"resource":{"type":"string"},"recognized":{"type":"boolean"},"time_requested":{"type":"string","format":"date-time"},"time_evaluated":{"type":"string","format":"date-time"},"message":{"type":"string","description":"Present on out-of-scope denials (`out of v4 recognition scope (corporation → ecosystem only)`) or session-scoped denials (`session not found`)."},"verana":{"type":"object","description":"Verana-specific breadcrumb for the controlling relationship. Present when authority_id controls entity_id; omitted otherwise.","properties":{"ecosystem_active_egf_version":{"type":"integer","minimum":0},"controlling_since":{"type":"string","format":"date-time"}}}}}}}},"400":{"description":"Malformed request (invalid action, resource grammar, or context.time)."}}}},"/v4/trqp/v2/profile":{"get":{"tags":["TRQP"],"summary":"TRQP Profile descriptor","description":"Serves the Verana TRQP profile descriptor byte-identical to schemas/v4/trqp/profile.json, with Content-Type application/json. Discovery entry for the TRQP endpoints.","operationId":"trqpProfile","responses":{"200":{"description":"The Verana TRQP profile descriptor.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v4/corporation/get/{id}":{"get":{"tags":["Corporation"],"summary":"Get Corporation (v4)","description":"Retrieve a Corporation by id with indexer-computed aggregates (controlled_ecosystems, participant role counts, trust-deposit snapshot) and CGF versions. Aligned with VPR MOD-CO-QRY-1. When the At-Block-Height header is supplied, the whole Corporation is reconstructed as of that block (404 if it did not exist yet).","operationId":"getCorporationV4","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"uint64 Corporation id"},{"name":"gf_data","in":"query","required":false,"schema":{"type":"string","enum":["none","only_active","all"],"default":"only_active"},"description":"Controls inclusion of CGF versions"},{"name":"preferred_language","in":"query","required":false,"schema":{"type":"string"},"description":"ISO 639 language; orders returned CGF documents"},{"name":"trust_data","in":"query","required":false,"schema":{"type":"string","enum":["null","summary","full"]},"description":"Inline verifiable-trust data for the Corporation DID"},{"$ref":"#/components/parameters/At-Block-Height"}],"responses":{"200":{"description":"The Corporation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CorporationV4Response"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"description":"Corporation not found (or did not exist at the requested height)"}}}},"/v4/corporation/list":{"get":{"tags":["Corporation"],"summary":"List Corporations (v4)","description":"Paginated, filtered list of Corporations; each entry has the same shape as Get Corporation (IDX-CO-QRY-1). Aligned with VPR MOD-CO-QRY-2. When At-Block-Height is supplied, corporations not yet created at that block are excluded.","operationId":"listCorporationsV4","parameters":[{"name":"gf_data","in":"query","required":false,"schema":{"type":"string","enum":["none","only_active","all"],"default":"only_active"},"description":"Controls inclusion of CGF versions"},{"name":"preferred_language","in":"query","required":false,"schema":{"type":"string"},"description":"ISO 639 language; orders returned CGF documents"},{"name":"did","in":"query","required":false,"schema":{"type":"string"},"description":"Filter by Corporation DID (exact match)"},{"name":"policy_address","in":"query","required":false,"schema":{"type":"string"},"description":"Comma-separated policy_address accounts (min 1, max 64 entries). Returns only Corporations whose policy_address is in the list; an empty value or more than 64 entries is rejected with HTTP 400"},{"name":"modified_after","in":"query","required":false,"schema":{"type":"string","format":"date-time"},"description":"Only Corporations modified strictly after this ISO 8601 datetime"},{"name":"trust_data","in":"query","required":false,"schema":{"type":"string","enum":["none","summary","full"]},"description":"Inline verifiable-trust data per Corporation DID"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1024,"default":64},"description":"Page size, 1..1024 (default 64), per the v4 Pagination spec"},{"name":"min_id","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Cursor: id lower bound (inclusive)"},{"name":"max_id","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Cursor: id upper bound (exclusive)"},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["id","+id","-id"],"default":"-id"},"description":"Sort by id ascending or descending"},{"$ref":"#/components/parameters/At-Block-Height"}],"responses":{"200":{"description":"The Corporations","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CorporationV4ListResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"}}}},"/v4/corporation/history/{id}":{"get":{"tags":["Corporation"],"summary":"Get Corporation History (v4)","description":"Activity timeline for a Corporation (IDX-CO-QRY-4), ordered by ActivityItem.id descending (newest-first) by default. Each entry carries only the diff (changed fields). msg is one of CreateCorporation, UpdateCorporation, AddCGFDocument, IncreaseCGFActiveVersion.","operationId":"getCorporationHistory","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"},"description":"The Corporation ID"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1024,"default":64},"description":"Page size, 1..1024 (default 64), per the v4 Pagination spec"},{"name":"min_id","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Cursor: ActivityItem.id lower bound (inclusive)"},{"name":"max_id","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Cursor: ActivityItem.id upper bound (exclusive)"},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["id","+id","-id"],"default":"-id"},"description":"Sort by ActivityItem.id ascending or descending"},{"$ref":"#/components/parameters/At-Block-Height"}],"responses":{"200":{"description":"The Corporation activity timeline","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityTimelineResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"description":"Corporation not found"},"500":{"$ref":"#/components/responses/ServerError"}}}},"/v4/indexer/block-height":{"get":{"tags":["Indexer"],"summary":"Get indexed block height","description":"Return the latest block height that has been fully processed by the indexer.","operationId":"getBlockHeight","responses":{"200":{"description":"Current indexed block height","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"Response type identifier","example":"block-indexed"},"height":{"type":"integer","minimum":0,"description":"The latest block height that has been fully processed by the indexer"},"timestamp":{"type":"string","format":"date-time","description":"The timestamp when the checkpoint was last updated (ISO 8601 format without milliseconds)"}},"required":["type","height","timestamp"]},"example":{"type":"block-indexed","height":1794800,"timestamp":"2025-12-17T04:42:55Z"}}}},"500":{"$ref":"#/components/responses/ServerError"}}}},"/v4/indexer/events":{"get":{"tags":["Indexer"],"summary":"List indexer transaction events","description":"Replay persisted ecosystem, credential schema, and participant indexer events after a block height. Use the did query parameter to return only events related to a DID.","operationId":"listIndexerEvents","parameters":[{"name":"dids","in":"query","required":false,"schema":{"type":"string"},"description":"Comma-separated DIDs. When present, restricts the response to events matching the DID branch of the membership filter — resources whose primary DID is in the list (Corporation.did, Ecosystem.did, or Participant.did, with sub-entities surfaced under their parent's DID), plus Participants whose validator's DID is in the list (one hop via validator_participant_id)."},{"name":"corporation_id","in":"query","required":false,"schema":{"type":"integer","format":"uint64","minimum":1},"description":"When present, restricts the response to events matching the Corporation branch of the membership filter — the Corporation itself, every Ecosystem and Participant with corporation_id equal to this value, all sub-entities transitively embedded in any of those, plus Participants whose validator's corporation_id equals this value (one hop via validator_participant_id)."},{"name":"after_block_height","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0},"description":"Return events with block_height greater than this value."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500,"default":100},"description":"Maximum number of events to return."}],"responses":{"200":{"description":"Indexer transaction events","content":{"application/json":{"schema":{"type":"object","properties":{"events":{"type":"array","items":{"$ref":"#/components/schemas/IndexerTransactionEvent"}},"count":{"type":"integer"},"after_block_height":{"type":"integer"}},"required":["events","count","after_block_height"]},"example":{"events":[{"type":"indexer-event","event_type":"StartParticipantOP","did":"did:web:agent.example","block_height":1794801,"tx_hash":"A1B2C3","timestamp":"2025-12-17T04:43:12Z","payload":{"module":"participant","action":"StartParticipantOP","message_type":"/verana.pp.v1.MsgStartParticipantOP","tx_index":0,"message_index":0,"sender":"did:web:agent.example","related_dids":["did:web:agent.example"],"entity_type":"Participant","entity_id":"42"}}],"count":1,"after_block_height":1794800}}}},"400":{"$ref":"#/components/responses/BadRequest"},"500":{"$ref":"#/components/responses/ServerError"}}}},"/v4/indexer/snapshot":{"get":{"tags":["Indexer"],"summary":"Get DID-linked current indexed snapshot","description":"Returns the indexed snapshot for DID-linked objects at the block selected by the At-Block-Height header (or the latest indexed block when omitted). Only applies to current tables that expose a height column; does not query history tables.","operationId":"getIndexerSnapshot","parameters":[{"name":"did","in":"query","required":true,"schema":{"type":"string","pattern":"^did:[a-z0-9]+:.+"},"description":"DID to fetch the snapshot for."},{"$ref":"#/components/parameters/At-Block-Height"}],"responses":{"200":{"description":"Snapshot response","content":{"application/json":{"schema":{"type":"object","properties":{"did":{"type":"string","example":"did:example"},"block_height":{"type":"integer","minimum":0,"example":123},"ecosystems":{"type":"array","items":{"type":"object"}},"schemas":{"type":"array","items":{"type":"object"},"description":"Credential schemas linked to the DID."},"participants":{"type":"array","items":{"type":"object"}},"count":{"type":"object","properties":{"ecosystems":{"type":"integer","minimum":0},"schemas":{"type":"integer","minimum":0},"participants":{"type":"integer","minimum":0}},"required":["ecosystems","schemas","participants"]}},"required":["did","block_height","ecosystems","schemas","participants","count"]},"example":{"did":"did:example","block_height":123,"ecosystems":[],"schemas":[],"participants":[],"count":{"ecosystems":0,"schemas":0,"participants":0}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"500":{"$ref":"#/components/responses/ServerError"}}}},"/v4/indexer/version":{"get":{"tags":["Indexer"],"summary":"Get indexer version and environment info","description":"Return the indexer version and network environment configuration details.","operationId":"getVersion","responses":{"200":{"description":"Indexer version and environment information","content":{"application/json":{"schema":{"type":"object","properties":{"app_version":{"type":"string","example":"v1.0.0-dev.31"},"environment":{"type":"object","properties":{"network":{"type":"object","properties":{"chain_id":{"type":"string","example":"vna-mainnet-1"},"rpc_endpoint":{"type":"string","example":"https://rpc.example.org"},"lcd_endpoint":{"type":"string","example":"https://api.example.org"},"cosmos_sdk_version":{"type":"string","example":"0.46.0"},"node_version":{"type":"string","example":"v0.1.0"},"app_name":{"type":"string","example":"verana-indexer"}}}}}}},"example":{"app_version":"v1.0.0-dev.31","environment":{"network":{"chain_id":"vna-mainnet-1","rpc_endpoint":"https://rpc.example.org","lcd_endpoint":"https://api.example.org","cosmos_sdk_version":"0.46.0","node_version":"v0.1.0","app_name":"verana-indexer"}}}}}},"500":{"$ref":"#/components/responses/ServerError"}}}},"/v4/indexer/status":{"get":{"tags":["Indexer"],"summary":"Get indexer operational status","description":"Return the current operational status of the indexer, including whether it is running, whether crawling is active, and any error information if crawling or the indexer has stopped. This endpoint is useful for monitoring and debugging indexer issues.","operationId":"getIndexerStatus","responses":{"200":{"description":"Indexer status information","content":{"application/json":{"schema":{"type":"object","properties":{"is_running":{"type":"boolean","description":"Whether the indexer service is running. If false, all APIs will return 503.","example":true},"is_crawling":{"type":"boolean","description":"Whether the indexer is actively crawling new blocks and transactions. If false, APIs remain available but no new data is being indexed.","example":false},"stopped_at":{"type":"string","format":"date-time","description":"ISO 8601 timestamp when the indexer or crawling stopped (if applicable)","example":"2024-01-15T10:30:00Z"},"stopped_reason":{"type":"string","description":"Human-readable reason why crawling or the indexer stopped (if applicable)","example":"Crawling stopped due to: Unknown Verana message types: /verana.pp.v1.MsgCreateRootParticipant. Indexer APIs remain available."},"last_error":{"type":"object","description":"Details about the last error that caused crawling or indexer to stop (if applicable)","properties":{"message":{"type":"string","description":"Error message","example":"Unknown Verana message types: /verana.pp.v1.MsgCreateRootParticipant"},"stack":{"type":"string","description":"Error stack trace (if available)","example":"Error: Unknown Verana message types...\n    at ..."},"timestamp":{"type":"string","format":"date-time","description":"When the error occurred","example":"2024-01-15T10:30:00Z"},"service":{"type":"string","description":"Service name where the error occurred","example":"crawl-tx"}}}},"required":["is_running","is_crawling"]},"example":{"is_running":true,"is_crawling":false,"stopped_at":"2024-01-15T10:30:00Z","stopped_reason":"Crawling stopped due to: Unknown Verana message types: /verana.pp.v1.MsgCreateRootParticipant. Indexer APIs remain available.","last_error":{"message":"Unknown Verana message types: /verana.pp.v1.MsgCreateRootParticipant","timestamp":"2024-01-15T10:30:00Z","service":"crawl-tx"}}}},"headers":{"X-Crawling-Status":{"description":"Current crawling status: 'active' or 'stopped'","schema":{"type":"string","enum":["active","stopped"],"example":"stopped"}},"X-Indexer-Status":{"description":"Current indexer status: 'running' or 'stopped'","schema":{"type":"string","enum":["running","stopped"],"example":"running"}},"X-Crawling-Reason":{"description":"Reason why crawling stopped (only present when crawling is stopped)","schema":{"type":"string","example":"Crawling stopped due to: Unknown Verana message types..."}},"X-Crawling-Error":{"description":"Error message that caused crawling to stop (only present when crawling is stopped)","schema":{"type":"string","example":"Unknown Verana message types: /verana.pp.v1.MsgCreateRootParticipant"}},"X-Crawling-Stopped-At":{"description":"ISO 8601 timestamp when crawling stopped (only present when crawling is stopped)","schema":{"type":"string","format":"date-time","example":"2024-01-15T10:30:00Z"}}}},"500":{"$ref":"#/components/responses/ServerError"}}}},"/v4/indexer/changes":{"get":{"400":{"$ref":"#/components/responses/BadRequest"},"500":{"$ref":"#/components/responses/ServerError"},"tags":["Indexer"],"summary":"List entity changes at a block height","description":"Return all indexed entity changes committed at the block selected by the At-Block-Height header (or the latest indexed block when omitted).","operationId":"listChanges","parameters":[{"$ref":"#/components/parameters/At-Block-Height"}],"responses":{"200":{"description":"Entity changes recorded at the requested block height","content":{"application/json":{"schema":{"type":"object","properties":{"block_height":{"type":"integer","minimum":0},"next_change_at":{"type":"integer","minimum":0,"nullable":true,"description":"The next block height greater than the requested block_height that has any indexed change events. Null when there is no later change."},"activity":{"type":"array","description":"List of activity items at this block height (same format as history endpoints)","items":{"$ref":"#/components/schemas/ActivityItem"}}}},"example":{"block_height":63120,"next_change_at":63121,"activity":[{"timestamp":"2025-10-06T08:46:20.686Z","block_height":63120,"entity_type":"Ecosystem","entity_id":"42","msg":"CreateEcosystem","changes":{"ecosystem_id":42,"corporation":"verana1evvrzxw9yg5staqdvumd6fupy3jhaxfflla7st","event_type":"/verana.ec.v1.MsgCreateEcosystem"},"account":"verana1evvrzxw9yg5staqdvumd6fupy3jhaxfflla7st"}]}}}}}}},"/v4/ecosystem/get/{id}":{"get":{"tags":["Ecosystem"],"summary":"Get Ecosystem","description":"Retrieve a specific Ecosystem by its ID","operationId":"getEcosystem","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"},"description":"The Ecosystem ID to retrieve"},{"name":"gf_data","in":"query","required":false,"schema":{"type":"string","enum":["none","only_active","all"],"default":"only_active"},"description":"Controls inclusion of EGF versions"},{"name":"preferred_language","in":"query","required":false,"schema":{"type":"string"},"description":"Preferred language for document content"},{"name":"trust_data","in":"query","required":false,"schema":{"type":"string","enum":["null","summary","full"]},"description":"Trust data enrichment mode for DID-bearing objects: null (default), summary, or full."},{"$ref":"#/components/parameters/At-Block-Height"}],"responses":{"200":{"description":"Successful response with Ecosystem details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EcosystemResponse"}}}},"404":{"description":"Ecosystem not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"Ecosystem not found: 1","code":404}}}},"500":{"$ref":"#/components/responses/ServerError"}}}},"/v4/ecosystem/list":{"get":{"tags":["Ecosystem"],"summary":"List Ecosystems","description":"Retrieve a paginated list of Ecosystems with optional filtering","operationId":"listEcosystem","parameters":[{"name":"gf_data","in":"query","required":false,"schema":{"type":"string","enum":["none","only_active","all"],"default":"only_active"},"description":"Controls inclusion of EGF versions"},{"name":"preferred_language","in":"query","required":false,"schema":{"type":"string"},"description":"Preferred language for document content"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1024,"default":64},"description":"Page size, 1..1024 (default 64), per the v4 Pagination spec"},{"name":"min_id","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Cursor: id lower bound (inclusive)"},{"name":"max_id","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Cursor: id upper bound (exclusive)"},{"name":"modified_after","in":"query","required":false,"schema":{"type":"string","format":"date-time"},"description":"Filter by modification date"},{"name":"archived","in":"query","required":false,"schema":{"type":"boolean"},"description":"true returns only archived Ecosystems; false returns only not-archived Ecosystems; omitted returns both. Default: null."},{"name":"corporation_id","in":"query","required":false,"schema":{"type":"integer","format":"int64","minimum":1},"description":"Filter by controlling-Corporation id (uint64)"},{"name":"min_active_schemas","in":"query","required":false,"schema":{"type":"integer","minimum":0},"description":"Minimum number of active schemas (inclusive)"},{"name":"max_active_schemas","in":"query","required":false,"schema":{"type":"integer","minimum":0},"description":"Maximum number of active schemas (exclusive)."},{"name":"participant_corporation_id","in":"query","required":false,"schema":{"type":"integer","minimum":1},"description":"Id of a Corporation. Returns Ecosystems where this Corporation is the controlling Corporation (Ecosystem.corporation_id) or owns an active Participant entry on any Credential Schema of the Ecosystem."},{"name":"min_participants","in":"query","required":false,"schema":{"type":"integer","minimum":0},"description":"Minimum number of participants (inclusive)"},{"name":"max_participants","in":"query","required":false,"schema":{"type":"integer","minimum":0},"description":"Maximum number of participants (exclusive)."},{"name":"min_participants_ecosystem","in":"query","required":false,"schema":{"type":"integer","minimum":0},"description":"Minimum of min_participants ecosystem (inclusive)"},{"name":"max_participants_ecosystem","in":"query","required":false,"schema":{"type":"integer","minimum":0},"description":"Maximum of max_participants ecosystem (exclusive)."},{"name":"min_participants_issuer_grantor","in":"query","required":false,"schema":{"type":"integer","minimum":0},"description":"Minimum of min_participants issuer_grantor (inclusive)"},{"name":"max_participants_issuer_grantor","in":"query","required":false,"schema":{"type":"integer","minimum":0},"description":"Maximum of max_participants issuer_grantor (exclusive)."},{"name":"min_participants_issuer","in":"query","required":false,"schema":{"type":"integer","minimum":0},"description":"Minimum of min_participants issuer (inclusive)"},{"name":"max_participants_issuer","in":"query","required":false,"schema":{"type":"integer","minimum":0},"description":"Maximum of max_participants issuer (exclusive)."},{"name":"min_participants_verifier_grantor","in":"query","required":false,"schema":{"type":"integer","minimum":0},"description":"Minimum of min_participants verifier_grantor (inclusive)"},{"name":"max_participants_verifier_grantor","in":"query","required":false,"schema":{"type":"integer","minimum":0},"description":"Maximum of max_participants verifier_grantor (exclusive)."},{"name":"min_participants_verifier","in":"query","required":false,"schema":{"type":"integer","minimum":0},"description":"Minimum of min_participants verifier (inclusive)"},{"name":"max_participants_verifier","in":"query","required":false,"schema":{"type":"integer","minimum":0},"description":"Maximum of max_participants verifier (exclusive)."},{"name":"min_participants_holder","in":"query","required":false,"schema":{"type":"integer","minimum":0},"description":"Minimum of min_participants holder (inclusive)"},{"name":"max_participants_holder","in":"query","required":false,"schema":{"type":"integer","minimum":0},"description":"Maximum of max_participants holder (exclusive)."},{"name":"min_weight","in":"query","required":false,"schema":{"type":"integer","format":"int64"},"description":"Minimum weight (inclusive)"},{"name":"max_weight","in":"query","required":false,"schema":{"type":"integer","format":"int64"},"description":"Maximum weight (exclusive). "},{"name":"min_issued","in":"query","required":false,"schema":{"type":"integer","format":"int64"},"description":"Minimum number of issued credentials (inclusive)"},{"name":"max_issued","in":"query","required":false,"schema":{"type":"integer","format":"int64"},"description":"Maximum number of issued credentials (exclusive)."},{"name":"min_verified","in":"query","required":false,"schema":{"type":"integer","format":"int64"},"description":"Minimum number of verified credentials (inclusive)"},{"name":"max_verified","in":"query","required":false,"schema":{"type":"integer","format":"int64"},"description":"Maximum number of verified credentials (exclusive)."},{"name":"min_ecosystem_slash_events","in":"query","required":false,"schema":{"type":"integer","minimum":0},"description":"Minimum accepted number of ecosystem slash events (inclusive)"},{"name":"max_ecosystem_slash_events","in":"query","required":false,"schema":{"type":"integer","minimum":0},"description":"Maximum accepted number of ecosystem slash events (exclusive). "},{"name":"min_network_slash_events","in":"query","required":false,"schema":{"type":"integer","minimum":0},"description":"Minimum accepted number of network slash events (inclusive)"},{"name":"max_network_slash_events","in":"query","required":false,"schema":{"type":"integer","minimum":0},"description":"Maximum accepted number of network slash events (exclusive). "},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["id","+id","-id"],"default":"-id"},"description":"Sort by id ascending or descending"},{"name":"trust_data","in":"query","required":false,"schema":{"type":"string","enum":["null","summary","full"]},"description":"Trust data enrichment mode for DID-bearing objects: null (default), summary, or full."},{"$ref":"#/components/parameters/At-Block-Height"}],"responses":{"200":{"description":"Successful response with list of Ecosystems","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EcosystemListResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"500":{"$ref":"#/components/responses/ServerError"}}}},"/v4/ecosystem/params":{"get":{"tags":["Ecosystem"],"summary":"Get Ecosystem parameters","description":"Retrieve current system parameters for Ecosystem","operationId":"getEcosystemParams","parameters":[{"$ref":"#/components/parameters/At-Block-Height"}],"responses":{"200":{"description":"Successful response with Ecosystem parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EcosystemParamsResponse"}}}},"500":{"$ref":"#/components/responses/ServerError"}}}},"/v4/ecosystem/history/{id}":{"get":{"tags":["Ecosystem"],"summary":"Get Ecosystem activity timeline","description":"Retrieve the activity timeline for a Ecosystem, showing all changes ordered by transaction timestamp descending. Returns only changed values in the changes field.","operationId":"getEcosystemHistory","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"},"description":"The Ecosystem ID to retrieve history for"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1024,"default":64},"description":"Page size, 1..1024 (default 64), per the v4 Pagination spec"},{"name":"min_id","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Cursor: ActivityItem.id lower bound (inclusive)"},{"name":"max_id","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Cursor: ActivityItem.id upper bound (exclusive)"},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["id","+id","-id"],"default":"-id"},"description":"Sort by ActivityItem.id ascending or descending"},{"$ref":"#/components/parameters/At-Block-Height"}],"responses":{"200":{"description":"Successful response with Ecosystem activity timeline","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityTimelineResponse"},"example":{"entity_type":"Ecosystem","entity_id":"1","activity":[{"id":23,"timestamp":"2025-10-08T07:51:50.513Z","block_height":96930,"entity_type":"Ecosystem","entity_id":"1","msg":"UpdateEcosystem","changes":{"modified":"2025-10-08T07:51:50.513Z"},"account":"verana1sxau0xyttphpck7vhlvt8s82ez70nlzw2mhya0"},{"id":22,"timestamp":"2025-10-02T17:20:55.107Z","block_height":343,"entity_type":"Ecosystem","entity_id":"1","msg":"CreateEcosystem","changes":{"did":"did:example:123456789abcdefghi","issued":0,"weight":0,"created":"2025-10-02T17:20:55.107Z","deposit":10000000,"language":"en","modified":"2025-10-02T17:20:55.107Z","verified":0,"controller":"verana1sxau0xyttphpck7vhlvt8s82ez70nlzw2mhya0","participants":0,"active_schemas":0,"active_version":1,"archived_schemas":0,"network_slash_events":0,"ecosystem_slash_events":0,"network_slashed_amount":0,"ecosystem_slashed_amount":0,"network_slashed_amount_repaid":0,"ecosystem_slashed_amount_repaid":0,"versions":[{"id":1,"ecosystem_id":1,"created":"2025-10-02T17:20:55.107Z","version":1,"active_since":"2025-10-02T17:20:55.107Z","documents":[{"id":1,"gfv_id":1,"created":"2025-10-02T17:20:55.107Z","language":"en","url":"https://example.com/doc001-01","digest_sri":"sha384-MzNNbQTWCSUSi0bbz7dbua+RcENv7C6FvlmYJ1Y+I727HsPOHdzwELMYO9Mz68001"}]}]},"account":"verana1sxau0xyttphpck7vhlvt8s82ez70nlzw2mhya0"},{"timestamp":"2025-10-02T17:20:55.107Z","block_height":343,"entity_type":"GovernanceFrameworkVersion","entity_id":"1","msg":"CreateEcosystem","changes":{"ecosystem_id":1,"created":"2025-10-02T17:20:55.107Z","version":1,"active_since":"2025-10-02T17:20:55.107Z","versions":[{"id":1,"ecosystem_id":1,"created":"2025-10-02T17:20:55.107Z","version":1,"active_since":"2025-10-02T17:20:55.107Z","documents":[{"id":1,"gfv_id":1,"created":"2025-10-02T17:20:55.107Z","language":"en","url":"https://example.com/doc001-01","digest_sri":"sha384-MzNNbQTWCSUSi0bbz7dbua+RcENv7C6FvlmYJ1Y+I727HsPOHdzwELMYO9Mz68001"}]}]},"account":"verana1sxau0xyttphpck7vhlvt8s82ez70nlzw2mhya0"},{"timestamp":"2025-10-02T17:20:55.107Z","block_height":343,"entity_type":"GovernanceFrameworkDocument","entity_id":"1","msg":"CreateEcosystem","changes":{"url":"https://example.com/doc001-01","gfv_id":1,"created":"2025-10-02T17:20:55.107Z","language":"en","digest_sri":"sha384-MzNNbQTWCSUSi0bbz7dbua+RcENv7C6FvlmYJ1Y+I727HsPOHdzwELMYO9Mz68001","versions":[{"id":1,"ecosystem_id":1,"created":"2025-10-02T17:20:55.107Z","version":1,"active_since":"2025-10-02T17:20:55.107Z","documents":[{"id":1,"gfv_id":1,"created":"2025-10-02T17:20:55.107Z","language":"en","url":"https://example.com/doc001-01","digest_sri":"sha384-MzNNbQTWCSUSi0bbz7dbua+RcENv7C6FvlmYJ1Y+I727HsPOHdzwELMYO9Mz68001"}]}]},"account":"verana1sxau0xyttphpck7vhlvt8s82ez70nlzw2mhya0"}]}}}},"404":{"description":"Ecosystem history not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"Ecosystem history not found: 5","code":404}}}},"500":{"$ref":"#/components/responses/ServerError"}}}},"/v4/credential-schema/get/{id}":{"get":{"tags":["Credential Schema"],"summary":"Get Credential Schema","description":"Retrieve a specific Credential Schema by its ID","operationId":"getCredentialSchema","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"},"description":"The Credential Schema ID to retrieve"},{"$ref":"#/components/parameters/At-Block-Height"}],"responses":{"200":{"description":"Successful response with Credential Schema details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CredentialSchemaResponse"}}}},"404":{"description":"Credential Schema not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"Credential Schema not found: 3","code":404}}}},"500":{"$ref":"#/components/responses/ServerError"}}}},"/v4/credential-schema/js/{id}":{"get":{"tags":["Credential Schema"],"summary":"Get JSON Schema","description":"Retrieve the JSON Schema definition for a specific Credential Schema","operationId":"getJsonSchema","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"},"description":"The Credential Schema ID to retrieve JSON Schema for"},{"$ref":"#/components/parameters/At-Block-Height"}],"responses":{"200":{"description":"Successful response. Returns the JSON Schema definition as a JSON object.","content":{"application/json":{"schema":{"type":"object","description":"Credential schema JSON Schema definition (with $id overridden by indexer)."},"example":{"$id":"vpr:verana:vna-testnet-1:cs:16","$schema":"https://json-schema.org/draft/2020-12/schema","title":"ExampleCredential","description":"ExampleCredential using JsonSchema","type":"object","properties":{"credentialSubject":{"type":"object","properties":{"id":{"type":"string","format":"uri"},"firstName":{"type":"string","minLength":0,"maxLength":256},"lastName":{"type":"string","minLength":1,"maxLength":256},"expirationDate":{"type":"string","format":"date"},"countryOfResidence":{"type":"string","minLength":2,"maxLength":2}},"required":["id","lastName","birthDate","expirationDate","countryOfResidence"]}}}}}},"404":{"description":"JSON Schema not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"JSON Schema not found for Credential Schema: 3","code":404}}}},"500":{"$ref":"#/components/responses/ServerError"}}}},"/v4/credential-schema/list":{"get":{"tags":["Credential Schema"],"summary":"List Credential Schemas","description":"Retrieve a paginated list of Credential Schemas with optional filtering","operationId":"listCredentialSchemas","parameters":[{"name":"ecosystem_id","in":"query","required":false,"schema":{"type":"integer","format":"int64"},"description":"Filter by Ecosystem ID"},{"name":"modified_after","in":"query","required":false,"schema":{"type":"string","format":"date-time"},"description":"Filter by modification date"},{"name":"archived","in":"query","required":false,"schema":{"type":"boolean"},"description":"true returns only archived schemas; false returns only not-archived schemas; omitted returns both. Default: null."},{"name":"issuer_onboarding_mode","in":"query","required":false,"schema":{"type":"string","enum":["OPEN","GRANTOR_ONBOARDING_PROCESS","ECOSYSTEM_ONBOARDING_PROCESS"]},"description":"Filter by issuer onboarding mode."},{"name":"verifier_onboarding_mode","in":"query","required":false,"schema":{"type":"string","enum":["OPEN","GRANTOR_ONBOARDING_PROCESS","ECOSYSTEM_ONBOARDING_PROCESS"]},"description":"Filter by verifier onboarding mode."},{"name":"holder_onboarding_mode","in":"query","required":false,"schema":{"type":"string","enum":["ISSUER_ONBOARDING_PROCESS","PERMISSIONLESS"]},"description":"Filter by holder onboarding mode."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1024,"default":64},"description":"Page size, 1..1024 (default 64), per the v4 Pagination spec"},{"name":"min_id","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Cursor: id lower bound (inclusive)"},{"name":"max_id","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Cursor: id upper bound (exclusive)"},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["id","+id","-id"],"default":"-id"},"description":"Sort by id ascending or descending"},{"name":"participant_corporation_id","in":"query","required":false,"schema":{"type":"integer","minimum":1},"description":"Id of a Corporation. Returns schemas where this Corporation controls the owning Ecosystem (Ecosystem.corporation_id) or owns an active Participant entry on the schema."},{"name":"min_participants","in":"query","required":false,"schema":{"type":"integer","minimum":0},"description":"Minimum of participants (inclusive)"},{"name":"max_participants","in":"query","required":false,"schema":{"type":"integer","minimum":0},"description":"Maximum of participants (exclusive)."},{"name":"min_participants_ecosystem","in":"query","required":false,"schema":{"type":"integer","minimum":0},"description":"Minimum of min_participants ecosystem (inclusive)"},{"name":"max_participants_ecosystem","in":"query","required":false,"schema":{"type":"integer","minimum":0},"description":"Maximum of max_participants ecosystem (exclusive)."},{"name":"min_participants_issuer_grantor","in":"query","required":false,"schema":{"type":"integer","minimum":0},"description":"Minimum of min_participants issuer_grantor (inclusive)"},{"name":"max_participants_issuer_grantor","in":"query","required":false,"schema":{"type":"integer","minimum":0},"description":"Maximum of max_participants issuer_grantor (exclusive)."},{"name":"min_participants_issuer","in":"query","required":false,"schema":{"type":"integer","minimum":0},"description":"Minimum of min_participants issuer (inclusive)"},{"name":"max_participants_issuer","in":"query","required":false,"schema":{"type":"integer","minimum":0},"description":"Maximum of max_participants issuer (exclusive)."},{"name":"min_participants_verifier_grantor","in":"query","required":false,"schema":{"type":"integer","minimum":0},"description":"Minimum of min_participants verifier_grantor (inclusive)"},{"name":"max_participants_verifier_grantor","in":"query","required":false,"schema":{"type":"integer","minimum":0},"description":"Maximum of max_participants verifier_grantor (exclusive)."},{"name":"min_participants_verifier","in":"query","required":false,"schema":{"type":"integer","minimum":0},"description":"Minimum of min_participants verifier (inclusive)"},{"name":"max_participants_verifier","in":"query","required":false,"schema":{"type":"integer","minimum":0},"description":"Maximum of max_participants verifier (exclusive)."},{"name":"min_participants_holder","in":"query","required":false,"schema":{"type":"integer","minimum":0},"description":"Minimum of min_participants holder (inclusive)"},{"name":"max_participants_holder","in":"query","required":false,"schema":{"type":"integer","minimum":0},"description":"Maximum of max_participants holder (exclusive)."},{"name":"min_weight","in":"query","required":false,"schema":{"type":"integer","format":"int64"},"description":"Minimum weight (inclusive)"},{"name":"max_weight","in":"query","required":false,"schema":{"type":"integer","format":"int64"},"description":"Maximum weight (exclusive). "},{"name":"min_issued","in":"query","required":false,"schema":{"type":"integer","format":"int64"},"description":"Minimum number of issued credentials (inclusive)"},{"name":"max_issued","in":"query","required":false,"schema":{"type":"integer","format":"int64"},"description":"Maximum number of issued credentials (exclusive)."},{"name":"min_verified","in":"query","required":false,"schema":{"type":"integer","format":"int64"},"description":"Minimum number of verified credentials (inclusive)"},{"name":"max_verified","in":"query","required":false,"schema":{"type":"integer","format":"int64"},"description":"Maximum number of verified credentials (exclusive)."},{"name":"min_ecosystem_slash_events","in":"query","required":false,"schema":{"type":"integer","minimum":0},"description":"Minimum accepted number of ecosystem slash events (inclusive)"},{"name":"max_ecosystem_slash_events","in":"query","required":false,"schema":{"type":"integer","minimum":0},"description":"Maximum accepted number of ecosystem slash events (exclusive). "},{"name":"min_network_slash_events","in":"query","required":false,"schema":{"type":"integer","minimum":0},"description":"Minimum accepted number of network slash events (inclusive)"},{"name":"max_network_slash_events","in":"query","required":false,"schema":{"type":"integer","minimum":0},"description":"Maximum accepted number of network slash events (exclusive). "},{"$ref":"#/components/parameters/At-Block-Height"}],"responses":{"200":{"description":"Successful response with list of Credential Schemas","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CredentialSchemaListResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"500":{"$ref":"#/components/responses/ServerError"}}}},"/v4/credential-schema/params":{"get":{"tags":["Credential Schema"],"summary":"Get Credential Schema parameters","description":"Retrieve current system parameters for Credential Schemas","operationId":"getCredentialSchemaParams","parameters":[{"$ref":"#/components/parameters/At-Block-Height"}],"responses":{"200":{"description":"Successful response with Credential Schema parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CredentialSchemaParamsResponse"}}}},"500":{"$ref":"#/components/responses/ServerError"}}}},"/v4/credential-schema/history/{id}":{"get":{"tags":["Credential Schema"],"summary":"Get Credential Schema activity timeline","description":"Retrieve the activity timeline for a Credential Schema, showing all changes ordered by transaction timestamp descending. Returns only changed values in the changes field.","operationId":"getCredentialSchemaHistory","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"},"description":"The Credential Schema ID to retrieve history for"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1024,"default":64},"description":"Page size, 1..1024 (default 64), per the v4 Pagination spec"},{"name":"min_id","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Cursor: ActivityItem.id lower bound (inclusive)"},{"name":"max_id","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Cursor: ActivityItem.id upper bound (exclusive)"},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["id","+id","-id"],"default":"-id"},"description":"Sort by ActivityItem.id ascending or descending"},{"$ref":"#/components/parameters/At-Block-Height"}],"responses":{"200":{"description":"Successful response with Credential Schema activity timeline","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityTimelineResponse"},"example":{"entity_type":"CredentialSchema","entity_id":"1","activity":[{"timestamp":"2025-10-08T07:52:40.647Z","block_height":96940,"entity_type":"CredentialSchema","entity_id":"1","msg":"UpdateCredentialSchema","changes":{"modified":"2025-10-08T07:52:40.647Z"},"account":"verana1sxau0xyttphpck7vhlvt8s82ez70nlzw2mhya0"},{"timestamp":"2025-10-02T17:23:55.515Z","block_height":379,"entity_type":"CredentialSchema","entity_id":"1","msg":"CreateCredentialSchema","changes":{"title":"ExampleCredential","ecosystem_id":1,"issued":0,"weight":0,"created":"2025-10-02T17:23:55.515Z","modified":"2025-10-02T17:23:55.515Z","verified":0,"description":"ExampleCredential using JsonSchema","json_schema":"{\"$id\":\"vpr:verana:vna-testnet-1:cs:1\",\"type\":\"object\",\"$defs\":{},\"title\":\"ExampleCredential\",\"$schema\":\"https://json-schema.org/draft/2020-12/schema\",\"required\":[\"name\"],\"properties\":{\"name\":{\"type\":\"string\"},\"email\":{\"type\":\"string\",\"format\":\"email\"}},\"description\":\"ExampleCredential using JsonSchema\",\"additionalProperties\":false}","participants":0,"network_slash_events":0,"ecosystem_slash_events":0,"network_slashed_amount":0,"ecosystem_slashed_amount":0,"issuer_onboarding_mode":"OPEN","network_slashed_amount_repaid":0,"verifier_onboarding_mode":"OPEN","ecosystem_slashed_amount_repaid":0,"holder_onboarding_mode":"PERMISSIONLESS","pricing_asset_type":"NATIVE","pricing_asset":"uvna","digest_algorithm":"sha256","holder_validation_validity_period":0,"issuer_validation_validity_period":0,"verifier_validation_validity_period":0,"issuer_grantor_validation_validity_period":0,"verifier_grantor_validation_validity_period":0},"account":"verana1sxau0xyttphpck7vhlvt8s82ez70nlzw2mhya0"}]}}}},"404":{"description":"Credential Schema history not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"Credential Schema history not found: 3","code":404}}}},"500":{"$ref":"#/components/responses/ServerError"}}}},"/v4/participant/get/{id}":{"get":{"tags":["Participant"],"summary":"Get Participant","description":"Retrieve a specific Participant by its ID","operationId":"getParticipant","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"},"description":"The Participant ID to retrieve"},{"name":"trust_data","in":"query","required":false,"schema":{"type":"string","enum":["null","summary","full"]},"description":"Trust data enrichment mode for DID-bearing objects: null (default), summary, or full."},{"$ref":"#/components/parameters/At-Block-Height"}],"responses":{"200":{"description":"Successful response with Participant details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParticipantResponse"}}}},"404":{"description":"Participant not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"Participant not found: 1","code":404}}}},"500":{"$ref":"#/components/responses/ServerError"}}}},"/v4/participant/participant-session/{id}":{"get":{"tags":["Participant"],"summary":"Get Participant Session","description":"Retrieve a specific Participant Session by its ID","operationId":"getParticipantSession","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"The Participant Session ID to retrieve"},{"$ref":"#/components/parameters/At-Block-Height"}],"responses":{"200":{"description":"Successful response with Participant Session details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParticipantSessionResponse"}}}},"404":{"description":"Participant Session not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"Participant Session not found: 123e4567-e89b-12d3-a456-426614174000","code":404}}}},"500":{"$ref":"#/components/responses/ServerError"}}}},"/v4/participant/params":{"get":{"tags":["Participant"],"summary":"Get Participant parameters","description":"Retrieve the network-level Participant module parameters as defined by VPR governance.","operationId":"getParticipantParams","parameters":[{"$ref":"#/components/parameters/At-Block-Height"}],"responses":{"200":{"description":"Successful response with Participant module parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParticipantParamsResponse"}}}},"500":{"$ref":"#/components/responses/ServerError"}}}},"/v4/participant/list":{"get":{"tags":["Participant"],"summary":"List Participants","description":"Retrieve a paginated list of Participants with extensive filtering options","operationId":"listParticipants","parameters":[{"name":"corporation_id","in":"query","required":false,"schema":{"type":"integer"},"description":"Filter by participant-owner Corporation id"},{"name":"did","in":"query","required":false,"schema":{"type":"string"},"description":"Filter by DID"},{"name":"participant_id","in":"query","required":false,"schema":{"type":"integer"},"description":"Filter by participant ID"},{"name":"role","in":"query","required":false,"schema":{"type":"string","enum":["ISSUER","VERIFIER","ISSUER_GRANTOR","VERIFIER_GRANTOR","ECOSYSTEM","HOLDER"]},"description":"Filter by participant role"},{"name":"only_valid","in":"query","required":false,"schema":{"type":"boolean"},"description":"Filter only valid participants"},{"name":"only_slashed","in":"query","required":false,"schema":{"type":"boolean"},"description":"Filter only slashed participants"},{"name":"only_repaid","in":"query","required":false,"schema":{"type":"boolean"},"description":"Filter only repaid participants"},{"name":"modified_after","in":"query","required":false,"schema":{"type":"string","format":"date-time"},"description":"Filter by modification date"},{"name":"trust_data","in":"query","required":false,"schema":{"type":"string","enum":["summary","full"]},"description":"Enrich each DID-bearing participant inline with the resolver's trust evaluation"},{"name":"op_state","in":"query","required":false,"schema":{"type":"string","enum":["PENDING","VALIDATED","TERMINATED"]},"description":"Filter by validation process state"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1024,"default":64},"description":"Page size, 1..1024 (default 64), per the v4 Pagination spec"},{"name":"min_id","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Cursor: id lower bound (inclusive)"},{"name":"max_id","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Cursor: id upper bound (exclusive)"},{"name":"when","in":"query","required":false,"schema":{"type":"string","format":"date-time"},"description":"Filter by effective date"},{"name":"schema_id","in":"query","required":false,"schema":{"type":"integer"},"description":"Filter by schema ID"},{"name":"ecosystem_id","in":"query","required":false,"schema":{"type":"integer"},"description":"Filter by the Ecosystem owning the participant's Credential Schema (the denormalised ecosystem_id response field)"},{"name":"validator_participant_id","in":"query","required":false,"schema":{"type":"integer"},"description":"Filter by validator participant ID"},{"name":"participant_state","in":"query","required":false,"schema":{"type":"string","enum":["REPAID","SLASHED","REVOKED","EXPIRED","ACTIVE","FUTURE","INACTIVE"]},"description":"Filter by participant state (calculated based on repaid, slashed, revoked, and effective dates)"},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["id","+id","-id"],"default":"-id"},"description":"Sort by id ascending or descending"},{"name":"min_participants","in":"query","required":false,"schema":{"type":"integer"},"description":"Minimum number of participants (inclusive)"},{"name":"max_participants","in":"query","required":false,"schema":{"type":"integer"},"description":"Maximum number of participants (exclusive)."},{"name":"min_participants_ecosystem","in":"query","required":false,"schema":{"type":"integer","minimum":0},"description":"Minimum of min_participants ecosystem (inclusive)"},{"name":"max_participants_ecosystem","in":"query","required":false,"schema":{"type":"integer","minimum":0},"description":"Maximum of max_participants ecosystem (exclusive)."},{"name":"min_participants_issuer_grantor","in":"query","required":false,"schema":{"type":"integer","minimum":0},"description":"Minimum of min_participants issuer_grantor (inclusive)"},{"name":"max_participants_issuer_grantor","in":"query","required":false,"schema":{"type":"integer","minimum":0},"description":"Maximum of max_participants issuer_grantor (exclusive)."},{"name":"min_participants_issuer","in":"query","required":false,"schema":{"type":"integer","minimum":0},"description":"Minimum of min_participants issuer (inclusive)"},{"name":"max_participants_issuer","in":"query","required":false,"schema":{"type":"integer","minimum":0},"description":"Maximum of max_participants issuer (exclusive)."},{"name":"min_participants_verifier_grantor","in":"query","required":false,"schema":{"type":"integer","minimum":0},"description":"Minimum of min_participants verifier_grantor (inclusive)"},{"name":"max_participants_verifier_grantor","in":"query","required":false,"schema":{"type":"integer","minimum":0},"description":"Maximum of max_participants verifier_grantor (exclusive)."},{"name":"min_participants_verifier","in":"query","required":false,"schema":{"type":"integer","minimum":0},"description":"Minimum of min_participants verifier (inclusive)"},{"name":"max_participants_verifier","in":"query","required":false,"schema":{"type":"integer","minimum":0},"description":"Maximum of max_participants verifier (exclusive)."},{"name":"min_participants_holder","in":"query","required":false,"schema":{"type":"integer","minimum":0},"description":"Minimum of min_participants holder (inclusive)"},{"name":"max_participants_holder","in":"query","required":false,"schema":{"type":"integer","minimum":0},"description":"Maximum of max_participants holder (exclusive)."},{"name":"min_weight","in":"query","required":false,"schema":{"type":"integer","format":"int64"},"description":"Minimum weight (inclusive)"},{"name":"max_weight","in":"query","required":false,"schema":{"type":"integer","format":"int64"},"description":"Maximum weight (exclusive). "},{"name":"min_issued","in":"query","required":false,"schema":{"type":"integer","format":"int64"},"description":"Minimum number of issued credentials (inclusive)"},{"name":"max_issued","in":"query","required":false,"schema":{"type":"integer","format":"int64"},"description":"Maximum number of issued credentials (exclusive)."},{"name":"min_verified","in":"query","required":false,"schema":{"type":"integer","format":"int64"},"description":"Minimum number of verified credentials (inclusive)"},{"name":"max_verified","in":"query","required":false,"schema":{"type":"integer","format":"int64"},"description":"Maximum number of verified credentials (exclusive)."},{"name":"min_ecosystem_slash_events","in":"query","required":false,"schema":{"type":"integer"},"description":"Minimum accepted number of ecosystem slash events (inclusive)"},{"name":"max_ecosystem_slash_events","in":"query","required":false,"schema":{"type":"integer"},"description":"Maximum accepted number of ecosystem slash events (exclusive). "},{"name":"min_network_slash_events","in":"query","required":false,"schema":{"type":"integer"},"description":"Minimum accepted number of network slash events (inclusive)"},{"name":"max_network_slash_events","in":"query","required":false,"schema":{"type":"integer"},"description":"Maximum accepted number of network slash events (exclusive). "},{"name":"trust_data","in":"query","required":false,"schema":{"type":"string","enum":["null","summary","full"]},"description":"Trust data enrichment mode for DID-bearing objects: null (default), summary, or full."},{"$ref":"#/components/parameters/At-Block-Height"}],"responses":{"200":{"description":"Successful response with list of Participants","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParticipantListResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"500":{"$ref":"#/components/responses/ServerError"}}}},"/v4/participant/pending/flat":{"get":{"tags":["Participant"],"summary":"Get pending tasks","description":"Return the open task list for a given Corporation — every Participant whose validator Participant entry is owned by that Corporation and whose state requires the validator's action — grouped by Ecosystem and Credential Schema. Supports At-Block-Height header for historical state.","operationId":"pendingFlat","parameters":[{"name":"corporation_id","in":"query","required":true,"schema":{"type":"integer","minimum":1},"description":"Id of the Corporation whose pending tasks are returned (the Corporation owning the validator Participant entries). Which of its operators may execute a pending action is resolved separately against the Corporation's authorization grants"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1024,"default":64},"description":"Maximum number of ecosystems to return"},{"name":"trust_data","in":"query","required":false,"schema":{"type":"string","enum":["null","summary","full"]},"description":"Trust data enrichment mode for DID-bearing objects: null (default), summary, or full."},{"$ref":"#/components/parameters/At-Block-Height"}],"responses":{"200":{"description":"Successful response with pending tasks grouped by ecosystem and credential schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PendingFlatResponse"},"example":{"ecosystems":[{"id":2,"did":"did:example:186af95a000ef890a583f47a0274a800","pending_tasks":3,"participants":3,"schemas":[{"id":2,"title":"ExampleCredential","description":"ExampleCredential using JsonSchema","pending_tasks":3,"participants":0,"pending_participants":[{"id":2,"schema_id":2,"role":"VERIFIER","did":null,"corporation_id":5,"created":"2025-10-03T12:30:43.431Z","modified":"2025-10-03T12:30:43.431Z","slashed":null,"repaid":null,"effective_from":null,"effective_until":null,"revoked":null,"validation_fees":0,"issuance_fees":0,"verification_fees":0,"deposit":1000000,"slashed_deposit":0,"repaid_deposit":0,"validator_participant_id":1,"op_state":"PENDING","op_last_state_change":"2025-10-03T12:30:43.431Z","op_current_fees":5000000,"op_current_deposit":1000000,"op_summary_digest":null,"op_exp":null,"op_validator_deposit":0,"participant_state":"INACTIVE","corporation_available_actions":["SetParticipantEffectiveUntil","RevokeParticipant"],"validator_available_actions":[],"weight":1000000,"issued":0,"verified":0,"participants":0,"ecosystem_slash_events":0,"ecosystem_slashed_amount":0,"ecosystem_slashed_amount_repaid":0,"network_slash_events":0,"network_slashed_amount":0,"network_slashed_amount_repaid":0,"expire_soon":null}]}]}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"500":{"$ref":"#/components/responses/ServerError"}}}},"/v4/metrics/all":{"get":{"tags":["Metrics"],"summary":"Get Global Current Metrics (deprecated)","description":"Deprecated: use GET /v4/stats/snapshot. Return global current metrics across all Ecosystems and Credential Schemas. Supports At-Block-Height header for historical state.","operationId":"getGlobalMetrics","deprecated":true,"parameters":[{"$ref":"#/components/parameters/At-Block-Height"}],"responses":{"200":{"description":"Global metrics","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GlobalMetricsResponse"},"example":{"participants":12345,"active_ecosystems":12,"archived_ecosystems":3,"active_schemas":256,"archived_schemas":42,"weight":1234567890000000000,"issued":987654,"verified":543210,"ecosystem_slash_events":5,"ecosystem_slashed_amount":100000000000000,"ecosystem_slashed_amount_repaid":50000000000000,"network_slash_events":1,"network_slashed_amount":250000000000000,"network_slashed_amount_repaid":100000000000000,"participants_ecosystem":0,"participants_issuer_grantor":0,"participants_issuer":0,"participants_verifier_grantor":0,"participants_verifier":0,"participants_holder":0}}}},"500":{"$ref":"#/components/responses/ServerError"}}}},"/v4/group/get/{corporation_id}":{"get":{"tags":["Group"],"summary":"Get Corporation Group (v4)","description":"The x/group state backing a Corporation: group, group policy, and the full member list (IDX-GR-QRY-1). Indexer-specific; mirrors Cosmos SDK x/group queries joined with Corporation entries.","operationId":"getCorporationGroup","parameters":[{"name":"corporation_id","in":"path","required":true,"schema":{"type":"integer","format":"uint64"}},{"$ref":"#/components/parameters/At-Block-Height"}],"responses":{"200":{"description":"Corporation group state","content":{"application/json":{"schema":{"type":"object","properties":{"group":{"$ref":"#/components/schemas/CorporationGroup"}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"$ref":"#/components/responses/NotFound"},"500":{"$ref":"#/components/responses/ServerError"}}}},"/v4/group/corporations-by-member":{"get":{"tags":["Group"],"summary":"List Corporations By Member (v4)","description":"Corporations whose backing group has the supplied account as a current member (IDX-GR-QRY-2). Single-call group-membership discovery; cursor key is corporation_id.","operationId":"listCorporationsByMember","parameters":[{"name":"account","in":"query","required":true,"schema":{"type":"string"},"description":"Member account address"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1024,"default":64}},{"name":"min_id","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Cursor: corporation_id lower bound (inclusive)"},{"name":"max_id","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Cursor: corporation_id upper bound (exclusive)"},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["id","+id","-id"],"default":"-id"}},{"$ref":"#/components/parameters/At-Block-Height"}],"responses":{"200":{"description":"Memberships","content":{"application/json":{"schema":{"type":"object","properties":{"memberships":{"type":"array","items":{"$ref":"#/components/schemas/CorporationMembership"}}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"500":{"$ref":"#/components/responses/ServerError"}}}},"/v4/group/proposals":{"get":{"tags":["Group"],"summary":"List Proposals (v4)","description":"Paginated, filtered list of x/group proposals targeting Corporation-anchored group policies (IDX-GR-QRY-3). Cursor key is the globally unique x/group proposal id.","operationId":"listGroupProposals","parameters":[{"name":"corporation_id","in":"query","required":false,"schema":{"type":"integer","format":"uint64"},"description":"Filter by the Corporation whose group policy the proposal targets"},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["SUBMITTED","ACCEPTED","REJECTED","ABORTED","WITHDRAWN"]}},{"name":"proposer","in":"query","required":false,"schema":{"type":"string"},"description":"Proposals whose proposers[] includes this account"},{"name":"pending_voter","in":"query","required":false,"schema":{"type":"string"},"description":"Only SUBMITTED proposals within their voting period where this account is a current group member that has not voted yet"},{"name":"modified_after","in":"query","required":false,"schema":{"type":"string","format":"date-time"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1024,"default":64}},{"name":"min_id","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"max_id","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["id","+id","-id"],"default":"-id"}},{"$ref":"#/components/parameters/At-Block-Height"}],"responses":{"200":{"description":"Proposals","content":{"application/json":{"schema":{"type":"object","properties":{"proposals":{"type":"array","items":{"$ref":"#/components/schemas/GroupProposal"}}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"500":{"$ref":"#/components/responses/ServerError"}}}},"/v4/group/proposal/{id}":{"get":{"tags":["Group"],"summary":"Get Proposal (v4)","description":"A single proposal by its x/group proposal id (IDX-GR-QRY-4). 404 for proposals that target no Corporation-anchored group policy.","operationId":"getGroupProposal","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"uint64"}},{"$ref":"#/components/parameters/At-Block-Height"}],"responses":{"200":{"description":"Proposal","content":{"application/json":{"schema":{"type":"object","properties":{"proposal":{"$ref":"#/components/schemas/GroupProposal"}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"$ref":"#/components/responses/NotFound"},"500":{"$ref":"#/components/responses/ServerError"}}}},"/v4/group/votes":{"get":{"tags":["Group"],"summary":"List Votes (v4)","description":"Votes cast on Corporation-anchored proposals (IDX-GR-QRY-5). At least one of proposal_id and voter MUST be provided. Cursor key is the indexer-assigned per-row id.","operationId":"listGroupVotes","parameters":[{"name":"proposal_id","in":"query","required":false,"schema":{"type":"integer","format":"uint64"}},{"name":"voter","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1024,"default":64}},{"name":"min_id","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"max_id","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["id","+id","-id"],"default":"-id"}},{"$ref":"#/components/parameters/At-Block-Height"}],"responses":{"200":{"description":"Votes","content":{"application/json":{"schema":{"type":"object","properties":{"votes":{"type":"array","items":{"$ref":"#/components/schemas/GroupVote"}}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"500":{"$ref":"#/components/responses/ServerError"}}}},"/v4/exchange-rate/get":{"get":{"tags":["Exchange Rate"],"summary":"Get Exchange Rate","description":"Retrieve a single Exchange Rate entry by its ID or by the composite asset-pair key.","operationId":"getExchangeRate","parameters":[{"name":"id","in":"query","schema":{"type":"integer"},"description":"Primary key lookup (conditional)"},{"name":"base_asset_type","in":"query","schema":{"type":"string","enum":["TU","COIN","FIAT"]},"description":"Base asset type (conditional, part of composite key)"},{"name":"base_asset","in":"query","schema":{"type":"string"},"description":"Base asset identifier (conditional)"},{"name":"quote_asset_type","in":"query","schema":{"type":"string","enum":["TU","COIN","FIAT"]},"description":"Quote asset type (conditional)"},{"name":"quote_asset","in":"query","schema":{"type":"string"},"description":"Quote asset identifier (conditional)"},{"name":"state","in":"query","schema":{"type":"boolean"},"description":"Filter on state (optional)"},{"name":"expire_ts","in":"query","schema":{"type":"string","format":"date-time"},"description":"Return only if expires > expire_ts (optional)"}],"responses":{"200":{"description":"Exchange rate found","content":{"application/json":{"schema":{"type":"object","properties":{"exchange_rate":{"$ref":"#/components/schemas/ExchangeRate"}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"$ref":"#/components/responses/NotFound"},"500":{"$ref":"#/components/responses/ServerError"}}}},"/v4/exchange-rate/list":{"get":{"tags":["Exchange Rate"],"summary":"List Exchange Rates","description":"Retrieve a paginated, filtered list of Exchange Rate entries, ordered by id. Aligned with VPR MOD-XR-QRY-2.","operationId":"listExchangeRates","parameters":[{"name":"base_asset_type","in":"query","schema":{"type":"string","enum":["TU","COIN","FIAT"]},"description":"Filter on base asset type"},{"name":"base_asset","in":"query","schema":{"type":"string"},"description":"Filter on base asset identifier"},{"name":"quote_asset_type","in":"query","schema":{"type":"string","enum":["TU","COIN","FIAT"]},"description":"Filter on quote asset type"},{"name":"quote_asset","in":"query","schema":{"type":"string"},"description":"Filter on quote asset identifier"},{"name":"state","in":"query","schema":{"type":"boolean"},"description":"Filter on state"},{"name":"expire","in":"query","schema":{"type":"string","format":"date-time"},"description":"Return only entries whose expires > expire"},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":1024,"default":64},"description":"Caps the number of items returned"},{"name":"min_id","in":"query","schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Half-open range cursor on id (inclusive)"},{"name":"max_id","in":"query","schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Half-open range cursor on id (exclusive)"},{"name":"sort","in":"query","schema":{"type":"string","enum":["id","+id","-id"],"default":"-id"},"description":"Sort order by id (default -id, newest-first)"}],"responses":{"200":{"description":"List of exchange rates","content":{"application/json":{"schema":{"type":"object","properties":{"exchange_rates":{"type":"array","items":{"$ref":"#/components/schemas/ExchangeRate"}}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"500":{"$ref":"#/components/responses/ServerError"}}}},"/v4/exchange-rate/price":{"get":{"tags":["Exchange Rate"],"summary":"Get Price","description":"Convert an amount of a base asset to its equivalent in a quote asset using the relevant active, non-expired ExchangeRate entry. Aligned with VPR MOD-XR-QRY-3. When (base_asset_type, base_asset) == (quote_asset_type, quote_asset), price == amount and rate fields are omitted. Otherwise price = floor(amount * rate / 10^rate_scale).","operationId":"getPrice","parameters":[{"name":"base_asset_type","in":"query","required":true,"schema":{"type":"string","enum":["TU","COIN","FIAT"]},"description":"Base asset type"},{"name":"base_asset","in":"query","required":true,"schema":{"type":"string"},"description":"Base asset identifier (\"tu\" for TU; on-chain denom for COIN; ISO-4217 currency code for FIAT)"},{"name":"quote_asset_type","in":"query","required":true,"schema":{"type":"string","enum":["TU","COIN","FIAT"]},"description":"Quote asset type"},{"name":"quote_asset","in":"query","required":true,"schema":{"type":"string"},"description":"Quote asset identifier (same rules as base_asset)"},{"name":"amount","in":"query","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Base-asset amount expressed as a base-10 unsigned integer string, in the base asset's base units"},{"$ref":"#/components/parameters/At-Block-Height"}],"responses":{"200":{"description":"Computed price","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetPriceResponse"},"example":{"price":"1234","base_asset_type":"COIN","base_asset":"uvna","quote_asset_type":"FIAT","quote_asset":"USD","rate":"12345","rate_scale":4,"expires":"2026-01-15T10:30:00Z"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"description":"No matching ExchangeRate entry exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"Exchange rate not found","code":404}}}},"410":{"description":"The matching ExchangeRate entry is disabled or expired","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"Exchange rate is disabled or expired","code":410}}}},"500":{"$ref":"#/components/responses/ServerError"}}}},"/v4/participant/beneficiaries":{"get":{"tags":["Participant"],"summary":"Find Beneficiaries","description":"Compute the beneficiary Participants for a credential transaction. Given an issuer Participant and/or a verifier Participant, returns every ancestor Participant in the involved tree branch(es) that participates in the fee-distribution flow. At least one of the two ids must be provided.","operationId":"findBeneficiaries","parameters":[{"name":"issuer_participant_id","in":"query","required":false,"schema":{"type":"integer","minimum":1},"description":"Issuer Participant ID. MUST reference an active Participant; HTTP 400 otherwise. At least one of issuer_participant_id and verifier_participant_id must be provided; supplying neither is HTTP 400. Alone it computes an issuance (credential offer) fee preview"},{"name":"verifier_participant_id","in":"query","required":false,"schema":{"type":"integer","minimum":1},"description":"Verifier Participant ID. MUST reference an active Participant; HTTP 400 otherwise. At least one of issuer_participant_id and verifier_participant_id must be provided; supplying neither is HTTP 400"},{"$ref":"#/components/parameters/At-Block-Height"}],"responses":{"200":{"description":"Successful response with beneficiary participants. The set is empty when the referenced Participant has no ancestors, or when every ancestor is revoked or slashed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BeneficiaryResponse"}}}},"400":{"description":"Neither id was provided, or a referenced Participant is not active","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"Participant must be active for id(s): 1","code":400}}}},"404":{"description":"A referenced Participant does not exist","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"Participant not found for id(s): 1","code":404}}}},"500":{"$ref":"#/components/responses/ServerError"}}}},"/v4/participant/history/{id}":{"get":{"tags":["Participant"],"summary":"Get Participant activity timeline","description":"Retrieve the activity timeline for a Participant, showing all changes ordered by transaction timestamp descending. Returns only changed values in the changes field.","operationId":"getParticipantHistory","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"},"description":"Participant ID whose history will be returned"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1024,"default":64},"description":"Page size, 1..1024 (default 64), per the v4 Pagination spec"},{"name":"min_id","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Cursor: ActivityItem.id lower bound (inclusive)"},{"name":"max_id","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Cursor: ActivityItem.id upper bound (exclusive)"},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["id","+id","-id"],"default":"-id"},"description":"Sort by ActivityItem.id ascending or descending"},{"$ref":"#/components/parameters/At-Block-Height"}],"responses":{"200":{"description":"Successful response with Participant activity timeline","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityTimelineResponse"},"example":{"entity_type":"Participant","entity_id":1,"activity":[{"timestamp":"2025-10-03T11:59:38.834Z","block_height":13735,"entity_type":"Participant","entity_id":"1","msg":"CreateRootParticipant","changes":{"did":"did:example:186af95a000ef890a583f47a0274a800","role":"ECOSYSTEM","issued":0,"created":"2025-10-03T11:59:38.834Z","corporation_id":3,"vs_operator":"verana12dyk649yce4dvdppehsyraxe6p6jemzg2qwutf","modified":"2025-10-03T11:59:38.834Z","verified":0,"op_state":"VALIDATED","schema_id":2,"issuance_fees":5,"effective_from":"2025-10-03T11:59:49.805Z","repaid_deposit":0,"effective_until":"2026-09-28T11:59:49.805Z","slashed_deposit":0,"validation_fees":5,"op_current_fees":0,"verification_fees":5,"op_current_deposit":0,"op_validator_deposit":0}}]}}}},"404":{"description":"Participant history not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"Participant history not found for 1","code":404}}}},"500":{"$ref":"#/components/responses/ServerError"}}}},"/v4/participant/participant-session-history/{id}":{"get":{"tags":["Participant"],"summary":"Get Participant Session History","description":"Retrieve the recorded history for a specific Participant Session ID.","operationId":"getParticipantSessionHistory","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"Participant Session ID to fetch history for"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1024,"default":64},"description":"Page size, 1..1024 (default 64), per the v4 Pagination spec"},{"name":"min_id","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Cursor: ActivityItem.id lower bound (inclusive)"},{"name":"max_id","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Cursor: ActivityItem.id upper bound (exclusive)"},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["id","+id","-id"],"default":"-id"},"description":"Sort by ActivityItem.id ascending or descending"},{"$ref":"#/components/parameters/At-Block-Height"}],"responses":{"200":{"description":"Successful response with Participant Session activity timeline","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityTimelineResponse"},"example":{"entity_type":"ParticipantSession","entity_id":"575ad8eb-3f0a-46bc-a51e-03cce903b864","activity":[{"timestamp":"2025-10-27T16:55:04.593Z","block_height":425339,"entity_type":"ParticipantSession","entity_id":"575ad8eb-3f0a-46bc-a51e-03cce903b864","msg":"CreateOrUpdateParticipantSession","changes":{"session_records":[{"issuer_participant_id":25,"verifier_participant_id":null,"wallet_agent_participant_id":25}],"created":"2025-10-27T16:55:04.593Z","modified":"2025-10-27T16:55:04.593Z","corporation_id":7,"vs_operator":"verana1gnt6yu57zalyml8kumcypdvtdh28fvzfuqrn9l","agent_participant_id":25,"wallet_agent_participant_id":25},"account":"verana1gnt6yu57zalyml8kumcypdvtdh28fvzfuqrn9l"}]}}}},"404":{"description":"Participant Session not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"ParticipantSession 575ad8eb-3f0a-46bc-a51e-03cce903b865 not found","code":404}}}},"500":{"$ref":"#/components/responses/ServerError"}}}},"/v4/stats/get":{"get":{"tags":["Statistics"],"summary":"Get Statistics Entry","description":"Retrieve a specific statistics entry by ID or by granularity, timestamp, entity_type, and entity_id","operationId":"getStats","parameters":[{"name":"id","in":"query","required":false,"schema":{"type":"integer","minimum":1},"description":"ID of the statistics entry"},{"name":"granularity","in":"query","required":false,"schema":{"type":"string","enum":["HOUR","DAY","MONTH"]},"description":"Granularity of the statistics (HOUR, DAY, or MONTH)"},{"name":"timestamp","in":"query","required":false,"schema":{"type":"string","format":"date-time"},"description":"ISO 8601 timestamp at Z"},{"name":"entity_type","in":"query","required":false,"schema":{"type":"string","enum":["GLOBAL","ECOSYSTEM","CREDENTIAL_SCHEMA","PARTICIPANT"]},"description":"Type of entity (GLOBAL, ECOSYSTEM, CREDENTIAL_SCHEMA, PARTICIPANT)"},{"name":"entity_id","in":"query","required":false,"schema":{"type":"integer"},"description":"ID of the entity (required for non-GLOBAL entity types)"}],"responses":{"200":{"description":"Successful response with statistics entry","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatsEntry"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"description":"Statistics entry not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"Stats not found","code":404}}}},"500":{"$ref":"#/components/responses/ServerError"}}}},"/v4/stats/stats":{"get":{"tags":["Statistics"],"summary":"Get Statistics","description":"Retrieve statistics with buckets and/or totals for a time range. If granularity is not specified, the method returns the smallest number of buckets by combining MONTH/DAY/HOUR buckets as needed. The response `granularity` will be the smallest granularity present in the returned buckets.","operationId":"getStatsRange","parameters":[{"name":"granularity","in":"query","required":false,"schema":{"type":"string","enum":["HOUR","DAY","MONTH"]},"description":"HOUR, DAY, or MONTH. Optional."},{"name":"timestamp_from","in":"query","required":true,"schema":{"type":"string","format":"date-time"},"description":"ISO 8601 UTC timestamp (inclusive)."},{"name":"timestamp_until","in":"query","required":true,"schema":{"type":"string","format":"date-time"},"description":"ISO 8601 UTC timestamp (exclusive)."},{"name":"entity_type","in":"query","required":true,"schema":{"type":"string","enum":["GLOBAL","ECOSYSTEM","CREDENTIAL_SCHEMA","PARTICIPANT"]},"description":"GLOBAL, ECOSYSTEM, CREDENTIAL_SCHEMA, or PARTICIPANT"},{"name":"entity_ids","in":"query","required":false,"schema":{"type":"string"},"description":"Comma-separated entity IDs (e.g. '1,2,3'). Must be empty for GLOBAL; required for other entity types."},{"name":"result_type","in":"query","required":false,"schema":{"type":"string","enum":["BUCKETS","TOTAL","BUCKETS_AND_TOTAL"],"default":"BUCKETS_AND_TOTAL"},"description":"BUCKETS, TOTAL, or BUCKETS_AND_TOTAL. Default: BUCKETS_AND_TOTAL."}],"responses":{"200":{"description":"Successful response with statistics","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatsResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"500":{"$ref":"#/components/responses/ServerError"}}}},"/v4/stats/count-participants":{"get":{"tags":["Statistics"],"summary":"Get Participants at Height","description":"Returns the number of participants for a given entity (GLOBAL, ECOSYSTEM, CREDENTIAL_SCHEMA, or PARTICIPANT) and role type at the block selected by the At-Block-Height header (or the latest indexed block when omitted), based on the entity_participant_changes log.","operationId":"getParticipantsAtHeight","parameters":[{"name":"entity_kind","in":"query","required":true,"schema":{"type":"integer","minimum":0,"maximum":3},"description":"Entity kind: 0=GLOBAL, 1=ECOSYSTEM, 2=CREDENTIAL_SCHEMA, 3=PARTICIPANT"},{"name":"entity_id","in":"query","required":false,"schema":{"type":"integer"},"description":"Entity ID (required for non-GLOBAL entity_kind; must be omitted for GLOBAL)"},{"name":"role_type","in":"query","required":true,"schema":{"type":"integer","minimum":0,"maximum":6},"description":"Participant role type: 0=ANY, 1=ECOSYSTEM, 2=ISSUER_GRANTOR, 3=ISSUER, 4=VERIFIER_GRANTOR, 5=VERIFIER, 6=HOLDER"},{"$ref":"#/components/parameters/At-Block-Height"}],"responses":{"200":{"description":"Participants count at the resolved block height","content":{"application/json":{"schema":{"type":"object","properties":{"entity_kind":{"type":"integer"},"entity_id":{"type":"integer","nullable":true},"role_type":{"type":"integer"},"block_height":{"type":"integer","description":"The resolved evaluation block height"},"participants":{"type":"integer","description":"Number of participants at the resolved block height"}},"required":["entity_kind","role_type","block_height","participants"]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"500":{"$ref":"#/components/responses/ServerError"}}}},"/v4/stats/snapshot":{"get":{"tags":["Statistics"],"summary":"Get Stats Snapshot","description":"Return the current value of every tracked metric for one entity (the whole network, an Ecosystem, a Credential Schema, or a Participant sub-tree) at the block selected by the At-Block-Height header, or the latest indexed block when omitted. Participant counts read from the entity_participant_changes log; the other metrics read from the height-versioned entity tables. Replaces GET /v4/metrics/all.","operationId":"getStatsSnapshot","parameters":[{"name":"entity_type","in":"query","required":false,"schema":{"type":"string","enum":["GLOBAL","ECOSYSTEM","CREDENTIAL_SCHEMA","PARTICIPANT"],"default":"GLOBAL"},"description":"Entity scope. Default: GLOBAL."},{"name":"entity_id","in":"query","required":false,"schema":{"type":"integer","format":"int64"},"description":"Entity ID (required for non-GLOBAL entity types; must be omitted for GLOBAL)"},{"$ref":"#/components/parameters/At-Block-Height"}],"responses":{"200":{"description":"Metric values at the resolved block height","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatsSnapshot"},"example":{"entity_type":"GLOBAL","entity_id":null,"block_height":123456,"timestamp":"2026-09-08T12:00:00.000Z","participants":12345,"participants_ecosystem":12,"participants_issuer_grantor":30,"participants_issuer":800,"participants_verifier_grantor":20,"participants_verifier":400,"participants_holder":11083,"active_ecosystems":12,"archived_ecosystems":3,"active_schemas":256,"archived_schemas":42,"weight":1234567890000000000,"issued":987654,"verified":543210,"ecosystem_slash_events":5,"ecosystem_slashed_amount":100000000000000,"ecosystem_slashed_amount_repaid":50000000000000,"network_slash_events":1,"network_slashed_amount":250000000000000,"network_slashed_amount_repaid":100000000000000}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"description":"Unknown entity_id","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"ECOSYSTEM 42 not found","code":404}}}},"500":{"$ref":"#/components/responses/ServerError"}}}},"/v4/di/get/{digest}":{"get":{"tags":["Digest"],"summary":"Get Digest","description":"Look up a previously stored Digest entry by its digest string, byte-for-byte as anchored (for a credential, its digestJCS).","operationId":"getDigest","parameters":[{"name":"digest","in":"path","required":true,"schema":{"type":"string"},"description":"The digest to look up, byte-for-byte as anchored (for a credential, its digestJCS)"},{"$ref":"#/components/parameters/At-Block-Height"}],"responses":{"200":{"description":"Digest found","content":{"application/json":{"schema":{"type":"object","properties":{"digest":{"$ref":"#/components/schemas/Digest"}}}}}},"404":{"$ref":"#/components/responses/NotFound"},"500":{"$ref":"#/components/responses/ServerError"}}}},"/v4/delegation/operator-authorizations":{"get":{"tags":["Delegation"],"summary":"List Operator Authorizations","description":"Retrieve a paginated, filtered list of OperatorAuthorization entries. Aligned with VPR MOD-DE-QRY-1.","operationId":"listOperatorAuthorizations","parameters":[{"name":"corporation_id","in":"query","required":false,"schema":{"type":"integer","format":"uint64"},"description":"Filter by the granting Corporation id"},{"name":"operator","in":"query","required":false,"schema":{"type":"string"},"description":"Filter by the grantee operator account"},{"name":"msg_type","in":"query","required":false,"schema":{"type":"string"},"description":"Filter to authorizations whose msg_types[] includes this message type"},{"name":"only_active","in":"query","required":false,"schema":{"type":"boolean"},"description":"If true, only return non-expired authorizations (expiration > now or null)"},{"name":"modified_after","in":"query","required":false,"schema":{"type":"string","format":"date-time"},"description":"Only return authorizations modified strictly after this datetime"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1024,"default":64},"description":"Caps the number of items returned"},{"name":"min_id","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Inclusive lower bound of the id range cursor"},{"name":"max_id","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Exclusive upper bound of the id range cursor"},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["id","+id","-id"],"default":"-id"},"description":"Sort by id ascending (id/+id) or descending (-id, default)"},{"$ref":"#/components/parameters/At-Block-Height"}],"responses":{"200":{"description":"List of operator authorizations","content":{"application/json":{"schema":{"type":"object","properties":{"authorizations":{"type":"array","items":{"$ref":"#/components/schemas/OperatorAuthorization"}}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"500":{"$ref":"#/components/responses/ServerError"}}}},"/v4/delegation/operator-authorization/{id}":{"get":{"tags":["Delegation"],"summary":"Get Operator Authorization","description":"Retrieve a specific OperatorAuthorization entry by its id. Aligned with VPR MOD-DE-QRY-3.","operationId":"getOperatorAuthorization","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"uint64"},"description":"The OperatorAuthorization ID"},{"$ref":"#/components/parameters/At-Block-Height"}],"responses":{"200":{"description":"Operator authorization found","content":{"application/json":{"schema":{"type":"object","properties":{"authorization":{"$ref":"#/components/schemas/OperatorAuthorization"}}}}}},"404":{"$ref":"#/components/responses/NotFound"},"500":{"$ref":"#/components/responses/ServerError"}}}},"/v4/delegation/vs-operator-authorizations":{"get":{"tags":["Delegation"],"summary":"List VS Operator Authorizations","description":"Retrieve a paginated, filtered list of VSOperatorAuthorization entries, each holding one ParticipantAuthorizationRecord per controlled Participant. Aligned with VPR MOD-DE-QRY-2.","operationId":"listVSOperatorAuthorizations","parameters":[{"name":"corporation_id","in":"query","required":false,"schema":{"type":"integer","format":"uint64"},"description":"Filter by the granting Corporation id"},{"name":"vs_operator","in":"query","required":false,"schema":{"type":"string"},"description":"Filter by the grantee VS-operator account"},{"name":"participant_id","in":"query","required":false,"schema":{"type":"integer","format":"uint64"},"description":"Filter to entries whose records[] contains a record for this Participant.id"},{"name":"only_active","in":"query","required":false,"schema":{"type":"boolean"},"description":"If true, only return entries with at least one non-expired record"},{"name":"modified_after","in":"query","required":false,"schema":{"type":"string","format":"date-time"},"description":"Only return entries modified strictly after this datetime"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1024,"default":64},"description":"Caps the number of items returned"},{"name":"min_id","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Inclusive lower bound of the id range cursor"},{"name":"max_id","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Exclusive upper bound of the id range cursor"},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["id","+id","-id"],"default":"-id"},"description":"Sort by id ascending (id/+id) or descending (-id, default)"},{"$ref":"#/components/parameters/At-Block-Height"}],"responses":{"200":{"description":"List of VS operator authorizations","content":{"application/json":{"schema":{"type":"object","properties":{"authorizations":{"type":"array","items":{"$ref":"#/components/schemas/VSOperatorAuthorization"}}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"500":{"$ref":"#/components/responses/ServerError"}}}},"/v4/delegation/vs-operator-authorization/{id}":{"get":{"tags":["Delegation"],"summary":"Get VS Operator Authorization","description":"Retrieve a specific VSOperatorAuthorization entry by its id, including its nested records[]. Aligned with VPR MOD-DE-QRY-4.","operationId":"getVSOperatorAuthorization","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"uint64"},"description":"The VSOperatorAuthorization ID"},{"$ref":"#/components/parameters/At-Block-Height"}],"responses":{"200":{"description":"VS operator authorization found","content":{"application/json":{"schema":{"type":"object","properties":{"authorization":{"$ref":"#/components/schemas/VSOperatorAuthorization"}}}}}},"404":{"$ref":"#/components/responses/NotFound"},"500":{"$ref":"#/components/responses/ServerError"}}}},"/v4/delegation/fee-grants":{"get":{"tags":["Delegation"],"summary":"List Fee Grants","description":"Retrieve a paginated, filtered list of FeeGrant entries: the grants through which a Corporation pays network transaction fees on behalf of a grantee. Aligned with the VPR FeeGrant entity (IDX-DE-QRY-5).","operationId":"listFeeGrants","parameters":[{"name":"grantor_corporation_id","in":"query","required":false,"schema":{"type":"integer","format":"uint64"},"description":"Filter by the granting Corporation id"},{"name":"grantee","in":"query","required":false,"schema":{"type":"string"},"description":"Filter by the grantee account"},{"name":"msg_type","in":"query","required":false,"schema":{"type":"string"},"description":"Filter to grants whose msg_types[] includes this message type. Grants with an empty msg_types carry no message filter and match every type."},{"name":"only_active","in":"query","required":false,"schema":{"type":"boolean"},"description":"If true, only return non-expired grants (expiration > now or null). A periodic grant's auto-renewing cycle boundary never makes it inactive."},{"name":"modified_after","in":"query","required":false,"schema":{"type":"string","format":"date-time"},"description":"Only return grants modified strictly after this datetime. A grant is modified by its creation, update or revocation, and by any change to remaining_spend (fee draw or cycle reset)."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1024,"default":64},"description":"Caps the number of items returned"},{"name":"min_id","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Inclusive lower bound of the id range cursor"},{"name":"max_id","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Exclusive upper bound of the id range cursor"},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["id","+id","-id"],"default":"-id"},"description":"Sort by id ascending (id/+id) or descending (-id, default)"},{"$ref":"#/components/parameters/At-Block-Height"}],"responses":{"200":{"description":"List of fee grants","content":{"application/json":{"schema":{"type":"object","properties":{"fee_grants":{"type":"array","items":{"$ref":"#/components/schemas/FeeGrant"}}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"500":{"$ref":"#/components/responses/ServerError"}}}},"/v4/trust-deposit/get/{corporation}":{"get":{"tags":["Trust Deposit"],"summary":"Get Trust Deposit by corporation","description":"Retrieve the aggregated trust-deposit position of a single Corporation, identified 1:1 by its corporation_id.","operationId":"getTrustDepositByCorporation","parameters":[{"name":"corporation_id","in":"path","required":true,"schema":{"type":"integer","format":"uint64"},"description":"The Corporation ID"},{"$ref":"#/components/parameters/At-Block-Height"}],"responses":{"200":{"description":"Successful response with trust deposit details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrustDepositResponse"},"example":{"trust_deposit":{"corporation_id":12,"share":20000000,"deposit":20000000,"refunded":0,"claimable":0,"slashed_deposit":0,"repaid_deposit":0,"last_slashed":null,"last_repaid":null,"slash_count":0}}}}},"404":{"description":"Trust Deposit not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"No trust deposit found for corporation_id: 12","code":404}}}},"500":{"$ref":"#/components/responses/ServerError"}}}},"/v4/trust-deposit/params":{"get":{"tags":["Trust Deposit"],"summary":"Get Trust Deposit Parameters","description":"Retrieve current system parameters for Trust Deposit module","operationId":"getTrustDepositParams","parameters":[{"$ref":"#/components/parameters/At-Block-Height"}],"responses":{"200":{"description":"Successful response with Trust Deposit parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrustDepositParamsResponse"},"example":{"params":{"trust_deposit_rate":0.2,"user_agent_reward_rate":0.2,"trust_deposit_share_value":1,"wallet_user_agent_reward_rate":0.2,"trust_deposit_reclaim_burn_rate":0.6}}}}},"500":{"$ref":"#/components/responses/ServerError"}}}},"/v4/trust-deposit/history/{corporation_id}":{"get":{"tags":["Trust Deposit"],"summary":"Get Trust Deposit activity timeline","description":"Retrieve the activity timeline for a Trust Deposit row, ordered by id descending (newest-first). Returns only changed values in the changes field. Paginates on ActivityItem.id via min_id/max_id/limit/sort.","operationId":"getTrustDepositHistory","parameters":[{"name":"corporation_id","in":"path","required":true,"schema":{"type":"integer","format":"uint64"},"description":"The Corporation ID (the TrustDeposit row is identified 1:1 by corporation_id)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1024,"default":64},"description":"Caps the number of items returned (1..1024, default 64)"},{"name":"min_id","in":"query","required":false,"schema":{"type":"integer","format":"uint64"},"description":"Inclusive lower bound of the half-open id range cursor on ActivityItem.id"},{"name":"max_id","in":"query","required":false,"schema":{"type":"integer","format":"uint64"},"description":"Exclusive upper bound of the half-open id range cursor on ActivityItem.id"},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["id","+id","-id"],"default":"-id"},"description":"Sort by id: '-id' (default, newest-first) or 'id'/'+id' (oldest-first)"},{"$ref":"#/components/parameters/At-Block-Height"}],"responses":{"200":{"description":"Successful response with Trust Deposit activity timeline","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityTimelineResponse"},"example":{"entity_type":"TrustDeposit","entity_id":"12","activity":[{"id":3,"timestamp":"2025-10-27T16:55:04.593Z","block_height":425339,"entity_type":"TrustDeposit","entity_id":"12","msg":"ADJUST_TRUST_DEPOSIT","changes":{"share":81000000,"deposit":81000000}},{"id":2,"timestamp":"2025-10-27T16:54:37.920Z","block_height":425334,"entity_type":"TrustDeposit","entity_id":"12","msg":"ADJUST_TRUST_DEPOSIT","changes":{"share":80000000,"deposit":80000000}},{"id":1,"timestamp":"2025-10-03T11:59:28.807Z","block_height":13733,"entity_type":"TrustDeposit","entity_id":"12","msg":"CREATE_TRUST_DEPOSIT","changes":{"share":10000000,"deposit":10000000,"refunded":0,"slash_count":0,"repaid_deposit":0,"slashed_deposit":0}}]}}}},"404":{"description":"Trust Deposit history not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"No trust deposit found for corporation_id: 12","code":404}}}},"500":{"$ref":"#/components/responses/ServerError"}}}},"/v4/verifiable-trust/resolve":{"post":{"tags":["Verifiable Trust"],"summary":"Resolve (IDX-VT-QRY-1)","description":"Resolves the Verifiable Trust state for a DID. Always returns the trust-core fields (`did`, `trusted`, `evaluatedAtTime`, `evaluatedAtBlock`, `expiresAtTime`, `corporationId`); every other section is opt-in via its request selector. Point-in-time is selected via the `At-Block-Height` header.","operationId":"trustResolveV4","parameters":[{"name":"At-Block-Height","in":"header","required":false,"description":"Optional block height for a point-in-time query (capped to the last processed trust block). When omitted, the latest indexed block is used.","schema":{"type":"integer","minimum":0}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["did"],"properties":{"did":{"type":"string","pattern":"^did:","description":"DID to resolve."},"corporation":{"type":"boolean","description":"Include the full `corporation` object (the Corporation whose `did` equals the resolved DID)."},"ecsCredentials":{"type":"boolean","description":"Include the full ECS credentials with subject claims."},"services":{"type":"boolean","description":"Include non-LinkedVerifiablePresentation service entries from the DID Document."},"participations":{"description":"Include participations. `true` defaults to state `ACTIVE`; pass an object with `states[]` to filter.","oneOf":[{"type":"boolean"},{"type":"object","properties":{"states":{"type":"array","items":{"type":"string","enum":["ACTIVE","FUTURE","INACTIVE","EXPIRED","REVOKED","SLASHED","REPAID"]}}}}]},"presentations":{"description":"Include per-VP credential summaries. Sub-flags additionally surface unresolvable/invalid credential ids per VP.","oneOf":[{"type":"boolean"},{"type":"object","properties":{"unresolvableCredentialIds":{"type":"boolean"},"invalidCredentialIds":{"type":"boolean"}}}]},"ecosystems":{"description":"Include aggregate metrics for the Ecosystems the DID controls. Sub-flags control archived inclusion and embedded credential schemas.","oneOf":[{"type":"boolean"},{"type":"object","properties":{"includeArchived":{"type":"boolean"},"credentialSchemas":{"oneOf":[{"type":"boolean"},{"type":"object","properties":{"includeArchived":{"type":"boolean"}}}]}}}]}}}}}},"responses":{"200":{"description":"OK — the Verifiable Trust resolution response. Optional sections appear only when their selector was set.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolutionResponse"}}}},"400":{"description":"Missing or invalid `did`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No trust evaluation found for this DID at the effective height.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v4/verifiable-trust/changes":{"get":{"tags":["Verifiable Trust"],"summary":"List Changes (IDX-VT-QRY-2)","description":"WebSocket-companion catch-up for the Verifiable Trust subscribe stream. Returns the same change envelopes as the `/v4/verifiable-trust/subscribe` WS `block` messages, compressed: blocks with no subscribed change are omitted. Use after a disconnection or a detected gap, looping with `nextFromBlock` until it is `null`.","operationId":"listVtChanges","parameters":[{"name":"fromBlock","in":"query","required":true,"schema":{"type":"integer","minimum":0},"description":"Smallest block height to return changes from (inclusive)."},{"name":"dids","in":"query","required":false,"schema":{"type":"string"},"description":"Comma-separated DIDs to filter. Same membership semantics as the WS subscribe (includes the one-hop validator-tree branch). Omit for the wildcard set."},{"name":"corporation_id","in":"query","required":false,"schema":{"type":"integer","format":"int64"},"description":"Restrict to the Corporation's expanded membership set. When combined with `dids`, the response is the intersection of both filters."},{"name":"channels","in":"query","required":false,"schema":{"type":"string"},"description":"Comma-separated channel names: trust, ecsCredentials, presentations, services, corporation, participations, ecosystems. Optional; when omitted, all channels are enabled."},{"name":"includeParticipantCounts","in":"query","required":false,"schema":{"type":"boolean"},"description":"For the participations and ecosystems channels, also signal participant-count-only changes."},{"name":"includeIssuedCredentials","in":"query","required":false,"schema":{"type":"boolean"},"description":"For the participations and ecosystems channels, also signal issued-credential-count-only changes."},{"name":"includeVerifiedCredentials","in":"query","required":false,"schema":{"type":"boolean"},"description":"For the participations and ecosystems channels, also signal verified-credential-count-only changes."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":100},"description":"Maximum number of changed blocks to return. Defaults to 100, capped at 1000."}],"responses":{"200":{"description":"Compressed list of changed blocks matching the filters.","content":{"application/json":{"schema":{"type":"object","required":["currentBlock","fromBlock","blocks","nextFromBlock"],"properties":{"currentBlock":{"type":"integer","minimum":0,"description":"Latest block the indexer has processed at response time."},"fromBlock":{"type":"integer","minimum":0,"description":"Echo of the requested fromBlock."},"blocks":{"type":"array","description":"Up to `limit` blocks in increasing order that contain at least one matching change. Blocks with no subscribed change are omitted.","items":{"type":"object","required":["block","blockTime","changes"],"properties":{"block":{"type":"integer","minimum":0},"blockTime":{"type":"string","format":"date-time"},"changes":{"type":"array","description":"Same shape as `changes[]` in the WS block messages.","items":{"type":"object"}}}}},"nextFromBlock":{"type":"integer","minimum":0,"nullable":true,"description":"Smallest block height strictly greater than the last returned block for which further changes are known to exist. Null once the response has reached currentBlock."}}},"example":{"currentBlock":1500300,"fromBlock":1500005,"blocks":[{"block":1500005,"blockTime":"2026-05-11T13:00:05Z","changes":[{"did":"did:web:agent.example","trust":{"trusted":true,"evaluatedAtTime":"2026-05-11T13:00:05Z","evaluatedAtBlock":1500005,"expiresAtTime":"2026-05-12T13:00:05Z","corporationId":42}}]}],"nextFromBlock":1500050}}}},"400":{"$ref":"#/components/responses/BadRequest"},"500":{"$ref":"#/components/responses/ServerError"}}}},"/v4/verifiable-trust/dids":{"get":{"tags":["Verifiable Trust"],"summary":"List Indexed DIDs (IDX-VT-QRY-3)","description":"Enumerates the universe of DIDs the indexer can resolve at a frozen snapshot block, so a client with an empty mirror can bootstrap by resolving each via `/v4/verifiable-trust/resolve`. The snapshot block is selected via the `At-Block-Height` header (latest indexed block when omitted). The DID universe is the union of every Corporation `did`, every Ecosystem `did`, the DID of every in-scope Participant, and any DID previously evaluated by the resolver that the indexer still tracks.","operationId":"listIndexedDids","parameters":[{"$ref":"#/components/parameters/At-Block-Height"},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"},"description":"Opaque pagination cursor returned as `nextCursor` by a previous page. Omit for the first page."},{"name":"corporation_id","in":"query","required":false,"schema":{"type":"integer","format":"int64"},"description":"Restrict the enumeration to the Corporation's expanded membership set at the snapshot block (direct ownership plus the one-hop validator-tree branch, same semantics as the WS subscribe of IDX-VT-SUB-1)."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":10000,"default":1000},"description":"Maximum number of DIDs to return. Defaults to 1000, capped at 10000."}],"responses":{"200":{"description":"A page of indexed DIDs at the resolved snapshot block.","content":{"application/json":{"schema":{"type":"object","required":["atBlock","dids","nextCursor"],"properties":{"atBlock":{"type":"integer","minimum":0,"description":"Echo of the resolved snapshot block (the `At-Block-Height` value if provided, otherwise the latest indexed block)."},"dids":{"type":"array","description":"Page of indexed DIDs in stable sort order across pages.","items":{"type":"string"}},"nextCursor":{"type":"string","nullable":true,"description":"Opaque cursor for the next page; null (or absent) on the last page."}}},"example":{"atBlock":1500004,"dids":["did:webvh:QmRhJBzLMF6L3REha9xFpLgxui9X5tFm4TDxHoEHpA8Kpr:organization.vs.hologram.zone","did:webvh:QmZ8Y3xRkH2pV4qTw9nL7sFmJg6cN5dB1aWxKvE3uPyT8r:corp.acme.example","did:web:ecosystem.eu-passport.example"],"nextCursor":"eyJvZmZzZXQiOjEwMDB9"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"500":{"$ref":"#/components/responses/ServerError"}}}},"/v4/corporation/params":{"get":{"tags":["Corporation"],"summary":"Get Corporation parameters","description":"Retrieve the network-level Corporation module parameters (IDX-CO-QRY-3). Aligned with VPR MOD-CO-QRY-3. The x/co module currently defines no parameters (reserved for forward compatibility), so an empty params object is returned until governance introduces parameters.","operationId":"getCorporationParams","parameters":[{"$ref":"#/components/parameters/At-Block-Height"}],"responses":{"200":{"description":"The Corporation module parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CorporationParamsResponse"}}}},"500":{"$ref":"#/components/responses/ServerError"}}}},"/v4/governance-framework/get/{id}":{"get":{"tags":["GovernanceFramework"],"summary":"Get Governance Framework Version (v4)","description":"Retrieve a GovernanceFrameworkVersion by its chain-assigned global ID with its nested documents (IDX-GF-QRY-1). Aligned with VPR MOD-GF-QRY-1. Exactly one of ecosystem_id (EGF) and corporation_id (CGF) is set. Rows indexed before the chain-id capture need a reindex to be reachable by ID.","operationId":"getGovernanceFrameworkVersionV4","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"},"description":"The GovernanceFrameworkVersion ID (chain-assigned, global across EGF and CGF)"},{"name":"preferred_language","in":"query","required":false,"schema":{"type":"string"},"description":"If set, return only the document in this language when present; otherwise all documents"},{"$ref":"#/components/parameters/At-Block-Height"}],"responses":{"200":{"description":"The GovernanceFrameworkVersion","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GovernanceFrameworkVersionV4Response"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"description":"GovernanceFrameworkVersion not found"},"500":{"$ref":"#/components/responses/ServerError"}}}},"/v4/governance-framework/list":{"get":{"tags":["GovernanceFramework"],"summary":"List Governance Framework Versions (v4)","description":"List GovernanceFrameworkVersion entries for one owning subject, either an Ecosystem or a Corporation (IDX-GF-QRY-2). Aligned with VPR MOD-GF-QRY-2. Exactly one of ecosystem_id and corporation_id must be provided, otherwise HTTP 400. Each entry has the same shape as Get Governance Framework Version. Within a subject, ascending id equals ascending version.","operationId":"listGovernanceFrameworkVersionsV4","parameters":[{"name":"ecosystem_id","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Filter by owning Ecosystem. Set iff corporation_id is null"},{"name":"corporation_id","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Filter by owning Corporation. Set iff ecosystem_id is null"},{"name":"active_only","in":"query","required":false,"schema":{"type":"boolean"},"description":"If true, return only the entry for the subject's active_version"},{"name":"preferred_language","in":"query","required":false,"schema":{"type":"string"},"description":"If set, return only one document per version, preferring this language"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1024,"default":64},"description":"Page size, 1..1024 (default 64), per the v4 Pagination spec"},{"name":"min_id","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Cursor: gfv id lower bound (inclusive)"},{"name":"max_id","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Cursor: gfv id upper bound (exclusive)"},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["id","+id","-id"],"default":"-id"},"description":"Sort by gfv id; +id is chronological (oldest-first)"},{"$ref":"#/components/parameters/At-Block-Height"}],"responses":{"200":{"description":"The Governance Framework Versions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GovernanceFrameworkVersionV4ListResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"500":{"$ref":"#/components/responses/ServerError"}}}}},"components":{"headers":{"X-Response-Time-Ms":{"description":"Request processing time in milliseconds","schema":{"type":"string"}}},"parameters":{"At-Block-Height":{"name":"At-Block-Height","in":"header","required":false,"description":"Header to query historical state at a specific block height. When provided, returns the state as it was when the specified block finished processing. When omitted, returns the latest indexed state. Must be a positive integer not exceeding the current indexed block height.","schema":{"type":"integer","minimum":0}}},"schemas":{"CorporationMember":{"type":"object","properties":{"address":{"type":"string","description":"Bech32 address of the member"},"weight":{"type":"string","description":"Voting weight (decimal string)"},"metadata":{"type":"string","nullable":true,"description":"Optional member metadata"}}},"CoGovernanceFrameworkDocument":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"gfv_id":{"type":"integer","format":"int64"},"language":{"type":"string"},"url":{"type":"string"},"digest_sri":{"type":"string"},"created":{"type":"string","format":"date-time"}}},"CoGovernanceFrameworkVersion":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"corporation_id":{"type":"integer","format":"int64"},"ecosystem_id":{"type":"integer","format":"int64","description":"0 = Corporation's own CGF; otherwise an Ecosystem"},"version":{"type":"integer"},"created":{"type":"string","format":"date-time"},"active_since":{"type":"string","format":"date-time","nullable":true},"documents":{"type":"array","items":{"$ref":"#/components/schemas/CoGovernanceFrameworkDocument"}}}},"Corporation":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"did":{"type":"string","description":"Globally-unique DID of the Corporation"},"corporation":{"type":"string","nullable":true,"description":"On-chain group_policy_address (assigned by x/group)"},"creator":{"type":"string","nullable":true},"language":{"type":"string","nullable":true},"group_metadata":{"type":"string","nullable":true},"group_policy_metadata":{"type":"string","nullable":true},"decision_policy":{"type":"object","nullable":true,"additionalProperties":true},"doc_url":{"type":"string","nullable":true},"doc_digest_sri":{"type":"string","nullable":true},"created":{"type":"string","format":"date-time"},"modified":{"type":"string","format":"date-time"},"height":{"type":"integer","format":"int64"},"members":{"type":"array","items":{"$ref":"#/components/schemas/CorporationMember"}},"governanceFrameworkVersions":{"type":"array","items":{"$ref":"#/components/schemas/CoGovernanceFrameworkVersion"}}}},"CorporationResponse":{"allOf":[{"$ref":"#/components/schemas/Corporation"}]},"CorporationListResponse":{"type":"object","properties":{"corporations":{"type":"array","items":{"$ref":"#/components/schemas/Corporation"}},"limit":{"type":"integer"},"offset":{"type":"integer"}}},"Error":{"type":"object","properties":{"error":{"type":"string","description":"Error message"},"code":{"type":"integer","description":"HTTP status code"}}},"IndexerTransactionEvent":{"type":"object","properties":{"type":{"type":"string","enum":["indexer-event"]},"event_type":{"type":"string","description":"Transaction action name, such as CreateNewEcosystem, UpdateCredentialSchema, or StartParticipantOP."},"did":{"type":"string"},"block_height":{"type":"integer"},"tx_hash":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"payload":{"type":"object","properties":{"module":{"type":"string","enum":["trust-registry","credential-schema","participant"]},"action":{"type":"string"},"message_type":{"type":"string"},"tx_index":{"type":"integer"},"message_index":{"type":"integer"},"sender":{"type":"string"},"related_dids":{"type":"array","items":{"type":"string"}},"entity_type":{"type":"string"},"entity_id":{"type":"string"}}}},"required":["type","event_type","did","block_height","tx_hash","timestamp","payload"]},"DID":{"type":"object","properties":{"did":{"type":"string","description":"Decentralized Identifier"},"controller":{"type":"string","description":"Controller account address"},"deposit":{"type":"integer","format":"int64","description":"Deposit amount"},"exp":{"type":"string","format":"date-time","description":"Expiration date"},"created":{"type":"string","format":"date-time","description":"Creation date"},"modified":{"type":"string","format":"date-time","description":"Last modification date"}}},"DIDResponse":{"type":"object","properties":{"did":{"$ref":"#/components/schemas/DID"}}},"DIDListResponse":{"type":"object","properties":{"dids":{"type":"array","items":{"$ref":"#/components/schemas/DID"}}}},"DIDHistoryResponse":{"type":"object","properties":{"did":{"type":"array","items":{"type":"object","properties":{"did":{"type":"string"},"years":{"type":"integer"},"controller":{"type":"string"},"deposit":{"type":"integer"},"exp":{"type":"string","format":"date-time"},"created":{"type":"string","format":"date-time"},"changes":{"type":"object"}}}}}},"DIDParamsResponse":{"type":"object","properties":{"params":{"type":"object","properties":{"did_directory_grace_period":{"type":"number","format":"decimal"},"did_directory_trust_deposit":{"type":"number","format":"decimal"}}}}},"EcosystemParamsResponse":{"type":"object","properties":{"params":{"type":"object","properties":{"trust_unit_price":{"type":"number","format":"decimal"},"ecosystem_trust_deposit":{"type":"number","format":"decimal"}}}}},"Ecosystem":{"type":"object","properties":{"id":{"type":"integer"},"did":{"type":"string"},"corporation":{"type":"string"},"created":{"type":"string","format":"date-time"},"modified":{"type":"string","format":"date-time"},"archived":{"type":"string","format":"date-time","nullable":true},"language":{"type":"string"},"active_version":{"type":"integer"},"participants":{"type":"integer","description":"Current number of active participants (participant_state=ACTIVE) in this Ecosystem"},"active_schemas":{"type":"integer","description":"Current number of active schema (not archived) in this Ecosystem"},"archived_schemas":{"type":"integer","description":"Current number of archived schemas in this Ecosystem"},"weight":{"type":"integer","format":"int64","description":"Trust deposit value (sum) of the full participant tree of all the Credential Schemas of this Ecosystem since it was created. Only considers participant deposits, not ecosystem or credential schema deposits."},"issued":{"type":"integer","format":"int64","description":"Total issued credentials (sum) by all issuers of all the Credential Schemas of this Ecosystem since it was created"},"verified":{"type":"integer","description":"Total verified credentials (sum) by all verifiers of all the Credential Schemas of this Ecosystem since it was created"},"ecosystem_slash_events":{"type":"integer","description":"Total ecosystem-governance–based slash events (when an Ecosystem participant is slashed by Ecosystem governance)"},"ecosystem_slashed_amount":{"type":"integer","description":"Cumulated ecosystem-governance–based slashed amount"},"ecosystem_slashed_amount_repaid":{"type":"integer","description":"Cumulated ecosystem-governance–based slashed amount repaid by participants"},"network_slash_events":{"type":"integer","description":"Total network-governance–based slash events (when a full Ecosystem is slashed by Verana Council)"},"network_slashed_amount":{"type":"integer","description":"Cumulated network-governance–based slashed amount"},"network_slashed_amount_repaid":{"type":"integer","description":"Cumulated network-governance–based slashed amount repaid by the ecosystem"},"versions":{"type":"array","items":{"$ref":"#/components/schemas/EcosystemVersion"}},"participants_ecosystem":{"type":"integer"},"participants_issuer_grantor":{"type":"integer"},"participants_issuer":{"type":"integer"},"participants_verifier_grantor":{"type":"integer"},"participants_verifier":{"type":"integer"},"participants_holder":{"type":"integer"},"trust_data":{"type":"object","nullable":true,"additionalProperties":true,"description":"Resolved trust payload for the DID at the same level as did. Null when trust_data=null or trust resolution is unavailable."}}},"EcosystemVersion":{"type":"object","properties":{"id":{"type":"integer"},"ecosystem_id":{"type":"integer"},"created":{"type":"string","format":"date-time"},"version":{"type":"integer"},"active_since":{"type":"string","format":"date-time"},"documents":{"type":"array","items":{"$ref":"#/components/schemas/EcosystemDocument"}}}},"EcosystemDocument":{"type":"object","properties":{"id":{"type":"integer"},"gfv_id":{"type":"integer"},"created":{"type":"string","format":"date-time"},"language":{"type":"string"},"url":{"type":"string"},"digest_sri":{"type":"string"}}},"EcosystemListResponse":{"type":"object","properties":{"ecosystems":{"type":"array","items":{"$ref":"#/components/schemas/Ecosystem"}}}},"EcosystemResponse":{"type":"object","properties":{"ecosystem":{"$ref":"#/components/schemas/Ecosystem"}}},"EcosystemHistoryResponse":{"type":"object","properties":{"ecosystem":{"type":"object","properties":{"id":{"type":"integer"},"did":{"type":"string"},"corporation":{"type":"string"},"created":{"type":"string","format":"date-time"},"modified":{"type":"string","format":"date-time"},"archived":{"type":"string","format":"date-time","nullable":true},"language":{"type":"string"},"active_version":{"type":"integer"},"participants":{"type":"integer","description":"Current number of active participants (participant_state=ACTIVE) in this Ecosystem"},"active_schemas":{"type":"integer","description":"Current number of active schema (not archived) in this Ecosystem"},"archived_schemas":{"type":"integer","description":"Current number of archived schemas in this Ecosystem"},"weight":{"type":"integer","format":"int64","description":"Trust deposit value (sum) of the full participant tree of all the Credential Schemas of this Ecosystem since it was created. Only considers participant deposits, not ecosystem or credential schema deposits."},"issued":{"type":"integer","format":"int64","description":"Total issued credentials (sum) by all issuers of all the Credential Schemas of this Ecosystem since it was created"},"verified":{"type":"integer","format":"int64","description":"Total verified credentials (sum) by all verifiers of all the Credential Schemas of this Ecosystem since it was created"},"ecosystem_slash_events":{"type":"integer","description":"Total ecosystem-governance–based slash events (when an Ecosystem participant is slashed by Ecosystem governance)"},"ecosystem_slashed_amount":{"type":"integer","description":"Cumulated ecosystem-governance–based slashed amount"},"ecosystem_slashed_amount_repaid":{"type":"integer","description":"Cumulated ecosystem-governance–based slashed amount repaid by participants"},"network_slash_events":{"type":"integer","description":"Total network-governance–based slash events (when a full Ecosystem is slashed by Verana Council)"},"network_slashed_amount":{"type":"integer","description":"Cumulated network-governance–based slashed amount"},"network_slashed_amount_repaid":{"type":"integer","description":"Cumulated network-governance–based slashed amount repaid by the ecosystem"},"versions":{"type":"array","items":{"$ref":"#/components/schemas/EcosystemVersion"}}}}}},"CredentialSchema":{"type":"object","properties":{"id":{"type":"integer"},"ecosystem_id":{"type":"integer"},"json_schema":{"type":"string","description":"The exact JSON Schema document as stored from the blockchain (preserves formatting for SRI digest verification). Returned as-is; do not parse or re-serialize."},"issuer_grantor_validation_validity_period":{"type":"integer"},"verifier_grantor_validation_validity_period":{"type":"integer"},"issuer_validation_validity_period":{"type":"integer"},"verifier_validation_validity_period":{"type":"integer"},"holder_validation_validity_period":{"type":"integer"},"issuer_onboarding_mode":{"type":"string","enum":["OPEN","GRANTOR_ONBOARDING_PROCESS","ECOSYSTEM_ONBOARDING_PROCESS"]},"verifier_onboarding_mode":{"type":"string","enum":["OPEN","GRANTOR_ONBOARDING_PROCESS","ECOSYSTEM_ONBOARDING_PROCESS"]},"holder_onboarding_mode":{"type":"string","nullable":true,"enum":["ISSUER_ONBOARDING_PROCESS","PERMISSIONLESS",null]},"pricing_asset_type":{"type":"string","nullable":true},"pricing_asset":{"type":"string","nullable":true},"digest_algorithm":{"type":"string","nullable":true},"archived":{"type":"string","format":"date-time","nullable":true},"created":{"type":"string","format":"date-time"},"modified":{"type":"string","format":"date-time"},"participants":{"type":"integer","description":"Current number of active participants (participant_state=ACTIVE) in this Credential Schema"},"weight":{"type":"integer","description":"Trust deposit value (sum) of the full participant tree of this schema since the schema was created"},"issued":{"type":"integer","description":"Total issued credentials (sum) by all issuers of this Credential Schema since it was created"},"verified":{"type":"integer","description":"Total verified credentials (sum) by all verifiers of this Credential Schema since it was created"},"ecosystem_slash_events":{"type":"integer","description":"Total ecosystem-governance–based slash events (when an ecosystem participant is slashed by ecosystem governance)"},"ecosystem_slashed_amount":{"type":"integer","description":"Cumulated ecosystem-governance–based slashed amount"},"ecosystem_slashed_amount_repaid":{"type":"integer","description":"Cumulated ecosystem-governance–based slashed amount repaid by participants"},"network_slash_events":{"type":"integer","description":"Total network-governance–based slash events (when a full Ecosystem is slashed by Verana Council)"},"network_slashed_amount":{"type":"integer","description":"Cumulated network-governance–based slashed amount"},"network_slashed_amount_repaid":{"type":"integer","description":"Cumulated network-governance–based slashed amount repaid by the ecosystem"},"participants_ecosystem":{"type":"integer"},"participants_issuer_grantor":{"type":"integer"},"participants_issuer":{"type":"integer"},"participants_verifier_grantor":{"type":"integer"},"participants_verifier":{"type":"integer"},"participants_holder":{"type":"integer"},"trust_data":{"type":"object","nullable":true,"additionalProperties":true,"description":"Resolved trust payload for the DID at the same level as did. Null when trust_data=null or trust resolution is unavailable."}}},"CredentialSchemaResponse":{"type":"object","properties":{"schema":{"$ref":"#/components/schemas/CredentialSchema"}}},"CredentialSchemaListResponse":{"type":"object","properties":{"schemas":{"type":"array","items":{"$ref":"#/components/schemas/CredentialSchema"}}}},"CredentialSchemaHistoryResponse":{"type":"object","properties":{"schema":{"type":"object","properties":{"id":{"type":"integer"},"history":{"type":"array","items":{"type":"object"}}}}}},"CredentialSchemaParamsResponse":{"type":"object","properties":{"params":{"type":"object","properties":{"credential_schema_trust_deposit":{"type":"number","format":"decimal"}}}}},"Participant":{"type":"object","properties":{"id":{"type":"integer"},"participant_state":{"type":"string","enum":["REPAID","SLASHED","REVOKED","EXPIRED","ACTIVE","FUTURE","INACTIVE"],"description":"The current state of the participant, calculated based on repaid, slashed, revoked, effective_from, and effective_until fields"},"corporation_available_actions":{"type":"array","items":{"type":"string","enum":["RenewParticipantOP","CancelParticipantOPLastRequest","RevokeParticipant","SetParticipantEffectiveUntil","RepayParticipantSlashedTrustDeposit"]},"description":"VPR messages the owning Corporation MAY execute against this participant at its current state"},"validator_available_actions":{"type":"array","items":{"type":"string","enum":["SetParticipantOPtoValidated","SetParticipantEffectiveUntil","RevokeParticipant","SlashParticipantTrustDeposit"]},"description":"VPR messages the validator Corporation MAY execute against this participant at its current state"},"weight":{"type":"integer","description":"The node weight of the participant, calculated as the sum of all trust deposits of this participant and all participants in its subtree"},"issued":{"type":"integer","description":"Number of credentials issued using this participant and its ancestors"},"verified":{"type":"integer","description":"Number of credentials verified using this participant and its ancestors"},"participants":{"type":"integer","description":"Current number of active participants (participant_state=ACTIVE) (subtree, plus this participant if it is ACTIVE)"},"ecosystem_slash_events":{"type":"integer","description":"Total ecosystem-governance–based slash events (when an ecosystem participant is slashed by ecosystem governance)"},"ecosystem_slashed_amount":{"type":"integer","description":"Cumulated ecosystem-governance–based slashed amount"},"ecosystem_slashed_amount_repaid":{"type":"integer","description":"Cumulated ecosystem-governance–based slashed amount repaid by participants"},"network_slash_events":{"type":"integer","description":"Total network-governance–based slash events (when a full Ecosystem is slashed by Verana Council)"},"network_slashed_amount":{"type":"integer","description":"Cumulated network-governance–based slashed amount"},"network_slashed_amount_repaid":{"type":"integer","description":"Cumulated network-governance–based slashed amount repaid by the ecosystem"},"schema_id":{"type":"integer"},"ecosystem_id":{"type":"integer","nullable":true,"description":"Indexer-derived: the Ecosystem owning the participant's Credential Schema, denormalised from CredentialSchema.ecosystem_id"},"role":{"type":"string","enum":["ISSUER","VERIFIER","ISSUER_GRANTOR","VERIFIER_GRANTOR","ECOSYSTEM","HOLDER"]},"did":{"type":"string","nullable":true},"corporation_id":{"type":"integer","description":"ID of the Corporation that owns this participant (FK to Corporation.id)"},"vs_operator":{"type":"string","nullable":true,"description":"Verifiable service operator account ."},"adjusted":{"type":"string","format":"date-time","nullable":true,"description":"Last participant adjustment time ."},"issuance_fee_discount":{"type":"number"},"verification_fee_discount":{"type":"number"},"created":{"type":"string","format":"date-time"},"modified":{"type":"string","format":"date-time"},"slashed":{"type":"string","format":"date-time","nullable":true},"repaid":{"type":"string","format":"date-time","nullable":true},"effective_from":{"type":"string","format":"date-time","nullable":true},"effective_until":{"type":"string","format":"date-time","nullable":true},"revoked":{"type":"string","format":"date-time","nullable":true},"validation_fees":{"type":"integer"},"issuance_fees":{"type":"integer"},"verification_fees":{"type":"integer"},"deposit":{"type":"integer"},"slashed_deposit":{"type":"integer"},"repaid_deposit":{"type":"integer"},"validator_participant_id":{"type":"integer","nullable":true},"op_state":{"type":"string","nullable":true,"enum":["PENDING","VALIDATED","TERMINATED",null]},"op_last_state_change":{"type":"string","format":"date-time","nullable":true},"op_current_fees":{"type":"integer"},"op_current_deposit":{"type":"integer"},"op_summary_digest":{"type":"string","nullable":true,"description":"VP summary digest"},"op_exp":{"type":"string","format":"date-time","nullable":true},"op_validator_deposit":{"type":"integer"},"participants_ecosystem":{"type":"integer"},"participants_issuer_grantor":{"type":"integer"},"participants_issuer":{"type":"integer"},"participants_verifier_grantor":{"type":"integer"},"participants_verifier":{"type":"integer"},"participants_holder":{"type":"integer"}}},"ParticipantResponse":{"type":"object","properties":{"participant":{"$ref":"#/components/schemas/Participant"}}},"ParticipantListResponse":{"type":"object","properties":{"participants":{"type":"array","items":{"$ref":"#/components/schemas/Participant"}}}},"ParticipantParamsResponse":{"type":"object","properties":{"params":{"type":"object","additionalProperties":true,"description":"The Participant module parameter set as defined by VPR governance. Exact keys are determined by the on-chain parameter set."}}},"EcosystemPending":{"type":"object","properties":{"id":{"type":"integer"},"did":{"type":"string","nullable":true},"pending_tasks":{"type":"integer"},"participants":{"type":"integer"},"schemas":{"type":"array","items":{"$ref":"#/components/schemas/CredentialSchemaPending"}},"trust_data":{"type":"object","nullable":true,"additionalProperties":true,"description":"Resolved trust payload for the DID at the same level as did. Null when trust_data=null or trust resolution is unavailable."}}},"CredentialSchemaPending":{"type":"object","properties":{"id":{"type":"integer"},"title":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"pending_tasks":{"type":"integer"},"participants":{"type":"integer","description":"Active participant count for this schema (scalar; distinct from pending_participants)"},"pending_participants":{"type":"array","items":{"$ref":"#/components/schemas/Participant"},"description":"Participant entries pending action from the validator Corporation"}}},"ParticipantHistoryItem":{"type":"object","properties":{"participant_id":{"type":"integer"},"schema_id":{"type":"integer"},"role":{"type":"string"},"corporation_id":{"type":"integer","description":"ID of the Corporation that owns the participant at this history point"},"event_type":{"type":"string"},"height":{"type":"integer"},"changes":{"type":"object","nullable":true,"description":"Field-level diffs for the event"},"created_at":{"type":"string","format":"date-time"}}},"ParticipantHistoryResponse":{"type":"object","properties":{"history":{"type":"array","items":{"$ref":"#/components/schemas/ParticipantHistoryItem"}}}},"ParticipantSession":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"corporation_id":{"type":"integer","description":"ID of the agent's controlling Corporation"},"vs_operator":{"type":"string","nullable":true,"description":"Verifiable service operator "},"session_records":{"type":"array","description":"ParticipantSessionRecord[] ","items":{"type":"object","properties":{"created":{"type":"string","format":"date-time"},"issuer_participant_id":{"type":"integer","nullable":true},"verifier_participant_id":{"type":"integer","nullable":true},"wallet_agent_participant_id":{"type":"integer","nullable":true},"agent_participant_id":{"type":"integer","nullable":true}}}},"created":{"type":"string","format":"date-time"},"modified":{"type":"string","format":"date-time"}}},"ParticipantSessionResponse":{"type":"object","properties":{"session":{"$ref":"#/components/schemas/ParticipantSession"}}},"ParticipantSessionHistoryItem":{"type":"object","properties":{"session_id":{"type":"string","format":"uuid"},"event_type":{"type":"string"},"height":{"type":"integer"},"corporation_id":{"type":"integer"},"vs_operator":{"type":"string","nullable":true},"agent_participant_id":{"type":"integer"},"wallet_agent_participant_id":{"type":"integer"},"session_records":{"type":"array","items":{"type":"object"}},"changes":{"type":"object","nullable":true},"created_at":{"type":"string","format":"date-time"}}},"ParticipantSessionHistoryResponse":{"type":"object","properties":{"history":{"type":"array","items":{"$ref":"#/components/schemas/ParticipantSessionHistoryItem"}}}},"BeneficiaryResponse":{"type":"object","properties":{"participants":{"type":"array","items":{"$ref":"#/components/schemas/Participant"}}}},"TrustDeposit":{"type":"object","properties":{"corporation_id":{"type":"integer","format":"uint64","description":"Corporation ID (primary key, references Corporation.id, 1:1)"},"deposit":{"type":"integer","description":"Amount of deposit in native denom "},"share":{"type":"integer","description":"Share of the module total deposit"},"refunded":{"type":"integer","description":"Reused-first refunded amount, drawn before pulling from the Corporation's policy_address"},"claimable":{"type":"integer","description":"Indexer-derived accrued yield currently claimable on reclaim, computed as share * trust_deposit_share_value - deposit"},"slashed_deposit":{"type":"integer","description":"Total slashed deposit amount"},"repaid_deposit":{"type":"integer","description":"Total repaid deposit amount"},"last_slashed":{"type":"string","format":"date-time","nullable":true,"description":"Last slash event timestamp"},"last_repaid":{"type":"string","format":"date-time","nullable":true,"description":"Last repay event timestamp"},"slash_count":{"type":"integer","description":"Number of slash events"}}},"ActivityItem":{"type":"object","properties":{"id":{"type":"integer","format":"int64","description":"Indexer-assigned monotonic per-row surrogate key, used as the pagination cursor (distinct from entity_id)"},"timestamp":{"type":"string","format":"date-time","description":"Transaction timestamp (ISO 8601)"},"block_height":{"type":"integer","description":"Block height when the change occurred"},"entity_type":{"type":"string","description":"Entity type (VPR spec name)"},"entity_id":{"type":"string","description":"Entity ID"},"account":{"type":"string","description":"Account address that made the change"},"msg":{"type":"string","description":"Message/action type (e.g., CreateEcosystem, AddGovernanceFrameworkDocument, CreateRootParticipant, CreateOrUpdateParticipantSession; TrustDeposit history uses UPPER_SNAKE tokens such as ADJUST_TRUST_DEPOSIT)"},"changes":{"type":"object","description":"Object containing the changed fields and their values. The structure varies by message type.","additionalProperties":true}},"required":["timestamp","block_height","entity_type","entity_id","msg","changes"]},"ActivityTimelineResponse":{"type":"object","properties":{"entity_type":{"type":"string","description":"The entity type (VPR spec name)","enum":["Corporation","Ecosystem","CredentialSchema","GovernanceFrameworkDocument","GovernanceFrameworkVersion","Participant","TrustDeposit","ParticipantSession"]},"entity_id":{"type":"string","description":"The entity ID"},"activity":{"type":"array","description":"List of activity items ordered by timestamp descending","items":{"$ref":"#/components/schemas/ActivityItem"}}},"required":["entity_type","entity_id","activity"]},"TrustDepositResponse":{"type":"object","properties":{"trust_deposit":{"$ref":"#/components/schemas/TrustDeposit"}}},"TrustDepositParamsResponse":{"type":"object","properties":{"params":{"type":"object","properties":{"trust_deposit_rate":{"type":"number","format":"decimal","description":"Trust deposit interest rate","example":0.2},"user_agent_reward_rate":{"type":"number","format":"decimal","description":"User agent reward rate","example":0.2},"trust_deposit_share_value":{"type":"number","format":"decimal","description":"Value of each trust deposit share","example":1},"wallet_user_agent_reward_rate":{"type":"number","format":"decimal","description":"Wallet user agent reward rate","example":0.2},"trust_deposit_reclaim_burn_rate":{"type":"number","format":"decimal","description":"Burn rate for reclaimed trust deposits","example":0.6}}}}},"TrustDepositHistoryItem":{"type":"object","properties":{"id":{"type":"integer","description":"History record ID"},"corporation":{"type":"string","description":"Corporation  address "},"share":{"type":"integer","description":"Share amount at this point"},"deposit":{"type":"integer","description":"Deposit amount at this point "},"claimable":{"type":"integer","description":"Claimable amount at this point"},"slashed_deposit":{"type":"integer","description":"Slashed deposit at this point"},"repaid_deposit":{"type":"integer","description":"Repaid deposit at this point"},"last_slashed":{"type":"string","format":"date-time","nullable":true,"description":"Last slashed timestamp"},"last_repaid":{"type":"string","format":"date-time","nullable":true,"description":"Last repaid timestamp"},"slash_count":{"type":"integer","description":"Slash count at this point"},"event_type":{"type":"string","enum":["CREATE_TRUST_DEPOSIT","ADJUST_TRUST_DEPOSIT","SLASH_TRUST_DEPOSIT","SLASH_PARTICIPANT_TRUST_DEPOSIT","RECLAIM_YIELD","RECLAIM_DEPOSIT","REPAY_SLASHED"],"description":"Type of event that caused this history record"},"height":{"type":"integer","description":"Block height when this change occurred"},"changes":{"type":"object","nullable":true,"description":"Field-level diffs showing what changed"},"created_at":{"type":"string","format":"date-time","description":"When this history record was created"}}},"TrustDepositHistoryResponse":{"type":"object","properties":{"history":{"type":"array","items":{"$ref":"#/components/schemas/TrustDepositHistoryItem"}}}},"SlashEvent":{"type":"object","properties":{"slashed_amount":{"type":"integer","description":"Amount slashed"},"slashed_ts":{"type":"string","format":"date-time","description":"Slash timestamp"},"slashed_by":{"type":"string","description":"Account that performed the slash"}}},"RepaymentEvent":{"type":"object","properties":{"repaid_amount":{"type":"integer","description":"Amount repaid"},"repaid_ts":{"type":"string","format":"date-time","description":"Repayment timestamp"},"repaid_by":{"type":"string","description":"Account that performed the repayment"}}},"EcosystemReputation":{"type":"object","properties":{"ecosystem_id":{"type":"integer","description":"Ecosystem ID"},"tr_did":{"type":"string","description":"Ecosystem DID"},"schemas":{"type":"array","items":{"$ref":"#/components/schemas/CredentialSchemaReputation"},"description":"Reputation details per credential schema"}}},"CredentialSchemaReputation":{"type":"object","properties":{"schema_id":{"type":"integer","description":"Credential Schema ID"},"deposit":{"type":"integer","format":"int64","description":"Deposit amount for this schema"},"slashed":{"type":"integer","description":"Slashed amount for this schema"},"repaid":{"type":"integer","description":"Repaid amount for this schema"},"slash_count":{"type":"integer","description":"Number of slash events for this schema"},"issued":{"type":"integer","description":"Number of credentials issued"},"verified":{"type":"integer","description":"Number of credentials verified"},"run_as_validator_vps":{"type":"integer","description":"Number of validation processes run as validator"},"run_as_applicant_vps":{"type":"integer","description":"Number of validation processes run as applicant"},"issuer_participant_count":{"type":"integer","description":"Total issuer participants"},"verifier_participant_count":{"type":"integer","description":"Total verifier participants"},"issuer_grantor_participant_count":{"type":"integer","description":"Total issuer grantor participants"},"verifier_grantor_participant_count":{"type":"integer","description":"Total verifier grantor participants"},"ecosystem_participant_count":{"type":"integer","description":"Total ecosystem participants"},"active_issuer_participant_count":{"type":"integer","description":"Active issuer participants"},"active_verifier_participant_count":{"type":"integer","description":"Active verifier participants"},"active_issuer_grantor_participant_count":{"type":"integer","description":"Active issuer grantor participants"},"active_verifier_grantor_participant_count":{"type":"integer","description":"Active verifier grantor participants"},"active_ecosystem_participant_count":{"type":"integer","description":"Active ecosystem participants"},"slashs":{"type":"array","items":{"$ref":"#/components/schemas/SchemaSlashEvent"},"description":"Schema-specific slash events"},"repayments":{"type":"array","items":{"$ref":"#/components/schemas/SchemaRepaymentEvent"},"description":"Schema-specific repayment events"}}},"SchemaSlashEvent":{"type":"object","properties":{"participant_id":{"type":"integer","description":"Participant ID that was slashed"},"schema_id":{"type":"integer","description":"Schema ID"},"ecosystem_id":{"type":"integer","description":"Ecosystem ID"},"slashed_ts":{"type":"string","format":"date-time","description":"Slash timestamp"},"slashed_by":{"type":"string","description":"Account that performed the slash"}}},"SchemaRepaymentEvent":{"type":"object","properties":{"participant_id":{"type":"integer","description":"Participant ID that was repaid"},"schema_id":{"type":"integer","description":"Schema ID"},"ecosystem_id":{"type":"integer","description":"Ecosystem ID"},"repaid_ts":{"type":"string","format":"date-time","description":"Repayment timestamp"},"repaid_by":{"type":"string","description":"Account that performed the repayment"}}},"StatsEntry":{"type":"object","properties":{"id":{"type":"integer","description":"ID of the statistics entry"},"granularity":{"type":"string","enum":["HOUR","DAY","MONTH"],"description":"Granularity of the statistics"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp at Z"},"entity_type":{"type":"string","enum":["GLOBAL","ECOSYSTEM","CREDENTIAL_SCHEMA","PARTICIPANT"],"description":"Type of entity"},"entity_id":{"type":"integer","description":"ID of the entity (null for GLOBAL)"},"cumulative_participants":{"type":"integer","description":"Cumulative participants (subtree for PARTICIPANT)"},"cumulative_active_ecosystems":{"type":"integer","description":"Cumulative non-archived ecosystems (1/0 for an ECOSYSTEM row, 0 for CREDENTIAL_SCHEMA and PARTICIPANT rows)"},"cumulative_archived_ecosystems":{"type":"integer","description":"Cumulative archived ecosystems (1/0 for an ECOSYSTEM row, 0 for CREDENTIAL_SCHEMA and PARTICIPANT rows)"},"cumulative_active_schemas":{"type":"integer","description":"Cumulative active schemas"},"cumulative_archived_schemas":{"type":"integer","description":"Cumulative archived schemas"},"cumulative_weight":{"type":"integer","description":"Cumulative weight"},"cumulative_issued":{"type":"integer","description":"Cumulative issued"},"cumulative_verified":{"type":"integer","description":"Cumulative verified"},"cumulative_ecosystem_slash_events":{"type":"integer","description":"Cumulative ecosystem slash events"},"cumulative_ecosystem_slashed_amount":{"type":"integer","description":"Cumulative ecosystem slashed amount"},"cumulative_ecosystem_slashed_amount_repaid":{"type":"integer","description":"Cumulative ecosystem slashed amount repaid"},"cumulative_network_slash_events":{"type":"integer","description":"Cumulative network slash events"},"cumulative_network_slashed_amount":{"type":"integer","description":"Cumulative network slashed amount"},"cumulative_network_slashed_amount_repaid":{"type":"integer","description":"Cumulative network slashed amount repaid"},"delta_participants":{"type":"integer","description":"Delta participants (change since previous measurement)"},"delta_active_ecosystems":{"type":"integer","description":"Delta non-archived ecosystems"},"delta_archived_ecosystems":{"type":"integer","description":"Delta archived ecosystems"},"delta_active_schemas":{"type":"integer","description":"Delta active schemas"},"delta_archived_schemas":{"type":"integer","description":"Delta archived schemas"},"delta_weight":{"type":"integer","description":"Delta weight"},"delta_issued":{"type":"integer","description":"Delta issued"},"delta_verified":{"type":"integer","description":"Delta verified"},"delta_ecosystem_slash_events":{"type":"integer","description":"Delta ecosystem slash events"},"delta_ecosystem_slashed_amount":{"type":"integer","description":"Delta ecosystem slashed amount"},"delta_ecosystem_slashed_amount_repaid":{"type":"integer","description":"Delta ecosystem slashed amount repaid"},"delta_network_slash_events":{"type":"integer","description":"Delta network slash events"},"delta_network_slashed_amount":{"type":"integer","description":"Delta network slashed amount"},"delta_network_slashed_amount_repaid":{"type":"integer","description":"Delta network slashed amount repaid"}}},"StatsBucket":{"type":"object","properties":{"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp at Z"},"cumulative_participants":{"type":"integer"},"cumulative_active_ecosystems":{"type":"integer"},"cumulative_archived_ecosystems":{"type":"integer"},"cumulative_active_schemas":{"type":"integer"},"cumulative_archived_schemas":{"type":"integer"},"cumulative_weight":{"type":"integer"},"cumulative_issued":{"type":"integer"},"cumulative_verified":{"type":"integer"},"cumulative_ecosystem_slash_events":{"type":"integer"},"cumulative_ecosystem_slashed_amount":{"type":"integer"},"cumulative_ecosystem_slashed_amount_repaid":{"type":"integer"},"cumulative_network_slash_events":{"type":"integer"},"cumulative_network_slashed_amount":{"type":"integer"},"cumulative_network_slashed_amount_repaid":{"type":"integer"},"delta_participants":{"type":"integer"},"delta_active_ecosystems":{"type":"integer"},"delta_archived_ecosystems":{"type":"integer"},"delta_active_schemas":{"type":"integer"},"delta_archived_schemas":{"type":"integer"},"delta_weight":{"type":"integer"},"delta_issued":{"type":"integer"},"delta_verified":{"type":"integer"},"delta_ecosystem_slash_events":{"type":"integer"},"delta_ecosystem_slashed_amount":{"type":"integer"},"delta_ecosystem_slashed_amount_repaid":{"type":"integer"},"delta_network_slash_events":{"type":"integer"},"delta_network_slashed_amount":{"type":"integer"},"delta_network_slashed_amount_repaid":{"type":"integer"}}},"StatsTotal":{"type":"object","properties":{"delta_participants":{"type":"integer"},"delta_active_ecosystems":{"type":"integer"},"delta_archived_ecosystems":{"type":"integer"},"delta_active_schemas":{"type":"integer"},"delta_archived_schemas":{"type":"integer"},"delta_weight":{"type":"integer"},"delta_issued":{"type":"integer"},"delta_verified":{"type":"integer"},"delta_ecosystem_slash_events":{"type":"integer"},"delta_ecosystem_slashed_amount":{"type":"integer"},"delta_ecosystem_slashed_amount_repaid":{"type":"integer"},"delta_network_slash_events":{"type":"integer"},"delta_network_slashed_amount":{"type":"integer"},"delta_network_slashed_amount_repaid":{"type":"integer"}}},"StatsResponse":{"type":"object","properties":{"granularity":{"type":"string","enum":["HOUR","DAY","MONTH"],"description":"Effective granularity used for the response"},"timestamp_from":{"type":"string","format":"date-time","description":"ISO 8601 timestamp at Z (inclusive start)"},"timestamp_until":{"type":"string","format":"date-time","description":"ISO 8601 timestamp at Z (exclusive end)"},"entity_type":{"type":"string","enum":["GLOBAL","ECOSYSTEM","CREDENTIAL_SCHEMA","PARTICIPANT"]},"entity_ids":{"type":"string","description":"Comma-separated list of entity IDs (e.g. '1,2,3') or repeated query params. Must be empty for GLOBAL."},"result_type":{"type":"string","enum":["BUCKETS","TOTAL","BUCKETS_AND_TOTAL"]},"buckets":{"type":"array","items":{"$ref":"#/components/schemas/StatsBucket"},"description":"Time buckets (present if result_type is BUCKETS or BUCKETS_AND_TOTAL)"},"total":{"$ref":"#/components/schemas/StatsTotal","description":"Aggregated totals (present if result_type is TOTAL or BUCKETS_AND_TOTAL)"}}},"StatsSnapshot":{"type":"object","required":["entity_type","entity_id","block_height","timestamp"],"properties":{"entity_type":{"type":"string","enum":["GLOBAL","ECOSYSTEM","CREDENTIAL_SCHEMA","PARTICIPANT"]},"entity_id":{"type":"integer","nullable":true,"description":"null for GLOBAL"},"block_height":{"type":"integer","description":"The resolved evaluation block height"},"timestamp":{"type":"string","format":"date-time","nullable":true,"description":"Time of the resolved evaluation block"},"participants":{"type":"integer"},"participants_ecosystem":{"type":"integer"},"participants_issuer_grantor":{"type":"integer"},"participants_issuer":{"type":"integer"},"participants_verifier_grantor":{"type":"integer"},"participants_verifier":{"type":"integer"},"participants_holder":{"type":"integer"},"active_ecosystems":{"type":"integer"},"archived_ecosystems":{"type":"integer"},"active_schemas":{"type":"integer"},"archived_schemas":{"type":"integer"},"weight":{"type":"integer","format":"int64"},"issued":{"type":"integer"},"verified":{"type":"integer"},"ecosystem_slash_events":{"type":"integer"},"ecosystem_slashed_amount":{"type":"integer","format":"int64"},"ecosystem_slashed_amount_repaid":{"type":"integer","format":"int64"},"network_slash_events":{"type":"integer"},"network_slashed_amount":{"type":"integer","format":"int64"},"network_slashed_amount_repaid":{"type":"integer","format":"int64"}}},"PendingFlatResponse":{"type":"object","properties":{"ecosystems":{"type":"array","description":"Ecosystems with nested credential schemas and enriched participant rows (see implementation for full participant fields).","items":{"$ref":"#/components/schemas/EcosystemPending"}}}},"GlobalMetricsResponse":{"type":"object","properties":{"participants":{"type":"integer"},"active_ecosystems":{"type":"integer"},"archived_ecosystems":{"type":"integer"},"active_schemas":{"type":"integer"},"archived_schemas":{"type":"integer"},"weight":{"type":"integer","format":"int64"},"issued":{"type":"integer"},"verified":{"type":"integer"},"ecosystem_slash_events":{"type":"integer"},"ecosystem_slashed_amount":{"type":"integer","format":"int64"},"ecosystem_slashed_amount_repaid":{"type":"integer","format":"int64"},"network_slash_events":{"type":"integer"},"network_slashed_amount":{"type":"integer","format":"int64"},"network_slashed_amount_repaid":{"type":"integer","format":"int64"},"participants_ecosystem":{"type":"integer"},"participants_issuer_grantor":{"type":"integer"},"participants_issuer":{"type":"integer"},"participants_verifier_grantor":{"type":"integer"},"participants_verifier":{"type":"integer"},"participants_holder":{"type":"integer"}}},"GetPriceResponse":{"type":"object","required":["price","base_asset_type","base_asset","quote_asset_type","quote_asset"],"properties":{"price":{"type":"string","description":"Base-10 unsigned integer string in the quote asset's base units"},"base_asset_type":{"type":"string","enum":["TU","COIN","FIAT"]},"base_asset":{"type":"string"},"quote_asset_type":{"type":"string","enum":["TU","COIN","FIAT"]},"quote_asset":{"type":"string"},"rate":{"type":"string","description":"Base-10 unsigned integer rate. Omitted when base and quote asset are identical."},"rate_scale":{"type":"integer","format":"int32","description":"Number of decimal digits used to scale rate. Omitted when base and quote asset are identical."},"expires":{"type":"string","format":"date-time","description":"Expiry timestamp of the ExchangeRate entry. Omitted when base and quote asset are identical."}}},"VtGovernanceFramework":{"type":"object","required":["version","documents"],"description":"Active Governance Framework (CGF on a Corporation, EGF on an Ecosystem).","properties":{"version":{"type":"integer","minimum":1},"activeSince":{"type":"string","format":"date-time"},"documents":{"type":"array","items":{"type":"object","required":["language","url","digestSri"],"properties":{"language":{"type":"string"},"url":{"type":"string","format":"uri"},"digestSri":{"type":"string"}}}}}},"VtParticipantsByRole":{"type":"object","description":"Participant counts keyed by role. Roles with zero participants MAY be omitted.","properties":{"HOLDER":{"type":"integer","minimum":0},"ISSUER":{"type":"integer","minimum":0},"VERIFIER":{"type":"integer","minimum":0},"ISSUER_GRANTOR":{"type":"integer","minimum":0},"VERIFIER_GRANTOR":{"type":"integer","minimum":0},"ECOSYSTEM":{"type":"integer","minimum":0}}},"VtCorporation":{"type":"object","required":["id","policyAddress","deposit"],"description":"The Corporation the DID represents (whose `did` equals the resolved DID).","properties":{"id":{"type":"integer","minimum":0},"policyAddress":{"type":"string"},"deposit":{"type":"string"},"lastSlashedAtTime":{"type":"string","format":"date-time"},"slashedEvents":{"type":"integer","minimum":0},"slashedValue":{"type":"string"},"cgf":{"$ref":"#/components/schemas/VtGovernanceFramework"}}},"VtParticipation":{"type":"object","required":["id","vsOperator","role","state","credentialSchemaId","ecosystemId","weight","validatorParticipantId"],"properties":{"id":{"type":"integer","minimum":0},"vsOperator":{"type":["string","null"]},"role":{"type":"string","enum":["HOLDER","ISSUER","VERIFIER","ISSUER_GRANTOR","VERIFIER_GRANTOR","ECOSYSTEM"]},"state":{"type":"string","enum":["ACTIVE","FUTURE","INACTIVE","EXPIRED","REVOKED","SLASHED","REPAID"]},"credentialSchemaId":{"type":"integer","minimum":0},"ecosystemId":{"type":"integer","minimum":0},"weight":{"type":"string"},"issuedCredentials":{"type":"integer","minimum":0},"verifiedCredentials":{"type":"integer","minimum":0},"participants":{"$ref":"#/components/schemas/VtParticipantsByRole"},"validatorParticipantId":{"type":["integer","null"],"minimum":0}}},"VtEcsCredential":{"type":"object","required":["ecsSchema","ecsSchemaVersion","credentialSchemaId","issuerParticipantId","ecosystemId","participantId","id","digestJCS","issuedAtTime","validFrom","validUntil","credentialSubject"],"properties":{"ecsSchema":{"type":"string","enum":["ServiceCredential","OrganizationCredential","PersonaCredential","UserAgentCredential","BadgeCredential"]},"ecsSchemaVersion":{"type":"string","enum":["v1","v4"]},"credentialSchemaId":{"type":"integer","minimum":0},"issuerParticipantId":{"type":"integer","minimum":0},"ecosystemId":{"type":"integer","minimum":0},"participantId":{"type":"integer","minimum":0},"id":{"type":"string"},"digestJCS":{"type":"string"},"issuedAtTime":{"type":"string","format":"date-time"},"validFrom":{"type":"string","format":"date-time","nullable":true},"validUntil":{"type":"string","format":"date-time","nullable":true},"credentialSubject":{"type":"object"}}},"VtPresentation":{"type":"object","required":["id","vtcCredentials","serviceId"],"properties":{"id":{"type":"string","format":"uri"},"serviceId":{"type":"string","pattern":"^did:"},"vtcCredentials":{"type":"array","items":{"type":"object","required":["id","credentialSchemaId","ecosystemId","participantId","issuerParticipantId"],"properties":{"id":{"type":"string"},"credentialSchemaId":{"type":"integer","minimum":0},"ecosystemId":{"type":"integer","minimum":0},"participantId":{"type":"integer","minimum":0},"issuerParticipantId":{"type":"integer","minimum":0}}}},"unresolvableCredentialIds":{"type":"array","items":{"type":"string"}},"invalidCredentialIds":{"type":"array","items":{"type":"string"}}}},"VtServiceEndpoint":{"type":"object","required":["id","type","serviceEndpoint"],"properties":{"id":{"type":"string","pattern":"^did:"},"type":{"type":"string"},"serviceEndpoint":{"oneOf":[{"type":"string"},{"type":"object"}]},"accept":{"type":"array","items":{"type":"string"}}}},"VtEcosystemSchema":{"type":"object","required":["id","type","digestSri","archived"],"properties":{"id":{"type":"integer","minimum":0},"type":{"type":"string","enum":["JsonSchema"]},"digestSri":{"type":"string"},"archived":{"type":"boolean"},"participants":{"$ref":"#/components/schemas/VtParticipantsByRole"},"issuedCredentials":{"type":"integer","minimum":0},"verifiedCredentials":{"type":"integer","minimum":0}}},"VtEcosystem":{"type":"object","required":["id","corporationId","archived"],"properties":{"id":{"type":"integer","minimum":0},"corporationId":{"type":"integer","minimum":0},"archived":{"type":"boolean"},"egf":{"$ref":"#/components/schemas/VtGovernanceFramework"},"credentialSchemas":{"type":"array","items":{"$ref":"#/components/schemas/VtEcosystemSchema"}},"participants":{"$ref":"#/components/schemas/VtParticipantsByRole"},"issuedCredentials":{"type":"integer","minimum":0},"verifiedCredentials":{"type":"integer","minimum":0}}},"ExchangeRate":{"type":"object","required":["id","base_asset_type","base_asset","quote_asset_type","quote_asset","rate","rate_scale","expires","state"],"properties":{"id":{"type":"integer"},"base_asset_type":{"type":"string","enum":["TU","COIN","FIAT"]},"base_asset":{"type":"string"},"quote_asset_type":{"type":"string","enum":["TU","COIN","FIAT"]},"quote_asset":{"type":"string"},"rate":{"type":"string"},"rate_scale":{"type":"integer"},"validity_duration":{"type":"integer"},"updated":{"type":"string","format":"date-time"},"expires":{"type":"string","format":"date-time"},"state":{"type":"boolean"}}},"Digest":{"type":"object","required":["digest","created"],"properties":{"digest":{"type":"string"},"created":{"type":"string","format":"date-time"}}},"DenomAmount":{"type":"object","required":["denom","amount"],"properties":{"denom":{"type":"string"},"amount":{"type":"string"}}},"OperatorAuthorization":{"type":"object","description":"A corporation's authorization granted to a specific operator account for one or more module message types (IDX-DE-QRY-3). Fee-payment capability is not part of OperatorAuthorization; it lives on the separate FeeGrant entity, queried via List Fee Grants (IDX-DE-QRY-5).","required":["id","corporation_id","operator","msg_types"],"properties":{"id":{"type":"integer","format":"uint64"},"corporation_id":{"type":"integer","format":"uint64"},"operator":{"type":"string"},"msg_types":{"type":"array","items":{"type":"string"}},"spend_limit":{"type":"array","items":{"$ref":"#/components/schemas/DenomAmount"}},"remaining_spend":{"type":"array","items":{"$ref":"#/components/schemas/DenomAmount"},"description":"Present when spend_limit is set."},"expiration":{"type":"string","format":"date-time"},"period":{"type":"string","description":"Reset period for spend_limit, as a duration (e.g. \"86400s\")."}}},"ParticipantAuthorizationRecord":{"type":"object","description":"A per-Participant VS-operator authorization nested inside a VSOperatorAuthorization.","required":["participant_id","msg_types","with_feegrant"],"properties":{"participant_id":{"type":"integer","format":"uint64"},"msg_types":{"type":"array","items":{"type":"string"}},"spend_limit":{"type":"array","items":{"$ref":"#/components/schemas/DenomAmount"}},"remaining_spend":{"type":"array","items":{"$ref":"#/components/schemas/DenomAmount"},"description":"Present when spend_limit is set."},"fee_spend_limit":{"type":"array","items":{"$ref":"#/components/schemas/DenomAmount"}},"remaining_fee_spend":{"type":"array","items":{"$ref":"#/components/schemas/DenomAmount"},"description":"Present when fee_spend_limit is set."},"with_feegrant":{"type":"boolean"},"expiration":{"type":"string","format":"date-time"},"period":{"type":"string","description":"Reset period, as a duration (e.g. \"86400s\")."}}},"VSOperatorAuthorization":{"type":"object","description":"A corporation's VS-operator authorization container, holding one ParticipantAuthorizationRecord per controlled Participant (IDX-DE-QRY-2).","required":["id","corporation_id","vs_operator","records"],"properties":{"id":{"type":"integer","format":"uint64"},"corporation_id":{"type":"integer","format":"uint64"},"vs_operator":{"type":"string"},"records":{"type":"array","items":{"$ref":"#/components/schemas/ParticipantAuthorizationRecord"}}}},"GroupMember":{"type":"object","required":["address","weight"],"properties":{"address":{"type":"string"},"weight":{"type":"string","description":"Decimal string"},"metadata":{"type":"string"},"added_at":{"type":"string","format":"date-time"}}},"CorporationGroup":{"type":"object","description":"The x/group state backing a Corporation (IDX-GR-QRY-1). The admin of both group and policy is the policy address itself (group_policy_as_admin is always true).","required":["corporation_id","group_id","version","total_weight","policy","members"],"properties":{"corporation_id":{"type":"integer","format":"uint64"},"group_id":{"type":"integer","format":"uint64"},"version":{"type":"integer","description":"Bumped on membership changes"},"total_weight":{"type":"string","description":"Decimal string"},"created_at":{"type":"string","format":"date-time"},"policy":{"type":"object","required":["address","version"],"properties":{"address":{"type":"string","description":"Equals the Corporation's policy_address"},"version":{"type":"integer"},"decision_policy":{"type":"object","description":"x/group decision policy surfaced verbatim (ThresholdDecisionPolicy or PercentageDecisionPolicy)"}}},"members":{"type":"array","items":{"$ref":"#/components/schemas/GroupMember"},"description":"Full list inline; corporation groups are small by construction"}}},"CorporationMembership":{"type":"object","required":["corporation_id","weight"],"properties":{"corporation_id":{"type":"integer","format":"uint64"},"weight":{"type":"string","description":"The member's weight in that group, decimal string"},"metadata":{"type":"string"},"added_at":{"type":"string","format":"date-time"}}},"GroupTally":{"type":"object","required":["yes_count","no_count","abstain_count","no_with_veto_count"],"properties":{"yes_count":{"type":"string"},"no_count":{"type":"string"},"abstain_count":{"type":"string"},"no_with_veto_count":{"type":"string"}}},"GroupProposal":{"type":"object","description":"An x/group proposal targeting a Corporation-anchored group policy (IDX-GR-QRY-3/4). corporation_id and tally are indexer-derived; tally is the running tally over indexed votes and equals final_tally_result once the proposal closes.","required":["id","corporation_id","group_policy_address","proposers","submit_time","status","executor_result","messages","tally"],"properties":{"id":{"type":"integer","format":"uint64"},"corporation_id":{"type":"integer","format":"uint64"},"group_policy_address":{"type":"string"},"metadata":{"type":"string"},"proposers":{"type":"array","items":{"type":"string"}},"submit_time":{"type":"string","format":"date-time"},"group_version":{"type":"integer","format":"uint64"},"group_policy_version":{"type":"integer","format":"uint64"},"status":{"type":"string","enum":["SUBMITTED","ACCEPTED","REJECTED","ABORTED","WITHDRAWN"]},"voting_period_end":{"type":"string","format":"date-time"},"executor_result":{"type":"string","enum":["NOT_RUN","SUCCESS","FAILURE"]},"messages":{"type":"array","items":{"type":"object"},"description":"The wrapped Msgs JSON-decoded with their @type"},"final_tally_result":{"oneOf":[{"$ref":"#/components/schemas/GroupTally"},{"type":"null"}],"description":"null until the proposal closes"},"tally":{"$ref":"#/components/schemas/GroupTally"}}},"GroupVote":{"type":"object","description":"A vote on a Corporation-anchored proposal (IDX-GR-QRY-5). id is indexer-assigned and serves as the pagination cursor.","required":["id","proposal_id","voter","option","submit_time"],"properties":{"id":{"type":"integer","format":"uint64"},"proposal_id":{"type":"integer","format":"uint64"},"voter":{"type":"string"},"option":{"type":"string","enum":["YES","NO","ABSTAIN","NO_WITH_VETO"]},"metadata":{"type":"string"},"submit_time":{"type":"string","format":"date-time"}}},"FeeGrant":{"type":"object","description":"A grant through which a Corporation pays network transaction fees on behalf of a grantee account (IDX-DE-QRY-5).","required":["id","grantor_corporation_id","grantee","msg_types"],"properties":{"id":{"type":"integer","format":"uint64","description":"Indexer-assigned per-row id, used as the pagination cursor. The VPR FeeGrant has no on-chain id."},"grantor_corporation_id":{"type":"integer","format":"uint64"},"grantee":{"type":"string"},"msg_types":{"type":"array","items":{"type":"string"},"description":"Message types the fee allowance applies to. Empty means the allowance carries no message filter and covers every type."},"spend_limit":{"type":"array","items":{"$ref":"#/components/schemas/DenomAmount"}},"remaining_spend":{"type":"array","items":{"$ref":"#/components/schemas/DenomAmount"},"description":"Present when spend_limit is set. Sourced from the underlying x/feegrant allowance's running balance; zero once the allowance is exhausted."},"expiration":{"type":"string","format":"date-time","description":"For periodic grants this is the allowance's current period_reset, the end of the current auto-renewing cycle."},"period":{"type":"string","description":"Reset period for spend_limit, as a duration (e.g. \"86400s\")."}}},"ResolutionResponse":{"type":"object","required":["did","trusted","evaluatedAtTime","evaluatedAtBlock","expiresAtTime","corporationId"],"description":"Response of `POST /v4/verifiable-trust/resolve` (IDX-VT-QRY-1). Core fields are always present; optional sections appear only when their request selector was set.","properties":{"did":{"type":"string","pattern":"^did:"},"trusted":{"type":"boolean"},"evaluatedAtTime":{"type":"string","format":"date-time"},"evaluatedAtBlock":{"type":"integer","minimum":0},"expiresAtTime":{"type":["string","null"],"format":"date-time","description":"Earliest expiry boundary of the credentials the DID's trust state rests on: the soonest `validUntil` of its ECS service / service-provider credential and the soonest `effective_until` of the matching Participant entries. Null when none of them declares an expiry, and therefore when the DID has no stored evaluation at the requested block."},"corporationId":{"type":"integer","minimum":0},"corporation":{"$ref":"#/components/schemas/VtCorporation"},"participations":{"type":"array","items":{"$ref":"#/components/schemas/VtParticipation"}},"ecsCredentials":{"type":"array","items":{"$ref":"#/components/schemas/VtEcsCredential"}},"presentations":{"type":"array","items":{"$ref":"#/components/schemas/VtPresentation"}},"services":{"type":"array","items":{"$ref":"#/components/schemas/VtServiceEndpoint"}},"ecosystems":{"type":"array","items":{"$ref":"#/components/schemas/VtEcosystem"}}}},"CorporationV4":{"type":"object","description":"A Corporation with on-chain fields plus indexer-computed aggregates (IDX-CO-QRY-1).","properties":{"id":{"type":"integer","description":"uint64 Corporation id"},"did":{"type":"string"},"policy_address":{"type":["string","null"],"description":"On-chain account that signs for the Corporation"},"language":{"type":["string","null"]},"active_version":{"type":["integer","null"],"description":"Active CGF version"},"created":{"type":"string","format":"date-time"},"modified":{"type":"string","format":"date-time"},"controlled_ecosystems":{"type":"integer","description":"Count of Ecosystems owned by this Corporation"},"participants":{"type":"integer"},"participants_ecosystem":{"type":"integer"},"participants_issuer_grantor":{"type":"integer"},"participants_issuer":{"type":"integer"},"participants_verifier_grantor":{"type":"integer"},"participants_verifier":{"type":"integer"},"participants_holder":{"type":"integer"},"deposit":{"type":"integer"},"share":{"type":"integer"},"refunded":{"type":"integer"},"slashed_deposit":{"type":"integer"},"repaid_deposit":{"type":"integer"},"slash_count":{"type":"integer"},"last_slashed":{"type":["string","null"]},"last_repaid":{"type":["string","null"]},"versions":{"type":"array","description":"CGF versions (omitted when gf_data=none)","items":{"$ref":"#/components/schemas/CoGovernanceFrameworkVersion"}}},"required":["id","did","policy_address","active_version","created","modified","controlled_ecosystems"]},"CorporationV4Response":{"type":"object","properties":{"corporation":{"$ref":"#/components/schemas/CorporationV4"},"block_height":{"type":"integer","description":"Resolved indexed height (echoes At-Block-Height when supplied)"}},"required":["corporation","block_height"]},"CorporationV4ListResponse":{"type":"object","properties":{"corporations":{"type":"array","items":{"$ref":"#/components/schemas/CorporationV4"}}},"required":["corporations"]},"CorporationParamsResponse":{"type":"object","properties":{"params":{"type":"object","description":"Corporation module parameter set. The x/co module currently defines no parameters (reserved for forward compatibility); an empty object is returned.","additionalProperties":true}},"required":["params"]},"GovernanceFrameworkDocumentV4":{"type":"object","properties":{"id":{"type":"integer","format":"int64","nullable":true,"description":"Chain-assigned document ID; null for rows indexed before chain-id capture"},"gfv_id":{"type":"integer","format":"int64","nullable":true,"description":"Owning GovernanceFrameworkVersion chain ID"},"created":{"type":"string","format":"date-time"},"language":{"type":"string"},"url":{"type":"string"},"digest_sri":{"type":"string"}}},"GovernanceFrameworkVersionV4":{"type":"object","description":"Exactly one of ecosystem_id and corporation_id is set","properties":{"id":{"type":"integer","format":"int64","description":"Chain-assigned global GovernanceFrameworkVersion ID"},"ecosystem_id":{"type":"integer","format":"int64","nullable":true,"description":"Owning Ecosystem (set iff EGF)"},"corporation_id":{"type":"integer","format":"int64","nullable":true,"description":"Owning Corporation (set iff CGF)"},"created":{"type":"string","format":"date-time"},"version":{"type":"integer"},"active_since":{"type":"string","format":"date-time","nullable":true},"documents":{"type":"array","items":{"$ref":"#/components/schemas/GovernanceFrameworkDocumentV4"}}}},"GovernanceFrameworkVersionV4Response":{"type":"object","properties":{"version":{"$ref":"#/components/schemas/GovernanceFrameworkVersionV4"}},"required":["version"]},"GovernanceFrameworkVersionV4ListResponse":{"type":"object","properties":{"versions":{"type":"array","items":{"$ref":"#/components/schemas/GovernanceFrameworkVersionV4"}}},"required":["versions"]}},"responses":{"BadRequest":{"description":"Bad Request - Invalid parameters provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"Invalid parameter: limit must be between 1 and 1024","code":400}}}},"ServerError":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"Internal server error occurred","code":500}}}},"NotFound":{"description":"Not Found - The requested resource does not exist","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"Resource not found","code":404}}}}}},"tags":[{"name":"TRQP","description":"Trust Registry Query Protocol v2 (authorization, recognition, profile discovery)."},{"name":"Corporation","description":"Corporations and their Governance Frameworks"},{"name":"Ecosystem","description":"Ecosystem management operations"},{"name":"Credential Schema","description":"Credential Schema management operations"},{"name":"Participant","description":"Participant management operations"},{"name":"Trust Deposit","description":"Trust Deposit management and operations"},{"name":"Indexer","description":"Indexer state and changes tracking operations"},{"name":"Verifiable Trust","description":"Verifiable Trust resolver (IDX-VT-QRY-1 resolve)."},{"name":"Metrics"},{"name":"Exchange Rate","description":"Exchange Rate oracle queries"},{"name":"Digest","description":"Digest lookup queries"},{"name":"Delegation","description":"Operator and VS-operator authorization queries, and corporation fee grants"},{"name":"Group","description":"Corporation-anchored x/group state: groups, members, policies, proposals, votes"},{"name":"Statistics","description":"Statistics operations for querying cumulative and delta metrics across different granularities (HOUR, DAY, MONTH) and entity types (GLOBAL, ECOSYSTEM, CREDENTIAL_SCHEMA, PARTICIPANT)"},{"name":"Indexer WebSocket","description":"## Subscribe to indexer events\n\nReal-time push of Ecosystem, Credential Schema, Participant, Trust Deposit, Delegation, Digest, and Exchange Rate events over a WebSocket at `/v4/indexer/subscribe`.\n\n### Connect\nOn connect, before any subscription, the server sends a `ready` message:\n```json\n{\n  \"type\": \"ready\",\n  \"block\": 1500005,\n  \"blockTime\": \"2026-05-11T13:00:05Z\",\n  \"blockIntervalMs\": 5000\n}\n```\n`block` is the next block the server will deliver (`lastProcessedBlock + 1`); use `block - 1` as the catch-up cursor for `GET /v4/indexer/events`.\n\n### Subscribe\nSend a control message (the first message must be a `subscribe`):\n```json\n{\n  \"action\": \"subscribe\",\n  \"dids\": [\"did:web:agent.example\"],\n  \"corporationId\": 42\n}\n```\n`dids[]` and `corporationId` are both optional and use the same membership semantics as `GET /v4/indexer/events`. Both present -> intersection; both absent -> wildcard. A later `subscribe` replaces the active subscription. Send `{ \"action\": \"unsubscribe\" }` or close the socket to stop.\n\n### Subscribed acknowledgement\nThe server confirms every processed `subscribe` once the subscription filter is active:\n```json\n{\n  \"type\": \"subscribed\",\n  \"block\": 1500007,\n  \"blockTime\": \"2026-05-11T13:00:12Z\"\n}\n```\n`block` is the next block this subscription will deliver. Every block message with `block >= subscribed.block` is guaranteed on this connection, so a client that drains `GET /v4/indexer/events` after receiving this message has no gap. An `unsubscribe` is not acknowledged. Clients MUST ignore server messages whose `type` they do not recognise.\n\n### Block messages\nAfter the first `subscribe` is acknowledged, the server sends one `block` message per processed block, in strictly increasing `block` order:\n```json\n{\n  \"type\": \"block\",\n  \"block\": 1500005,\n  \"blockTime\": \"2026-05-11T13:00:05Z\",\n  \"events\": [\n    {\n      \"type\": \"indexer-event\",\n      \"event_type\": \"StartParticipantOP\",\n      \"did\": \"did:web:agent.example\",\n      \"block_height\": 1500005,\n      \"tx_hash\": \"AB12...\",\n      \"timestamp\": \"2026-05-11T13:00:05Z\",\n      \"payload\": { \"module\": \"pp\", \"action\": \"start_participant_op\", \"message_type\": \"/verana.pp.v1.MsgStartParticipantOP\", \"tx_index\": 3, \"message_index\": 0, \"sender\": \"verana1...\", \"related_dids\": [], \"entity_type\": \"Participant\", \"entity_id\": \"...\" }\n    }\n  ]\n}\n```\nEach `events[]` entry has the same shape as the items returned by `GET /v4/indexer/events`. An empty `events[]` still acts as a heartbeat."}]}