भारत सरकारGovernment of India
Ministry of Consumer Affairs, Food & Public DistributionDepartment of Food & Public Distribution

VPDS Blockchain API

Blockchain-as-a-Service over Hyperledger Fabric. An authorised government application calls REST endpoints with an API key and never handles a Fabric private key, certificate, wallet, MSP or peer address. That boundary is the product.

HOW TO READ THISEvery request carries X-API-Key. A body field maps one-to-one onto a chaincode parameter — nothing was renamed or invented — and the numbering is the positional order the contract receives them in. Signed by is what the chaincode itself enforces at the peers, not a courtesy: a call from the wrong organisation is refused on-chain even if this gateway let it through.
WHO A KEY ISA key identifies either an application — a department’s backend, which asserts the acting officer’s role in X-Officer-Role, bounded by the set that key may assert — or an officer, in which case the role, the organisation and whether they are still active are read from the credential itself and there is nothing left to assert. Either way the signing identity is derived from the key and can never be chosen by a request, and no caller is ever issued Fabric key material. Officer credentials are created, rotated and revoked through /api/blockchain/officers by a key registered with officerAdmin.

Showing 50 of 50 operations, and 23 of 23 platform endpoints

RegistryContract

Beneficiary and family identity — the DID registry, officer approval records, and ingestion manifests.

  • POST/api/blockchain/approvalsWrite

    Anchor an officer's signed registration decision.

    Chaincode
    RegistryContract:ApproveRegistration
    Signed by
    GovernanceMSPstate_admindistrict_officer
    Parameters of ApproveRegistration, in the order the chaincode receives them
    #NameTypeInRequired
    1caseCodestringbodyyes
    2familyDIDstringbodyyes
    3payloadHashhash64bodyyes
    4decisionstringbodyyes
    5signaturestringbodyyes
  • POST/api/blockchain/didsWrite

    Register a W3C-style DID for a card, family or member.

    Chaincode
    RegistryContract:CreateDID
    Signed by
    GovernanceMSPdistrict_officerverification_officerstate_admin
    Parameters of CreateDID, in the order the chaincode receives them
    #NameTypeInRequired
    1didstringbodyyes
    2subjectTypestringbodyyes
    3subjectRefstringbodyyes
    4controllerstringbodyyes
    5publicKeyHashhash64bodyyes
    6metadatastringbodyoptional
  • POST/api/blockchain/ingestion-manifestsWrite

    Anchor the digest of an ePDS / Smart-PDS ingestion batch.

    Chaincode
    RegistryContract:RecordIngestionManifest
    Signed by
    GovernanceMSPstate_admindistrict_officer
    Parameters of RecordIngestionManifest, in the order the chaincode receives them
    #NameTypeInRequired
    1batchCodestringbodyyes
    2sourceRefstringbodyyes
    3mappingVersionstringbodyyes
    4recordCountintegerbodyyes
    5manifestHashhash64bodyyes
  • POST/api/blockchain/dids/:did/revokeWrite

    Revoke a DID. State-level act — district officers are excluded on-chain.

    Chaincode
    RegistryContract:RevokeDID
    Signed by
    GovernanceMSPstate_admin
    Parameters of RevokeDID, in the order the chaincode receives them
    #NameTypeInRequired
    1didstringpathyes
    2reasonstringbodyoptional
  • PUT/api/blockchain/dids/:didWrite

    Re-anchor a DID document (new key hash and/or metadata).

    Chaincode
    RegistryContract:UpdateDID
    Signed by
    GovernanceMSPstate_admindistrict_officerverification_officer
    Parameters of UpdateDID, in the order the chaincode receives them
    #NameTypeInRequired
    1didstringpathyes
    2publicKeyHashhash64bodyoptional
    3metadatastringbodyoptional
  • GET/api/blockchain/approvals/:caseCodeRead

    Read the current approval record for a registration case.

    Chaincode
    RegistryContract:GetApproval
    Signed by
    any organisation
    Parameters of GetApproval, in the order the chaincode receives them
    #NameTypeInRequired
    1caseCodestringpathyes
  • GET/api/blockchain/approvals/:caseCode/historyRead

    Every decision ever recorded against a case, including reversals.

    Chaincode
    RegistryContract:GetApprovalHistory
    Signed by
    any organisation
    Parameters of GetApprovalHistory, in the order the chaincode receives them
    #NameTypeInRequired
    1caseCodestringpathyes
  • GET/api/blockchain/dids/:did/historyRead

    Full version history of a DID document.

    Chaincode
    RegistryContract:GetDIDHistory
    Signed by
    any organisation
    Parameters of GetDIDHistory, in the order the chaincode receives them
    #NameTypeInRequired
    1didstringpathyes
  • GET/api/blockchain/ingestion-manifests/:batchCodeRead

    Read an ingestion manifest.

    Chaincode
    RegistryContract:GetIngestionManifest
    Signed by
    any organisation
    Parameters of GetIngestionManifest, in the order the chaincode receives them
    #NameTypeInRequired
    1batchCodestringpathyes
  • GET/api/blockchain/ingestion-manifests/:batchCode/historyRead

    Every manifest version recorded for an ingestion batch.

    Chaincode
    RegistryContract:GetIngestionManifestHistory
    Signed by
    any organisation
    Parameters of GetIngestionManifestHistory, in the order the chaincode receives them
    #NameTypeInRequired
    1batchCodestringpathyes
  • GET/api/blockchain/dids/:didRead

    Read a DID document.

    Chaincode
    RegistryContract:ResolveDID
    Signed by
    any organisation
    Parameters of ResolveDID, in the order the chaincode receives them
    #NameTypeInRequired
    1didstringpathyes
  • GET/api/blockchain/dids/:did/verifyRead

    Check whether a DID exists, is active and is unrevoked.

    Chaincode
    RegistryContract:VerifyDID
    Signed by
    any organisation
    Parameters of VerifyDID, in the order the chaincode receives them
    #NameTypeInRequired
    1didstringpathyes

