OpenAgentID documentation
Source referencesRust module referenceoas-document

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.

On this page