Skip to main content

ic_query/ic/
mod.rs

1//! Official IC Dashboard API report models, adapters, builders, and renderers.
2
3#[cfg(feature = "host")]
4mod build;
5#[cfg(feature = "host")]
6mod live;
7mod model;
8#[cfg(feature = "host")]
9mod source;
10mod text;
11
12#[cfg(feature = "host")]
13pub use build::{
14    build_ic_boundary_node_data_centers_report,
15    build_ic_boundary_node_data_centers_report_with_source, build_ic_canister_count_report,
16    build_ic_canister_count_report_with_source, build_ic_canister_page_report,
17    build_ic_canister_page_report_with_source, build_ic_daily_stats_report,
18    build_ic_daily_stats_report_with_source, build_ic_metric_report,
19    build_ic_metric_report_with_source, build_icrc_indexed_count_report,
20    build_icrc_indexed_count_report_with_source, build_icrc_token_value_report,
21    build_icrc_token_value_report_with_source, build_icrc_total_supply_report,
22    build_icrc_total_supply_report_with_source,
23};
24#[cfg(feature = "host")]
25pub use build::{build_ic_canister_report, build_ic_canister_report_with_source};
26#[cfg(feature = "host")]
27pub use live::LiveIcSource;
28pub use model::{
29    IcBoundaryNodeDataCenterRow, IcBoundaryNodeDataCentersReport, IcBoundaryNodeDataCentersRequest,
30    IcCanisterCountReport, IcCanisterCountRequest, IcCanisterFilters, IcCanisterPageController,
31    IcCanisterPageReport, IcCanisterPageRequest, IcCanisterPageRow, IcCanisterReport,
32    IcCanisterRequest, IcCanisterUpgrade, IcDailyStatsQuery, IcDailyStatsReport,
33    IcDailyStatsRequest, IcDailyStatsRow, IcDashboardReportProvenance, IcIcrcAnalyticsRequest,
34    IcIcrcIndexedCountKind, IcIcrcIndexedCountReport, IcIcrcIndexedCountRequest,
35    IcIcrcTokenValueQuery, IcIcrcTokenValueReport, IcIcrcTokenValueRequest, IcIcrcTokenValueRow,
36    IcIcrcTotalSupplyObservation, IcIcrcTotalSupplyQuery, IcIcrcTotalSupplyReport,
37    IcIcrcTotalSupplyRequest, IcMetricKind, IcMetricObservation, IcMetricQuery, IcMetricReport,
38    IcMetricRequest, IcMetricSeries,
39};
40#[cfg(feature = "host")]
41pub use model::{
42    IcBoundaryNodeDataCentersSourceData, IcCanisterCountSourceData, IcCanisterPageSourceData,
43    IcCanisterSourceData, IcDailyStatsSourceData, IcHostError, IcIcrcIndexedCountSourceData,
44    IcIcrcTokenValueSourceData, IcIcrcTokenValueSourceRow, IcIcrcTotalSupplySourceData,
45    IcMetricSourceData, IcSourceRequest,
46};
47#[cfg(feature = "host")]
48pub use source::{
49    IcCanisterCollectionSource, IcCanisterSource, IcIcrcAnalyticsSource, IcMetricSource,
50    IcNetworkSource,
51};
52pub use text::{
53    ic_boundary_node_data_centers_report_text, ic_canister_count_report_text,
54    ic_canister_page_report_text, ic_canister_report_text, ic_daily_stats_report_text,
55    ic_metric_report_text, icrc_indexed_count_report_text, icrc_token_value_report_text,
56    icrc_total_supply_report_text,
57};
58
59/// Default base endpoint for the official IC Dashboard API.
60pub const DEFAULT_IC_DASHBOARD_SOURCE_ENDPOINT: &str = "https://ic-api.internetcomputer.org/api/v3";
61
62/// Default base endpoint for official IC Dashboard canister collection queries.
63pub const DEFAULT_IC_DASHBOARD_CANISTER_COLLECTION_SOURCE_ENDPOINT: &str =
64    "https://ic-api.internetcomputer.org/api/v4";
65
66/// Default base endpoint for the official IC Dashboard Metrics API.
67pub const DEFAULT_IC_DASHBOARD_METRICS_SOURCE_ENDPOINT: &str =
68    "https://metrics-api.internetcomputer.org/api/v1";
69
70/// Default base endpoint for the official Dashboard ICRC analytics API.
71pub const DEFAULT_ICRC_ANALYTICS_SOURCE_ENDPOINT: &str =
72    "https://icrc-api.internetcomputer.org/api/v2";
73
74/// Default base endpoint for official boundary-node data-center queries.
75pub const DEFAULT_IC_BOUNDARY_NODE_DATA_CENTERS_SOURCE_ENDPOINT: &str =
76    "https://ic-api.internetcomputer.org/api/v4";
77
78/// Maximum response-body size accepted from an official Dashboard HTTP endpoint.
79pub const MAX_IC_DASHBOARD_RESPONSE_BYTES: u64 = 8 * 1024 * 1024;
80
81/// Default row limit for one official Dashboard canister page.
82pub const DEFAULT_IC_CANISTER_PAGE_LIMIT: u16 = 50;
83
84/// Maximum row limit accepted for one official Dashboard canister page.
85pub const MAX_IC_CANISTER_PAGE_LIMIT: u16 = 100;
86
87/// Default relative window for one Dashboard metric query.
88pub const DEFAULT_IC_METRIC_WINDOW_SECS: u64 = 3_600;
89
90/// Default interval between requested Dashboard metric observations.
91pub const DEFAULT_IC_METRIC_STEP_SECS: u32 = 300;
92
93/// Earliest timestamp accepted by the official Dashboard Metrics API.
94pub const MIN_IC_METRIC_TIMESTAMP: u64 = 1_620_432_000;
95
96/// Largest step accepted by the official Dashboard Metrics API.
97pub const MAX_IC_METRIC_STEP_SECS: u32 = 259_200;
98
99/// Maximum requested observations accepted per metric series.
100pub const MAX_IC_METRIC_OBSERVATIONS_PER_SERIES: u64 = 1_000;
101
102/// Default relative window for one ICRC total-supply analytics query.
103pub const DEFAULT_ICRC_TOTAL_SUPPLY_WINDOW_SECS: u64 = 30 * 24 * 60 * 60;
104
105/// Default interval between ICRC total-supply observations.
106pub const DEFAULT_ICRC_TOTAL_SUPPLY_STEP_SECS: u32 = 86_400;
107
108/// Earliest timestamp accepted by the official Dashboard ICRC analytics API.
109pub const MIN_ICRC_ANALYTICS_TIMESTAMP: u64 = 1_620_328_530;
110
111/// Maximum requested observations accepted for one ICRC analytics series.
112pub const MAX_ICRC_ANALYTICS_OBSERVATIONS: u64 = 1_000;
113
114/// Default relative window for one ICRC token-value analytics query.
115pub const DEFAULT_ICRC_TOKEN_VALUE_WINDOW_SECS: u64 = 24 * 60 * 60;
116
117/// Default row limit for one ICRC token-value analytics query.
118pub const DEFAULT_ICRC_TOKEN_VALUE_LIMIT: u16 = 1_000;
119
120/// Largest time window accepted for one ICRC token-value query.
121pub const MAX_ICRC_TOKEN_VALUE_WINDOW_SECS: u64 = 90 * 24 * 60 * 60;
122
123/// Maximum token-value rows requested or accepted by one report.
124pub const MAX_ICRC_TOKEN_VALUE_ROWS: u16 = 1_000;
125
126/// Default relative window for one Dashboard daily-statistics query.
127pub const DEFAULT_IC_DAILY_STATS_WINDOW_SECS: u64 = 7 * 24 * 60 * 60;
128
129/// Earliest timestamp accepted by the official Dashboard daily-statistics API.
130pub const MIN_IC_DAILY_STATS_TIMESTAMP: u64 = 1_620_406_800;
131
132/// Largest time window accepted by one daily-statistics request.
133pub const MAX_IC_DAILY_STATS_WINDOW_SECS: u64 = 366 * 24 * 60 * 60;
134
135/// Maximum daily-statistics rows accepted from one source response.
136pub const MAX_IC_DAILY_STATS_ROWS: usize = 366;
137
138/// Maximum boundary-node data-center rows accepted from one source response.
139pub const MAX_IC_BOUNDARY_NODE_DATA_CENTERS: usize = 1_000;
140
141#[cfg(feature = "host")]
142const IC_DASHBOARD_REPORT_SCHEMA_VERSION: u32 = 1;
143#[cfg(feature = "host")]
144const IC_DASHBOARD_AUTHORITY: &str = "official_ic_dashboard_api";
145#[cfg(feature = "host")]
146const IC_DASHBOARD_NETWORK: &str = "ic";
147
148#[cfg(all(test, feature = "host"))]
149mod tests;