VerificationContract

What the system has CONCLUDED about a household — screening verdicts and risk assessments.

  • POST/api/blockchain/risk-assessmentsWrite

    Anchor a fraud risk score, band and the rule codes that fired.

    Chaincode
    VerificationContract:RecordRiskAssessment
    Signed by
    StateMSP or GovernanceMSP
    Parameters of RecordRiskAssessment, in the order the chaincode receives them
    #NameTypeInRequired
    1cardRefstringbodyyes
    2riskScorestringbodyyes
    3riskBandstringbodyyes
    4ruleCodesstringbodyyes
    5evidenceHashhash64bodyyes
    6rulesVersionstringbodyyes
  • POST/api/blockchain/screeningsWrite

    Anchor an eligibility screening verdict (AAY / PHH / NPHH / Rejected).

    Chaincode
    VerificationContract:RecordScreening
    Signed by
    GovernanceMSPdistrict_officerverification_officerstate_admin
    Parameters of RecordScreening, in the order the chaincode receives them
    #NameTypeInRequired
    1cardRefstringbodyyes
    2resultHashhash64bodyyes
    3eligibilityCategorystringbodyyes
    4screeningStatusstringbodyyes
  • GET/api/blockchain/screenings/:cardRefRead

    Read the current screening record for a card.

    Chaincode
    VerificationContract:GetScreening
    Signed by
    any organisation
    Parameters of GetScreening, in the order the chaincode receives them
    #NameTypeInRequired
    1cardRefstringpathyes
  • GET/api/blockchain/screenings/:cardRef/historyRead

    Every screening and risk assessment recorded for a card.

    Chaincode
    VerificationContract:GetScreeningHistory
    Signed by
    any organisation
    Parameters of GetScreeningHistory, in the order the chaincode receives them
    #NameTypeInRequired
    1cardRefstringpathyes

LifecycleContract

