Skip to main content

canic_core/api/
observability.rs

1//! Module: api::observability
2//!
3//! Responsibility: expose the Root-owned sensitive-observation relay to generated endpoints.
4//! Does not own: caller authorization, target authorization, or metric collection.
5//! Boundary: converts relay failures into the public Canic error contract.
6
7use crate::{
8    dto::{
9        error::Error,
10        observability::{CanisterObservabilityRequest, CanisterObservabilityResponse},
11    },
12    workflow::runtime::observability,
13};
14use candid::Principal;
15
16/// Public façade for the controller-authenticated Root observability relay.
17pub struct ObservabilityApi;
18
19impl ObservabilityApi {
20    /// Observe one canister that independently recognizes this Root as a controller.
21    pub async fn observe_root_controlled_canister(
22        canister_id: Principal,
23        request: CanisterObservabilityRequest,
24    ) -> Result<CanisterObservabilityResponse, Error> {
25        observability::observe_root_controlled_canister(canister_id, request)
26            .await
27            .map_err(Into::into)
28    }
29}