{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "WebhookDryRunRequest",
"description": "A would-be subscription to evaluate against recent history. Same shape as a create, without the endpoint, plus the window.",
"type": "object",
"required": [
"event_type"
],
"properties": {
"config": {
"description": "What a subscription matches on. Every key is checked against the event type's catalog declaration, so an unknown key, an undeclared parameter or a condition on an undeclared metric is refused rather than ignored. The stored config is the normalised form: venues and addresses lowercased, declared parameters filled in at their defaults, and operators written in their canonical spelling.",
"type": "object",
"properties": {
"addresses": {
"description": "Wallets to match, for an address scoped event type. Every address must already be on your watched list. Omit to match all of them.",
"type": "array",
"items": {
"type": "string"
},
"example": [
"0x6b9e773128f453f5c2c60935ee2de2cbc5390a24"
]
},
"conditions": {
"description": "Conditions on the event's metrics, all of which must hold for a delivery. At most 16 per subscription.",
"type": "array",
"items": {
"description": "One condition on an event metric. The operator vocabulary is grouped by the metric's type; see `operators` on the event type.",
"type": "object",
"required": [
"metric",
"op"
],
"properties": {
"metric": {
"description": "A metric declared by the event type.",
"type": "string",
"example": "notional_usd"
},
"op": {
"description": "Comparison to apply. Symbol spellings such as `>=` are accepted on the way in and stored in the canonical spelling shown here.",
"type": "string",
"enum": [
"greater_than",
"greater_than_or_equal",
"less_than",
"less_than_or_equal",
"equal",
"not_equal",
"between",
"not_between",
"in",
"not_in",
"contains",
"not_contains",
"starts_with",
"ends_with",
"before",
"after",
"is_empty",
"is_not_empty"
],
"example": "greater_than_or_equal"
},
"value": {
"description": "What to compare against. A number, string, boolean or RFC 3339 timestamp for a single value comparison; a two entry `[low, high]` list for `between` and `not_between`; a non-empty list for `in` and `not_in`. Omitted for `is_empty` and `is_not_empty`.",
"example": 100000
}
}
}
},
"min_notional_usd": {
"description": "Shorthand for a `notional_usd` at-or-above condition, kept for compatibility. It is stored as a condition, and it is mirrored back here as the loosest notional lower bound the config carries.",
"type": "number",
"example": 100000
},
"params": {
"description": "Parameter values for the event type, keyed by the parameter names it declares. A declared parameter you leave out is stored at its default. A declared parameter may also be written at the top level of the config.",
"type": "object",
"additionalProperties": true,
"example": {
"max_age_s": 3600
}
},
"symbols": {
"description": "Instrument symbols to match. Omit to match every symbol.",
"type": "array",
"items": {
"type": "string"
},
"example": [
"BTC",
"ETH"
]
},
"venue": {
"description": "Venue or venues to match, from the event type's `venues` list. Accepts a single string, a pipe separated string or a list. Omit to match every covered venue.",
"oneOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
}
],
"example": "hyperliquid"
}
}
},
"event_type": {
"description": "Event type to evaluate.",
"type": "string",
"example": "market.liquidation"
},
"limit": {
"description": "Occurrences to return, newest first.",
"type": "integer",
"format": "int64",
"default": 100,
"minimum": 1,
"maximum": 200,
"example": 100
},
"lookback_s": {
"description": "Seconds of history to scan, ending now.",
"type": "integer",
"format": "int64",
"default": 3600,
"minimum": 60,
"maximum": 86400,
"example": 3600
}
}
}