Governance API Endpoints¶
25 endpoints across 24 resources. Generated from the dbt manifest — edits inside this block will be overwritten. Regenerate with python scripts/update_docs.py --only api.
governance_activity¶
Monthly governance activity, long format (date, metric, value) for proposals_created, votes_cast, unique_voters.
| Path | Methods | Tier | Filters | Pagination | Sort |
|---|---|---|---|---|---|
/v1/governance/governance_activity/monthly | GET | tier2 | -- | -- | -- |
GET /v1/governance/governance_activity/monthly
Monthly governance activity, long format (date, metric, value) for proposals_created, votes_cast, unique_voters.
Model: api_governance_activity_monthly — table dbt.api_governance_activity_monthly
Legacy endpoint — GET only, no query parameters, returns the full table.
Columns
| Column | Type | Description |
|---|---|---|
date | Date | -- |
metric | String | -- |
value | UInt64 | -- |
Example
governance_concentration¶
Space-level concentration at canonical tiers 10/20/50, long format, one row per (population, tier). Populations: voters_by_vp (all-time voting power cast -- participation-weighted, not a balance), voters_by_votes, delegates_by_delegators (currently active delegations, both chains). Per-proposal w...
| Path | Methods | Tier | Filters | Pagination | Sort |
|---|---|---|---|---|---|
/v1/governance/governance_concentration/latest | GET | tier2 | -- | -- | -- |
GET /v1/governance/governance_concentration/latest
Space-level concentration at canonical tiers 10/20/50, long format, one row per (population, tier). Populations: voters_by_vp (all-time voting power cast -- participation-weighted, not a balance), voters_by_votes, delegates_by_delegators (currently active delegations, both chains). Per-proposal w...
Model: api_governance_concentration_latest — table dbt.api_governance_concentration_latest
Legacy endpoint — GET only, no query parameters, returns the full table.
Columns
| Column | Type | Description |
|---|---|---|
population | String | -- |
tier | UInt8 | -- |
tier_value | Float64 | Summed value held by the top tier members. |
total_value | Float64 | -- |
share | Nullable(Float64) | tier_value / total_value. NULL when the population is empty. |
members | UInt64 | Population size. |
as_of_date | Date | Date of the latest vote ingested. |
Example
governance_contributors¶
Top 200 forum contributors by posts written. Keyed by contributor_key -- an irreversible salted pseudonym of the Discourse user id (no username, no raw id ships anywhere in this model). Like counts follow the canonical eligibility contract (active + mapped).
| Path | Methods | Tier | Filters | Pagination | Sort |
|---|---|---|---|---|---|
/v1/governance/governance_contributors/latest | GET | tier2 | -- | -- | -- |
GET /v1/governance/governance_contributors/latest
Top 200 forum contributors by posts written. Keyed by contributor_key -- an irreversible salted pseudonym of the Discourse user id (no username, no raw id ships anywhere in this model). Like counts follow the canonical eligibility contract (active + mapped).
Model: api_governance_contributors_latest — table dbt.api_governance_contributors_latest
Legacy endpoint — GET only, no query parameters, returns the full table.
Columns
| Column | Type | Description |
|---|---|---|
contributor_key | UInt64 | Salted sipHash64 pseudonym of the Discourse user_id. Stable across models built with the same salt. |
posts | UInt64 | -- |
topics_started | UInt64 | Posts with post_number = 1. |
likes_received | UInt64 | -- |
likes_given | UInt64 | -- |
trust_level | UInt8 | Discourse trust level (0-4); 0 when the user left the directory. |
first_post_at | DateTime | -- |
last_post_at | DateTime | -- |
as_of_date | Date | Date of the newest ingested post. |
Example
governance_delegates¶
Delegate leaderboard: how many distinct gnosis.eth holders currently delegate to each address across both DelegateRegistry chains (1 and 100). A holder active on both chains counts once (uniqExact). See int_governance_current_delegations for how "current" is resolved. Delegation here is a separat...
| Path | Methods | Tier | Filters | Pagination | Sort |
|---|---|---|---|---|---|
/v1/governance/governance_delegates/latest | GET | tier2 | -- | -- | -- |
GET /v1/governance/governance_delegates/latest
Delegate leaderboard: how many distinct gnosis.eth holders currently delegate to each address across both DelegateRegistry chains (1 and 100). A holder active on both chains counts once (uniqExact). See int_governance_current_delegations for how "current" is resolved. Delegation here is a separat...
Model: api_governance_delegates_latest — table dbt.api_governance_delegates_latest
Legacy endpoint — GET only, no query parameters, returns the full table.
Columns
| Column | Type | Description |
|---|---|---|
delegate | String | -- |
delegator_count | UInt64 | Distinct delegators (uniqExact) — dual-chain holders count once. |
first_delegation_at | DateTime | -- |
last_delegation_at | DateTime | -- |
as_of_date | Date | Snapshot freshness for this leaderboard — the date of the most recent active delegation. |
Example
governance_delegation_activity¶
Monthly DelegateRegistry activity, long format (date, metric, value). Metrics: set_events, clear_events, net_change, new_delegators (first-ever set per (chain, delegator)), repointed (later sets), active_delegators (running net through the month). Chains collapsed; churn classification is the can...
| Path | Methods | Tier | Filters | Pagination | Sort |
|---|---|---|---|---|---|
/v1/governance/governance_delegation_activity/monthly | GET | tier2 | -- | -- | -- |
GET /v1/governance/governance_delegation_activity/monthly
Monthly DelegateRegistry activity, long format (date, metric, value). Metrics: set_events, clear_events, net_change, new_delegators (first-ever set per (chain, delegator)), repointed (later sets), active_delegators (running net through the month). Chains collapsed; churn classification is the can...
Model: api_governance_delegation_activity_monthly — table dbt.api_governance_delegation_activity_monthly
Legacy endpoint — GET only, no query parameters, returns the full table.
Columns
| Column | Type | Description |
|---|---|---|
date | Date | Month bucket (start of month). |
metric | String | -- |
value | Int64 | Int64 -- net_change can be negative. |
Example
governance_delegation_graph¶
Current delegator -> delegate edges (one row per active delegation per chain), for a delegation-network visual. chain_id separates the two registries; tx_hash lets a reader verify any edge on-chain.
| Path | Methods | Tier | Filters | Pagination | Sort |
|---|---|---|---|---|---|
/v1/governance/governance_delegation_graph/latest | GET | tier2 | -- | -- | -- |
GET /v1/governance/governance_delegation_graph/latest
Current delegator -> delegate edges (one row per active delegation per chain), for a delegation-network visual. chain_id separates the two registries; tx_hash lets a reader verify any edge on-chain.
Model: api_governance_delegation_graph — table dbt.api_governance_delegation_graph
Legacy endpoint — GET only, no query parameters, returns the full table.
Columns
| Column | Type | Description |
|---|---|---|
chain_id | UInt64 | 1 = Ethereum mainnet, 100 = Gnosis Chain. |
delegator | String | -- |
delegate | String | -- |
delegated_at | DateTime | -- |
tx_hash | String | -- |
as_of_date | Date | Snapshot freshness for this point-in-time endpoint — the date of the most recent active delegation. |
Example
governance_discussion_phases¶
Discussion and endorsement per proposal per lifecycle phase: before the proposal existed, after it existed but before voting opened, during the vote, and after it closed. Rows exist for any (proposal, phase) with either posts or likes, so a phase where people only clicked like is still present --...
| Path | Methods | Tier | Filters | Pagination | Sort |
|---|---|---|---|---|---|
/v1/governance/governance_discussion_phases/latest | GET | tier2 | -- | -- | -- |
GET /v1/governance/governance_discussion_phases/latest
Discussion and endorsement per proposal per lifecycle phase: before the proposal existed, after it existed but before voting opened, during the vote, and after it closed. Rows exist for any (proposal, phase) with either posts or likes, so a phase where people only clicked like is still present --...
Model: api_governance_discussion_phases — table dbt.api_governance_discussion_phases
Legacy endpoint — GET only, no query parameters, returns the full table.
Columns
| Column | Type | Description |
|---|---|---|
proposal_id | String | -- |
proposal_created_at | DateTime | Proposal creation time. Declared so the daily time-spine bridge can resolve it -- the registry validator checks relationship keys against DECLARED columns, n... |
phase | String | -- |
posts | UInt64 | -- |
participants | UInt64 | Distinct forum user_ids posting in this phase. |
likes_given_in_phase | UInt64 | Likes counted by the LIKE's own timestamp -- exact, and the real "endorsement during the vote" figure. PREFER THIS. |
likes_on_posts_written_in_phase | UInt64 | Sum of the current like_count of posts WRITTEN in this phase. Approximate: a like given today on a 2023 post lands in 2023. Kept only so likes_given_in_phase... |
distinct_likers | UInt64 | -- |
question_share | Nullable(Float64) | Share of posts in this phase asking something rather than asserting, measured on quote-stripped text. NULL when the phase has no posts. |
as_of_date | Date | Latest forum activity this endpoint reflects, taken as the later of the newest linked-topic post and the newest like. It is a data-freshness anchor for the w... |
Example
governance_electorate¶
Electorate size per month measured two ways at once: how many PEOPLE voted and how much CAPITAL voted. The divergence between the two lines is the finding -- raw vote counts fell ~98.7% from 2022 to 2026, but median voting power per GIP is HIGHER now (137k vs 102k) and median voters per GIP (68) ...
| Path | Methods | Tier | Filters | Pagination | Sort |
|---|---|---|---|---|---|
/v1/governance/governance_electorate/monthly | GET | tier1 | -- | -- | -- |
GET /v1/governance/governance_electorate/monthly
Electorate size per month measured two ways at once: how many PEOPLE voted and how much CAPITAL voted. The divergence between the two lines is the finding -- raw vote counts fell ~98.7% from 2022 to 2026, but median voting power per GIP is HIGHER now (137k vs 102k) and median voters per GIP (68) ...
Model: api_governance_electorate_monthly — table dbt.api_governance_electorate_monthly
Legacy endpoint — GET only, no query parameters, returns the full table.
Columns
| Column | Type | Description |
|---|---|---|
date | Date | Month start. Months without a GIP proposal are absent. |
median_voters_per_proposal | UInt64 | -- |
median_vp_per_proposal | Float64 | -- |
Example
governance_forum_activity¶
Weekly forum activity long format (date, metric, value).
| Path | Methods | Tier | Filters | Pagination | Sort |
|---|---|---|---|---|---|
/v1/governance/governance_forum_activity/weekly | GET | tier2 | -- | -- | -- |
GET /v1/governance/governance_forum_activity/weekly
Weekly forum activity long format (date, metric, value).
Model: api_governance_forum_activity_weekly — table dbt.api_governance_forum_activity_weekly
Legacy endpoint — GET only, no query parameters, returns the full table.
Columns
| Column | Type | Description |
|---|---|---|
date | Date | -- |
metric | String | topics_created | posts_created | active_users | likes_given | distinct_likers | polls_created | poll_voter_slots. Likes follow the canonical eligibility cont... |
Example
governance_forum_proposal_links¶
Forum discussion <-> Snapshot vote cross-links, topic grain. Unions two independent signals -- a pasted proposal/0x URL in a post (via_forum_post) and the proposal's own authored discussion field (via_discussion) -- so a link found by only one method still gets its own row (43 discussion-only r...
| Path | Methods | Tier | Filters | Pagination | Sort |
|---|---|---|---|---|---|
/v1/governance/governance_forum_proposal_links/latest | GET | tier2 | -- | -- | -- |
GET /v1/governance/governance_forum_proposal_links/latest
Forum discussion <-> Snapshot vote cross-links, topic grain. Unions two independent signals -- a pasted proposal/0x URL in a post (via_forum_post) and the proposal's own authored discussion field (via_discussion) -- so a link found by only one method still gets its own row (43 discussion-only r...
Model: api_governance_forum_topic_proposal_links — table dbt.api_governance_forum_topic_proposal_links
Legacy endpoint — GET only, no query parameters, returns the full table.
Columns
| Column | Type | Description |
|---|---|---|
topic_id | UInt32 | -- |
proposal_id | String | Snapshot proposal id this topic links to. Same value as snapshot_proposal_id; kept as the semantic layer's proposal entity key. |
snapshot_proposal_id | String | Snapshot proposal id (0x form) resolved from either link signal. |
proposal_matched | Bool | True when the linked snapshot_proposal_id exists in int_governance_proposals. |
recovered_via_link | Bool | True when the topic's own title has no GIP number but a linked proposal does. |
via_forum_post | Bool | True when a post in this topic pastes this proposal's own 0x URL. |
via_discussion | Bool | True when this proposal's own authored discussion field points at this topic. |
corroborated_by_discussion | Bool | via_forum_post AND via_discussion -- both signals agree. False does NOT mean disagreement; most false rows are one signal without the other (see via_forum_po... |
as_of_date | Date | Snapshot freshness for this point-in-time endpoint — the creation date of the newest forum topic. |
Example
governance_funnel¶
Nested GIP conversion funnel: discussed on forum -> discussed AND reached Snapshot vote -> discussed AND reached vote AND (has_passed OR has_decided).
| Path | Methods | Tier | Filters | Pagination | Sort |
|---|---|---|---|---|---|
/v1/governance/governance_funnel/latest | GET | tier2 | -- | -- | -- |
GET /v1/governance/governance_funnel/latest
Nested GIP conversion funnel: discussed on forum -> discussed AND reached Snapshot vote -> discussed AND reached vote AND (has_passed OR has_decided).
Model: api_governance_gip_funnel — table dbt.api_governance_gip_funnel
Legacy endpoint — GET only, no query parameters, returns the full table.
Columns
| Column | Type | Description |
|---|---|---|
stage | String | -- |
gip_count | UInt64 | -- |
as_of_date | Date | Snapshot freshness for this point-in-time endpoint — the creation date of the newest proposal. |
Example
governance_gip_pipeline¶
Pending GIP pipeline: open forum topics whose GIP number never reached a Snapshot vote, with idle time. 45 idle days is the canonical dormancy threshold; every pending topic is exposed with flags (no cap, no hidden rows -- capping is presentation).
| Path | Methods | Tier | Filters | Pagination | Sort |
|---|---|---|---|---|---|
/v1/governance/governance_gip_pipeline/latest | GET | tier2 | -- | -- | -- |
GET /v1/governance/governance_gip_pipeline/latest
Pending GIP pipeline: open forum topics whose GIP number never reached a Snapshot vote, with idle time. 45 idle days is the canonical dormancy threshold; every pending topic is exposed with flags (no cap, no hidden rows -- capping is presentation).
Model: api_governance_gip_pipeline_latest — table dbt.api_governance_gip_pipeline_latest
Legacy endpoint — GET only, no query parameters, returns the full table.
Columns
| Column | Type | Description |
|---|---|---|
topic_id | UInt32 | -- |
title | String | -- |
gip_number | Nullable(UInt32) | -- |
phase | String | phase-1 | phase-2 | phase-3 | none (from topic tags). |
posts_count | UInt32 | -- |
participant_count | UInt32 | -- |
views | UInt32 | -- |
created_at | DateTime | -- |
last_posted_at | DateTime | -- |
days_idle | Int64 | -- |
is_dormant | Bool | days_idle > 45. |
as_of_date | Date | Query date (now()-anchored view). |
Example
governance_kpis¶
Single-row headline governance KPIs for number tiles: proposal/GIP/vote counts, unique voters, followers, proposals passed, pass rate, and average voters per closed GIP proposal (avg_voters_per_gip_proposal).
| Path | Methods | Tier | Filters | Pagination | Sort |
|---|---|---|---|---|---|
/v1/governance/governance_kpis/latest | GET | tier2 | -- | -- | -- |
GET /v1/governance/governance_kpis/latest
Single-row headline governance KPIs for number tiles: proposal/GIP/vote counts, unique voters, followers, proposals passed, pass rate, and average voters per closed GIP proposal (avg_voters_per_gip_proposal).
Model: api_governance_kpis_latest — table dbt.api_governance_kpis_latest
Legacy endpoint — GET only, no query parameters, returns the full table.
Columns
| Column | Type | Description |
|---|---|---|
total_proposals | UInt64 | -- |
unique_voters | UInt64 | -- |
gip_pass_rate | Nullable(Float64) | GIP-only passed / (passed + rejected + no_consensus + below_quorum). Excludes 'decided' selections. |
as_of_date | Date | Snapshot freshness for this point-in-time endpoint — the date of the latest vote ingested. |
Example
governance_poll_vs_vote¶
The forum's headcount verdict against the token verdict on the SAME question. The only comparison in the layer between two genuinely SEPARATE populations -- a forum temperature check (one person one vote, no token needed) and the Snapshot ballot that followed. head_minus_weight_against on api_gov...
| Path | Methods | Tier | Filters | Pagination | Sort |
|---|---|---|---|---|---|
/v1/governance/governance_poll_vs_vote/latest | GET | tier2 | -- | -- | -- |
GET /v1/governance/governance_poll_vs_vote/latest
The forum's headcount verdict against the token verdict on the SAME question. The only comparison in the layer between two genuinely SEPARATE populations -- a forum temperature check (one person one vote, no token needed) and the Snapshot ballot that followed. head_minus_weight_against on api_gov...
Model: api_governance_poll_vs_vote — table dbt.api_governance_poll_vs_vote
Legacy endpoint — GET only, no query parameters, returns the full table.
Columns
| Column | Type | Description |
|---|---|---|
proposal_id | String | -- |
proposal_created_at | DateTime | Declared so the daily time-spine bridge can resolve it. |
poll_name | String | Exposed because the grain is many-to-many; part of the poll's identity. |
poll_phase | String | Where the poll sits in this proposal's lifecycle. 'pre_discussion' is the only phase that makes it a genuine temperature check. |
is_pre_vote_check | Bool | is_temperature_check AND poll_phase = 'pre_discussion'. The honest subset. |
poll_against_share | Nullable(Float64) | -- |
vote_against_share_by_vp | Nullable(Float64) | -- |
poll_minus_vote_vp | Nullable(Float64) | Forum headcount minus token weight. POSITIVE = the community was more opposed than the capital that decided it; NEGATIVE = capital more opposed than the comm... |
verdicts_disagree | Bool | The two populations landed on opposite sides of 50%. The headline cases. |
as_of_date | Date | Freshness anchor for the whole view, NOT a per-row date. Taken from the poll side, since that is what this endpoint adds. Polls dedup at block level, so an u... |
Example
governance_power_source¶
Monthly voting power by source (Staked GNO / GNO holdings / Delegated), long format (date, label, value). Empty until proposals carry strategies.
| Path | Methods | Tier | Filters | Pagination | Sort |
|---|---|---|---|---|---|
/v1/governance/governance_power_source/monthly | GET | tier2 | -- | -- | -- |
GET /v1/governance/governance_power_source/monthly
Monthly voting power by source (Staked GNO / GNO holdings / Delegated), long format (date, label, value). Empty until proposals carry strategies.
Model: api_governance_power_source_monthly — table dbt.api_governance_power_source_monthly
Legacy endpoint — GET only, no query parameters, returns the full table.
Columns
| Column | Type | Description |
|---|---|---|
date | Date | -- |
label | String | Power source bucket. |
value | Float64 | Summed voting power for the source that month. |
Example
governance_proposal_choices¶
Per-choice vote breakdown, long format (one row per proposal x choice), for the per-proposal For/Against/Abstain (or ranked-choice) bar with a quorum reference line. Works for any ballot shape, not just binary.
| Path | Methods | Tier | Filters | Pagination | Sort |
|---|---|---|---|---|---|
/v1/governance/governance_proposal_choices/latest | GET | tier2 | -- | -- | -- |
GET /v1/governance/governance_proposal_choices/latest
Per-choice vote breakdown, long format (one row per proposal x choice), for the per-proposal For/Against/Abstain (or ranked-choice) bar with a quorum reference line. Works for any ballot shape, not just binary.
Model: api_governance_proposal_choices — table dbt.api_governance_proposal_choices
Legacy endpoint — GET only, no query parameters, returns the full table.
Columns
| Column | Type | Description |
|---|---|---|
proposal_id | String | -- |
choice | String | Ballot option label. |
score | Float64 | Voting power this choice received. |
pct | Nullable(Float64) | Share of scores_total this choice received. Null if scores_total is 0. |
is_winner | Bool | True for the row matching the proposal's winning_choice. |
as_of_date | Date | Snapshot freshness for this point-in-time endpoint — the creation date of the newest proposal. |
Example
governance_proposal_direction¶
Per-proposal voting direction measured twice -- once by headcount, once by voting power -- plus the gap between them. Powers the "whales versus everyone else" view. Shares are over DECISIVE votes (for + against), excluding abstain so an abstain-heavy ballot never reads as consensus; abstain is ex...
| Path | Methods | Tier | Filters | Pagination | Sort |
|---|---|---|---|---|---|
/v1/governance/governance_proposal_direction/latest | GET | tier2 | -- | -- | -- |
GET /v1/governance/governance_proposal_direction/latest
Per-proposal voting direction measured twice -- once by headcount, once by voting power -- plus the gap between them. Powers the "whales versus everyone else" view. Shares are over DECISIVE votes (for + against), excluding abstain so an abstain-heavy ballot never reads as consensus; abstain is ex...
Model: api_governance_proposal_direction — table dbt.api_governance_proposal_direction
Legacy endpoint — GET only, no query parameters, returns the full table.
Columns
| Column | Type | Description |
|---|---|---|
proposal_id | String | -- |
created_at | DateTime | Proposal creation time. Declared so the daily time-spine bridge can resolve it. |
directional | Bool | False for ranked-choice and for proposals with no decodable decisive votes. |
against_share_by_head | Nullable(Float64) | against_voters / decisive_voters. NULL when there are no decisive votes. |
against_share_by_vp | Nullable(Float64) | against_vp / decisive_vp. NULL when there is no decisive voting power. |
head_minus_weight_against | Nullable(Float64) | against_share_by_head minus against_share_by_vp. POSITIVE = small holders were more opposed than capital; NEGATIVE = capital was more opposed than the crowd.... |
margin_by_vp | Nullable(Float64) | abs(for_vp - against_vp) / decisive_vp. 0 = dead heat, 1 = unanimous. |
as_of_date | Date | Snapshot freshness for this point-in-time endpoint — the creation date of the newest proposal. |
Example
governance_proposals¶
Proposal browse table (one row per Snapshot proposal) with outcome, category, quorum, and vote aggregates. Filter is_gip = 1 for GIPs only.
| Path | Methods | Tier | Filters | Pagination | Sort |
|---|---|---|---|---|---|
/v1/governance/governance_proposals/latest | GET | tier2 | -- | -- | -- |
GET /v1/governance/governance_proposals/latest
Proposal browse table (one row per Snapshot proposal) with outcome, category, quorum, and vote aggregates. Filter is_gip = 1 for GIPs only.
Model: api_governance_proposals_latest — table dbt.api_governance_proposals_latest
Legacy endpoint — GET only, no query parameters, returns the full table.
Columns
| Column | Type | Description |
|---|---|---|
id | String | -- |
created_at | DateTime | Proposal creation time. Declared so the daily time-spine bridge can resolve it. |
outcome | String | -- |
is_gip | Bool | -- |
quorum_status | String | Canonical quorum vocabulary: 'unspecified' (quorum <= 0, pre-2024), 'met', 'missed'. |
as_of_date | Date | Snapshot freshness for this point-in-time endpoint — the creation date of the newest proposal. |
Example
governance_proposals_live¶
Ballots open right now (voting window contains query time). Vote counts lag up to the daily ingest; hours_left is exact. Empty when no ballot is open -- an empty result is a fact, not a failure.
| Path | Methods | Tier | Filters | Pagination | Sort |
|---|---|---|---|---|---|
/v1/governance/governance_proposals_live/latest | GET | tier2 | -- | -- | -- |
GET /v1/governance/governance_proposals_live/latest
Ballots open right now (voting window contains query time). Vote counts lag up to the daily ingest; hours_left is exact. Empty when no ballot is open -- an empty result is a fact, not a failure.
Model: api_governance_proposals_live — table dbt.api_governance_proposals_live
Legacy endpoint — GET only, no query parameters, returns the full table.
Columns
| Column | Type | Description |
|---|---|---|
id | String | -- |
gip_number | Nullable(UInt32) | -- |
is_gip | Bool | -- |
title | String | -- |
start_at | DateTime | -- |
end_at | DateTime | -- |
hours_left | Int64 | -- |
votes_count | UInt64 | -- |
scores_total | Float64 | -- |
quorum | Float64 | -- |
quorum_status | String | Canonical vocabulary: 'unspecified' | 'met' | 'missed'. |
quorum_ratio | Nullable(Float64) | scores_total / quorum. NULL when quorum is unspecified. |
as_of_date | Date | Query date (now()-anchored view). |
Example
governance_top_proposers¶
Top 50 proposal authors by count, with outcome record. enactment_rate is (passed + decided) / closed proposals — distinct from gip_pass_rate on KPIs (pass/fail only, excludes selection ballots).
| Path | Methods | Tier | Filters | Pagination | Sort |
|---|---|---|---|---|---|
/v1/governance/governance_top_proposers/latest | GET | tier2 | -- | -- | -- |
GET /v1/governance/governance_top_proposers/latest
Top 50 proposal authors by count, with outcome record. enactment_rate is (passed + decided) / closed proposals — distinct from gip_pass_rate on KPIs (pass/fail only, excludes selection ballots).
Model: api_governance_top_proposers — table dbt.api_governance_top_proposers
Legacy endpoint — GET only, no query parameters, returns the full table.
Columns
| Column | Type | Description |
|---|---|---|
author | String | -- |
proposals_authored | UInt64 | -- |
enactment_rate | Nullable(Float64) | -- |
as_of_date | Date | Snapshot freshness for this leaderboard — the creation date of the newest proposal. |
Example
governance_top_voters¶
Top 200 voters by proposals voted, with cumulative and average voting power. total_vp_cast is participation-weighted, not a balance.
| Path | Methods | Tier | Filters | Pagination | Sort |
|---|---|---|---|---|---|
/v1/governance/governance_top_voters/latest | GET | tier2 | -- | -- | -- |
GET /v1/governance/governance_top_voters/latest
Top 200 voters by proposals voted, with cumulative and average voting power. total_vp_cast is participation-weighted, not a balance.
Model: api_governance_top_voters — table dbt.api_governance_top_voters
Legacy endpoint — GET only, no query parameters, returns the full table.
Columns
| Column | Type | Description |
|---|---|---|
voter | String | -- |
proposals_voted | UInt64 | -- |
as_of_date | Date | Snapshot freshness for this leaderboard — the date of the latest vote ingested. |
Example
governance_turnout¶
Per-GIP turnout browse table (is_gip=1 only): total_vp cast / eligible GNO supply (circulating on both chains + staked, conditionally). See int_governance_turnout for the full methodology, the GIP-only scoping rationale, and its historical-precision caveat.
| Path | Methods | Tier | Filters | Pagination | Sort |
|---|---|---|---|---|---|
/v1/governance/governance_turnout/latest | GET | tier2 | -- | -- | -- |
/v1/governance/governance_turnout/monthly | GET | tier2 | -- | -- | -- |
GET /v1/governance/governance_turnout/latest
Per-GIP turnout browse table (is_gip=1 only): total_vp cast / eligible GNO supply (circulating on both chains + staked, conditionally). See int_governance_turnout for the full methodology, the GIP-only scoping rationale, and its historical-precision caveat.
Model: api_governance_turnout_latest — table dbt.api_governance_turnout_latest
Legacy endpoint — GET only, no query parameters, returns the full table.
Columns
| Column | Type | Description |
|---|---|---|
proposal_id | String | -- |
created_at | DateTime | Proposal creation time. Declared so the daily time-spine bridge can resolve it. |
includes_staked_gno | Bool | True when this proposal's own strategies included staked GNO in the eligible pool. |
eligible_supply | Float64 | -- |
turnout | Nullable(Float64) | total_vp / eligible_supply. NULL if eligible_supply is 0. |
as_of_date | Date | Snapshot freshness for this point-in-time endpoint — the creation date of the newest scored GIP proposal. |
Example
GET /v1/governance/governance_turnout/monthly
Monthly turnout trend (is_gip=1 only): a simple average of per-GIP turnout ratios, NOT population-weighted by eligible supply. Directional trend only -- use api_governance_turnout_latest for exact per-proposal figures. A month with no real GIP shows no row (rather than a misleading 0%), since the...
Model: api_governance_turnout_monthly — table dbt.api_governance_turnout_monthly
Legacy endpoint — GET only, no query parameters, returns the full table.
Columns
| Column | Type | Description |
|---|---|---|
date | Date | Month start. |
avg_turnout | Nullable(Float64) | -- |
proposals | UInt64 | -- |
Example
governance_vote_trajectory¶
How opinion FORMED across a voting window: one row per (proposal, hour since voting opened) with cumulative against-share by headcount and by voting power. Viable because the median proposal spreads 100 votes over 50 distinct active hours in a 168h window. Intended use is to overlay forum post ti...
| Path | Methods | Tier | Filters | Pagination | Sort |
|---|---|---|---|---|---|
/v1/governance/governance_vote_trajectory/hourly | GET | tier2 | -- | -- | -- |
GET /v1/governance/governance_vote_trajectory/hourly
How opinion FORMED across a voting window: one row per (proposal, hour since voting opened) with cumulative against-share by headcount and by voting power. Viable because the median proposal spreads 100 votes over 50 distinct active hours in a 168h window. Intended use is to overlay forum post ti...
Model: api_governance_vote_trajectory — table dbt.api_governance_vote_trajectory
Legacy endpoint — GET only, no query parameters, returns the full table.
Columns
| Column | Type | Description |
|---|---|---|
proposal_id | String | -- |
hour_offset | UInt32 | Hours since start_at, floored at 0 so clock-skewed votes land in hour 0. |
turnout_progress | Nullable(Float64) | Share of the proposal's eventual turnout that had arrived by this hour. |
cum_against_share_by_vp | Nullable(Float64) | -- |
delta_against_share_by_vp | Nullable(Float64) | Hour-over-hour movement in the voting-power against-share. Large absolute values are the inflection candidates. NULL in a proposal's first bucket. |
Example
governance_whale_concentration¶
Per-proposal voting-power concentration: share of total vp cast by the top 1 / 5 / 10 voters. Reveals whale-decided votes a raw voter count would hide. NULL shares on zero-vote proposals.
| Path | Methods | Tier | Filters | Pagination | Sort |
|---|---|---|---|---|---|
/v1/governance/governance_whale_concentration/latest | GET | tier2 | -- | -- | -- |
GET /v1/governance/governance_whale_concentration/latest
Per-proposal voting-power concentration: share of total vp cast by the top 1 / 5 / 10 voters. Reveals whale-decided votes a raw voter count would hide. NULL shares on zero-vote proposals.
Model: api_governance_whale_concentration — table dbt.api_governance_whale_concentration
Legacy endpoint — GET only, no query parameters, returns the full table.
Columns
| Column | Type | Description |
|---|---|---|
proposal_id | String | -- |
created_at | DateTime | Proposal creation time. Declared so the daily time-spine bridge can resolve it. |
top1_share | Nullable(Float64) | Share of total_vp cast by the single largest voter. |
top10_share | Nullable(Float64) | Share of total_vp cast by the top 10 voters by vp. |
as_of_date | Date | Snapshot freshness for this point-in-time endpoint — the date of the latest vote ingested. |
Example