The append-only beneficiary lifecycle log — births, deaths, migrations, bifurcations.

  • POST/api/blockchain/registry-eventsWrite

    Append a lifecycle event (birth, death, migration, bifurcation, …).

    Chaincode
    LifecycleContract:RecordRegistryEvent
    Signed by
    GovernanceMSPdistrict_officerverification_officerstate_admin
    Parameters of RecordRegistryEvent, in the order the chaincode receives them
    #NameTypeInRequired
    1eventIDstringbodyyes
    2cardRefstringbodyyes
    3memberRefstringbodyoptional
    4eventTypestringbodyyes
    5detailHashhash64bodyyes
  • GET/api/blockchain/registry-events/by-card/:cardRefRead

    A card's full lifecycle log, oldest first.

    Chaincode
    LifecycleContract:QueryRegistryEventsByCard
    Signed by
    any organisation
    Parameters of QueryRegistryEventsByCard, in the order the chaincode receives them
    #NameTypeInRequired
    1cardRefstringpathyes

SupplyChainContract

Grain movement from procurement to FPS receipt — batches, dispatches, transport, receipts, exceptions, and the 3-way delivery match.

  • POST/api/blockchain/dispatches/:dispatchID/receiptWrite

    Confirm delivery receipt at a State Warehouse or Fair Price Shop.

    Chaincode
    SupplyChainContract:ConfirmReceipt
    Signed by
    StateMSPstate_warehouse_operatorfps_operator
    Parameters of ConfirmReceipt, in the order the chaincode receives them
    #NameTypeInRequired
    1dispatchIDstringpathyes
    2receivedQtynumberbodyyes
    3fpsSignstringbodyoptional
    4qrScanstringbodyyes
  • POST/api/blockchain/batchesWrite

    Create a procurement batch at an FCI godown, with quality capture.

    Chaincode
    SupplyChainContract:CreateBatch
    Signed by
    CentralMSPwarehouse_operator
    Parameters of CreateBatch, in the order the chaincode receives them
    #NameTypeInRequired
    1batchIDstringbodyyes
    2grainTypestringbodyyes
    3quantityMTnumberbodyyes
    4sourceWHstringbodyyes
    5destFPSstringbodyyes
    6schemestringbodyyes
    7stageintegerbodyyes
    8originTypestringbodyyes
    9destTypestringbodyyes
    10parentBatchIDstringbodyoptional
    11qualityGradestringbodyoptional
    12moisturePctnumberbodyoptional
    13inspectionRefstringbodyoptional
    14inspectorDIDstringbodyoptional
  • POST/api/blockchain/batches/childWrite

    Split a received batch into an onward consignment for an FPS.

    Chaincode
    SupplyChainContract:CreateChildBatch
    Signed by
    StateMSPstate_warehouse_operator
    Parameters of CreateChildBatch, in the order the chaincode receives them
    #NameTypeInRequired
    1childBatchIDstringbodyyes
    2parentBatchIDstringbodyyes
    3stateWarehouseIDstringbodyyes
    4destFPSstringbodyyes
    5schemestringbodyoptional
  • POST/api/blockchain/dispatchesWrite

    Dispatch a consignment: vehicle, driver, GPS device and planned route.

    Chaincode
    SupplyChainContract:CreateDispatch
    Signed by
    CentralMSP or StateMSPwarehouse_operatorstate_warehouse_operator
    Parameters of CreateDispatch, in the order the chaincode receives them
    #NameTypeInRequired
    1dispatchIDstringbodyyes
    2batchIDstringbodyyes
    3vehicleRegstringbodyyes
    4driverIDstringbodyyes
    5gpsDeviceIDstringbodyyes
    6routeJSONjsonbodyyes
    7dispatchQtynumberbodyyes
  • POST/api/blockchain/dispatches/:dispatchID/exceptionWrite

    Raise a receipt discrepancy (shortage, damage, quality).

    Chaincode
    SupplyChainContract:EscalateReceiptException
    Signed by
    StateMSPstate_warehouse_operatorfps_operator
    Parameters of EscalateReceiptException, in the order the chaincode receives them
    #NameTypeInRequired
    1dispatchIDstringpathyes
    2receivedQtynumberbodyyes
    3reasonstringbodyoptional
    4detailstringbodyoptional
  • POST/api/blockchain/dispatches/:dispatchID/exception/resolveWrite

    Close a receipt exception with a resolution note.

    Chaincode
    SupplyChainContract:ResolveReceiptException
    Signed by
    GovernanceMSPstate_admin
    Parameters of ResolveReceiptException, in the order the chaincode receives them
    #NameTypeInRequired
    1dispatchIDstringpathyes
    2notestringbodyoptional
  • POST/api/blockchain/dispatches/:dispatchID/transportWrite

    Validate a consignment in transit against its AIS-140 GPS trail.

    Chaincode
    SupplyChainContract:ValidateTransport
    Signed by
    StateMSPtransfer_operator
    Parameters of ValidateTransport, in the order the chaincode receives them
    #NameTypeInRequired
    1dispatchIDstringpathyes
    2gpsEventsJSONjsonbodyyes
    3driverSignaturestringbodyyes
    4transportQtyMTnumberbodyyes
    5deviationToleranceKMnumberbodyyes
  • POST/api/blockchain/dispatches/:dispatchID/verificationWrite

    Run the 3-way match and anchor the VERIFIED / FAILED verdict.

    Chaincode
    SupplyChainContract:VerifyDelivery
    Signed by
    GovernanceMSPstate_admin
    Parameters of VerifyDelivery, in the order the chaincode receives them
    #NameTypeInRequired
    1dispatchIDstringpathyes
  • GET/api/blockchain/batches/:batchIDRead

    Read one batch.

    Chaincode
    SupplyChainContract:GetBatch
    Signed by
    any organisation
    Parameters of GetBatch, in the order the chaincode receives them
    #NameTypeInRequired
    1batchIDstringpathyes
  • GET/api/blockchain/batches/:batchID/historyRead

    Every ledger version of a batch, with transaction ids.

    Chaincode
    SupplyChainContract:GetBatchHistory
    Signed by
    any organisation
    Parameters of GetBatchHistory, in the order the chaincode receives them
    #NameTypeInRequired
    1batchIDstringpathyes
  • GET/api/blockchain/dispatches/:dispatchIDRead

    Read one dispatch.

    Chaincode
    SupplyChainContract:GetDispatch
    Signed by
    any organisation
    Parameters of GetDispatch, in the order the chaincode receives them
    #NameTypeInRequired
    1dispatchIDstringpathyes
  • GET/api/blockchain/dispatches/:dispatchID/exceptionRead

    Read the open exception on a dispatch.

    Chaincode
    SupplyChainContract:GetDispatchException
    Signed by
    any organisation
    Parameters of GetDispatchException, in the order the chaincode receives them
    #NameTypeInRequired
    1dispatchIDstringpathyes
  • GET/api/blockchain/exceptions/:exceptionIDRead

    Read one exception by its own id.

    Chaincode
    SupplyChainContract:GetException
    Signed by
    any organisation
    Parameters of GetException, in the order the chaincode receives them
    #NameTypeInRequired
    1exceptionIDstringpathyes
  • GET/api/blockchain/dispatches/:dispatchID/exception/historyRead

    Every state an exception passed through, with transaction ids.

    Chaincode
    SupplyChainContract:GetExceptionHistory
    Signed by
    any organisation
    Parameters of GetExceptionHistory, in the order the chaincode receives them
    #NameTypeInRequired
    1dispatchIDstringpathyes
  • GET/api/blockchain/dispatches/:dispatchID/receiptRead

    Read the receipt recorded against a dispatch.

    Chaincode
    SupplyChainContract:GetReceipt
    Signed by
    any organisation
    Parameters of GetReceipt, in the order the chaincode receives them
    #NameTypeInRequired
    1dispatchIDstringpathyes
  • GET/api/blockchain/dispatches/:dispatchID/verificationRead

    Read the 3-way match verdict for a dispatch.

    Chaincode
    SupplyChainContract:GetVerification
    Signed by
    any organisation
    Parameters of GetVerification, in the order the chaincode receives them
    #NameTypeInRequired
    1dispatchIDstringpathyes
  • GET/api/blockchain/batches/by-stage/:stageRead

    List batches at one stage of the two-stage chain.

    Chaincode
    SupplyChainContract:QueryBatchesByStage
    Signed by
    any organisation
    Parameters of QueryBatchesByStage, in the order the chaincode receives them
    #NameTypeInRequired
    1stageintegerpathyes
  • GET/api/blockchain/batchesRead

    List batches, optionally filtered by status. Empty status = all.

    Chaincode
    SupplyChainContract:QueryBatchesByStatus
    Signed by
    any organisation
    Parameters of QueryBatchesByStatus, in the order the chaincode receives them
    #NameTypeInRequired
    1statusstringqueryoptional
  • GET/api/blockchain/batches/by-warehouse/:warehouseIDRead

    List batches originating at one warehouse.

    Chaincode
    SupplyChainContract:QueryBatchesByWarehouse
    Signed by
    any organisation
    Parameters of QueryBatchesByWarehouse, in the order the chaincode receives them
    #NameTypeInRequired
    1warehouseIDstringpathyes
  • GET/api/blockchain/dispatchesRead

    List dispatches, optionally filtered by status. Empty status = all.

    Chaincode
    SupplyChainContract:QueryDispatches
    Signed by
    any organisation
    Parameters of QueryDispatches, in the order the chaincode receives them
    #NameTypeInRequired
    1statusstringqueryoptional
  • GET/api/blockchain/batches/:batchID/dispatchesRead

    Every dispatch raised against a batch.

    Chaincode
    SupplyChainContract:QueryDispatchesByBatch
    Signed by
    any organisation
    Parameters of QueryDispatchesByBatch, in the order the chaincode receives them
    #NameTypeInRequired
    1batchIDstringpathyes
  • GET/api/blockchain/exceptionsRead

    List exceptions, optionally filtered by status and severity.

    Chaincode
    SupplyChainContract:QueryExceptions
    Signed by
    any organisation
    Parameters of QueryExceptions, in the order the chaincode receives them
    #NameTypeInRequired
    1statusstringqueryoptional
    2severitystringqueryoptional

