Skip to content

Commit 839fa55

Browse files
committed
chore: update midnight indexer api to v4
1 parent 53ad61d commit 839fa55

File tree

9 files changed

+4701
-1362
lines changed

9 files changed

+4701
-1362
lines changed

blockfrost-openapi.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,7 @@ info:
240240
241241
The Midnight Indexer API exposes a GraphQL API that enables clients to query and subscribe to blockchain data—blocks, transactions, contracts, and wallet-related events—indexed from the Midnight blockchain.
242242
243-
The deployed version is **v3**.
243+
The deployed version of the Midnight Indexer API is **v4**.
244244
245245
[![Open Midnight GraphQL API Reference](https://img.shields.io/badge/Open_Midnight_GraphQL_API_Reference_→-0033AD?style=for-the-badge)](./midnight/)
246246

docs/blockfrost-openapi.yaml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -317,9 +317,7 @@ info:
317317
and subscribe to blockchain data—blocks, transactions, contracts, and
318318
wallet-related events—indexed from the Midnight blockchain.
319319
320-
321-
The deployed version is **v3**.
322-
320+
The deployed version of the Midnight Indexer API is **v4**.
323321
324322
[![Open Midnight GraphQL API
325323
Reference](https://img.shields.io/badge/Open_Midnight_GraphQL_API_Reference_→-0033AD?style=for-the-badge)](./midnight/)

docs/midnight/index.html

Lines changed: 4131 additions & 1344 deletions
Large diffs are not rendered by default.

docs/midnight/midnight-indexer-api.graphql

Lines changed: 282 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@ type Block {
2323
"""
2424
author: HexEncoded
2525
"""
26+
The hex-encoded ledger parameters for this block.
27+
"""
28+
ledgerParameters: HexEncoded!
29+
"""
2630
The parent of this block.
2731
"""
2832
parent: Block
@@ -31,10 +35,6 @@ type Block {
3135
"""
3236
transactions: [Transaction!]!
3337
"""
34-
The hex-encoded ledger parameters for this block.
35-
"""
36-
ledgerParameters: HexEncoded!
37-
"""
3838
The system parameters (governance) at this block height.
3939
"""
4040
systemParameters: SystemParameters!
@@ -75,6 +75,19 @@ type CollapsedMerkleTree {
7575
protocolVersion: Int!
7676
}
7777

78+
"""
79+
Committee member for an epoch.
80+
"""
81+
type CommitteeMember {
82+
epochNo: Int!
83+
position: Int!
84+
sidechainPubkeyHex: String!
85+
expectedSlots: Int!
86+
auraPubkeyHex: String
87+
poolIdHex: String
88+
spoSkHex: String
89+
}
90+
7891
"""
7992
A contract action.
8093
"""
@@ -257,6 +270,10 @@ type DustGenerationDtimeUpdate implements DustLedgerEvent {
257270
The maximum ID of all dust ledger events.
258271
"""
259272
maxId: Int!
273+
"""
274+
The protocol version.
275+
"""
276+
protocolVersion: Int!
260277
}
261278

262279
"""
@@ -315,6 +332,10 @@ type DustInitialUtxo implements DustLedgerEvent {
315332
"""
316333
maxId: Int!
317334
"""
335+
The protocol version.
336+
"""
337+
protocolVersion: Int!
338+
"""
318339
The dust output.
319340
"""
320341
output: DustOutput!
@@ -327,6 +348,7 @@ interface DustLedgerEvent {
327348
id: Int!
328349
raw: HexEncoded!
329350
maxId: Int!
351+
protocolVersion: Int!
330352
}
331353

332354
"""
@@ -352,6 +374,41 @@ type DustSpendProcessed implements DustLedgerEvent {
352374
The maximum ID of all dust ledger events.
353375
"""
354376
maxId: Int!
377+
"""
378+
The protocol version.
379+
"""
380+
protocolVersion: Int!
381+
}
382+
383+
"""
384+
Current epoch information.
385+
"""
386+
type EpochInfo {
387+
epochNo: Int!
388+
durationSeconds: Int!
389+
elapsedSeconds: Int!
390+
}
391+
392+
"""
393+
SPO performance for an epoch.
394+
"""
395+
type EpochPerf {
396+
epochNo: Int!
397+
spoSkHex: String!
398+
produced: Int!
399+
expected: Int!
400+
identityLabel: String
401+
stakeSnapshot: String
402+
poolIdHex: String
403+
validatorClass: String
404+
}
405+
406+
"""
407+
First valid epoch for an SPO identity.
408+
"""
409+
type FirstValidEpoch {
410+
idKey: String!
411+
firstValidEpoch: Int!
355412
}
356413

357414
scalar HexEncoded
@@ -380,6 +437,32 @@ type ParamChange implements DustLedgerEvent {
380437
The maximum ID of all dust ledger events.
381438
"""
382439
maxId: Int!
440+
"""
441+
The protocol version.
442+
"""
443+
protocolVersion: Int!
444+
}
445+
446+
"""
447+
Pool metadata from Cardano.
448+
"""
449+
type PoolMetadata {
450+
poolIdHex: String!
451+
hexId: String
452+
name: String
453+
ticker: String
454+
homepageUrl: String
455+
logoUrl: String
456+
}
457+
458+
"""
459+
Presence event for an SPO in an epoch.
460+
"""
461+
type PresenceEvent {
462+
epochNo: Int!
463+
idKey: String!
464+
source: String!
465+
status: String
383466
}
384467

385468
type Query {
@@ -407,6 +490,107 @@ type Query {
407490
Get the full history of Terms and Conditions changes for governance auditability.
408491
"""
409492
termsAndConditionsHistory: [TermsAndConditionsChange!]!
493+
"""
494+
List SPO identities with pagination.
495+
"""
496+
spoIdentities(limit: Int, offset: Int): [SpoIdentity!]!
497+
"""
498+
Get SPO identity by pool ID.
499+
"""
500+
spoIdentityByPoolId(poolIdHex: String!): SpoIdentity
501+
"""
502+
Get total count of SPOs.
503+
"""
504+
spoCount: Int
505+
"""
506+
Get pool metadata by pool ID.
507+
"""
508+
poolMetadata(poolIdHex: String!): PoolMetadata
509+
"""
510+
List pool metadata with pagination.
511+
"""
512+
poolMetadataList(limit: Int, offset: Int, withNameOnly: Boolean): [PoolMetadata!]!
513+
"""
514+
Get SPO with metadata by pool ID.
515+
"""
516+
spoByPoolId(poolIdHex: String!): Spo
517+
"""
518+
List SPOs with optional search.
519+
"""
520+
spoList(limit: Int, offset: Int, search: String): [Spo!]!
521+
"""
522+
Get composite SPO data (identity + metadata + performance).
523+
"""
524+
spoCompositeByPoolId(poolIdHex: String!): SpoComposite
525+
"""
526+
Get SPO identifiers ordered by performance.
527+
"""
528+
stakePoolOperators(limit: Int): [String!]!
529+
"""
530+
Get latest SPO performance entries.
531+
"""
532+
spoPerformanceLatest(limit: Int, offset: Int): [EpochPerf!]!
533+
"""
534+
Get SPO performance by SPO key.
535+
"""
536+
spoPerformanceBySpoSk(spoSkHex: String!, limit: Int, offset: Int): [EpochPerf!]!
537+
"""
538+
Get epoch performance for all SPOs.
539+
"""
540+
epochPerformance(epoch: Int!, limit: Int, offset: Int): [EpochPerf!]!
541+
"""
542+
Get current epoch information.
543+
"""
544+
currentEpochInfo: EpochInfo
545+
"""
546+
Get epoch utilization (produced/expected ratio).
547+
"""
548+
epochUtilization(epoch: Int!): Float
549+
"""
550+
Get committee membership for an epoch.
551+
"""
552+
committee(epoch: Int!): [CommitteeMember!]!
553+
"""
554+
Get cumulative registration totals for an epoch range.
555+
"""
556+
registeredTotalsSeries(fromEpoch: Int!, toEpoch: Int!): [RegisteredTotals!]!
557+
"""
558+
Get registration statistics for an epoch range.
559+
"""
560+
registeredSpoSeries(fromEpoch: Int!, toEpoch: Int!): [RegisteredStat!]!
561+
"""
562+
Get raw presence events for an epoch range.
563+
"""
564+
registeredPresence(fromEpoch: Int!, toEpoch: Int!): [PresenceEvent!]!
565+
"""
566+
Get first valid epoch for each SPO identity.
567+
"""
568+
registeredFirstValidEpochs(uptoEpoch: Int): [FirstValidEpoch!]!
569+
"""
570+
Get stake distribution with search and ordering.
571+
"""
572+
stakeDistribution(limit: Int, offset: Int, search: String, orderByStakeDesc: Boolean): [StakeShare!]!
573+
}
574+
575+
"""
576+
Registration statistics for an epoch.
577+
"""
578+
type RegisteredStat {
579+
epochNo: Int!
580+
federatedValidCount: Int!
581+
federatedInvalidCount: Int!
582+
registeredValidCount: Int!
583+
registeredInvalidCount: Int!
584+
dparam: Float
585+
}
586+
587+
"""
588+
Cumulative registration totals for an epoch.
589+
"""
590+
type RegisteredTotals {
591+
epochNo: Int!
592+
totalRegistered: Int!
593+
newlyRegistered: Int!
410594
}
411595

412596
"""
@@ -539,6 +723,96 @@ type ShieldedTransactionsProgress {
539723
highestRelevantEndIndex: Int!
540724
}
541725

726+
"""
727+
SPO with optional metadata.
728+
"""
729+
type Spo {
730+
poolIdHex: String!
731+
validatorClass: String!
732+
sidechainPubkeyHex: String!
733+
auraPubkeyHex: String
734+
name: String
735+
ticker: String
736+
homepageUrl: String
737+
logoUrl: String
738+
}
739+
740+
"""
741+
Composite SPO data (identity + metadata + performance).
742+
"""
743+
type SpoComposite {
744+
identity: SpoIdentity
745+
metadata: PoolMetadata
746+
performance: [EpochPerf!]!
747+
}
748+
749+
"""
750+
SPO identity information.
751+
"""
752+
type SpoIdentity {
753+
poolIdHex: String!
754+
mainchainPubkeyHex: String!
755+
sidechainPubkeyHex: String!
756+
auraPubkeyHex: String
757+
validatorClass: String!
758+
}
759+
760+
"""
761+
Stake share information for an SPO.
762+
763+
Values are sourced from mainchain pool data (e.g., Blockfrost) and keyed by Cardano pool_id.
764+
"""
765+
type StakeShare {
766+
"""
767+
Cardano pool ID (56-character hex string).
768+
"""
769+
poolIdHex: String!
770+
"""
771+
Pool name from metadata.
772+
"""
773+
name: String
774+
"""
775+
Pool ticker from metadata.
776+
"""
777+
ticker: String
778+
"""
779+
Pool homepage URL from metadata.
780+
"""
781+
homepageUrl: String
782+
"""
783+
Pool logo URL from metadata.
784+
"""
785+
logoUrl: String
786+
"""
787+
Current live stake in lovelace.
788+
"""
789+
liveStake: String
790+
"""
791+
Current active stake in lovelace.
792+
"""
793+
activeStake: String
794+
"""
795+
Number of live delegators.
796+
"""
797+
liveDelegators: Int
798+
"""
799+
Saturation ratio (0.0 to 1.0+).
800+
"""
801+
liveSaturation: Float
802+
"""
803+
Declared pledge in lovelace.
804+
"""
805+
declaredPledge: String
806+
"""
807+
Current live pledge in lovelace.
808+
"""
809+
livePledge: String
810+
"""
811+
Stake share as a fraction of total stake.
812+
"""
813+
stakeShare: Float
814+
}
815+
542816
type Subscription {
543817
"""
544818
Subscribe to blocks starting at the given offset or at the latest block if the offset is
@@ -833,6 +1107,10 @@ type ZswapLedgerEvent {
8331107
The maximum ID of all zswap ledger events.
8341108
"""
8351109
maxId: Int!
1110+
"""
1111+
The protocol version.
1112+
"""
1113+
protocolVersion: Int!
8361114
}
8371115

8381116
"""

0 commit comments

Comments
 (0)