pub struct CustomProviderConfig {Show 17 fields
pub id: String,
pub name: String,
pub short_name: String,
pub brand: Option<String>,
pub enabled: bool,
pub url: String,
pub allow_http: bool,
pub api_key_env: String,
pub api_key: Option<String>,
pub auth_header: String,
pub auth_scheme: String,
pub headers: BTreeMap<String, String>,
pub plan: Option<String>,
pub plan_path: Option<String>,
pub cache_ttl_secs: u64,
pub metrics: Vec<CustomMetricSpec>,
pub texts: Vec<CustomTextSpec>,
}Expand description
A user-defined HTTP provider: one GET with a static token, projected onto the shared report shape through RFC 6901 JSON Pointers.
Everything a built-in vendor hard-codes is a field here, which is why this
type validates so much more than the others: a typo in [deepseek] hits a
fixed endpoint and fails loudly, while a typo here quietly sends the user’s
key to the wrong host. The id doubles as the cache directory name and the
--vendor selector, so it is held to the character class of the built-in
slugs.
Fields§
§id: String[a-z0-9][a-z0-9_-]{0,31}; unique, and never a built-in vendor’s slug.
name: StringDisplay name, 1 to 48 characters. Defaults to id.
short_name: StringExactly three lowercase ASCII letters, unique across built-in vendors
and other custom providers — it is the {vendor_short} bar tag.
brand: Option<String>A built-in vendor slug whose mark supporting frontends may use.
None preserves the custom provider’s short_name tag.
enabled: bool§url: Stringhttps:// unless allow_http; never carries user:pass@.
allow_http: bool§api_key_env: StringEnv var read first; "" means the inline api_key is the only source.
api_key: Option<String>§auth_header: StringThe header that carries the key.
auth_scheme: StringSent as "<scheme> <key>"; "" sends the bare key.
headers: BTreeMap<String, String>Extra non-secret headers.
plan: Option<String>Literal plan label.
plan_path: Option<String>Pointer to the plan label in the response; wins over plan.
cache_ttl_secs: u64Must be within 10..=3600.
metrics: Vec<CustomMetricSpec>§texts: Vec<CustomTextSpec>Implementations§
Source§impl<'de> CustomProviderConfigwhere
CustomProviderConfig: Default,
impl<'de> CustomProviderConfigwhere
CustomProviderConfig: Default,
pub fn deserialize<__D>(
__deserializer: __D,
) -> Result<CustomProviderConfig, __D::Error>where
__D: Deserializer<'de>,
Source§impl CustomProviderConfig
impl CustomProviderConfig
pub fn serialize<__S>(
__self: &CustomProviderConfig,
__serializer: __S,
) -> Result<__S::Ok, __S::Error>where
__S: Serializer,
Source§impl CustomProviderConfig
impl CustomProviderConfig
Sourcepub fn section_label(&self) -> String
pub fn section_label(&self) -> String
The TOML locator for error messages: [[custom]] id = "mytool".
Sourcepub fn resolve_api_key(&self) -> Result<String>
pub fn resolve_api_key(&self) -> Result<String>
Env var (when api_key_env is set) → inline api_key → a
Credentials error that names the section and never the key.
pub fn cache_ttl(&self) -> Duration
Trait Implementations§
Source§impl Clone for CustomProviderConfig
impl Clone for CustomProviderConfig
Source§fn clone(&self) -> CustomProviderConfig
fn clone(&self) -> CustomProviderConfig
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for CustomProviderConfig
impl Debug for CustomProviderConfig
Source§impl Default for CustomProviderConfig
impl Default for CustomProviderConfig
Source§impl<'de> Deserialize<'de> for CustomProviderConfig
name defaults to id, which a per-field serde default cannot express (a
default sees no sibling field). The derive is routed through
remote = "Self" so the fill-in happens here, on every parse path, rather
than only in Config::load_from.
impl<'de> Deserialize<'de> for CustomProviderConfig
name defaults to id, which a per-field serde default cannot express (a
default sees no sibling field). The derive is routed through
remote = "Self" so the fill-in happens here, on every parse path, rather
than only in Config::load_from.
Source§fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error>
fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error>
impl Eq for CustomProviderConfig
Source§impl PartialEq for CustomProviderConfig
impl PartialEq for CustomProviderConfig
Source§impl Serialize for CustomProviderConfig
impl Serialize for CustomProviderConfig
impl StructuralPartialEq for CustomProviderConfig
Auto Trait Implementations§
impl Freeze for CustomProviderConfig
impl RefUnwindSafe for CustomProviderConfig
impl Send for CustomProviderConfig
impl Sync for CustomProviderConfig
impl Unpin for CustomProviderConfig
impl UnsafeUnpin for CustomProviderConfig
impl UnwindSafe for CustomProviderConfig
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more