# Persist The durable configuration that lives on disk whether or not a stream is running: stream group configs, which apply automatically to any stream whose name matches a pattern, and per-stream overrides. Writing here saves the document, and if a running stream is governed by it, applies the change to that stream immediately. You can also write an override for a stream that isn't running yet; it takes effect as soon as the stream starts. ## Default config - [GET /persist/configs/default](https://developer.wowza.com/docs/wowza-video-intelligence-framework/api/openapi/persist/getdefaultconfig.md) ## Update fields of the default config - [PATCH /persist/configs/default](https://developer.wowza.com/docs/wowza-video-intelligence-framework/api/openapi/persist/updatedefaultconfig.md) ## List stream group configs - [GET /persist/stream-group-configs](https://developer.wowza.com/docs/wowza-video-intelligence-framework/api/openapi/persist/liststreamgroupconfigs.md): Each config applies to every stream whose application and name match its rule. ## Create a stream group config - [POST /persist/stream-group-configs](https://developer.wowza.com/docs/wowza-video-intelligence-framework/api/openapi/persist/createstreamgroupconfig.md): name, match.application and match.stream_pattern are required (400 without them). 409 when a stream group config already answers to that name, and for the reserved name default. ## One stream group config - [GET /persist/stream-group-configs/{name}](https://developer.wowza.com/docs/wowza-video-intelligence-framework/api/openapi/persist/getstreamgroupconfig.md) ## Update fields of a stream group config - [PATCH /persist/stream-group-configs/{name}](https://developer.wowza.com/docs/wowza-video-intelligence-framework/api/openapi/persist/updatestreamgroupconfig.md): The match rule can be rewritten freely; the name cannot, because it is the group's identity — a patch that changes it is a 409. A patch that leaves the group without match.application or match.stream_pattern is a 400. ## Delete a stream group config - [DELETE /persist/stream-group-configs/{name}](https://developer.wowza.com/docs/wowza-video-intelligence-framework/api/openapi/persist/deletestreamgroupconfig.md): The streams it governs fall back to what the remaining layers resolve to, without republishing. 409 for the reserved default config, which cannot be deleted. ## List the saved per-stream overrides - [GET /persist/stream-config-overrides](https://developer.wowza.com/docs/wowza-video-intelligence-framework/api/openapi/persist/liststreamconfigoverrides.md): Every stored override at once, so a client can enumerate saved configuration without knowing the stream names in advance. Each entry carries its stream's identity in application and stream and its own etag; the documents themselves are read and written one at a time under /persist/apps/{app}/streams/{stream}. ## The stream's saved override document - [GET /persist/apps/{app}/streams/{stream}](https://developer.wowza.com/docs/wowza-video-intelligence-framework/api/openapi/persist/getstreamconfigoverride.md): 404 means the stream has no override — it follows its stream group config entirely. ## Create the stream's override - [POST /persist/apps/{app}/streams/{stream}](https://developer.wowza.com/docs/wowza-video-intelligence-framework/api/openapi/persist/createstreamconfigoverride.md): Creates the override document and applies it if the stream is running; 409 when the stream already has one. Works for streams that are not running — the override takes effect when the stream starts. Edits go through PATCH. ## Update fields of the stream's override - [PATCH /persist/apps/{app}/streams/{stream}](https://developer.wowza.com/docs/wowza-video-intelligence-framework/api/openapi/persist/updatestreamconfigoverride.md) ## Delete the stream's override - [DELETE /persist/apps/{app}/streams/{stream}](https://developer.wowza.com/docs/wowza-video-intelligence-framework/api/openapi/persist/deletestreamconfigoverride.md) ## The detector saved in the stream's override - [GET /persist/apps/{app}/streams/{stream}/detector](https://developer.wowza.com/docs/wowza-video-intelligence-framework/api/openapi/persist/getpersisteddetector.md): 404 means the override does not set a detector — its stream group config's applies. ## Update saved detector fields - [PATCH /persist/apps/{app}/streams/{stream}/detector](https://developer.wowza.com/docs/wowza-video-intelligence-framework/api/openapi/persist/updatepersisteddetector.md): JSON Merge Patch within the saved detector. A patch that changes type replaces the whole detector section. 404 when the override sets no detector — add one by patching the override document with {"config": {"detector": {...}}}. ## Remove the override detector - [DELETE /persist/apps/{app}/streams/{stream}/detector](https://developer.wowza.com/docs/wowza-video-intelligence-framework/api/openapi/persist/deletepersisteddetector.md): The stream inherits its stream group config's detector instead. ## The saved override listeners - [GET /persist/apps/{app}/streams/{stream}/listeners](https://developer.wowza.com/docs/wowza-video-intelligence-framework/api/openapi/persist/listpersistedlisteners.md): 404 when the stream has no override, like its sibling aspects. ## Create a saved listener (and apply if running) - [POST /persist/apps/{app}/streams/{stream}/listeners](https://developer.wowza.com/docs/wowza-video-intelligence-framework/api/openapi/persist/createpersistedlistener.md): The listener's name travels in the body's name member, required here (400 without it). 409 when a listener with that name already exists. Creates the override when the stream has none. ## One saved listener - [GET /persist/apps/{app}/streams/{stream}/listeners/{name}](https://developer.wowza.com/docs/wowza-video-intelligence-framework/api/openapi/persist/getpersistedlistener.md) ## Update saved listener fields - [PATCH /persist/apps/{app}/streams/{stream}/listeners/{name}](https://developer.wowza.com/docs/wowza-video-intelligence-framework/api/openapi/persist/updatepersistedlistener.md) ## Remove a saved listener - [DELETE /persist/apps/{app}/streams/{stream}/listeners/{name}](https://developer.wowza.com/docs/wowza-video-intelligence-framework/api/openapi/persist/deletepersistedlistener.md) ## The VOD settings document - [GET /persist/vod-settings](https://developer.wowza.com/docs/wowza-video-intelligence-framework/api/openapi/persist/getvodsettings.md): How this Engine runs on-demand analysis: how many jobs run at once and how many are kept, how long a finished job stays, where the content and the job records live, the default lifecycle webhook and its credential, whether jobs resume on their own, and the upload cap. Stored in its own file, conf.modules/vif/vod/settings.json, beside the stream configuration and never part of it. ## Edit the VOD settings - [PATCH /persist/vod-settings](https://developer.wowza.com/docs/wowza-video-intelligence-framework/api/openapi/persist/updatevodsettings.md): A merge patch, applied to the running registry at once — a smaller max_jobs evicts, a new job_ttl_seconds reschedules retention, a new webhook or default takes effect for the next job. content_dir and jobs_dir are read at Engine start and apply at the next one. 400 for a bound violation or a lifecycle_webhook_secret naming no configured secret. ## The names of the configured secrets - [GET /persist/secrets](https://developer.wowza.com/docs/wowza-video-intelligence-framework/api/openapi/persist/getsecrets.md): The credentials a job's lifecycle webhook may be authorized with, by name only — a value never leaves the Engine. Stored in conf.modules/vif/vod/secrets.json. ## Set, rotate or remove secrets - [PATCH /persist/secrets](https://developer.wowza.com/docs/wowza-video-intelligence-framework/api/openapi/persist/updatesecrets.md): A merge patch over values: a string sets or rotates the named secret, null removes it, a name not mentioned is kept. The revision covers the values, so a rotation changes the ETag even though the answer shows names only. 400 when a removal would leave the VOD settings' lifecycle_webhook_secret naming nothing.