DistributionContract

The last mile — the immutable proof that grain was issued from a Fair Price Shop to a household.

  • POST/api/blockchain/distributionsWrite

    Anchor grain issued from an FPS to a household. No PII on-chain.

    Chaincode
    DistributionContract:RecordDistribution
    Signed by
    StateMSP or GovernanceMSPfps_operatorstate_admin
    Parameters of RecordDistribution, in the order the chaincode receives them
    #NameTypeInRequired
    1receiptNumberstringbodyyes
    2cardDIDstringbodyoptional
    3memberDIDstringbodyoptional
    4fpsIDstringbodyyes
    5itemsJSONjsonbodyyes
    6cycleMonthstringbodyyes
    7receiptHashhash64bodyoptional
  • POST/api/blockchain/entitlement-qrsWrite

    Anchor a cycle's entitlement QR. Refuses a second QR for the same card and cycle.

    Chaincode
    DistributionContract:RecordEntitlementQR
    Signed by
    GovernanceMSPdistrict_officerverification_officerstate_admin
    Parameters of RecordEntitlementQR, in the order the chaincode receives them
    #NameTypeInRequired
    1familyDIDstringbodyoptional
    2cardDIDstringbodyyes
    3cycleMonthstringbodyyes
    4qrHashhash64bodyyes
    5expiresAtstringbodyyes
  • GET/api/blockchain/distributions/:receiptNumberRead

    Read one distribution receipt.

    Chaincode
    DistributionContract:GetDistribution
    Signed by
    any organisation
    Parameters of GetDistribution, in the order the chaincode receives them
    #NameTypeInRequired
    1receiptNumberstringpathyes
  • GET/api/blockchain/entitlement-qrs/:cardDID/:cycleMonthRead

    Read the anchored QR for a card and cycle.

    Chaincode
    DistributionContract:GetEntitlementQR
    Signed by
    any organisation
    Parameters of GetEntitlementQR, in the order the chaincode receives them
    #NameTypeInRequired
    1cardDIDstringpathyes
    2cycleMonthstringpathyes
  • GET/api/blockchain/distributions/by-card/:cardDIDRead

    A household's full collection history.

    Chaincode
    DistributionContract:QueryDistributionsByCardDID
    Signed by
    any organisation
    Parameters of QueryDistributionsByCardDID, in the order the chaincode receives them
    #NameTypeInRequired
    1cardDIDstringpathyes
  • GET/api/blockchain/distributions/by-fps/:fpsIDRead

    Everything one Fair Price Shop has issued.

    Chaincode
    DistributionContract:QueryDistributionsByFPS
    Signed by
    any organisation
    Parameters of QueryDistributionsByFPS, in the order the chaincode receives them
    #NameTypeInRequired
    1fpsIDstringpathyes

