oas-document · pricing
Declared module signatures, types, configuration, and source documentation.
Source: oas/oas/oas-document/src/pricing.rs. SHA-256: 68ede0b953a50b00885b05e0bd4340215873db18de5ed95786652bca372aba9f.
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.
pricing::CostEntry
A cost entry describing pricing for a specific unit of work.
Examples
use oas_document::pricing::CostEntry;
let cost = CostEntry {
unit: "request".to_string(),
amount: "0.001".to_string(),
currency: "USD".to_string(),
};#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct CostEntry {
/// What is being priced: `"request"`, `"token"`, `"minute"`,
/// `"task"`, `"subscription_monthly"`.
pub unit: String,
/// Amount as a decimal string (to avoid floating-point issues).
pub amount: String,
/// ISO 4217 currency code (e.g., `"USD"`, `"EUR"`, `"BTC"`, `"ETH"`).
pub currency: String
}Source line: 26.
pricing::PricingSection
Pricing and economics section of an OAS Identity Document.
Examples
use oas_document::pricing::{PricingSection, CostEntry};
use oas_document::visibility::Visibility;
let pricing = PricingSection {
model: "per_request".to_string(),
costs: vec![CostEntry {
unit: "request".to_string(),
amount: "0.001".to_string(),
currency: "USD".to_string(),
}],
currencies_accepted: vec!["USD".to_string(), "ETH".to_string()],
billing_endpoint: Some("https://api.acme.com/billing".to_string()),
free_tier_limits: Some("100 requests/day".to_string()),
billing_visibility: Visibility::Authenticated,
};
assert_eq!(pricing.model, "per_request");#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PricingSection {
/// Pricing model: `"free"`, `"per_request"`, `"per_token"`,
/// `"subscription"`, `"negotiated"`, `"custom"`.
pub model: String,
/// Individual cost entries.
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub costs: Vec<CostEntry>,
/// Currencies accepted (ISO 4217 or crypto ticker).
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub currencies_accepted: Vec<String>,
/// Billing/payment endpoint URL.
#[serde(skip_serializing_if = "Option::is_none")]
pub billing_endpoint: Option<String>,
/// Free tier description (e.g., "100 requests/day", "1000 tokens/month").
#[serde(skip_serializing_if = "Option::is_none")]
pub free_tier_limits: Option<String>,
/// Visibility of billing details.
#[serde(default)]
pub billing_visibility: Visibility
}Source line: 62.
pricing::models
Standard pricing models.
pub mod models;Source line: 89.
pricing::models::FREE
pub const FREE: &str;Source line: 90.
pricing::models::PER_REQUEST
pub const PER_REQUEST: &str;Source line: 91.
pricing::models::PER_TOKEN
pub const PER_TOKEN: &str;Source line: 92.
pricing::models::SUBSCRIPTION
pub const SUBSCRIPTION: &str;Source line: 93.
pricing::models::NEGOTIATED
pub const NEGOTIATED: &str;Source line: 94.
pricing::models::CUSTOM
pub const CUSTOM: &str;Source line: 95.