# Test-fire the VOD lifecycle webhook Delivers a single synthetic status_changed event — the shape every job transition posts, with test: true beside it and no results — so an operator can confirm the lifecycle consumer is reachable and authenticated without submitting a job. Its job_id names no job, and its state is running, the state a job's first event carries. Without a url it goes where the VOD settings send every job's notifications: their lifecycle_webhook, with any ${ENV} placeholder resolved, under their lifecycle_webhook_secret and lifecycle_webhook_header. With a url it goes there instead, under the credential_secret and credential_header beside it in the request — what a form shows before it is saved. One attempt, no retries. Unreachable is a result, not an error — the response is 200 with delivered: false — so 400 means there is nothing to send to (no url and no configured lifecycle_webhook), a destination that is not an absolute http(s) URL with a host, or a credential_header that is not a legal header name. Endpoint: POST /probes/lifecycle-webhook Version: 2.0.0 Security: engineBasic ## Request fields (application/json): - `url` (string,null) An absolute http(s) URL with a host, tested instead of the settings' lifecycle_webhook, under the request's own credential_secret. A ${ENV} placeholder is not resolved here; leave url out to test the configured one. - `credential_secret` (string,null) With url: the name of the secret the test event authenticates with, resolved and sent under credential_header as a notification would. Ignored without url. - `credential_header` (string,null) With url: the header the secret's value goes out under; unset means Authorization. Ignored without url. ## Response 200 fields (application/json): - `delivered` (boolean, required) Whether the destination answered with a 2xx status. - `status` (integer,null) The HTTP status the destination answered, when it answered. - `error` (string,null) Why delivery fell short, when it did; null when delivered. - `credential` (string,null) What the event travelled under: sent for the resolved credential, none when the listener, or the request beside its url, names no secret, unresolved when the named secret is not configured — the event went without one, so a 401 here is the missing secret, not the consumer's token. Enum: "sent", "none", "unresolved" ## Response 400 fields (application/problem+json): - `type` (string) URI identifying the problem type. - `title` (string, required) Short, human-readable summary of the problem type. - `status` (integer, required) The HTTP status code, repeated from the response line. - `detail` (string) Human-readable explanation specific to this occurrence. - `instance` (string) URI identifying this specific occurrence of the problem. - `cause` (string) Why a VOD resume was refused, on a resume's 409 only: credentials_required — resume again with the detector and its credentials in the body; config_mismatch — the body asks for a configuration the job cannot take, so correct the request; config_drift — the source file or the config the job ran with has changed since, so the job cannot be resumed and must be submitted afresh. Enum: "credentials_required", "config_mismatch", "config_drift" ## Response default fields (application/problem+json): - `type` (string) URI identifying the problem type. - `title` (string, required) Short, human-readable summary of the problem type. - `status` (integer, required) The HTTP status code, repeated from the response line. - `detail` (string) Human-readable explanation specific to this occurrence. - `instance` (string) URI identifying this specific occurrence of the problem. - `cause` (string) Why a VOD resume was refused, on a resume's 409 only: credentials_required — resume again with the detector and its credentials in the body; config_mismatch — the body asks for a configuration the job cannot take, so correct the request; config_drift — the source file or the config the job ran with has changed since, so the job cannot be resumed and must be submitted afresh. Enum: "credentials_required", "config_mismatch", "config_drift"