{"info":{"_postman_id":"a4e3089a-9568-4f2d-8d98-74fb15cc7893","name":"Live Streaming API","description":"<html><head></head><body><p>The Live Streaming API is a subset of a three-part application designed to control the state of one or more live events on <a href=\"https://azure.microsoft.com/en-us/services/media-services/\">Azure Media Services</a>. These parts are:</p>\n<ol>\n<li><strong><a href=\"https://github.com/literal-life-church/live-streaming-api/\">Live Streaming API</a>:</strong> Turn on or off one more live events on Azure Meida Services</li>\n<li><strong><a href=\"https://github.com/literal-life-church/live-streaming-controller\">Live Streaming Controller</a>:</strong> A simple tool for the event broadcaster to interface with the Live Streaming API</li>\n<li><strong><a href=\"https://github.com/literal-life-church/stream-switch\">Stream Switch</a>:</strong> A front-end, viewer application for viewing one or more live streams on a website</li>\n</ol>\n<p>In production, an event broadcaster would use the Live Streaming Controller as a front-end application to make a POST call to the <code>/broadcaster</code> endpoint, a DELETE call to the <code>/broadcaster</code>, and a GET call to the <code>/broadcaster</code> endpoint on the Live Streaming API to respectively start the streaming services at the beginning of an event, stop the services at the end, and read the status of these resources at any point before, during, or after. All of these calls are authenticated, since they can reveal sensitive information about the state of your resources, or result in a state change, and thus a billing change, on the broadcaster's Azure account.</p>\n<p>A viewer would then go to a website which has the Stream Switch installed to view the event. That application calls the <code>/locators</code> endpoint to fetch the streaming URLs from Azure to play inside of an HTML5 video player on the web. Since this endpoint intended for public consumption, it is the only endpoint in the application which is not authenticated.</p>\n<p>This portion of the application trio focuses on what is necessary to directly manipulate the state of these services on Azure. The collection you are viewing is to document all of the available calls one can make to this service, once it is deployed online. It is intended to be published on Azure Functions, although, it could be changed slightly to work on other serverless platforms, such as AWS Lambda.</p>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"3329098","collectionId":"a4e3089a-9568-4f2d-8d98-74fb15cc7893","publishedId":"SzzkddRA","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"EF5B25"},"publishDate":"2020-06-18T12:53:51.000Z"},"item":[{"name":"Broadcaster Endpoints","item":[{"name":"Start","id":"93264ed4-c943-484e-8491-bea1e028d82a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"http://localhost:7071/api/v1/broadcaster?endpoint=default&events=audio,video","description":"<p>Starts the given streaming endpoint and all live events in one call. Once a reply from this call arrives, you may immediately begin streaming from your live streaming software.</p>\n<p><strong>Note:</strong> This call may take several minutes to generate a reply, since it waits for all services to become fully available on Azure.</p>\n","urlObject":{"protocol":"http","port":"7071","path":["api","v1","broadcaster"],"host":["localhost"],"query":[{"description":{"content":"<p>Name of the streaming endpoint to start</p>\n","type":"text/plain"},"key":"endpoint","value":"default"},{"description":{"content":"<p>Comma-separated list of live events to start</p>\n","type":"text/plain"},"key":"events","value":"audio,video"}],"variable":[]}},"response":[{"id":"112c79ce-7167-436f-ab58-9993df2d5f48","name":"Missing All Request Parameters","originalRequest":{"method":"POST","header":[],"url":{"raw":"http://localhost:7071/api/v1/broadcaster","protocol":"http","host":["localhost"],"port":"7071","path":["api","v1","broadcaster"],"query":[{"key":"endpoint","value":"default","description":"Name of the streaming endpoint to start","disabled":true},{"key":"events","value":"audio,video","description":"Comma-separated list of live events to start","disabled":true}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Mon, 04 May 2020 18:01:20 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Server","value":"Kestrel"},{"key":"Content-Length","value":"390"}],"cookie":[],"responseTime":null,"body":"{\n    \"developerMessage\": \"The query parameter 'endpoint' is required and must be the name of an existing streaming endpoint, and another query parameter 'events' is also required and must be a comma-separated list of names of existing live events\",\n    \"message\": \"Input requires the name of a streaming endpoint and the name of one or more live events\",\n    \"status\": 400,\n    \"type\": \"InputValidationException\"\n}"},{"id":"375b39bb-ff8e-4d94-bade-8f0cfa1ba234","name":"Missing Events Parameter","originalRequest":{"method":"POST","header":[],"url":{"raw":"http://localhost:7071/api/v1/broadcaster?endpoint=default","protocol":"http","host":["localhost"],"port":"7071","path":["api","v1","broadcaster"],"query":[{"key":"endpoint","value":"default","description":"Name of the streaming endpoint to start"},{"key":"events","value":"audio,video","description":"Comma-separated list of live events to start","disabled":true}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Mon, 04 May 2020 18:00:20 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Server","value":"Kestrel"},{"key":"Content-Length","value":"241"}],"cookie":[],"responseTime":null,"body":"{\n    \"developerMessage\": \"The query parameter 'events' is required and must be a comma-separated list of names of existing live events\",\n    \"message\": \"Input requires the name of one or more live events\",\n    \"status\": 400,\n    \"type\": \"InputValidationException\"\n}"},{"id":"786ddc65-6985-4519-907a-82d346448fcf","name":"Non-Existent Live Event","originalRequest":{"method":"POST","header":[],"url":{"raw":"http://localhost:7071/api/v1/broadcaster?endpoint=default&events=audio,no-exist","protocol":"http","host":["localhost"],"port":"7071","path":["api","v1","broadcaster"],"query":[{"key":"endpoint","value":"default","description":"Name of the streaming endpoint to start"},{"key":"events","value":"audio,no-exist","description":"Comma-separated list of live events to start"}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Mon, 04 May 2020 18:03:19 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Server","value":"Kestrel"},{"key":"Content-Length","value":"263"}],"cookie":[],"responseTime":null,"body":"{\n    \"developerMessage\": \"The following live event(s) in the query parameter 'events' does not match the name(s) of any the existing live events: no-exist\",\n    \"message\": \"The following live event(s) do not exist: no-exist\",\n    \"status\": 400,\n    \"type\": \"ServiceValidationException\"\n}"},{"id":"d32a03f4-f1f2-4a2e-ae6f-9d3d695a98ed","name":"Missing Endpoint Parameter","originalRequest":{"method":"POST","header":[],"url":{"raw":"http://localhost:7071/api/v1/broadcaster?events=audio,video","protocol":"http","host":["localhost"],"port":"7071","path":["api","v1","broadcaster"],"query":[{"key":"endpoint","value":"default","description":"Name of the streaming endpoint to start","disabled":true},{"key":"events","value":"audio,video","description":"Comma-separated list of live events to start"}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Mon, 04 May 2020 18:01:01 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Server","value":"Kestrel"},{"key":"Content-Length","value":"227"}],"cookie":[],"responseTime":null,"body":"{\n    \"developerMessage\": \"The query parameter 'endpoint' is required and must be the name of an existing streaming endpoint\",\n    \"message\": \"Input requires the name of a streaming endpoint\",\n    \"status\": 400,\n    \"type\": \"InputValidationException\"\n}"},{"id":"df843003-9e68-4008-98dd-e950b794bb7d","name":"Valid Start Request","originalRequest":{"method":"POST","header":[],"url":{"raw":"http://localhost:7071/api/v1/broadcaster?endpoint=default&events=audio,video","protocol":"http","host":["localhost"],"port":"7071","path":["api","v1","broadcaster"],"query":[{"key":"endpoint","value":"default","description":"Name of the streaming endpoint to start"},{"key":"events","value":"audio,video","description":"Comma-separated list of live events to start"}]}},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Mon, 04 May 2020 18:09:00 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Server","value":"Kestrel"},{"key":"Content-Length","value":"447"}],"cookie":[],"responseTime":null,"body":"{\n    \"changes\": {\n        \"events\": [\n            {\n                \"name\": \"audio\",\n                \"newStatus\": \"running\",\n                \"oldStatus\": \"stopped\"\n            },\n            {\n                \"name\": \"video\",\n                \"newStatus\": \"running\",\n                \"oldStatus\": \"stopped\"\n            }\n        ],\n        \"endpoint\": {\n            \"name\": \"default\",\n            \"newStatus\": \"running\",\n            \"oldStatus\": \"stopped\"\n        }\n    },\n    \"status\": {\n        \"events\": [\n            {\n                \"name\": \"audio\",\n                \"status\": {\n                    \"name\": \"running\",\n                    \"type\": \"stable\"\n                }\n            },\n            {\n                \"name\": \"video\",\n                \"status\": {\n                    \"name\": \"running\",\n                    \"type\": \"stable\"\n                }\n            }\n        ],\n        \"endpoint\": {\n            \"name\": \"default\",\n            \"status\": {\n                \"name\": \"running\",\n                \"type\": \"stable\"\n            }\n        },\n        \"summary\": {\n            \"name\": \"running\",\n            \"type\": \"stable\"\n        }\n    }\n}"},{"id":"f9fee2f9-dbc9-46c4-8ba6-130e52b37f59","name":"Non-Existent Streaming Endpoint","originalRequest":{"method":"POST","header":[],"url":{"raw":"http://localhost:7071/api/v1/broadcaster?endpoint=no-exist&events=audio,video","protocol":"http","host":["localhost"],"port":"7071","path":["api","v1","broadcaster"],"query":[{"key":"endpoint","value":"no-exist","description":"Name of the streaming endpoint to start"},{"key":"events","value":"audio,video","description":"Comma-separated list of live events to start"}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Mon, 04 May 2020 18:02:16 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Server","value":"Kestrel"},{"key":"Content-Length","value":"218"}],"cookie":[],"responseTime":null,"body":"{\n    \"developerMessage\": \"The query parameter 'endpoint' does not match the name of any existing streaming endpoints\",\n    \"message\": \"The given streaming endpoint does not exist\",\n    \"status\": 400,\n    \"type\": \"ServiceValidationException\"\n}"}],"_postman_id":"93264ed4-c943-484e-8491-bea1e028d82a"},{"name":"Stop","id":"86b01a66-eaef-4e29-bdfa-04e8149ebc78","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"http://localhost:7071/api/v1/broadcaster?endpoint=default&events=audio,video","description":"<p>Stops the given streaming endpoint and all live events in one call. Once the live events are stopped, all streaming locators and associated assets in Azure Storage are completely removed. This operation is designed to minimize the amount of charge on your Azure account by as much as possible while the streaming is not in use.</p>\n<p><strong>Note:</strong> This call may take several minutes to generate a reply, since it waits for all services to fully stop on Azure.</p>\n","urlObject":{"protocol":"http","port":"7071","path":["api","v1","broadcaster"],"host":["localhost"],"query":[{"description":{"content":"<p>Name of the streaming endpoint to stop</p>\n","type":"text/plain"},"key":"endpoint","value":"default"},{"description":{"content":"<p>Comma-separated list of live events to stop</p>\n","type":"text/plain"},"key":"events","value":"audio,video"}],"variable":[]}},"response":[{"id":"257d2223-de25-4e40-b8dc-7f578bc5b9d7","name":"Missing All Request Parameters","originalRequest":{"method":"DELETE","header":[],"url":{"raw":"http://localhost:7071/api/v1/broadcaster","protocol":"http","host":["localhost"],"port":"7071","path":["api","v1","broadcaster"],"query":[{"key":"endpoint","value":"default","description":"Name of the streaming endpoint to stop","disabled":true},{"key":"events","value":"audio,video","description":"Comma-separated list of live events to stop","disabled":true}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Mon, 04 May 2020 18:01:20 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Server","value":"Kestrel"},{"key":"Content-Length","value":"390"}],"cookie":[],"responseTime":null,"body":"{\n    \"developerMessage\": \"The query parameter 'endpoint' is required and must be the name of an existing streaming endpoint, and another query parameter 'events' is also required and must be a comma-separated list of names of existing live events\",\n    \"message\": \"Input requires the name of a streaming endpoint and the name of one or more live events\",\n    \"status\": 400,\n    \"type\": \"InputValidationException\"\n}"},{"id":"30281c2e-0996-43f3-a5fe-fb0624b3895d","name":"Non-Existent Streaming Endpoint","originalRequest":{"method":"DELETE","header":[],"url":{"raw":"http://localhost:7071/api/v1/broadcaster?endpoint=no-exist&events=audio,video","protocol":"http","host":["localhost"],"port":"7071","path":["api","v1","broadcaster"],"query":[{"key":"endpoint","value":"no-exist","description":"Name of the streaming endpoint to stop"},{"key":"events","value":"audio,video","description":"Comma-separated list of live events to stop"}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Mon, 04 May 2020 18:02:16 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Server","value":"Kestrel"},{"key":"Content-Length","value":"218"}],"cookie":[],"responseTime":null,"body":"{\n    \"developerMessage\": \"The query parameter 'endpoint' does not match the name of any existing streaming endpoints\",\n    \"message\": \"The given streaming endpoint does not exist\",\n    \"status\": 400,\n    \"type\": \"ServiceValidationException\"\n}"},{"id":"38c28eb3-53ce-4d8e-841e-9cb7011ccbcd","name":"Non-Existent Live Event","originalRequest":{"method":"DELETE","header":[],"url":{"raw":"http://localhost:7071/api/v1/broadcaster?endpoint=default&events=audio,no-exist","protocol":"http","host":["localhost"],"port":"7071","path":["api","v1","broadcaster"],"query":[{"key":"endpoint","value":"default","description":"Name of the streaming endpoint to stop"},{"key":"events","value":"audio,no-exist","description":"Comma-separated list of live events to stop"}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Mon, 04 May 2020 18:03:19 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Server","value":"Kestrel"},{"key":"Content-Length","value":"263"}],"cookie":[],"responseTime":null,"body":"{\n    \"developerMessage\": \"The following live event(s) in the query parameter 'events' does not match the name(s) of any the existing live events: no-exist\",\n    \"message\": \"The following live event(s) do not exist: no-exist\",\n    \"status\": 400,\n    \"type\": \"ServiceValidationException\"\n}"},{"id":"4a18ac40-34e2-47cc-be47-b6f3192bcd47","name":"Missing Events Parameter","originalRequest":{"method":"DELETE","header":[],"url":{"raw":"http://localhost:7071/api/v1/broadcaster?endpoint=default","protocol":"http","host":["localhost"],"port":"7071","path":["api","v1","broadcaster"],"query":[{"key":"endpoint","value":"default","description":"Name of the streaming endpoint to stop"},{"key":"events","value":"audio,video","description":"Comma-separated list of live events to stop","disabled":true}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Mon, 04 May 2020 18:00:20 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Server","value":"Kestrel"},{"key":"Content-Length","value":"241"}],"cookie":[],"responseTime":null,"body":"{\n    \"developerMessage\": \"The query parameter 'events' is required and must be a comma-separated list of names of existing live events\",\n    \"message\": \"Input requires the name of one or more live events\",\n    \"status\": 400,\n    \"type\": \"InputValidationException\"\n}"},{"id":"51d06212-3110-4a19-b48e-caca376a9b4b","name":"Missing Endpoint Parameter","originalRequest":{"method":"DELETE","header":[],"url":{"raw":"http://localhost:7071/api/v1/broadcaster?events=audio,video","protocol":"http","host":["localhost"],"port":"7071","path":["api","v1","broadcaster"],"query":[{"key":"endpoint","value":"default","description":"Name of the streaming endpoint to stop","disabled":true},{"key":"events","value":"audio,video","description":"Comma-separated list of live events to stop"}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Mon, 04 May 2020 18:01:01 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Server","value":"Kestrel"},{"key":"Content-Length","value":"227"}],"cookie":[],"responseTime":null,"body":"{\n    \"developerMessage\": \"The query parameter 'endpoint' is required and must be the name of an existing streaming endpoint\",\n    \"message\": \"Input requires the name of a streaming endpoint\",\n    \"status\": 400,\n    \"type\": \"InputValidationException\"\n}"},{"id":"ff0d979e-79aa-4d31-883a-be6b3d9ff98b","name":"Valid Stop Request","originalRequest":{"method":"DELETE","header":[],"url":{"raw":"http://localhost:7071/api/v1/broadcaster?endpoint=default&events=audio,video","protocol":"http","host":["localhost"],"port":"7071","path":["api","v1","broadcaster"],"query":[{"key":"endpoint","value":"default","description":"Name of the streaming endpoint to stop"},{"key":"events","value":"audio,video","description":"Comma-separated list of live events to stop"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Mon, 04 May 2020 17:56:08 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Server","value":"Kestrel"},{"key":"Content-Length","value":"447"}],"cookie":[],"responseTime":null,"body":"{\n    \"changes\": {\n        \"events\": [\n            {\n                \"name\": \"audio\",\n                \"newStatus\": \"stopped\",\n                \"oldStatus\": \"running\"\n            },\n            {\n                \"name\": \"video\",\n                \"newStatus\": \"stopped\",\n                \"oldStatus\": \"running\"\n            }\n        ],\n        \"endpoint\": {\n            \"name\": \"default\",\n            \"newStatus\": \"stopped\",\n            \"oldStatus\": \"running\"\n        }\n    },\n    \"status\": {\n        \"events\": [\n            {\n                \"name\": \"audio\",\n                \"status\": {\n                    \"name\": \"stopped\",\n                    \"type\": \"stable\"\n                }\n            },\n            {\n                \"name\": \"video\",\n                \"status\": {\n                    \"name\": \"stopped\",\n                    \"type\": \"stable\"\n                }\n            }\n        ],\n        \"endpoint\": {\n            \"name\": \"default\",\n            \"status\": {\n                \"name\": \"stopped\",\n                \"type\": \"stable\"\n            }\n        },\n        \"summary\": {\n            \"name\": \"stopped\",\n            \"type\": \"stable\"\n        }\n    }\n}"}],"_postman_id":"86b01a66-eaef-4e29-bdfa-04e8149ebc78"},{"name":"Status","id":"f6a1f4bd-6fbe-4ab2-9f5e-33c91a07d947","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:7071/api/v1/broadcaster?endpoint=default&events=audio,video","description":"<p>Retrieves the status of the streaming endpoint and all requested live events. The names and individual statuses of each resource is available in the response, as well as a summary. This summary is useful for giving a front-end controller application visibility into:</p>\n<ul>\n<li>when the service is ready for use</li>\n<li>when the service is shut down and not billing your Azure subscription</li>\n<li>if something went wrong and needs your attention</li>\n</ul>\n","urlObject":{"protocol":"http","port":"7071","path":["api","v1","broadcaster"],"host":["localhost"],"query":[{"description":{"content":"<p>Name of the streaming endpoint to retrieve a status</p>\n","type":"text/plain"},"key":"endpoint","value":"default"},{"description":{"content":"<p>Comma-separated list of live events to retrieve a status</p>\n","type":"text/plain"},"key":"events","value":"audio,video"}],"variable":[]}},"response":[{"id":"195ab57d-fd62-4494-a4ff-02ea63bfc916","name":"Missing Events Parameter","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:7071/api/v1/broadcaster?endpoint=default","protocol":"http","host":["localhost"],"port":"7071","path":["api","v1","broadcaster"],"query":[{"key":"endpoint","value":"default","description":"Name of the streaming endpoint to retrieve a status"},{"key":"events","value":"audio,video","description":"Comma-separated list of live events to retrieve a status","disabled":true}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Mon, 04 May 2020 18:00:20 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Server","value":"Kestrel"},{"key":"Content-Length","value":"241"}],"cookie":[],"responseTime":null,"body":"{\n    \"developerMessage\": \"The query parameter 'events' is required and must be a comma-separated list of names of existing live events\",\n    \"message\": \"Input requires the name of one or more live events\",\n    \"status\": 400,\n    \"type\": \"InputValidationException\"\n}"},{"id":"4daf6c2d-22ed-44fa-b9ca-ca735da2a2f0","name":"Missing Endpoint Parameter","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:7071/api/v1/broadcaster?events=audio,video","protocol":"http","host":["localhost"],"port":"7071","path":["api","v1","broadcaster"],"query":[{"key":"endpoint","value":"default","description":"Name of the streaming endpoint to retrieve a status","disabled":true},{"key":"events","value":"audio,video","description":"Comma-separated list of live events to retrieve a status"}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Mon, 04 May 2020 18:01:01 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Server","value":"Kestrel"},{"key":"Content-Length","value":"227"}],"cookie":[],"responseTime":null,"body":"{\n    \"developerMessage\": \"The query parameter 'endpoint' is required and must be the name of an existing streaming endpoint\",\n    \"message\": \"Input requires the name of a streaming endpoint\",\n    \"status\": 400,\n    \"type\": \"InputValidationException\"\n}"},{"id":"8d58ea6c-128a-4f12-a8a6-a00205619fbd","name":"Valid Status Request","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:7071/api/v1/broadcaster?endpoint=default&events=audio,video","protocol":"http","host":["localhost"],"port":"7071","path":["api","v1","broadcaster"],"query":[{"key":"endpoint","value":"default","description":"Name of the streaming endpoint to retrieve a status"},{"key":"events","value":"audio,video","description":"Comma-separated list of live events to retrieve a status"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Mon, 04 May 2020 18:16:55 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Server","value":"Kestrel"},{"key":"Content-Length","value":"185"}],"cookie":[],"responseTime":null,"body":"{\n    \"events\": [\n        {\n            \"name\": \"audio\",\n            \"status\": {\n                \"name\": \"stopped\",\n                \"type\": \"stable\"\n            }\n        },\n        {\n            \"name\": \"video\",\n            \"status\": {\n                \"name\": \"stopped\",\n                \"type\": \"stable\"\n            }\n        }\n    ],\n    \"endpoint\": {\n        \"name\": \"default\",\n        \"status\": {\n            \"name\": \"stopped\",\n            \"type\": \"stable\"\n        }\n    },\n    \"summary\": {\n        \"name\": \"stopped\",\n        \"type\": \"stable\"\n    }\n}"},{"id":"a613ed44-de27-47db-a18d-565bbbd5e06f","name":"Non-Existent Live Event","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:7071/api/v1/broadcaster?endpoint=default&events=audio,no-exist","protocol":"http","host":["localhost"],"port":"7071","path":["api","v1","broadcaster"],"query":[{"key":"endpoint","value":"default","description":"Name of the streaming endpoint to retrieve a status"},{"key":"events","value":"audio,no-exist","description":"Comma-separated list of live events to retrieve a status"}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Mon, 04 May 2020 18:03:19 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Server","value":"Kestrel"},{"key":"Content-Length","value":"263"}],"cookie":[],"responseTime":null,"body":"{\n    \"developerMessage\": \"The following live event(s) in the query parameter 'events' does not match the name(s) of any the existing live events: no-exist\",\n    \"message\": \"The following live event(s) do not exist: no-exist\",\n    \"status\": 400,\n    \"type\": \"ServiceValidationException\"\n}"},{"id":"e5e1950d-417d-4772-b72a-5503fc7dfce2","name":"Missing All Request Parameters","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:7071/api/v1/broadcaster","protocol":"http","host":["localhost"],"port":"7071","path":["api","v1","broadcaster"],"query":[{"key":"endpoint","value":"default","description":"Name of the streaming endpoint to retrieve a status","disabled":true},{"key":"events","value":"audio,video","description":"Comma-separated list of live events to retrieve a status","disabled":true}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Mon, 04 May 2020 18:01:20 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Server","value":"Kestrel"},{"key":"Content-Length","value":"390"}],"cookie":[],"responseTime":null,"body":"{\n    \"developerMessage\": \"The query parameter 'endpoint' is required and must be the name of an existing streaming endpoint, and another query parameter 'events' is also required and must be a comma-separated list of names of existing live events\",\n    \"message\": \"Input requires the name of a streaming endpoint and the name of one or more live events\",\n    \"status\": 400,\n    \"type\": \"InputValidationException\"\n}"},{"id":"e94f08e1-b91e-4c0f-a650-a8d5a6e1b559","name":"Non-Existent Streaming Endpoint","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:7071/api/v1/broadcaster?endpoint=no-exist&events=audio,video","protocol":"http","host":["localhost"],"port":"7071","path":["api","v1","broadcaster"],"query":[{"key":"endpoint","value":"no-exist","description":"Name of the streaming endpoint to retrieve a status"},{"key":"events","value":"audio,video","description":"Comma-separated list of live events to retrieve a status"}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Mon, 04 May 2020 18:02:16 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Server","value":"Kestrel"},{"key":"Content-Length","value":"218"}],"cookie":[],"responseTime":null,"body":"{\n    \"developerMessage\": \"The query parameter 'endpoint' does not match the name of any existing streaming endpoints\",\n    \"message\": \"The given streaming endpoint does not exist\",\n    \"status\": 400,\n    \"type\": \"ServiceValidationException\"\n}"}],"_postman_id":"f6a1f4bd-6fbe-4ab2-9f5e-33c91a07d947"}],"id":"8637ae06-3492-4e37-af24-d805d5957e74","description":"<p>These calls, when deployed to a production Azure Functions instance, are designed to be called exclusively by the <a href=\"https://github.com/literal-life-church/live-streaming-controller\">Live Streaming Controller application</a>. All of these calls require an API key to authenticate the request, and the controller application supplies the necessary information.</p>\n<p>Do not expose the API key to the public, otherwise anyone would be able to manipulate the status of your streaming services.</p>\n","event":[{"listen":"prerequest","script":{"id":"36a3467c-3412-4afe-85fe-ed9be6fde7c7","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"598c81d7-d06b-41cc-b08e-51ce1a02487e","type":"text/javascript","exec":[""]}}],"_postman_id":"8637ae06-3492-4e37-af24-d805d5957e74"},{"name":"Viewer Endpoints","item":[{"name":"Locators","id":"05d7267b-ca2c-4cf6-ae70-565504a15b24","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:7071/api/v1/viewer/locators?endpoint=default&events=audio,video","description":"<p>Retrieves the URLs to necessary to watch a live stream on a website. The response payload contains information on each of the requested live events.</p>\n<p>Here is the information you receive for each requested live event:</p>\n<ul>\n<li><strong>dash:</strong> (When on-air only) URL to view DASH streams</li>\n<li><strong>hls:</strong> (When on-air only) URL to view HLS streams</li>\n<li><strong>smooth:</strong> (When on-air only) URL to view Smooth streams</li>\n<li><strong>isLive:</strong> Quick indicator to show if a particular event is live</li>\n<li><strong>name:</strong> Live event name</li>\n</ul>\n<p>Keep in mind that any event that is off-air will not produce any URLs for a user to watch a stream, and <code>isLive</code> is <code>false</code>.</p>\n<p>There are also two additional values which summarize the results:</p>\n<ul>\n<li><strong>isAllLive:</strong> Is <code>true</code> whenever all of the requested events are live</li>\n<li><strong>isAnyLive:</strong> Is <code>true</code> whenever any of the requested events are live</li>\n</ul>\n","urlObject":{"protocol":"http","port":"7071","path":["api","v1","viewer","locators"],"host":["localhost"],"query":[{"description":{"content":"<p>Name of the streaming endpoint to retrieve the streaming location URLs</p>\n","type":"text/plain"},"key":"endpoint","value":"default"},{"description":{"content":"<p>Comma-separated list of live events to retrieve the streaming location URLs</p>\n","type":"text/plain"},"key":"events","value":"audio,video"}],"variable":[]}},"response":[{"id":"30766c9b-d927-47f5-acff-16f813e1d427","name":"Non-Existent Streaming Endpoint","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:7071/api/v1/viewer/locators?endpoint=no-exist&events=audio,video","protocol":"http","host":["localhost"],"port":"7071","path":["api","v1","viewer","locators"],"query":[{"key":"endpoint","value":"no-exist","description":"Name of the streaming endpoint to retrieve the streaming location URLs"},{"key":"events","value":"audio,video","description":"Comma-separated list of live events to retrieve the streaming location URLs"}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Mon, 04 May 2020 18:02:16 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Server","value":"Kestrel"},{"key":"Content-Length","value":"218"}],"cookie":[],"responseTime":null,"body":"{\n    \"developerMessage\": \"The query parameter 'endpoint' does not match the name of any existing streaming endpoints\",\n    \"message\": \"The given streaming endpoint does not exist\",\n    \"status\": 400,\n    \"type\": \"ServiceValidationException\"\n}"},{"id":"3202fc2f-c3ba-4a85-8ee5-7232e79f19dc","name":"All Events Off-Air","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:7071/api/v1/viewer/locators?endpoint=default&events=audio,video","protocol":"http","host":["localhost"],"port":"7071","path":["api","v1","viewer","locators"],"query":[{"key":"endpoint","value":"default","description":"Name of the streaming endpoint to retrieve the streaming location URLs"},{"key":"events","value":"audio,video","description":"Comma-separated list of live events to retrieve the streaming location URLs"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Mon, 04 May 2020 19:30:33 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Server","value":"Kestrel"},{"key":"Content-Length","value":"172"}],"cookie":[],"responseTime":null,"body":"{\n    \"events\": [\n        {\n            \"name\": \"audio\",\n            \"isLive\": false,\n            \"locators\": []\n        },\n        {\n            \"name\": \"video\",\n            \"isLive\": false,\n            \"locators\": []\n        }\n    ],\n    \"isAllLive\": false,\n    \"isAnyLive\": false\n}"},{"id":"5197a77b-f54e-4937-a93b-ccb814f82137","name":"Missing Events Parameter","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:7071/api/v1/viewer/locators?endpoint=default","protocol":"http","host":["localhost"],"port":"7071","path":["api","v1","viewer","locators"],"query":[{"key":"endpoint","value":"default","description":"Name of the streaming endpoint to retrieve the streaming location URLs"},{"key":"events","value":"audio,video","description":"Comma-separated list of live events to retrieve the streaming location URLs","disabled":true}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Mon, 04 May 2020 18:00:20 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Server","value":"Kestrel"},{"key":"Content-Length","value":"241"}],"cookie":[],"responseTime":null,"body":"{\n    \"developerMessage\": \"The query parameter 'events' is required and must be a comma-separated list of names of existing live events\",\n    \"message\": \"Input requires the name of one or more live events\",\n    \"status\": 400,\n    \"type\": \"InputValidationException\"\n}"},{"id":"5327534c-f3bc-496f-9436-395dff9a43f1","name":"Some Events On-Air","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:7071/api/v1/viewer/locators?endpoint=default&events=audio,video","protocol":"http","host":["localhost"],"port":"7071","path":["api","v1","viewer","locators"],"query":[{"key":"endpoint","value":"default","description":"Name of the streaming endpoint to retrieve the streaming location URLs"},{"key":"events","value":"audio,video","description":"Comma-separated list of live events to retrieve the streaming location URLs"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Mon, 04 May 2020 19:38:14 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Server","value":"Kestrel"},{"key":"Content-Length","value":"638"}],"cookie":[],"responseTime":null,"body":"{\n    \"events\": [\n        {\n            \"name\": \"audio\",\n            \"isLive\": false,\n            \"locators\": []\n        },\n        {\n            \"name\": \"video\",\n            \"isLive\": true,\n            \"locators\": [\n                {\n                    \"type\": \"hls\",\n                    \"url\": \"https://yourstreamname-usea.streaming.media.azure.net/46940c8b-2d1e-45f7-8588-104f01966b40/manifest.ism/manifest(format=m3u8-aapl).m3u8\"\n                },\n                {\n                    \"type\": \"dash\",\n                    \"url\": \"https://yourstreamname-usea.streaming.media.azure.net/46940c8b-2d1e-45f7-8588-104f01966b40/manifest.ism/manifest(format=mpd-time-csf).mpd\"\n                },\n                {\n                    \"type\": \"smooth\",\n                    \"url\": \"https://yourstreamname-usea.streaming.media.azure.net/46940c8b-2d1e-45f7-8588-104f01966b40/manifest.ism/manifest\"\n                }\n            ]\n        }\n    ],\n    \"isAllLive\": false,\n    \"isAnyLive\": true\n}"},{"id":"542d60a1-8051-40e1-ad0b-d53229e6ef14","name":"Non-Existent Live Event","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:7071/api/v1/viewer/locators?endpoint=default&events=audio,no-exist","protocol":"http","host":["localhost"],"port":"7071","path":["api","v1","viewer","locators"],"query":[{"key":"endpoint","value":"default","description":"Name of the streaming endpoint to retrieve the streaming location URLs"},{"key":"events","value":"audio,no-exist","description":"Comma-separated list of live events to retrieve the streaming location URLs"}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Mon, 04 May 2020 18:03:19 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Server","value":"Kestrel"},{"key":"Content-Length","value":"263"}],"cookie":[],"responseTime":null,"body":"{\n    \"developerMessage\": \"The following live event(s) in the query parameter 'events' does not match the name(s) of any the existing live events: no-exist\",\n    \"message\": \"The following live event(s) do not exist: no-exist\",\n    \"status\": 400,\n    \"type\": \"ServiceValidationException\"\n}"},{"id":"859cbc25-2d09-4f95-bfd7-31baeca15d9b","name":"All Events On-Air","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:7071/api/v1/viewer/locators?endpoint=default&events=audio,video","protocol":"http","host":["localhost"],"port":"7071","path":["api","v1","viewer","locators"],"query":[{"key":"endpoint","value":"default","description":"Name of the streaming endpoint to retrieve the streaming location URLs"},{"key":"events","value":"audio,video","description":"Comma-separated list of live events to retrieve the streaming location URLs"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Mon, 04 May 2020 19:41:44 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Server","value":"Kestrel"},{"key":"Content-Length","value":"1104"}],"cookie":[],"responseTime":null,"body":"{\n    \"events\": [\n        {\n            \"name\": \"audio\",\n            \"isLive\": true,\n            \"locators\": [\n                {\n                    \"type\": \"hls\",\n                    \"url\": \"https://yourstreamname-usea.streaming.media.azure.net/46976be2-f7dc-434c-94fc-a97e46d8c6fb/manifest.ism/manifest(format=m3u8-aapl).m3u8\"\n                },\n                {\n                    \"type\": \"dash\",\n                    \"url\": \"https://yourstreamname-usea.streaming.media.azure.net/46976be2-f7dc-434c-94fc-a97e46d8c6fb/manifest.ism/manifest(format=mpd-time-csf).mpd\"\n                },\n                {\n                    \"type\": \"smooth\",\n                    \"url\": \"https://yourstreamname-usea.streaming.media.azure.net/46976be2-f7dc-434c-94fc-a97e46d8c6fb/manifest.ism/manifest\"\n                }\n            ]\n        },\n        {\n            \"name\": \"video\",\n            \"isLive\": true,\n            \"locators\": [\n                {\n                    \"type\": \"hls\",\n                    \"url\": \"https://yourstreamname-usea.streaming.media.azure.net/46940c8b-2d1e-45f7-8588-104f01966b40/manifest.ism/manifest(format=m3u8-aapl).m3u8\"\n                },\n                {\n                    \"type\": \"dash\",\n                    \"url\": \"https://yourstreamname-usea.streaming.media.azure.net/46940c8b-2d1e-45f7-8588-104f01966b40/manifest.ism/manifest(format=mpd-time-csf).mpd\"\n                },\n                {\n                    \"type\": \"smooth\",\n                    \"url\": \"https://yourstreamname-usea.streaming.media.azure.net/46940c8b-2d1e-45f7-8588-104f01966b40/manifest.ism/manifest\"\n                }\n            ]\n        }\n    ],\n    \"isAllLive\": true,\n    \"isAnyLive\": true\n}"},{"id":"ab483794-10e7-45d5-a453-56974771072a","name":"Missing Endpoint Parameter","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:7071/api/v1/viewer/locators?events=audio,video","protocol":"http","host":["localhost"],"port":"7071","path":["api","v1","viewer","locators"],"query":[{"key":"endpoint","value":"default","description":"Name of the streaming endpoint to retrieve the streaming location URLs","disabled":true},{"key":"events","value":"audio,video","description":"Comma-separated list of live events to retrieve the streaming location URLs"}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Mon, 04 May 2020 18:01:01 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Server","value":"Kestrel"},{"key":"Content-Length","value":"227"}],"cookie":[],"responseTime":null,"body":"{\n    \"developerMessage\": \"The query parameter 'endpoint' is required and must be the name of an existing streaming endpoint\",\n    \"message\": \"Input requires the name of a streaming endpoint\",\n    \"status\": 400,\n    \"type\": \"InputValidationException\"\n}"},{"id":"ff9600c1-5c2a-415e-be07-3edf5696e198","name":"Missing All Request Parameters","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:7071/api/v1/viewer/locators","protocol":"http","host":["localhost"],"port":"7071","path":["api","v1","viewer","locators"],"query":[{"key":"endpoint","value":"default","description":"Name of the streaming endpoint to retrieve the streaming location URLs","disabled":true},{"key":"events","value":"audio,video","description":"Comma-separated list of live events to retrieve the streaming location URLs","disabled":true}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Mon, 04 May 2020 18:01:20 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Server","value":"Kestrel"},{"key":"Content-Length","value":"390"}],"cookie":[],"responseTime":null,"body":"{\n    \"developerMessage\": \"The query parameter 'endpoint' is required and must be the name of an existing streaming endpoint, and another query parameter 'events' is also required and must be a comma-separated list of names of existing live events\",\n    \"message\": \"Input requires the name of a streaming endpoint and the name of one or more live events\",\n    \"status\": 400,\n    \"type\": \"InputValidationException\"\n}"}],"_postman_id":"05d7267b-ca2c-4cf6-ae70-565504a15b24"}],"id":"d0518235-79ad-411f-bac5-64104366471a","description":"<p>These calls, when deployed to a production Azure Functions instance, are designed to be called exclusively by the <a href=\"https://github.com/literal-life-church/stream-switch\">Stream Switch</a> application. None of these calls require an API key to authenticate the request and are completely open to the public for read-only access.</p>\n","event":[{"listen":"prerequest","script":{"id":"49a44b61-c38f-495a-ba72-1d7a1940e20e","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"1e9f1dd5-4f9a-4ad3-972b-2625d01a7f65","type":"text/javascript","exec":[""]}}],"_postman_id":"d0518235-79ad-411f-bac5-64104366471a"}],"event":[{"listen":"prerequest","script":{"id":"c81df595-a7ff-4daf-83ad-80cbeafd3e37","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"66d603c9-1f19-4e25-88b3-f6e669f625dd","type":"text/javascript","exec":[""]}}]}