AuditContract

Platform audit anchors — the record of an administrative ACTION, and the type-agnostic ledger key history reader.

  • POST/api/blockchain/audit-anchorsWrite

    Anchor the digest of a platform action so its off-chain row cannot be edited undetected.

    Chaincode
    AuditContract:RecordAuditAnchor
    Signed by
    GovernanceMSP
    Parameters of RecordAuditAnchor, in the order the chaincode receives them
    #NameTypeInRequired
    1auditIDstringbodyyes
    2categorystringbodyyes
    3actorRolestringbodyyes
    4payloadHashhash64bodyyes
  • GET/api/blockchain/audit-anchors/:auditIDRead

    Read one audit anchor.

    Chaincode
    AuditContract:GetAuditAnchor
    Signed by
    any organisation
    Parameters of GetAuditAnchor, in the order the chaincode receives them
    #NameTypeInRequired
    1auditIDstringpathyes
  • GET/api/blockchain/ledger/keys/:key/historyRead

    Type-agnostic history of any ledger key — the explorer's trail reader.

    Chaincode
    AuditContract:GetHistoryForKey
    Signed by
    any organisation
    Parameters of GetHistoryForKey, in the order the chaincode receives them
    #NameTypeInRequired
    1keystringpathyes
  • GET/api/blockchain/audit-anchorsRead

    List audit anchors in one category.

    Chaincode
    AuditContract:QueryAuditAnchorsByCategory
    Signed by
    any organisation
    Parameters of QueryAuditAnchorsByCategory, in the order the chaincode receives them
    #NameTypeInRequired
    1categorystringqueryyes

