Skip to main content

Governance reads

EIP-2535 Diamond Loupe (full four-method surface) plus the TimelockCut proposal lifecycle.

All GET, public, no auth.

EIP-2535 Loupe

The Loupe is the standard reflection interface every Diamond exposes. It tells you which facets are mounted and which 4-byte selectors each facet serves.

/v1/governance/facets?chainId=

All facets in one shot. (Lives under Meta because it's the common case.)

/v1/governance/facet-addresses/:chainId

Just the addresses, no selectors.

{ "data": { "chainId": 8453, "facetAddresses": ["0xfacet1", "0xfacet2", ...] } }

/v1/governance/facets/:chainId/by-address/:facetAddress

All selectors served by a specific facet.

{
"data": {
"chainId": 8453,
"facetAddress": "0xfacet1...",
"functionSelectors": ["0xdeadbeef", "0xcafebabe"]
}
}

/v1/governance/facet-address/:chainId/:selector

Which facet serves a given 4-byte selector (or 0x0 if no facet).

{
"data": {
"chainId": 8453,
"selector": "0xdeadbeef",
"facetAddress": "0xfacet1..."
}
}

TimelockCut proposal lifecycle

Diamond upgrades are gated by a timelock. A proposal is submitted, waits through the delay, then either executes or expires.

/v1/governance/proposals/:chainId/:proposalId

Full proposal state.

{
"data": {
"chainId": 8453,
"proposalId": "0xababab...",
"status": 0,
"statusLabel": "pending",
"executeAfter": 1782268800,
"init": "0x0000000000000000000000000000000000000000",
"callData": "0x"
}
}

status{0: pending, 1: cancelled, 2: executed}; statusLabel is the matching human string.

executeAfter is the Unix-seconds timestamp after which executeCut() will succeed.

/v1/governance/cut-ids/:chainId

Every proposal ID ever created on the Diamond (pending + executed + cancelled).

{ "data": { "chainId": 8453, "cutIds": ["0xabab...", "0xcdcd..."] } }

/v1/governance/pending-cut-ids/:chainId

Alias of /cut-ids (kept for compatibility with the contract's older view).

/v1/governance/pending-cut-info/:chainId/:proposalId

Lightweight status view — just eta, executed, cancelled.

{
"data": {
"chainId": 8453,
"proposalId": "0xababab...",
"eta": 1782268800,
"executed": false,
"cancelled": false
}
}

For full details (init + callData), use /proposals/:id instead.