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_holder_count_report,
20    build_icrc_holder_count_report_with_source, build_icrc_total_supply_report,
21    build_icrc_total_supply_report_with_source,
22};
23#[cfg(feature = "host")]
24pub use build::{build_ic_canister_report, build_ic_canister_report_with_source};
25#[cfg(feature = "host")]
26pub use live::LiveIcSource;
27pub use model::{
28    IcBoundaryNodeDataCenterRow, IcBoundaryNodeDataCentersReport, IcBoundaryNodeDataCentersRequest,
29    IcCanisterCountReport, IcCanisterCountRequest, IcCanisterFilters, IcCanisterPageController,
30    IcCanisterPageReport, IcCanisterPageRequest, IcCanisterPageRow, IcCanisterReport,
31    IcCanisterRequest, IcCanisterUpgrade, IcDailyStatsQuery, IcDailyStatsReport,
32    IcDailyStatsRequest, IcDailyStatsRow, IcDashboardReportProvenance, IcIcrcAnalyticsRequest,
33    IcIcrcHolderCountReport, IcIcrcTotalSupplyObservation, IcIcrcTotalSupplyQuery,
34    IcIcrcTotalSupplyReport, IcIcrcTotalSupplyRequest, IcMetricKind, IcMetricObservation,
35    IcMetricQuery, IcMetricReport, IcMetricRequest, IcMetricSeries,
36};
37#[cfg(feature = "host")]
38pub use model::{
39    IcBoundaryNodeDataCentersSourceData, IcCanisterCountSourceData, IcCanisterPageSourceData,
40    IcCanisterSourceData, IcDailyStatsSourceData, IcHostError, IcIcrcHolderCountSourceData,
41    IcIcrcTotalSupplySourceData, IcMetricSourceData, IcSourceRequest,
42};
43#[cfg(feature = "host")]
44pub use source::{
45    IcCanisterCollectionSource, IcCanisterSource, IcIcrcAnalyticsSource, IcMetricSource,
46    IcNetworkSource,
47};
48pub use text::{
49    ic_boundary_node_data_centers_report_text, ic_canister_count_report_text,
50    ic_canister_page_report_text, ic_canister_report_text, ic_daily_stats_report_text,
51    ic_metric_report_text, icrc_holder_count_report_text, icrc_total_supply_report_text,
52};
53
54/// Default base endpoint for the official IC Dashboard API.
55pub const DEFAULT_IC_DASHBOARD_SOURCE_ENDPOINT: &str = "https://ic-api.internetcomputer.org/api/v3";
56
57/// Default base endpoint for official IC Dashboard canister collection queries.
58pub const DEFAULT_IC_DASHBOARD_CANISTER_COLLECTION_SOURCE_ENDPOINT: &str =
59    "https://ic-api.internetcomputer.org/api/v4";
60
61/// Default base endpoint for the official IC Dashboard Metrics API.
62pub const DEFAULT_IC_DASHBOARD_METRICS_SOURCE_ENDPOINT: &str =
63    "https://metrics-api.internetcomputer.org/api/v1";
64
65/// Default base endpoint for the official Dashboard ICRC analytics API.
66pub const DEFAULT_ICRC_ANALYTICS_SOURCE_ENDPOINT: &str =
67    "https://icrc-api.internetcomputer.org/api/v2";
68
69/// Default base endpoint for official boundary-node data-center queries.
70pub const DEFAULT_IC_BOUNDARY_NODE_DATA_CENTERS_SOURCE_ENDPOINT: &str =
71    "https://ic-api.internetcomputer.org/api/v4";
72
73/// Default row limit for one official Dashboard canister page.
74pub const DEFAULT_IC_CANISTER_PAGE_LIMIT: u16 = 50;
75
76/// Maximum row limit accepted for one official Dashboard canister page.
77pub const MAX_IC_CANISTER_PAGE_LIMIT: u16 = 100;
78
79/// Default relative window for one Dashboard metric query.
80pub const DEFAULT_IC_METRIC_WINDOW_SECS: u64 = 3_600;
81
82/// Default interval between requested Dashboard metric observations.
83pub const DEFAULT_IC_METRIC_STEP_SECS: u32 = 300;
84
85/// Earliest timestamp accepted by the official Dashboard Metrics API.
86pub const MIN_IC_METRIC_TIMESTAMP: u64 = 1_620_432_000;
87
88/// Largest step accepted by the official Dashboard Metrics API.
89pub const MAX_IC_METRIC_STEP_SECS: u32 = 259_200;
90
91/// Maximum requested observations accepted per metric series.
92pub const MAX_IC_METRIC_OBSERVATIONS_PER_SERIES: u64 = 1_000;
93
94/// Default relative window for one ICRC total-supply analytics query.
95pub const DEFAULT_ICRC_TOTAL_SUPPLY_WINDOW_SECS: u64 = 30 * 24 * 60 * 60;
96
97/// Default interval between ICRC total-supply observations.
98pub const DEFAULT_ICRC_TOTAL_SUPPLY_STEP_SECS: u32 = 86_400;
99
100/// Earliest timestamp accepted by the official Dashboard ICRC analytics API.
101pub const MIN_ICRC_ANALYTICS_TIMESTAMP: u64 = 1_620_328_530;
102
103/// Maximum requested observations accepted for one ICRC analytics series.
104pub const MAX_ICRC_ANALYTICS_OBSERVATIONS: u64 = 1_000;
105
106/// Default relative window for one Dashboard daily-statistics query.
107pub const DEFAULT_IC_DAILY_STATS_WINDOW_SECS: u64 = 7 * 24 * 60 * 60;
108
109/// Earliest timestamp accepted by the official Dashboard daily-statistics API.
110pub const MIN_IC_DAILY_STATS_TIMESTAMP: u64 = 1_620_406_800;
111
112/// Largest time window accepted by one daily-statistics request.
113pub const MAX_IC_DAILY_STATS_WINDOW_SECS: u64 = 366 * 24 * 60 * 60;
114
115/// Maximum daily-statistics rows accepted from one source response.
116pub const MAX_IC_DAILY_STATS_ROWS: usize = 366;
117
118/// Maximum boundary-node data-center rows accepted from one source response.
119pub const MAX_IC_BOUNDARY_NODE_DATA_CENTERS: usize = 1_000;
120
121#[cfg(feature = "host")]
122const IC_DASHBOARD_REPORT_SCHEMA_VERSION: u32 = 1;
123#[cfg(feature = "host")]
124const IC_DASHBOARD_AUTHORITY: &str = "official_ic_dashboard_api";
125#[cfg(feature = "host")]
126const IC_DASHBOARD_NETWORK: &str = "ic";
127
128#[cfg(all(test, feature = "host"))]
129mod tests;