Skip to main content

cpex_core/extensions/
request.rs

1// Location: ./crates/cpex-core/src/extensions/request.rs
2// Copyright 2025
3// SPDX-License-Identifier: Apache-2.0
4// Authors: Teryl Taylor
5//
6// RequestExtension — execution environment and tracing.
7// Mirrors cpex/framework/extensions/request.py.
8
9use serde::{Deserialize, Serialize};
10
11/// Execution environment and request tracing.
12///
13/// Immutable — set by the host before invoking the hook.
14#[derive(Debug, Clone, Default, Serialize, Deserialize)]
15pub struct RequestExtension {
16    /// Deployment environment (e.g., "production", "staging").
17    #[serde(default, skip_serializing_if = "Option::is_none")]
18    pub environment: Option<String>,
19
20    /// Unique request identifier.
21    #[serde(default, skip_serializing_if = "Option::is_none")]
22    pub request_id: Option<String>,
23
24    /// Request timestamp (ISO 8601).
25    #[serde(default, skip_serializing_if = "Option::is_none")]
26    pub timestamp: Option<String>,
27
28    /// Distributed trace ID.
29    #[serde(default, skip_serializing_if = "Option::is_none")]
30    pub trace_id: Option<String>,
31
32    /// Span ID within the trace.
33    #[serde(default, skip_serializing_if = "Option::is_none")]
34    pub span_id: Option<String>,
35}