pub struct CatalogOffering {Show 15 fields
pub provider: String,
pub wire_model_id: String,
pub canonical_model: Option<String>,
pub endpoint_key: String,
pub default_for_provider: bool,
pub family: Option<String>,
pub limit: Option<ModelsDevLimit>,
pub cost: Option<ModelsDevCost>,
pub modalities: Option<ModelsDevModalities>,
pub attachment: Option<bool>,
pub reasoning: Option<bool>,
pub tool_call: Option<bool>,
pub structured_output: Option<bool>,
pub reasoning_options: Vec<Value>,
pub source: CatalogSource,
}Expand description
One catalog-layer offering row.
This carries the routing identity (provider + wire id + optional canonical
model + endpoint) plus the offering-owned Models.dev facts CodeWhale wants to
preserve (family, limits, cost, reasoning support/options). It is a superset
of ProviderModelOffering; use CatalogOffering::to_offering to project
the minimal routing identity the resolver consumes.
Fields§
§provider: StringProvider id serving this offering.
wire_model_id: StringProvider-owned wire id sent on the request (verbatim).
canonical_model: Option<String>Canonical model identity, only when an explicit join exists.
endpoint_key: StringEndpoint key the offering is served on (e.g. chat).
default_for_provider: boolWhether this is the provider’s default offering.
family: Option<String>Model family/series as exposed for this offering (e.g. glm, deepseek).
limit: Option<ModelsDevLimit>Token limits for this offering, when known.
cost: Option<ModelsDevCost>Provider-scoped pricing, when known.
modalities: Option<ModelsDevModalities>Input/output modalities for this offering, when known. Carried as the
raw Models.dev shape so a factual text vs multimodal label can be
derived without guessing; None means the layer did not state it (an
unknown, not “text-only”).
attachment: Option<bool>Whether this provider offering accepts attachments, when known.
reasoning: Option<bool>Whether this offering supports reasoning, when known.
tool_call: Option<bool>Whether tool calling is supported, when known (#4115).
structured_output: Option<bool>Whether structured output is supported, when known.
reasoning_options: Vec<Value>Provider-scoped reasoning controls / accepted effort metadata. Kept as raw JSON so the same model family served through different gateways can expose different effort vocabularies without lossy collapsing.
source: CatalogSourceWhere this row came from.
Implementations§
Source§impl CatalogOffering
impl CatalogOffering
Sourcepub fn provider_id(&self) -> ProviderId
pub fn provider_id(&self) -> ProviderId
The provider id as a route newtype.
Sourcepub fn wire_id(&self) -> WireModelId
pub fn wire_id(&self) -> WireModelId
The wire model id as a route newtype.
Sourcepub fn to_offering(&self) -> ProviderModelOffering
pub fn to_offering(&self) -> ProviderModelOffering
Project the minimal routing identity the resolver consumes.
The catalog deliberately carries richer facts than routing needs; this
drops most of them so RouteResolver::from_offerings stays the single
seam. The route-facing pricing meter is the exception: it is projected
here (where the offering’s sourced cost is in scope) via
crate::pricing::route_pricing_sku so a resolved candidate can carry
honest pricing without the route layer ever seeing raw cost (#3085).
Trait Implementations§
Source§impl Clone for CatalogOffering
impl Clone for CatalogOffering
Source§fn clone(&self) -> CatalogOffering
fn clone(&self) -> CatalogOffering
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more