{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"Monitor streaming events with webhooks","description":"Developer documentation for Wowza","siteUrl":"https://developer.wowza.com","keywords":"wowza video developer portal, api reference docs","lang":"en-US","image":"https://www.wowza.com/wp-content/uploads/Graphics-Social-Profile-Images-Docs-Resources-1024x512-1.jpg","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"monitor-streaming-events-with-webhooks","__idx":0},"children":["Monitor streaming events with webhooks"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Wowza Streaming Engine 4.9.6 adds webhook functionality to provide real-time notifications for key streaming events."," ","Instead of continuously polling the REST API, you can now register webhook endpoints to receive event updates automatically as they happen."," ","These enhancements improve both efficiency and responsiveness, making it easier to monitor, automate, and manage streaming workflows with minimal overhead."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This article explains how to set up the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["WebhookListener"]}," module using the Wowza Streaming Engine REST API."," ","If you prefer a more manual setup using XML and JSON configuration and a text editor, see ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://www.wowza.com/docs/create-webhooks-to-monitor-streaming-events-in-wowza-streaming-engine"},"children":["Create webhooks to monitor streaming events in Wowza Streaming Engine"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"overview","__idx":1},"children":["Overview"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The webhooks feature in Wowza Streaming Engine requires a one-time configuration of ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Server.xml"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Webhooks.json"]},"."," ","As this article explains, you can use the Wowza Streaming Engine REST API to complete and manage this configuration."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When you update the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Server.xml"]}," file, you ensure that the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["WebhookListener"]}," module is loaded when Wowza Streaming Engine starts."," ","The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Webhooks.json"]}," file defines how webhook events are generated and delivered."," ","This file specifies the source identity, filtering criteria, and delivery endpoints for your webhooks."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The base URL or root endpoint for this workflow is:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"http://[your-wowza-server]:8087/v2/servers/{serverName}/webhooks\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To better understand the events you can capture, see ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://www.wowza.com/docs/create-webhooks-to-monitor-streaming-events-in-wowza-streaming-engine#supported-webhook-events"},"children":["Supported webhook events"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"before-you-start","__idx":2},"children":["Before you start"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Before you start working with the steps in this guide, we recommend that:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["You're familiar with using cURL for making HTTP requests. For more, see ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://www.wowza.com/docs/how-to-query-the-wowza-streaming-engine-rest-api#query-the-rest-api-using-curl"},"children":["Query the REST API using cURL"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["You review the ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://www.wowza.com/docs/how-to-query-the-wowza-streaming-engine-rest-api#authenticating-requests2"},"children":["Authenticating requests"]}," section to better understand how to authenticate API requests."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["You review ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://www.wowza.com/docs/create-webhooks-to-monitor-streaming-events-in-wowza-streaming-engine"},"children":["Create webhooks to monitor streaming events in Wowza Streaming Engine"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["You review the ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://www.wowza.com/docs/wowza-streaming-engine-webhooksjson-configuration-reference"},"children":["Wowza Streaming Engine Webhooks.json configuration reference"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["If you're using webhooks to capture recording events, review ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://www.wowza.com/docs/stream-recording-query-examples"},"children":["Create and manage stream recorders by using the Wowza Streaming Engine REST API"]}," for information on obtaining a list of recordings, creating a recorder, splitting an active recording, or stopping a recording."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"webhooks-rest-api-endpoint-reference","__idx":3},"children":["Webhooks REST API endpoint reference"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You can use the various API requests in this section to programmatically manage and work with REST API endpoints for your webhooks."," ","For more details, see the ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://www.wowza.com/docs/wowza-streaming-engine-webhooksjson-configuration-reference"},"children":["Wowza Streaming Engine Webhooks.json configuration reference"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In the examples, all values in ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["curly brackets { }"]}," are placeholders and should be replaced with your own values, where appropriate."]},{"$$mdtype":"Tag","name":"details","attributes":{},"children":[{"$$mdtype":"Tag","name":"summary","attributes":{"className":"get-endpoint"},"children":[{"$$mdtype":"Tag","name":"span","attributes":{"className":"get-method"},"children":["GET"]},{"$$mdtype":"Tag","name":"span","attributes":{"className":"get-path"},"children":[" /v2/servers/{serverName}/webhooks"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{"style":{"fontFamily":"\"museo sans\", sans-serif"}},"children":["Purpose: "]},"Fetch","all webhook configurations to view the current rules and targets defined in the ",{"$$mdtype":"Tag","name":"strong","attributes":{"style":{"fontFamily":"\"museo sans\", sans-serif"}},"children":["Webhooks.json"]},"file."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Sample request:"]}]},{"$$mdtype":"Tag","name":"pre","attributes":{"className":"prettyprint lang-bash"},"children":["curl -X GET --basic -u ","\"","USERNAME:PASSWORD","\""," \\\n\n-H ","\"","Accept: application/JSON; charset=utf-8","\""," \\\n-H ","\"","Content-Type: application/JSON; charset=utf-8","\""," \\\n","\"","http://localhost:8087/v2/servers/_defaultServer_/webhooks","\""]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Sample response:"]}]},{"$$mdtype":"Tag","name":"pre","attributes":{"className":"prettyprint lang-bash"},"children":["{\n\n","\"","serverName","\"",": ","\"","_defaultServer_","\"",",\n","\"","webhooks","\"",": {\n","\"","debugLog","\"",": false,\n","\"","filters","\"",": [\n{\n","\"","criteria","\""," : ","\"","vHost.*.app.myApp.appInstance.*.stream.*.state.*","\"",",\n","\"","enabled","\""," : false,\n","\"","id","\""," : ","\"","myAppStreamFilter","\"",",\n","\"","maxRetryAttempts","\""," : 3,\n","\"","retryDelay","\""," : 5,\n","\"","retryDelayUnit","\""," : ","\"","m","\"",",\n","\"","targetRef","\""," : ","\"","myEndpointName","\"","\n},\n{\n","\"","criteria","\""," : ","\"","vHost.myVhost.",">","\"",",\n","\"","enabled","\""," : false,\n","\"","id","\""," : ","\"","myServerFilter","\"",",\n","\"","maxRetryAttempts","\""," : 3,\n","\"","retryDelay","\""," : 5,\n","\"","retryDelayUnit","\""," : ","\"","ms","\"",",\n","\"","targetRef","\""," : ","\"","myEndpointName2","\"","\n},\n{\n","\"","criteria","\""," : ","\"","vHost.myVhost2.app.*.appInstance._definst_.",">","\"",",\n","\"","enabled","\""," : false,\n","\"","id","\""," : ","\"","myAppInstanceFilter","\"",",\n","\"","maxRetryAttempts","\""," : null,\n","\"","retryDelay","\""," : null,\n","\"","retryDelayUnit","\""," : null,\n","\"","targetRef","\""," : ","\"","myEndpointName","\"","\n}\n],\n","\"","source","\"",": ","\"","myWSEInstanceName","\"",",\n","\"","targets","\"",": [\n{\n","\"","auth","\"",": {\n","\"","secret","\"",": ","\"","abc123secret","\"",",\n","\"","type","\"",": ","\"","jwt","\"","\n},\n","\"","headers","\"",": [\n{\n","\"","name","\"",": ","\"","Authorization","\"",",\n","\"","value","\"",": ","\"","Bearer abc123token","\"","\n},\n{\n","\"","name","\"",": ","\"","X-Custom-Header","\"",",\n","\"","value","\"",": ","\"","my-value","\"","\n}\n],\n","\"","id","\"",": ","\"","myEndpointName","\"",",\n","\"","url","\"",": ","\"","https://my.site.com/","\"","\n},\n{\n","\"","auth","\"",": {\n","\"","secret","\"",": ","\"","def456secret","\"",",\n","\"","type","\"",": ","\"","jwt","\"","\n},\n","\"","headers","\"",": [\n{\n","\"","name","\"",": ","\"","Authorization","\"",",\n","\"","value","\"",": ","\"","Bearer def456token","\"","\n},\n{\n","\"","name","\"",": ","\"","X-Custom-Header","\"",",\n","\"","value","\"",": ","\"","my-value2","\"","\n}\n],\n","\"","id","\"",": ","\"","myEndpointName2","\"",",\n","\"","url","\"",": ","\"","https://my.site2.com/","\"","\n}\n]\n}\n}"]}]},{"$$mdtype":"Tag","name":"details","attributes":{},"children":[{"$$mdtype":"Tag","name":"summary","attributes":{"className":"put-endpoint"},"children":[{"$$mdtype":"Tag","name":"span","attributes":{"className":"put-method"},"children":["PUT"]},{"$$mdtype":"Tag","name":"span","attributes":{"className":"put-path"},"children":[" /v2/servers/{serverName}/webhooks"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Purpose:"]}," Update the current rules and targets defined in the ",{"$$mdtype":"Tag","name":"span","attributes":{"style":{"fontWeight":"700"}},"children":["Webhooks.json"]}," file. The following sample request sends supported webhook events from the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["_defaultServer_"]},"virtual host to a URL defined in the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["targets"]},"array."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Sample request:"]}]},{"$$mdtype":"Tag","name":"pre","attributes":{"className":"prettyprint lang-bash"},"children":["curl -X PUT --basic -u ","\"","USERNAME:PASSWORD","\""," \\\n\n-H ","\"","Accept: application/JSON; charset=utf-8","\""," \\\n-H ","\"","Content-Type: application/JSON; charset=utf-8","\""," \\\n","\"","http://localhost:8087/v2/servers/_defaultServer_/webhooks","\""," \\\n-d ","'","{\n","\"","serverName","\"",": ","\"","_defaultServer_","\"",",\n","\"","webhooks","\"",": {\n","\"","source","\"",": ","\"","myWSEInstanceName","\"",",\n","\"","filters","\"",": [\n{\n","\"","id","\"",": ","\"","myServerFilter","\"",",\n","\"","enabled","\"",": true,\n","\"","criteria","\"",": ","\"","vHost._defaultVHost_.",">","\"",",\n","\"","targetRef","\"",": ","\"","myEndpointName","\"","\n}\n],\n","\"","targets","\"",": [\n{\n","\"","id","\"",": ","\"","myEndpointName","\"",",\n","\"","url","\"",": ","\"","https://webhook.site/123e4567-e89b-12d3-a456-426614174000","\"",",\n","\"","auth","\"",": {\n","\"","secret","\"",": ","\"","def456secret","\"",",\n","\"","type","\"",": ","\"","jwt","\"","\n},\n","\"","headers","\"",": [\n{\n","\"","name","\"",": ","\"","Authorization","\"",",\n","\"","value","\"",": ","\"","Bearer def456token","\"","\n},\n{\n","\"","name","\"",": ","\"","X-Custom-Header","\"",",\n","\"","value","\"",": ","\"","my-value","\"","\n}\n]\n}\n]\n}\n}","'"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Sample response:"]}]},{"$$mdtype":"Tag","name":"pre","attributes":{"className":"prettyprint lang-bash"},"children":["{\n\n","\"","webhooks","\"",": {\n","\"","source","\"",": ","\"","myWSEInstanceName","\"",",\n","\"","filters","\"",": [\n{\n","\"","id","\"",": ","\"","myServerFilter","\"",",\n","\"","enabled","\"",": true,\n","\"","targetRef","\"",": ","\"","myEndpointName","\"",",\n","\"","retryDelay","\"",": null,\n","\"","criteria","\"",": ","\"","vHost._defaultVHost_.",">","\"",",\n","\"","maxRetryAttempts","\"",": null,\n","\"","retryDelayUnit","\"",": null\n}\n],\n","\"","targets","\"",": [\n{\n","\"","id","\"",": ","\"","myEndpointName","\"",",\n","\"","url","\"",": ","\"","https://webhook.site/123e4567-e89b-12d3-a456-426614174000","\"",",\n","\"","headers","\"",": [\n{\n","\"","name","\"",": ","\"","Authorization","\"",",\n","\"","value","\"",": ","\"","Bearer def456token","\"","\n},\n{\n","\"","name","\"",": ","\"","X-Custom-Header","\"",",\n","\"","value","\"",": ","\"","my-value","\"","\n}\n],\n","\"","auth","\"",": {\n","\"","type","\"",": ","\"","jwt","\"",",\n","\"","secret","\"",": ","\"","def456secret","\"","\n}\n}\n]\n}\n}"]}]},{"$$mdtype":"Tag","name":"details","attributes":{},"children":[{"$$mdtype":"Tag","name":"summary","attributes":{"className":"get-endpoint"},"children":[{"$$mdtype":"Tag","name":"span","attributes":{"className":"get-method"},"children":["GET"]},{"$$mdtype":"Tag","name":"span","attributes":{"className":"get-path"},"children":[" /v2/servers/{serverName}/webhooks/filters"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Purpose:"]},"Fetch a list of all filters defined in the ",{"$$mdtype":"Tag","name":"span","attributes":{"style":{"fontWeight":"700"}},"children":["Webhooks.json"]}," file."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Sample request:"]}]},{"$$mdtype":"Tag","name":"pre","attributes":{"className":"prettyprint lang-bash"},"children":["curl -X GET --basic -u ","\"","USERNAME:PASSWORD","\""," \\\n\n-H ","\"","Accept:application/JSON; charset=utf-8","\""," \\\n-H ","\"","Content-Type:application/JSON; charset=utf-8","\""," \\\n","\"","http://localhost:8087/v2/servers/_defaultServer_/webhooks/filters","\""]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Sample response:"]}]},{"$$mdtype":"Tag","name":"pre","attributes":{"className":"prettyprint lang-bash"},"children":["{\n\n","\"","serverName","\"",": ","\"","_defaultServer_","\"",",\n","\"","filters","\"",": [\n{\n","\"","criteria","\"",": ","\"","vHost._defaultVHost_.",">","\"",",\n","\"","enabled","\"",": true,\n","\"","id","\"",": ","\"","myServerFilter","\"",",\n","\"","maxRetryAttempts","\"",": null,\n","\"","retryDelay","\"",": null,\n","\"","retryDelayUnit","\"",": null,\n","\"","targetRef","\"",": ","\"","myEndpointName","\"","\n}\n]\n}"]}]},{"$$mdtype":"Tag","name":"details","attributes":{},"children":[{"$$mdtype":"Tag","name":"summary","attributes":{"className":"post-endpoint"},"children":[{"$$mdtype":"Tag","name":"span","attributes":{"className":"post-method"},"children":["POST"]},{"$$mdtype":"Tag","name":"span","attributes":{"className":"post-path"},"children":[" /v2/servers/{serverName}/webhooks/filters"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{"style":{"fontFamily":"\"museo sans\", sans-serif"}},"children":["Purpose: "]},"Create a filter in the ",{"$$mdtype":"Tag","name":"span","attributes":{"style":{"fontWeight":"700"}},"children":["Webhooks.json"]}," file. This requires that the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["targetRef"]},"exists. In this case, we","'","re creating a filter with the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["myAppStartedFilter"]}," identifier."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Sample request:"]}]},{"$$mdtype":"Tag","name":"pre","attributes":{"className":"prettyprint lang-bash"},"children":["curl -X POST --basic -u ","\"","USERNAME:PASSWORD","\""," \\\n\n-H ","\"","Accept: application/JSON; charset=utf-8","\""," \\\n-H ","\"","Content-Type: application/JSON; charset=utf-8","\""," \\\n","\"","http://localhost:8087/v2/servers/_defaultServer_/webhooks/filters","\""," \\\n-d ","'","{\n","\"","id","\"",": ","\"","myAppStartedFilter","\"",",\n","\"","enabled","\"",": true,\n","\"","criteria","\"",": ","\"","vHost.*.app.*.appInstance.*.stream.*.state.started","\"",",\n","\"","targetRef","\"",": ","\"","myEndpointName","\"",",\n","\"","serverName","\"",": ","\"","_defaultServer_","\"","\n}","'"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Sample response:"]}]},{"$$mdtype":"Tag","name":"pre","attributes":{"className":"prettyprint lang-bash"},"children":["{\n\n","\"","id","\"",": ","\"","myAppStartedFilter","\"",",\n","\"","enabled","\"",": true,\n","\"","targetRef","\"",": ","\"","myEndpointName","\"",",\n","\"","retryDelay","\"",": null,\n","\"","criteria","\"",": ","\"","vHost.*.app.*.appInstance.*.stream.*.state.started","\"",",\n","\"","maxRetryAttempts","\"",": null,\n","\"","retryDelayUnit","\"",": null\n}"]}]},{"$$mdtype":"Tag","name":"details","attributes":{},"children":[{"$$mdtype":"Tag","name":"summary","attributes":{"className":"get-endpoint"},"children":[{"$$mdtype":"Tag","name":"span","attributes":{"className":"get-method"},"children":["GET"]},{"$$mdtype":"Tag","name":"span","attributes":{"className":"get-path"},"children":[" /v2/servers/{serverName}/webhooks/filters/{id}"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{"style":{"fontFamily":"\"museo sans\", sans-serif"}},"children":["Purpose: "]},"Fetch a webhook filter based on the filter ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["id"]}," path parameter. In this case, we","'","re getting details about the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["myAppStartedFilter"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Sample request:"]}]},{"$$mdtype":"Tag","name":"pre","attributes":{"className":"prettyprint lang-bash"},"children":["curl -X GET --basic -u ","\"","USERNAME:PASSWORD","\""," \\\n\n-H ","\"","Accept:application/JSON; charset=utf-8","\""," \\\n-H ","\"","Content-Type:application/JSON; charset=utf-8","\""," \\\n","\"","http://localhost:8087/v2/servers/_defaultServer_/webhooks/filters/myAppStartedFilter","\""]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Sample response:"]}]},{"$$mdtype":"Tag","name":"pre","attributes":{"className":"prettyprint lang-bash"},"children":["{\n\n","\"","criteria","\""," : ","\"","vHost.*.app.*.appInstance.*.stream.*.state.started","\"",",\n","\"","enabled","\""," : true,\n","\"","serverName","\""," : ","\"","_defaultServer_","\"",",\n","\"","targetRef","\""," : ","\"","myEndpointName","\"","\n}"]}]},{"$$mdtype":"Tag","name":"details","attributes":{},"children":[{"$$mdtype":"Tag","name":"summary","attributes":{"className":"put-endpoint"},"children":[{"$$mdtype":"Tag","name":"span","attributes":{"className":"put-method"},"children":["PUT"]},{"$$mdtype":"Tag","name":"span","attributes":{"className":"put-path"},"children":[" /v2/servers/{serverName}/webhooks/filters/{id}"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{"style":{"fontFamily":"\"museo sans\", sans-serif"}},"children":["Purpose: "]},"Update a webhook filter based on the filter ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["id"]}," path parameter. In this case, we","'","re ",{"$$mdtype":"Tag","name":"span","attributes":{"style":{"margin":"0px","padding":"0px"}},"children":["modifying the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["myAppStartedFilter"]},"criteria to notify us "]},"when any stream on the server has stopped."]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Note: "]},"The filter ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["id"]}," value cannot be updated using this method."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Sample request:"]}]},{"$$mdtype":"Tag","name":"pre","attributes":{"className":"prettyprint lang-bash"},"children":["curl -X PUT --basic -u ","\"","USERNAME:PASSWORD","\""," \\\n\n-H ","\"","Accept: application/JSON; charset=utf-8","\""," \\\n-H ","\"","Content-Type: application/JSON; charset=utf-8","\""," \\\n","\"","http://localhost:8087/v2/servers/_defaultServer_/webhooks/filters/myAppStartedFilter","\""," \\\n-d ","'","{\n","\"","criteria","\"",": ","\"","vHost.*.app.*.appInstance.*.stream.*.state.stopped","\"",",\n","\"","enabled","\"",": true,\n","\"","id","\"",": ","\"","myAppStartedFilter","\"",",\n","\"","serverName","\"",": ","\"","_defaultServer_","\"",",\n","\"","targetRef","\"",": ","\"","myEndpointName","\"","\n}","'"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Sample response:"]}]},{"$$mdtype":"Tag","name":"pre","attributes":{"className":"prettyprint lang-bash"},"children":["{\n\n","\"","criteria","\""," : ","\"","vHost.*.app.*.appInstance.*.stream.*.state.stopped","\"",",\n","\"","enabled","\""," : true,\n","\"","id","\""," : ","\"","myAppStartedFilter","\"",",\n","\"","maxRetryAttempts","\""," : null,\n","\"","retryDelay","\""," : null,\n","\"","retryDelayUnit","\""," : null,\n","\"","targetRef","\""," : ","\"","myEndpointName","\"","\n}"]}]},{"$$mdtype":"Tag","name":"details","attributes":{},"children":[{"$$mdtype":"Tag","name":"summary","attributes":{"className":"delete-endpoint"},"children":[{"$$mdtype":"Tag","name":"span","attributes":{"className":"delete-method"},"children":["DELETE"]},{"$$mdtype":"Tag","name":"span","attributes":{"className":"delete-path"},"children":[" /v2/servers/{serverName}/webhooks/filters/{id}"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{"style":{"fontFamily":"\"museo sans\", sans-serif"}},"children":["Purpose: "]},"Delete a webhook filter based on the filter ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["id"]}," path parameter. In this case, we","'","re deleting the filter with the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["myAppStartedFilter"]},{"$$mdtype":"Tag","name":"span","attributes":{"style":{"margin":"0px","padding":"0px"}},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[]}]},"identifier."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Sample request:"]}]},{"$$mdtype":"Tag","name":"pre","attributes":{"className":"prettyprint lang-bash"},"children":["curl -X DELETE --basic -u ","\"","USERNAME:PASSWORD","\""," \\\n\n-H ","\"","Accept:application/JSON; charset=utf-8","\""," \\\n-H ","\"","Content-Type:application/JSON; charset=utf-8","\""," \\\n","\"","http://localhost:8087/v2/servers/_defaultServer_/webhooks/filters/myAppStartedFilter","\""]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Sample response:"]}]},{"$$mdtype":"Tag","name":"pre","attributes":{"className":"prettyprint lang-bash"},"children":["{\n\n","\"","success","\"",": true,\n","\"","message","\"",": ","\"","Deleted","\"",",\n","\"","data","\"",": null\n}"]}]},{"$$mdtype":"Tag","name":"details","attributes":{},"children":[{"$$mdtype":"Tag","name":"summary","attributes":{"className":"get-endpoint"},"children":[{"$$mdtype":"Tag","name":"span","attributes":{"className":"get-method"},"children":["GET"]},{"$$mdtype":"Tag","name":"span","attributes":{"className":"get-path"},"children":[" /v2/servers/{serverName}/webhooks/source"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{"style":{"fontFamily":"\"museo sans\", sans-serif"}},"children":["Purpose: "]},"Fetch the source from a ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Webhooks.json"]}," configuration file."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Sample request:"]}]},{"$$mdtype":"Tag","name":"pre","attributes":{"className":"prettyprint lang-bash"},"children":["curl -X GET --basic -u ","\"","USERNAME:PASSWORD","\""," \\\n\n-H ","\"","Accept:application/JSON; charset=utf-8","\""," \\\n-H ","\"","Content-Type:application/JSON; charset=utf-8","\""," \\\n","\"","http://localhost:8087/v2/servers/_defaultServer_/webhooks/source","\""]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Sample response:"]}]},{"$$mdtype":"Tag","name":"pre","attributes":{"className":"prettyprint lang-bash"},"children":["{\n\n","\"","serverName","\"",": ","\"","_defaultServer_","\"",",\n","\"","source","\"",": ","\"","myWSEInstanceName","\"","\n}"]}]},{"$$mdtype":"Tag","name":"details","attributes":{},"children":[{"$$mdtype":"Tag","name":"summary","attributes":{"className":"put-endpoint"},"children":[{"$$mdtype":"Tag","name":"span","attributes":{"className":"put-method"},"children":["PUT"]},{"$$mdtype":"Tag","name":"span","attributes":{"className":"put-path"},"children":[" /v2/servers/{serverName}/webhooks/source"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{"style":{"fontFamily":"\"museo sans\", sans-serif"}},"children":["Purpose: "]},"Update the source in the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Webhooks.json"]}," configuration file. In this case, we","'","re updating the source name to ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["myWSEInstanceNameUpdated"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Sample request:"]}]},{"$$mdtype":"Tag","name":"pre","attributes":{"className":"prettyprint lang-bash"},"children":["curl -X PUT --basic -u ","\"","USERNAME:PASSWORD","\""," \\\n\n-H ","\"","Accept: application/JSON; charset=utf-8","\""," \\\n-H ","\"","Content-Type: application/JSON; charset=utf-8","\""," \\\n","\"","http://localhost:8087/v2/servers/_defaultServer_/webhooks/source","\""," \\\n-d ","'","{\n","\"","source","\"",": ","\"","myWSEInstanceNameUpdated","\"","\n}","'"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Sample response:"]}]},{"$$mdtype":"Tag","name":"pre","attributes":{"className":"prettyprint lang-bash"},"children":["{\n\n","\"","source","\""," : ","\"","myWSEInstanceNameUpdated","\"","\n}"]}]},{"$$mdtype":"Tag","name":"details","attributes":{},"children":[{"$$mdtype":"Tag","name":"summary","attributes":{"className":"get-endpoint"},"children":[{"$$mdtype":"Tag","name":"span","attributes":{"className":"get-method"},"children":["GET"]},{"$$mdtype":"Tag","name":"span","attributes":{"className":"get-path"},"children":[" /v2/servers/{serverName}/webhooks/targets"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{"style":{"fontFamily":"\"museo sans\", sans-serif"}},"children":["Purpose: "]},"Fetch a list of all targets in the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Webhooks.json"]}," configuration file."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Sample request:"]}]},{"$$mdtype":"Tag","name":"pre","attributes":{"className":"prettyprint lang-bash"},"children":["curl -X GET --basic -u ","\"","USERNAME:PASSWORD","\""," \\\n\n-H ","\"","Accept:application/JSON; charset=utf-8","\""," \\\n-H ","\"","Content-Type:application/JSON; charset=utf-8","\""," \\\n","\"","http://localhost:8087/v2/servers/_defaultServer_/webhooks/targets","\""]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Sample response:"]}]},{"$$mdtype":"Tag","name":"pre","attributes":{"className":"prettyprint lang-bash"},"children":["{\n\n","\"","serverName","\"",": ","\"","_defaultServer_","\"",",\n","\"","targets","\"",": [\n{\n","\"","auth","\"",": {\n","\"","secret","\"",": ","\"","def456secret","\"",",\n","\"","type","\"",": ","\"","jwt","\"","\n},\n","\"","headers","\"",": [\n{\n","\"","name","\"",": ","\"","Authorization","\"",",\n","\"","value","\"",": ","\"","Bearer def456token","\"","\n},\n{\n","\"","name","\"",": ","\"","X-Custom-Header","\"",",\n","\"","value","\"",": ","\"","my-value","\"","\n}\n],\n","\"","id","\"",": ","\"","myEndpointName","\"",",\n","\"","url","\"",": ","\"","https://webhook.site/123e4567-e89b-12d3-a456-426614174000","\"","\n}\n]\n}"]}]},{"$$mdtype":"Tag","name":"details","attributes":{},"children":[{"$$mdtype":"Tag","name":"summary","attributes":{"className":"post-endpoint"},"children":[{"$$mdtype":"Tag","name":"span","attributes":{"className":"post-method"},"children":["POST"]},{"$$mdtype":"Tag","name":"span","attributes":{"className":"post-path"},"children":[" /v2/servers/{serverName}/webhooks/targets"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{"style":{"fontFamily":"\"museo sans\", sans-serif"}},"children":["Purpose: "]},"Create a target in the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Webhooks.json"]}," configuration file. In this case, we","'","re adding a new ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["myEndpointName2"]}," target."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Sample request:"]}]},{"$$mdtype":"Tag","name":"pre","attributes":{"className":"prettyprint lang-bash"},"children":["curl -X POST --basic -u ","\"","USERNAME:PASSWORD","\""," \\\n\n-H ","\"","Accept: application/JSON; charset=utf-8","\""," \\\n-H ","\"","Content-Type: application/JSON; charset=utf-8","\""," \\\n","\"","http://localhost:8087/v2/servers/_defaultServer_/webhooks/targets","\""," \\\n-d ","'","{\n","\"","serverName","\"",": ","\"","_defaultServer_","\"",",\n","\"","id","\"",": ","\"","myEndpointName2","\"",",\n","\"","url","\"",": ","\"","https://webhook.site/9f8b7c6d-a12b-34d5-b678-90abcdef1234","\"","\n}","'"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Sample response:"]}]},{"$$mdtype":"Tag","name":"pre","attributes":{"className":"prettyprint lang-bash"},"children":["{\n\n","\"","id","\"",": ","\"","myEndpointName2","\"",",\n","\"","url","\"",": ","\"","https://webhook.site/9f8b7c6d-a12b-34d5-b678-90abcdef1234","\"",",\n","\"","headers","\"",": null,\n","\"","auth","\"",": null,\n}"]}]},{"$$mdtype":"Tag","name":"details","attributes":{},"children":[{"$$mdtype":"Tag","name":"summary","attributes":{"className":"get-endpoint"},"children":[{"$$mdtype":"Tag","name":"span","attributes":{"className":"get-method"},"children":["GET"]},{"$$mdtype":"Tag","name":"span","attributes":{"className":"get-path"},"children":[" /v2/servers/{serverName}/webhooks/targets/{id}"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{"style":{"fontFamily":"\"museo sans\", sans-serif"}},"children":["Purpose: "]},"Fetch a target from the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Webhooks.json"]}," configuration file using the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["id"]},"path parameter. In this case, we","'","re getting details about the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["myEndpointName2"]}," target."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Sample request:"]}]},{"$$mdtype":"Tag","name":"pre","attributes":{"className":"prettyprint lang-bash"},"children":["curl -X GET --basic -u ","\"","USERNAME:PASSWORD","\""," \\\n\n-H ","\"","Accept:application/JSON; charset=utf-8","\""," \\\n-H ","\"","Content-Type:application/JSON; charset=utf-8","\""," \\\n","\"","http://localhost:8087/v2/servers/_defaultServer_/webhooks/targets/myEndpointName2","\""]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Sample response:"]}]},{"$$mdtype":"Tag","name":"pre","attributes":{"className":"prettyprint lang-bash"},"children":["{\n\n","\"","serverName","\"",": ","\"","_defaultServer_","\"",",\n","\"","url","\"",": ","\"","https://webhook.site/9f8b7c6d-a12b-34d5-b678-90abcdef1234","\"","\n}"]}]},{"$$mdtype":"Tag","name":"details","attributes":{},"children":[{"$$mdtype":"Tag","name":"summary","attributes":{"className":"put-endpoint"},"children":[{"$$mdtype":"Tag","name":"span","attributes":{"className":"put-method"},"children":["PUT"]},{"$$mdtype":"Tag","name":"span","attributes":{"className":"put-path"},"children":[" /v2/servers/{serverName}/webhooks/targets/{id}"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{"style":{"fontFamily":"\"museo sans\", sans-serif"}},"children":["Purpose: "]},"Update a target in the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Webhooks.json"]}," configuration file based on the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["id"]}," path parameter. In this case, we","'","re updating the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["myEndpointName2"]}," target."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Sample request:"]}]},{"$$mdtype":"Tag","name":"pre","attributes":{"className":"prettyprint lang-bash"},"children":["curl -X PUT --basic -u ","\"","USERNAME:PASSWORD","\""," \\\n\n-H ","\"","Accept: application/JSON; charset=utf-8","\""," \\\n-H ","\"","Content-Type: application/JSON; charset=utf-8","\""," \\\n","\"","http://localhost:8087/v2/servers/_defaultServer_/webhooks/targets/myEndpointName2","\""," \\\n-d ","'","{\n","\"","id","\"",": ","\"","MyEndpointName2","\"",",\n","\"","url","\"",": ","\"","https://webhook.site/4a1b2c3d-e456-78f9-a012-3456789abcde","\"",",\n","\"","headers","\"",": [\n{\n","\"","name","\"",": ","\"","Authorization","\"",",\n","\"","value","\"",": ","\"","Bearer abc123token","\"","\n},\n{\n","\"","name","\"",": ","\"","X-Custom-Header","\"",",\n","\"","value","\"",": ","\"","some-value","\"","\n}\n],\n","\"","auth","\"",": {\n","\"","type","\"",": ","\"","jwt","\"",",\n","\"","secret","\"",": ","\"","abc123secret","\"","\n}\n}","'"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Sample response:"]}]},{"$$mdtype":"Tag","name":"pre","attributes":{"className":"prettyprint lang-bash"},"children":["{\n\n","\"","id","\"",": ","\"","myEndpointName2","\"",",\n","\"","url","\"",": ","\"","https://webhook.site/4a1b2c3d-e456-78f9-a012-3456789abcde","\"",",\n","\"","headers","\"",": [\n{\n","\"","name","\"",": ","\"","Authorization","\"",",\n","\"","value","\"",": ","\"","Bearer abc123token","\"","\n},\n{\n","\"","name","\"",": ","\"","X-Custom-Header","\"",",\n","\"","value","\"",": ","\"","some-value","\"","\n}\n],\n","\"","auth","\"",": {\n","\"","type","\"",": ","\"","jwt","\"",",\n","\"","secret","\"",": ","\"","abc123secret","\"","\n}\n}"]}]},{"$$mdtype":"Tag","name":"details","attributes":{},"children":[{"$$mdtype":"Tag","name":"summary","attributes":{"className":"delete-endpoint"},"children":[{"$$mdtype":"Tag","name":"span","attributes":{"className":"delete-method"},"children":["DELETE"]},{"$$mdtype":"Tag","name":"span","attributes":{"className":"delete-path"},"children":[" /v2/servers/{serverName}/webhooks/targets/{id}"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"span","attributes":{"style":{"margin":"0px","padding":"0px"}},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Purpose: "]},"Delete a target in the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Webhooks.json"]}," configuration file based on the target ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["id "]},"path parameter. In this case, we","'","re deleting the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["myEndpointName2"]},"target."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Sample request:"]}]},{"$$mdtype":"Tag","name":"pre","attributes":{"className":"prettyprint lang-bash"},"children":["curl -X DELETE --basic -u ","\"","USERNAME:PASSWORD","\""," \\\n\n-H ","\"","Accept:application/JSON; charset=utf-8","\""," \\\n-H ","\"","Content-Type:application/JSON; charset=utf-8","\""," \\\n","\"","http://localhost:8087/v2/servers/_defaultServer_/webhooks/targets/myEndpointName2","\""]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Sample response:"]}]},{"$$mdtype":"Tag","name":"pre","attributes":{"className":"prettyprint lang-bash"},"children":["{\n\n","\"","success","\"",": true,\n","\"","message","\"",": ","\"","Deleted","\"",",\n","\"","data","\"",": null\n}"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"1-configure-your-serverxml-file","__idx":4},"children":["1. Configure your Server.xml file"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The first step is to update the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Server.xml"]}," configuration file located at ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["[install-dir]/conf/Server.xml"]}," to include:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"html","header":{"controls":{"copy":{}}},"source":"<ServerListeners>\n    <ServerListener>\n        <BaseClass>com.wowza.wms.webhooks.WebhookListener</BaseClass>\n    </ServerListener>\n</ServerListeners>\n","lang":"html"},"children":[]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","data-title":"Example request","header":{"title":"Example request","controls":{"copy":{}}},"source":"curl -X PUT --basic -u \"USERNAME:PASSWORD\" \\\n-H \"Accept: application/json; charset=utf-8\" \\\n-H \"Content-Type: application/json; charset=utf-8\" \\\n\"http://localhost:8087/v2/servers/_defaultServer_\" \\\n-d '{\n  \"description\": \"desc\",\n  \"name\": \"Wowza Streaming Engine\",\n  \"serverName\": \"_defaultServer_\",\n  \"defaultStreamPrefix\": \"mp4\",\n  \"ipAddress\": \"*\",\n  \"port\": 8083,\n  \"handlerThreadPool\": \"${com.wowza.wms.TuningAuto}\",\n  \"handlerThreadPoolAutoValue\": \"120\",\n  \"transportThreadPool\": \"${com.wowza.wms.TuningAuto}\",\n  \"transportThreadPoolAutoValue\": \"80\",\n  \"rtpDataPortSharing\": false,\n  \"rtpDataPortSharingPort\": 6970,\n  \"serverListeners\": {\n    \"serverName\": \"_defaultServer_\",\n    \"serverListeners\": [\n      {\n        \"order\": 0,\n        \"baseClass\": \"com.wowza.wms.webhooks.WebhookListener\"\n      },\n      {\n        \"order\": 1,\n        \"baseClass\": \"com.wowza.wms.mediacache.impl.MediaCacheServerListener\"\n      }\n    ]\n  },\n  \"serverTS\": 0\n}'\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","data-title":"Example response","header":{"title":"Example response","controls":{"copy":{}}},"source":"{\n  \"success\": true,\n  \"message\": \"Saved\",\n  \"data\": null\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"2-configure-your-webhooksjson-file","__idx":5},"children":["2. Configure your Webhooks.json file"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Next, define the rules and targets in the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Webhooks.json"]}," file."," ","This JSON configuration file defines how webhook events are generated and delivered."," ","For more, see the ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://www.wowza.com/docs/wowza-streaming-engine-webhooksjson-configuration-reference"},"children":["Wowza Streaming Engine Webhooks.json configuration reference"]},"."]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Note:"]}," In this section, we use ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://webhook.site"},"children":["Webhook.site"]}," to generate a unique URL endpoint to use as a test webhook destination."," ","Webhook.site is useful for quickly inspecting webhook payloads, but it isn't intended for production or automated testing."," ","Request data may be temporary, and the service can reset without notice."," ","It doesn't validate signatures, simulate endpoint logic, or guarantee reliable delivery under load."," ","Another similar testing tool you can use is this ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://webhook-test.com/"},"children":["Webhook tester"]},"."]}]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Go to ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://webhook.site"},"children":["Webhook.site"]}," and create a unique URL for your endpoint."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Run this cURL request to fetch the content of the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Webhooks.json"]}," configuration file located at ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["[install-dir]/conf/Webhooks.json"]},":"]}]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","data-title":"Example request","header":{"title":"Example request","controls":{"copy":{}}},"source":"curl -X GET --basic -u \"USERNAME:PASSWORD\" \\\n-H \"Accept: application/json; charset=utf-8\" \\\n-H \"Content-Type: application/json; charset=utf-8\" \\\n\"http://localhost:8087/v2/servers/_defaultServer_/webhooks\"\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","data-title":"Example response","header":{"title":"Example response","controls":{"copy":{}}},"source":"{\n  \"serverName\": \"_defaultServer_\",\n  \"webhooks\": {\n    \"debugLog\": false,\n    \"filters\": [\n      {\n        \"criteria\": \"vHost.*.app.myApp.appInstance.*.stream.*.state.*\",\n        \"enabled\": false,\n        \"id\": \"myAppStreamFilter\",\n        \"maxRetryAttempts\": 3,\n        \"retryDelay\": 5,\n        \"retryDelayUnit\": \"m\",\n        \"targetRef\": \"myEndpointName\"\n      },\n      {\n        \"criteria\": \"vHost.myVhost.>\",\n        \"enabled\": false,\n        \"id\": \"myServerFilter\",\n        \"maxRetryAttempts\": 3,\n        \"retryDelay\": 5,\n        \"retryDelayUnit\": \"ms\",\n        \"targetRef\": \"myEndpointName2\"\n      },\n      {\n        \"criteria\": \"vHost.myVhost2.app.*.appInstance._definst_.>\",\n        \"enabled\": false,\n        \"id\": \"myAppInstanceFilter\",\n        \"maxRetryAttempts\": null,\n        \"retryDelay\": null,\n        \"retryDelayUnit\": null,\n        \"targetRef\": \"myEndpointName\"\n      }\n    ],\n    \"source\": \"myWSEInstanceName\",\n    \"targets\": [\n      {\n        \"auth\": {\n          \"secret\": \"abc123secret\",\n          \"type\": \"jwt\"\n        },\n        \"headers\": [\n          {\n            \"name\": \"Authorization\",\n            \"value\": \"Bearer abc123token\"\n          },\n          {\n            \"name\": \"X-Custom-Header\",\n            \"value\": \"my-value\"\n          }\n        ],\n        \"id\": \"myEndpointName\",\n        \"url\": \"https://my.site.com/\"\n      },\n      {\n        \"auth\": {\n          \"secret\": \"def456secret\",\n          \"type\": \"jwt\"\n        },\n        \"headers\": [\n          {\n            \"name\": \"Authorization\",\n            \"value\": \"Bearer def456token\"\n          },\n          {\n            \"name\": \"X-Custom-Header\",\n            \"value\": \"my-value2\"\n          }\n        ],\n        \"id\": \"myEndpointName2\",\n        \"url\": \"https://my.site2.com/\"\n      }\n    ]\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"ol","attributes":{"start":3},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Run the following cURL request to update the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Webhooks.json"]}," configuration file."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The endpoint ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["URL"]}," in the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["targets"]}," array is a placeholder."," ","Replace it with your own value, or in this case, add the unique URL from Webhook.site in ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"#1-configure-your-serverxml-file"},"children":["step 1"]},":"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","data-title":"Example request","header":{"title":"Example request","controls":{"copy":{}}},"source":"curl -X PUT --basic -u \"USERNAME:PASSWORD\" \\\n-H \"Accept: application/json; charset=utf-8\" \\\n-H \"Content-Type: application/json; charset=utf-8\" \\\n\"http://localhost:8087/v2/servers/_defaultServer_/webhooks\" \\\n-d '{\n  \"serverName\": \"_defaultServer_\",\n  \"webhooks\": {\n    \"source\": \"myWSEInstanceName\",\n    \"debugLog\": false,\n    \"filters\": [\n      {\n        \"id\": \"myServerFilter\",\n        \"enabled\": true,\n        \"targetRef\": \"myEndpointName\",\n        \"retryDelay\": null,\n        \"criteria\": \"vHost._defaultVHost_.>\",\n        \"maxRetryAttempts\": null,\n        \"retryDelayUnit\": null\n      }\n    ],\n    \"targets\": [\n      {\n        \"id\": \"myEndpointName\",\n        \"url\": \"https://webhook.site/123e4567-e89b-12d3-a456-426614174000\",\n        \"auth\": {\n          \"type\": \"jwt\",\n          \"secret\": \"def456secret\"\n        },\n        \"headers\": [\n          { \"name\": \"Authorization\", \"value\": \"Bearer def456token\" },\n          { \"name\": \"X-Custom-Header\", \"value\": \"my-value\" }\n        ]\n      }\n    ]\n  }\n}'\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","data-title":"Example response","header":{"title":"Example response","controls":{"copy":{}}},"source":"{\n  \"webhooks\": {\n    \"debugLog\": false,\n    \"source\": \"myWSEInstanceName\",\n    \"filters\": [\n      {\n        \"id\": \"myServerFilter\",\n        \"enabled\": true,\n        \"targetRef\": \"myEndpointName\",\n        \"retryDelay\": null,\n        \"criteria\": \"vHost._defaultVHost_.>\",\n        \"maxRetryAttempts\": null,\n        \"retryDelayUnit\": null\n      }\n    ],\n    \"targets\": [\n      {\n        \"id\": \"myEndpointName\",\n        \"url\": \"https://webhook.site/123e4567-e89b-12d3-a456-426614174000\",\n        \"headers\": [\n          {\n            \"name\": \"Authorization\",\n            \"value\": \"Bearer def456token\"\n          },\n          {\n            \"name\": \"X-Custom-Header\",\n            \"value\": \"my-value\"\n          }\n        ],\n        \"auth\": {\n          \"type\": \"jwt\",\n          \"secret\": \"def456secret\"\n        }\n      }\n    ]\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Note:"]}," In this example, we want to capture supported webhook events only from the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"em","attributes":{},"children":["defaultVHost"]}]}," virtual host (vhost) and send them to the target endpoint."," ","For information about authenticating the request, see ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://www.wowza.com/docs/wowza-streaming-engine-webhooksjson-configuration-reference#json-web-token-details"},"children":["JSON Web Token (JWT) details"]},"."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"3-restart-your-server","__idx":6},"children":["3. Restart your server"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["After making any configuration changes to your ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Server.xml"]}," and ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Webhook.json"]}," files, ensure that you restart your Wowza Streaming Engine server for the changes to take effect."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","data-title":"Example request","header":{"title":"Example request","controls":{"copy":{}}},"source":"curl -X PUT --basic -u \"USERNAME:PASSWORD\" \\\n-H \"Accept: application/json; charset=utf-8\" \\\n-H \"Content-Type: application/json; charset=utf-8\" \\\n\"http://localhost:8087/v2/servers/_defaultServer_/actions/restart\"\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","data-title":"Example response","header":{"title":"Example response","controls":{"copy":{}}},"source":"{\n  \"success\": true,\n  \"message\": \"Restarting server in 5 seconds\",\n  \"data\": null\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"4-test-your-webhook-notification","__idx":7},"children":["4. Test your webhook notification"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In this section, we use ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://webhook.site"},"children":["Webhook.site"]}," to capture and inspect webhook notifications from Wowza Streaming Engine during development."," ","This makes it easy to view raw payloads, confirm request formatting, and debug your setup."]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Note:"]}," For production environments, you'll want to integrate webhooks in a more secure and scalable manner, for example, by using direct server endpoints to receive and process events in your app, event streaming processors such as Kafka, serverless functions like AWS Lambda, or no-code platforms like Zapier."]}]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Start a stream and send it to your Wowza Streaming Engine server."," ","For more about publishing live streams, see ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://www.wowza.com/docs/how-to-connect-a-publisher-to-wowza-streaming-engine"},"children":["Connect a live source to Wowza Streaming Engine"]},"."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use the ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"#1-configure-your-serverxml-file"},"children":["unique URL"]}," you created in ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://webhook.site"},"children":["Webhook.site"]}," to verify that webhook notifications from Wowza Streaming Engine are received. For example, you get a notification each time a stream starts or stops, or an application shuts down."]}]}]},{"$$mdtype":"Tag","name":"img","attributes":{"className":"img-responsive","src":"//dyzz9obi78pm5.cloudfront.net/app/image/id/68c87d091eeb3f2ec009c558/n/webhook-site-post-request-for-engine-webhook.png","style":{"borderWidth":"1px","borderStyle":"solid","height":"707px","marginLeft":"40px","width":"850px"}},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"more-resources","__idx":8},"children":["More resources"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://www.wowza.com/docs/create-webhooks-to-monitor-streaming-events-in-wowza-streaming-engine"},"children":["Create webhooks to monitor streaming events in Wowza Streaming Engine"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://www.wowza.com/docs/wowza-streaming-engine-webhooksjson-configuration-reference"},"children":["Wowza Streaming Engine Webhooks.json configuration reference"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://www.wowza.com/docs/how-to-access-documentation-for-wowza-streaming-engine-rest-api"},"children":["Access reference documentation for the Wowza Streaming Engine REST API"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://www.wowza.com/docs/how-to-query-the-wowza-streaming-engine-rest-api"},"children":["Query the Wowza Streaming Engine REST API"]}]}]}]},"headings":[{"value":"Monitor streaming events with webhooks","id":"monitor-streaming-events-with-webhooks","depth":1},{"value":"Overview","id":"overview","depth":2},{"value":"Before you start","id":"before-you-start","depth":2},{"value":"Webhooks REST API endpoint reference","id":"webhooks-rest-api-endpoint-reference","depth":2},{"value":"1. Configure your Server.xml file","id":"1-configure-your-serverxml-file","depth":2},{"value":"2. Configure your Webhooks.json file","id":"2-configure-your-webhooksjson-file","depth":2},{"value":"3. Restart your server","id":"3-restart-your-server","depth":2},{"value":"4. Test your webhook notification","id":"4-test-your-webhook-notification","depth":2},{"value":"More resources","id":"more-resources","depth":2}],"frontmatter":{"seo":{"title":"Monitor streaming events with webhooks"}},"lastModified":"2026-04-16T14:49:25.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/docs/wowza-engine/guides/webhooks","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}