oas-document · operational
Declared module signatures, types, configuration, and source documentation.
Source: oas/oas/oas-document/src/operational.rs. SHA-256: a0a03270339a7b9f4dbbeac3a800654edb63b530e9aafa6f9b92e160ea913360.
This source reference follows declared modules and preserves feature attributes. It includes public declarations and implementation methods in those modules. Private-module exports and trait resolution still require the compiler; not every declaration is a crate-root import. Function bodies and constant values are omitted. Source comments describe their implementation context and are not a production deployment claim.
operational::SlaCommitment
An SLA commitment for a specific metric.
Examples
use oas_document::operational::SlaCommitment;
let sla = SlaCommitment {
metric: "response_time_p95".to_string(),
target: "<500ms".to_string(),
};#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SlaCommitment {
/// Metric name: `"response_time_p95"`, `"uptime"`, `"throughput"`.
pub metric: String,
/// Target value: `"<500ms"`, `"99.9%"`, `"1000 req/min"`.
pub target: String
}Source line: 25.
operational::RateLimit
A rate limit specification.
Examples
use oas_document::operational::RateLimit;
let limit = RateLimit {
resource: "requests".to_string(),
limit: 1000,
window: "minute".to_string(),
};#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RateLimit {
/// What is being limited: `"requests"`, `"tokens"`, `"bytes"`.
pub resource: String,
/// Numeric limit value.
pub limit: u64,
/// Time window: `"second"`, `"minute"`, `"hour"`, `"day"`.
pub window: String
}Source line: 48.
operational::OperationalSection
Operational specification section of an OAS Identity Document.
Examples
use oas_document::operational::{OperationalSection, SlaCommitment, RateLimit};
let ops = OperationalSection {
availability: Some("24/7".to_string()),
sla: vec![SlaCommitment {
metric: "uptime".to_string(),
target: "99.9%".to_string(),
}],
rate_limits: vec![RateLimit {
resource: "requests".to_string(),
limit: 1000,
window: "minute".to_string(),
}],
supported_input_formats: vec!["application/json".to_string()],
supported_output_formats: vec!["application/json".to_string()],
max_payload_bytes: Some(10_485_760),
max_context_tokens: None,
maintenance_windows: vec![],
};
assert_eq!(ops.sla.len(), 1);#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct OperationalSection {
/// Availability mode: `"24/7"`, `"business_hours"`, `"on_demand"`, `"scheduled"`.
#[serde(skip_serializing_if = "Option::is_none")]
pub availability: Option<String>,
/// SLA commitments.
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub sla: Vec<SlaCommitment>,
/// Rate limits.
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub rate_limits: Vec<RateLimit>,
/// Accepted input MIME types (e.g., `"application/json"`, `"text/plain"`).
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub supported_input_formats: Vec<String>,
/// Produced output MIME types.
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub supported_output_formats: Vec<String>,
/// Maximum request payload size in bytes.
#[serde(skip_serializing_if = "Option::is_none")]
pub max_payload_bytes: Option<u64>,
/// Maximum context window in tokens (for LLM-backed agents).
#[serde(skip_serializing_if = "Option::is_none")]
pub max_context_tokens: Option<u64>,
/// Scheduled maintenance windows when the entity is unavailable.
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub maintenance_windows: Vec<ScheduleWindow>
}Source line: 87.