pub struct Webhook {
pub url: String,
pub events: Vec<String>,
pub headers: BTreeMap<String, String>,
pub timeout_ms: u64,
pub max_attempts: u32,
pub backoff_base_ms: u64,
pub backoff_cap_ms: u64,
}Expand description
One alert/event webhook target (DW-044, gateway.webhooks[]).
Compiled per generation into an events::webhook::WebhookTarget
(secret references resolved at compile time, URL decomposed); see
that module for the delivery contract.
Fields§
§url: StringAbsolute http:// or https:// URL the envelope is POSTed to.
Host and port come from the URL; the path (and query, if any) is
preserved. https:// verifies against the public webpki root set
(no trusted_ca_file override for webhooks in v1).
events: Vec<String>Event kinds this target receives (subset of the kinds the gateway emits; validation rejects unknown kinds). At least one entry.
headers: BTreeMap<String, String>Extra headers sent on every delivery. Values may be inline or
${ENV_NAME} / ${file:/path} secret references (DW-045),
resolved at config-compile time; inline values are redacted in
every config echo. Use a reference for bearer tokens and signing
secrets.
timeout_ms: u64TOTAL budget for one delivery (all retry attempts share it):
connect, write, and response-head read per attempt plus the
backoff waits between attempts. A slow or hung target can never
occupy more than this. Default 2000; validation enforces
1..=limits::MAX_WEBHOOK_TIMEOUT_MS.
max_attempts: u32Total attempts per delivery (the first try plus retries). Retries
happen for transport failures and the transient status set
(429/502/503/504), honoring a seconds-form Retry-After when the
target sends one. Default 3; validation enforces
1..=limits::MAX_WEBHOOK_ATTEMPTS.
backoff_base_ms: u64First backoff between delivery attempts, doubling per retry up to
backoff_cap_ms (a Retry-After answer replaces the computed
value for that wait). Default 100.
backoff_cap_ms: u64Upper bound on the computed backoff. Default 1000; must be >=
backoff_base_ms.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Webhook
impl<'de> Deserialize<'de> for Webhook
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>,
Source§impl JsonSchema for Webhook
impl JsonSchema for Webhook
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
Source§fn inline_schema() -> bool
fn inline_schema() -> bool
$ref keyword. Read moreimpl StructuralPartialEq for Webhook
Auto Trait Implementations§
impl Freeze for Webhook
impl RefUnwindSafe for Webhook
impl Send for Webhook
impl Sync for Webhook
impl Unpin for Webhook
impl UnwindSafe for Webhook
Blanket Implementations§
§impl<T> AnyExt for T
impl<T> AnyExt for T
§fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
T behind reference§fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
T behind mutable reference§fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
T behind Rc pointer§fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
T behind Arc pointer§fn downcast_box<T>(this: Box<Self>) -> Result<Box<T>, Box<Self>>where
T: Any,
fn downcast_box<T>(this: Box<Self>) -> Result<Box<T>, Box<Self>>where
T: Any,
T behind Box pointer§fn downcast_move<T>(this: Self) -> Option<T>
fn downcast_move<T>(this: Self) -> Option<T>
Self to T,
useful only in generic context as a workaround for specializationSource§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, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
impl<T, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
fn coerce_rc_to(self: Rc<X>) -> Rc<T>
fn coerce_box_to(self: Box<X>) -> Box<T>
fn coerce_ref_to(&self) -> &T
fn coerce_mut_to(&mut self) -> &mut T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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