Platform endpoints

Everything that is not a chaincode call: issuing and revoking the credentials that decide who may make one, following the chain, reading it, and the gateway’s own health. Authenticated with the same X-API-Key.

Officers

Per-officer credentials — an API key that identifies a PERSON, and the signing keypair the gateway holds for them. Administered by a client registered with "officerAdmin": true; an officer credential can never administer credentials, including its own.

  • GET/api/blockchain/officers

    The officer roster.

    role (query)status (query)limit (query)

  • POST/api/blockchain/officers

    Create an officer and issue their first API key.

    Issues an API key and an EC P-256 signing keypair. The private half never leaves this service; the API key is returned once and stored only as a SHA-256 hash, so a lost key is rotated rather than recovered.

  • GET/api/blockchain/officers/{id}

    One officer, with their key history.

    id (path, required)

  • PATCH/api/blockchain/officers/{id}

    Change the label.

    The label, and nothing else. Role and MSP are immutable: the certificate carries the role, and every signature made before a change must keep meaning what it meant. Changing an officer's role means a new credential.

    id (path, required)

  • POST/api/blockchain/officers/{id}/attestations

    Sign a payload hash as this officer.

    What crosses the wire is a hash, never a document: whatever the officer approved is the calling application's business, and what this attests is that the holder of that officer's key saw a payload with this digest.

    id (path, required)

  • POST/api/blockchain/officers/{id}/keys

    Rotate: issue a new key and revoke every previous one.

    The officer keeps their id, their signing keypair and every signature they have already made. Only what they authenticate with changes — which is why a lost laptop is a rotation rather than a re-creation.

    id (path, required)

  • DELETE/api/blockchain/officers/{id}/keys/{keyId}

    Revoke one key.

    id (path, required)keyId (path, required)

  • PATCH/api/blockchain/officers/{id}/status

    Deactivate or re-activate an officer.

    Deactivating refuses their calls with a 403 that names them and LEAVES the key intact, so re-activating works with the key the caller already holds. revokeKeys: true is the separate, louder act for a credential believed exposed.

    id (path, required)

  • GET/api/blockchain/officers/me

    Who this key belongs to.

    The one officer route an OFFICER credential may call. It discloses nothing the holder of the key does not already have.

