pub(crate) mod auth {
pub(crate) const REGISTER: &str = "/api/v1/auth/register";
pub(crate) const LOGIN: &str = "/api/v1/auth/login";
pub(crate) const REFRESH: &str = "/api/v1/auth/refresh";
pub(crate) const LOGOUT: &str = "/api/v1/auth/logout";
pub(crate) const ME: &str = "/api/v1/auth/me";
pub(crate) const METHODS: &str = "/api/v1/auth/methods";
pub(crate) const DEVICE_APPROVE: &str = "/api/v1/auth/device/approve";
pub(crate) const DEVICE_DENY: &str = "/api/v1/auth/device/deny";
pub(crate) const DEVICE_LOOKUP: &str = "/api/v1/auth/device/lookup";
}
pub(crate) mod api_tokens {
use uuid::Uuid;
pub(crate) const BASE: &str = "/api/v1/auth/api-tokens";
pub(crate) fn by_id(id: &Uuid) -> String {
format!("/api/v1/auth/api-tokens/{id}")
}
}
pub(crate) mod health {
pub(crate) const HEALTHZ: &str = "/healthz";
}
pub(crate) mod autodiscovery {
use uuid::Uuid;
pub(crate) const IGNORES: &str = "/api/v1/autodiscovery/ignores";
pub(crate) const BATCH: &str = "/api/v1/autodiscovery/ignores/batch";
pub(crate) fn ignore_by_id(id: &Uuid) -> String {
format!("/api/v1/autodiscovery/ignores/{id}")
}
}
pub(crate) mod discovery_allowlist {
use uuid::Uuid;
pub(crate) const BASE: &str = "/api/v1/discovery-allowlist";
pub(crate) fn by_id(id: &Uuid) -> String {
format!("/api/v1/discovery-allowlist/{id}")
}
pub(crate) fn host_base(host_id: &Uuid) -> String {
format!("/api/v1/hosts/{host_id}/discovery-allowlist")
}
pub(crate) fn host_entry(host_id: &Uuid, entry_id: &Uuid) -> String {
format!("/api/v1/hosts/{host_id}/discovery-allowlist/{entry_id}")
}
}
pub(crate) mod host_tags {
use uuid::Uuid;
pub(crate) const BASE: &str = "/api/v1/host-tags";
pub(crate) const BATCH: &str = "/api/v1/host-tags/batch";
pub(crate) fn by_id(id: &Uuid) -> String {
format!("/api/v1/host-tags/{id}")
}
pub(crate) fn host_tags(host_id: &Uuid) -> String {
format!("/api/v1/hosts/{host_id}/tags")
}
}
pub(crate) mod hosts {
use uuid::Uuid;
pub(crate) const BASE: &str = "/api/v1/hosts";
pub(crate) const BATCH: &str = "/api/v1/hosts/batch";
pub(crate) fn by_id(id: &Uuid) -> String {
format!("/api/v1/hosts/{id}")
}
pub(crate) fn discover(id: &Uuid) -> String {
format!("/api/v1/hosts/{id}/discover")
}
}
pub(crate) mod oidc_auth {
use uuid::Uuid;
pub(crate) fn authorize(provider_id: &Uuid) -> String {
format!("/api/v1/auth/oidc/{provider_id}/authorize")
}
pub(crate) const EXCHANGE: &str = "/api/v1/auth/oidc/exchange";
pub(crate) const LINK: &str = "/api/v1/auth/oidc/link";
pub(crate) const COMPLETE_REGISTRATION: &str = "/api/v1/auth/oidc/complete-registration";
}
pub(crate) mod oidc_providers {
use uuid::Uuid;
pub(crate) const BASE: &str = "/api/v1/settings/oidc-providers";
pub(crate) fn by_id(id: &Uuid) -> String {
format!("/api/v1/settings/oidc-providers/{id}")
}
pub(crate) fn activate(id: &Uuid) -> String {
format!("/api/v1/settings/oidc-providers/{id}/activate")
}
pub(crate) fn deactivate(id: &Uuid) -> String {
format!("/api/v1/settings/oidc-providers/{id}/deactivate")
}
}
pub(crate) mod pki {
pub(crate) const CA_CERT: &str = "/api/v1/pki/ca.crt";
pub(crate) const CA_CRL: &str = "/api/v1/pki/ca.crl";
}
pub(crate) mod plugin_configs {
use uuid::Uuid;
pub(crate) const PLUGIN_TYPES: &str = "/api/v1/plugin-types";
pub(crate) const BASE: &str = "/api/v1/plugin-configs";
pub(crate) const BATCH: &str = "/api/v1/plugin-configs/batch";
pub(crate) fn by_id(id: &Uuid) -> String {
format!("/api/v1/plugin-configs/{id}")
}
pub(crate) fn discover(id: &Uuid) -> String {
format!("/api/v1/plugin-configs/{id}/discover")
}
pub(crate) const TEST: &str = "/api/v1/plugin-configs/test";
}
pub(crate) mod plugin_type_settings {
pub(crate) const BASE: &str = "/api/v1/plugin-type-settings";
pub(crate) fn by_type(plugin_type: &str) -> String {
format!("/api/v1/plugin-type-settings/{plugin_type}")
}
}
pub(crate) mod scheduler {
use uuid::Uuid;
pub(crate) const BASE: &str = "/api/v1/scheduler/tasks";
pub(crate) fn by_id(id: &Uuid) -> String {
format!("/api/v1/scheduler/tasks/{id}")
}
pub(crate) fn trigger(id: &Uuid) -> String {
format!("/api/v1/scheduler/tasks/{id}/trigger")
}
}
pub(crate) mod notifications {
use uuid::Uuid;
pub(crate) const CHANNELS: &str = "/api/v1/notifications/channels";
pub(crate) fn channel_by_id(id: &Uuid) -> String {
format!("/api/v1/notifications/channels/{id}")
}
pub(crate) fn test_channel(id: &Uuid) -> String {
format!("/api/v1/notifications/channels/{id}/test")
}
pub(crate) const RULES: &str = "/api/v1/notifications/rules";
pub(crate) fn rule_by_id(id: &Uuid) -> String {
format!("/api/v1/notifications/rules/{id}")
}
pub(crate) const LOG: &str = "/api/v1/notifications/log";
}
pub(crate) mod enrollment_tokens {
use uuid::Uuid;
pub(crate) const BASE: &str = "/api/v1/enrollment-tokens";
pub(crate) fn by_id(id: &Uuid) -> String {
format!("/api/v1/enrollment-tokens/{id}")
}
}
pub(crate) mod services {
use uuid::Uuid;
pub(crate) const BASE: &str = "/api/v1/services";
pub(crate) const BATCH: &str = "/api/v1/services/batch";
pub(crate) fn by_id(id: &Uuid) -> String {
format!("/api/v1/services/{id}")
}
pub(crate) fn approve(id: &Uuid) -> String {
format!("/api/v1/services/{id}/approve")
}
pub(crate) fn reject(id: &Uuid) -> String {
format!("/api/v1/services/{id}/reject")
}
pub(crate) fn merge(id: &Uuid) -> String {
format!("/api/v1/services/{id}/merge")
}
pub(crate) fn update_freeze(id: &Uuid) -> String {
format!("/api/v1/services/{id}/update-freeze")
}
}
pub(crate) mod system_services {
use uuid::Uuid;
pub(crate) const BASE: &str = "/api/v1/system-services";
pub(crate) const BATCH: &str = "/api/v1/system-services/batch";
pub(crate) fn by_id(id: &Uuid) -> String {
format!("/api/v1/system-services/{id}")
}
pub(crate) fn approve(id: &Uuid) -> String {
format!("/api/v1/system-services/{id}/approve")
}
pub(crate) fn reject(id: &Uuid) -> String {
format!("/api/v1/system-services/{id}/reject")
}
}
pub(crate) mod system_enrollment_tokens {
use uuid::Uuid;
pub(crate) const BASE: &str = "/api/v1/system-enrollment-tokens";
pub(crate) fn by_id(id: &Uuid) -> String {
format!("/api/v1/system-enrollment-tokens/{id}")
}
}
pub(crate) mod global_settings {
pub(crate) const COMBINED: &str = "/api/v1/global-settings";
}
pub(crate) mod settings {
pub(crate) const COMBINED: &str = "/api/v1/settings";
pub(crate) const ACCESS: &str = "/api/v1/settings/access";
pub(crate) const AGENT_CERTIFICATES: &str = "/api/v1/settings/agent-certificates";
pub(crate) const NETWORK: &str = "/api/v1/global-settings/network";
pub(crate) const ROTATE_CA: &str = "/api/v1/global-settings/ca/rotate";
pub(crate) const RENEW_SERVER_CERT: &str = "/api/v1/settings/renew-server-certificate";
pub(crate) const RESET_DATA: &str = "/api/v1/settings/reset-data";
}
pub(crate) mod settings_nats {
pub(crate) const BASE: &str = "/api/v1/global-settings/nats";
}
pub(crate) mod settings_provider_github {
pub(crate) const BASE: &str = "/api/v1/global-settings/providers/github";
}
pub(crate) mod software_items {
use uuid::Uuid;
pub(crate) const BASE: &str = "/api/v1/software-items";
pub(crate) const BATCH: &str = "/api/v1/software-items/batch";
pub(crate) const MERGE_PREVIEW: &str = "/api/v1/software-items/merge/preview";
pub(crate) const MERGE_EXECUTE: &str = "/api/v1/software-items/merge/execute";
pub(crate) fn by_id(id: &Uuid) -> String {
format!("/api/v1/software-items/{id}")
}
pub(crate) fn hosts(id: &Uuid) -> String {
format!("/api/v1/software-items/{id}/hosts")
}
pub(crate) fn host(item_id: &Uuid, host_id: &Uuid) -> String {
format!("/api/v1/software-items/{item_id}/hosts/{host_id}")
}
pub(crate) fn check_versions(id: &Uuid) -> String {
format!("/api/v1/software-items/{id}/check-versions")
}
pub(crate) fn host_check_versions(item_id: &Uuid, host_id: &Uuid) -> String {
format!("/api/v1/software-items/{item_id}/hosts/{host_id}/check-versions")
}
pub(crate) fn host_update(item_id: &Uuid, host_id: &Uuid) -> String {
format!("/api/v1/software-items/{item_id}/hosts/{host_id}/update")
}
pub(crate) fn host_plugin_assignment(
item_id: &Uuid,
host_id: &Uuid,
role: &str,
ordinal: i32,
) -> String {
format!("/api/v1/software-items/{item_id}/hosts/{host_id}/plugins/{role}/{ordinal}")
}
pub(crate) fn approve(id: &Uuid) -> String {
format!("/api/v1/software-items/{id}/approve")
}
}
pub(crate) mod system_alerts {
pub(crate) const ALERTS: &str = "/api/v1/system/alerts";
}
pub(crate) mod update_batches {
use uuid::Uuid;
pub(crate) const BASE: &str = "/api/v1/update-batches";
pub(crate) fn by_id(id: &Uuid) -> String {
format!("/api/v1/update-batches/{id}")
}
pub(crate) fn host_batch_update(host_id: &Uuid) -> String {
format!("/api/v1/hosts/{host_id}/batch-update")
}
pub(crate) fn item_batch_update(id: &Uuid) -> String {
format!("/api/v1/software-items/{id}/batch-update")
}
pub(crate) fn stream(id: &Uuid) -> String {
format!("/api/v1/update-batches/{id}/stream")
}
}
pub(crate) mod events {
pub(crate) const STREAM: &str = "/api/v1/events/stream";
}
pub(crate) mod surfaces {
pub(crate) const BASE: &str = "/api/v1/surfaces";
pub(crate) fn providers(surface_id: &str) -> String {
format!("/api/v1/surfaces/{surface_id}/providers")
}
pub(crate) fn read(surface_id: &str) -> String {
format!("/api/v1/surfaces/{surface_id}")
}
pub(crate) fn interaction(surface_id: &str, interaction_id: &str) -> String {
format!("/api/v1/surfaces/{surface_id}/interactions/{interaction_id}")
}
pub(crate) fn interaction_item(
surface_id: &str,
interaction_id: &str,
item_id: &str,
) -> String {
format!("/api/v1/surfaces/{surface_id}/interactions/{interaction_id}/{item_id}")
}
}
pub(crate) mod users {
use uuid::Uuid;
pub(crate) const BASE: &str = "/api/v1/users";
pub(crate) fn by_id(id: &Uuid) -> String {
format!("/api/v1/users/{id}")
}
pub(crate) fn roles(id: &Uuid) -> String {
format!("/api/v1/users/{id}/roles")
}
pub(crate) fn active(id: &Uuid) -> String {
format!("/api/v1/users/{id}/active")
}
}
pub(crate) mod roles {
use uuid::Uuid;
pub(crate) const BASE: &str = "/api/v1/roles";
pub(crate) fn by_id(id: &Uuid) -> String {
format!("/api/v1/roles/{id}")
}
}
pub(crate) mod access_catalog {
pub(crate) const BASE: &str = "/api/v1/access/catalog";
}
pub(crate) mod access_grants {
use uuid::Uuid;
pub(crate) const BASE: &str = "/api/v1/access/grants";
pub(crate) fn by_id(id: &Uuid) -> String {
format!("/api/v1/access/grants/{id}")
}
}
pub(crate) mod audit_logs {
pub(crate) const BASE: &str = "/api/v1/audit-logs";
pub(crate) const SYSTEM: &str = "/api/v1/system-audit-logs";
}
pub(crate) mod update_history {
use uuid::Uuid;
pub(crate) const BASE: &str = "/api/v1/update-history";
pub(crate) fn by_id(id: &Uuid) -> String {
format!("/api/v1/update-history/{id}")
}
pub(crate) fn output_stream(id: &Uuid) -> String {
format!("/api/v1/update-history/{id}/output/stream")
}
}
pub(crate) mod oauth {
pub(crate) const DEVICE_AUTHORIZATION: &str = "/api/v1/oauth/device_authorization";
pub(crate) const TOKEN: &str = "/api/v1/oauth/token";
pub(crate) const METADATA: &str = "/.well-known/oauth-authorization-server";
pub(crate) const CLIENTS: &str = "/api/oauth/clients";
pub(crate) fn client_by_id(client_id: &str) -> String {
format!("/api/oauth/clients/{}", encode_segment(client_id))
}
pub(crate) fn client_trust(client_id: &str) -> String {
format!("/api/oauth/clients/{}/trust", encode_segment(client_id))
}
pub(crate) const CONSENTS: &str = "/api/oauth/consents";
pub(crate) fn consent_by_id(id: &uuid::Uuid) -> String {
format!("/api/oauth/consents/{id}")
}
fn encode_segment(s: &str) -> String {
percent_encoding::utf8_percent_encode(s, percent_encoding::NON_ALPHANUMERIC).to_string()
}
}