pub struct VerifySpec {
pub service: String,
pub method: Option<HttpMethod>,
pub url: Option<String>,
pub auth: Option<AuthSpec>,
pub headers: Vec<HeaderSpec>,
pub body: Option<String>,
pub success: Option<SuccessSpec>,
pub metadata: Vec<MetadataSpec>,
pub timeout_ms: Option<u64>,
pub steps: Vec<StepSpec>,
pub allowed_domains: Vec<String>,
}Expand description
Live verification configuration for a detector.
Fields§
§service: StringTarget service identifier (defaults to detector’s service if omitted).
method: Option<HttpMethod>HTTP method (default: GET).
url: Option<String>Endpoint URL with optional `{{match}}` or `{{companion.
auth: Option<AuthSpec>Authentication scheme.
headers: Vec<HeaderSpec>Custom HTTP headers.
body: Option<String>Optional request body template.
success: Option<SuccessSpec>Criteria for a successful verification.
metadata: Vec<MetadataSpec>Metadata to extract from the response.
timeout_ms: Option<u64>Optional request timeout override.
steps: Vec<StepSpec>Multi-step verification flow.
allowed_domains: Vec<String>Domain allowlist for the verify URL after interpolation. If non-empty,
the resolved host of the (interpolated) URL — and of every step’s URL —
MUST equal one of these entries (or be a subdomain of one). When empty,
the verifier falls back to a hardcoded service allowlist if the
service field maps to a known provider; otherwise the verifier
REFUSES to send the request. This blocks malicious detector TOMLs
that set url = "{{match}}" (or interpolate an attacker-controlled
companion) from exfiltrating credentials. See kimi-wave1 audit
finding 4.1 + wave3 §1.
Trait Implementations§
Source§impl Clone for VerifySpec
impl Clone for VerifySpec
Source§fn clone(&self) -> VerifySpec
fn clone(&self) -> VerifySpec
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for VerifySpec
impl Debug for VerifySpec
Source§impl Default for VerifySpec
impl Default for VerifySpec
Source§fn default() -> VerifySpec
fn default() -> VerifySpec
Source§impl<'de> Deserialize<'de> for VerifySpec
impl<'de> Deserialize<'de> for VerifySpec
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for VerifySpec
impl RefUnwindSafe for VerifySpec
impl Send for VerifySpec
impl Sync for VerifySpec
impl Unpin for VerifySpec
impl UnsafeUnpin for VerifySpec
impl UnwindSafe for VerifySpec
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,
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