Events

Follow the chain. Server-Sent Events, resumable from any height with ?startBlock= — which is how a consumer that was down catches up without a Fabric connection.

  • GET/api/blockchain/events/blocks

    Follow every committed block, decoded.

    Every block as it commits, already decoded — the feed a consumer builds its own read model from. The VPDS application's PostgreSQL ledger index is fed entirely from this stream. Full detail (arguments and read/write sets, the default) requires GetHistoryForKey on the caller's allowlist; ?full=false streams summaries to anyone.

    startBlock (query)full (query)

  • GET/api/blockchain/events/chaincode

    Follow every chaincode event, decoded.

    Every event the chaincode emits, as it commits. This is how a consumer reacts to what OTHER organisations write — a dispatch created by a warehouse, a receipt confirmed at a shop — without opening a Fabric connection of its own.

    startBlock (query)

Explorer

Read the chain: blocks, transactions and search, decoded from Fabric protobuf on demand.

  • GET/api/blockchain/explorer/blocks

    Recent blocks, newest first. Pages backward with before.

    limit (query)before (query)

  • GET/api/blockchain/explorer/blocks/{number}

    One block, decoded, with its transactions.

    number (path, required)full (query)

  • GET/api/blockchain/explorer/chain

    Chain height and the tip's hashes.

  • GET/api/blockchain/explorer/overview

    Monitoring snapshot: chain tip, peer status, and recent throughput in one request.

    blocks (query)

  • GET/api/blockchain/explorer/search

    One box, several identifier kinds. A block number, a transaction id, or any ledger key.

    q (query, required)

  • GET/api/blockchain/explorer/transactions

    Recent transactions, newest first, by walking blocks back from the tip.

    limit (query)

  • GET/api/blockchain/explorer/transactions/{txId}

    One transaction, fully decoded — arguments, endorsers, read/write set. Without GetHistoryForKey on the allowlist, the summary only, marked redacted: true.

    txId (path, required)

Service

The gateway's own surface — health, signing identities, the catalogue, and the committed status of a transaction id.

  • GET/api/blockchain/operations

    Machine-readable catalogue, filtered to what the caller may invoke.

  • GET/api/blockchain/transactions/{transactionId}

    Committed status of a transaction id.

    Read from the ledger via qscc, not from a local record — this service keeps no database.

    transactionId (path, required)

  • GET/clients

    The calling client's own registration.

  • GET/healthno key

    Liveness plus per-organisation peer status.

    Unauthenticated, so a load balancer can reach it. Reports from the connection cache by default; ?probe=1 actively dials every peer.

    probe (query)

  • GET/identities

    Which certificate the gateway signs with, per organisation.

    Never returns key material. This answers the question asked during every access-denied investigation.

GENERATEDThis page is built from VPDS-API_GATEWAY/api/src/sdk/operations.js, the same declaration the gateway derives its router, validation and OpenAPI document from — so it cannot drift from the running service. A live instance additionally serves Swagger UI at /docs with Try it out, the machine-readable spec at /openapi.json, and a block explorer at /explorer.