Skip to main content

dinio_sdk/api/
mod.rs

1//! One function per Core route, no logic beyond building the request and decoding the
2//! envelope. Modules follow `../core/src/api/router.ts` (non-admin routes only).
3
4mod audit_logs;
5mod certificates;
6mod client_identities;
7mod free_domains;
8mod geo;
9mod geo_bans;
10mod health_checks;
11mod records;
12mod redirects;
13mod sinkhole_links;
14mod sinkhole_lists;
15mod sinkhole_roles;
16mod stats;
17mod users;
18mod zone_members;
19mod zones;
20
21pub use audit_logs::{AuditLogFilter, AuditLogs};
22pub use certificates::Certificates;
23pub use client_identities::{ClientIdentities, ClientIdentityFilter};
24pub use free_domains::FreeDomains;
25pub use geo::Geo;
26pub use geo_bans::GeoBans;
27pub use health_checks::HealthChecks;
28pub use records::{RecordFilter, Records};
29pub use redirects::Redirects;
30pub use sinkhole_links::{SinkholeLinkFilter, SinkholeLinks};
31pub use sinkhole_lists::SinkholeLists;
32pub use sinkhole_roles::SinkholeRoles;
33pub use stats::{
34    ClientScope, Stats, StatsGroup, StatsMode, StatsSeriesQuery, StatsStep, StatsTopQuery,
35};
36pub use users::Users;
37pub use zone_members::ZoneMembers;
38pub use zones::Zones;
39
40use serde::{Deserialize, Serialize};
41
42use crate::auth::Secret;
43
44/// `{api_key}`, Core's answer to `POST …/api-key` (zone and personal keys alike).
45#[derive(Deserialize)]
46pub(crate) struct IssuedKey {
47    pub(crate) api_key: Secret,
48}
49
50/// Page selection for paginated lists. `None` leaves Core's default.
51#[derive(Debug, Clone, Copy, Default, Serialize)]
52pub struct PageRequest {
53    /// Page number, from 1.
54    #[serde(skip_serializing_if = "Option::is_none")]
55    pub page: Option<u32>,
56    /// Items per page, at most 500.
57    #[serde(skip_serializing_if = "Option::is_none")]
58    pub per_page: Option<u32>,
59}
60
61/// Largest `per_page` Core accepts (`int_query(..., 500)`).
62pub(crate) const MAX_PER_PAGE: u32 = 500;