Chilkat Online Tools

SQL Server / Zoom API / Get meeting participant QoS

Back to Collection Items

-- Important: See this note about string length limitations for strings returned by sp_OAMethod calls.
--
CREATE PROCEDURE ChilkatSample
AS
BEGIN
    DECLARE @hr int
    DECLARE @iTmp0 int
    -- Important: Do not use nvarchar(max).  See the warning about using nvarchar(max).
    DECLARE @sTmp0 nvarchar(4000)
    -- This example assumes the Chilkat API to have been previously unlocked.
    -- See Global Unlock Sample for sample code.

    DECLARE @http int
    -- Use "Chilkat_9_5_0.Http" for versions of Chilkat < 10.0.0
    EXEC @hr = sp_OACreate 'Chilkat.Http', @http OUT
    IF @hr <> 0
    BEGIN
        PRINT 'Failed to create ActiveX component'
        RETURN
    END

    DECLARE @success int

    DECLARE @queryParams int
    -- Use "Chilkat_9_5_0.JsonObject" for versions of Chilkat < 10.0.0
    EXEC @hr = sp_OACreate 'Chilkat.JsonObject', @queryParams OUT

    EXEC sp_OAMethod @queryParams, 'UpdateString', @success OUT, 'type', 'live'

    -- Adds the "Authorization: Bearer <access_token>" header.
    EXEC sp_OASetProperty @http, 'AuthToken', '<access_token>'

    DECLARE @resp int
    EXEC sp_OAMethod @http, 'QuickRequestParams', @resp OUT, 'GET', 'https://api.zoom.us/v2/metrics/meetings/:meetingId/participants/:participantId/qos', @queryParams
    EXEC sp_OAGetProperty @http, 'LastMethodSuccess', @iTmp0 OUT
    IF @iTmp0 = 0
      BEGIN
        EXEC sp_OAGetProperty @http, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @http
        EXEC @hr = sp_OADestroy @queryParams
        RETURN
      END

    DECLARE @sbResponseBody int
    -- Use "Chilkat_9_5_0.StringBuilder" for versions of Chilkat < 10.0.0
    EXEC @hr = sp_OACreate 'Chilkat.StringBuilder', @sbResponseBody OUT

    EXEC sp_OAMethod @resp, 'GetBodySb', @success OUT, @sbResponseBody

    DECLARE @jResp int
    -- Use "Chilkat_9_5_0.JsonObject" for versions of Chilkat < 10.0.0
    EXEC @hr = sp_OACreate 'Chilkat.JsonObject', @jResp OUT

    EXEC sp_OAMethod @jResp, 'LoadSb', @success OUT, @sbResponseBody
    EXEC sp_OASetProperty @jResp, 'EmitCompact', 0


    PRINT 'Response Body:'
    EXEC sp_OAMethod @jResp, 'Emit', @sTmp0 OUT
    PRINT @sTmp0

    DECLARE @respStatusCode int
    EXEC sp_OAGetProperty @resp, 'StatusCode', @respStatusCode OUT

    PRINT 'Response Status Code = ' + @respStatusCode
    IF @respStatusCode >= 400
      BEGIN

        PRINT 'Response Header:'
        EXEC sp_OAGetProperty @resp, 'Header', @sTmp0 OUT
        PRINT @sTmp0

        PRINT 'Failed.'
        EXEC @hr = sp_OADestroy @resp

        EXEC @hr = sp_OADestroy @http
        EXEC @hr = sp_OADestroy @queryParams
        EXEC @hr = sp_OADestroy @sbResponseBody
        EXEC @hr = sp_OADestroy @jResp
        RETURN
      END
    EXEC @hr = sp_OADestroy @resp

    -- Sample JSON response:
    -- (Sample code for parsing the JSON response is shown below)

    -- {
    --   "user_id": "1670000000",
    --   "user_name": "User",
    --   "device": "Android",
    --   "ip_address": "192.0.2.0",
    --   "location": "San Jose (US)",
    --   "join_time": "2021-06-24T20:00:00Z",
    --   "leave_time": "2021-06-24T20:00:00Z",
    --   "pc_name": "User's Phone",
    --   "domain": "user-android",
    --   "mac_addr": "",
    --   "harddisk_id": "",
    --   "version": "4.4.55383.0726",
    --   "user_qos": [
    --     {
    --       "date_time": "2021-06-24T20:00:00Z",
    --       "audio_input": {
    --         "bitrate": "23 kbps",
    --         "latency": "126 ms",
    --         "jitter": "6 ms",
    --         "avg_loss": "0.3%",
    --         "max_loss": "1.9%"
    --       },
    --       "audio_output": {
    --         "bitrate": "63 kbps",
    --         "latency": "134 ms",
    --         "jitter": "6 ms",
    --         "avg_loss": "0.0%",
    --         "max_loss": "0.0%"
    --       },
    --       "video_input": {
    --         "bitrate": "1055 kbps",
    --         "latency": "129 ms",
    --         "jitter": "11 ms",
    --         "avg_loss": "0.0%",
    --         "max_loss": "4.9%",
    --         "resolution": "1280*720",
    --         "frame_rate": "12 fps"
    --       },
    --       "video_output": {
    --         "bitrate": "673 kbps",
    --         "latency": "135 ms",
    --         "jitter": "11 ms",
    --         "avg_loss": "0.0%",
    --         "max_loss": "0.0%",
    --         "resolution": "640*360",
    --         "frame_rate": "22 fps"
    --       },
    --       "as_input": {
    --         "bitrate": "70 kbps",
    --         "latency": "135 ms",
    --         "jitter": "8 ms",
    --         "avg_loss": "0.0%",
    --         "max_loss": "0.0%",
    --         "resolution": "0*0",
    --         "frame_rate": ""
    --       },
    --       "as_output": {
    --         "bitrate": "70 kbps",
    --         "latency": "135 ms",
    --         "jitter": "8 ms",
    --         "avg_loss": "0.0%",
    --         "max_loss": "0.0%",
    --         "resolution": "0*0",
    --         "frame_rate": ""
    --       },
    --       "cpu_usage": {
    --         "zoom_min_cpu_usage": "8%",
    --         "zoom_avg_cpu_usage": "12%",
    --         "zoom_max_cpu_usage": "18%",
    --         "system_max_cpu_usage": "40%"
    --       }
    --     }
    --   ]
    -- }

    -- Sample code for parsing the JSON response...
    -- Use this online tool to generate parsing code from sample JSON: Generate JSON Parsing Code

    DECLARE @date_time int
    -- Use "Chilkat_9_5_0.DtObj" for versions of Chilkat < 10.0.0
    EXEC @hr = sp_OACreate 'Chilkat.DtObj', @date_time OUT

    DECLARE @Bitrate nvarchar(4000)

    DECLARE @Latency nvarchar(4000)

    DECLARE @Jitter nvarchar(4000)

    DECLARE @Avg_loss nvarchar(4000)

    DECLARE @Max_loss nvarchar(4000)

    DECLARE @audio_outputBitrate nvarchar(4000)

    DECLARE @audio_outputLatency nvarchar(4000)

    DECLARE @audio_outputJitter nvarchar(4000)

    DECLARE @audio_outputAvg_loss nvarchar(4000)

    DECLARE @audio_outputMax_loss nvarchar(4000)

    DECLARE @video_inputBitrate nvarchar(4000)

    DECLARE @video_inputLatency nvarchar(4000)

    DECLARE @video_inputJitter nvarchar(4000)

    DECLARE @video_inputAvg_loss nvarchar(4000)

    DECLARE @video_inputMax_loss nvarchar(4000)

    DECLARE @Resolution nvarchar(4000)

    DECLARE @Frame_rate nvarchar(4000)

    DECLARE @video_outputBitrate nvarchar(4000)

    DECLARE @video_outputLatency nvarchar(4000)

    DECLARE @video_outputJitter nvarchar(4000)

    DECLARE @video_outputAvg_loss nvarchar(4000)

    DECLARE @video_outputMax_loss nvarchar(4000)

    DECLARE @video_outputResolution nvarchar(4000)

    DECLARE @video_outputFrame_rate nvarchar(4000)

    DECLARE @as_inputBitrate nvarchar(4000)

    DECLARE @as_inputLatency nvarchar(4000)

    DECLARE @as_inputJitter nvarchar(4000)

    DECLARE @as_inputAvg_loss nvarchar(4000)

    DECLARE @as_inputMax_loss nvarchar(4000)

    DECLARE @as_inputResolution nvarchar(4000)

    DECLARE @as_inputFrame_rate nvarchar(4000)

    DECLARE @as_outputBitrate nvarchar(4000)

    DECLARE @as_outputLatency nvarchar(4000)

    DECLARE @as_outputJitter nvarchar(4000)

    DECLARE @as_outputAvg_loss nvarchar(4000)

    DECLARE @as_outputMax_loss nvarchar(4000)

    DECLARE @as_outputResolution nvarchar(4000)

    DECLARE @as_outputFrame_rate nvarchar(4000)

    DECLARE @Zoom_min_cpu_usage nvarchar(4000)

    DECLARE @Zoom_avg_cpu_usage nvarchar(4000)

    DECLARE @Zoom_max_cpu_usage nvarchar(4000)

    DECLARE @System_max_cpu_usage nvarchar(4000)

    DECLARE @user_id nvarchar(4000)
    EXEC sp_OAMethod @jResp, 'StringOf', @user_id OUT, 'user_id'
    DECLARE @user_name nvarchar(4000)
    EXEC sp_OAMethod @jResp, 'StringOf', @user_name OUT, 'user_name'
    DECLARE @device nvarchar(4000)
    EXEC sp_OAMethod @jResp, 'StringOf', @device OUT, 'device'
    DECLARE @ip_address nvarchar(4000)
    EXEC sp_OAMethod @jResp, 'StringOf', @ip_address OUT, 'ip_address'
    DECLARE @location nvarchar(4000)
    EXEC sp_OAMethod @jResp, 'StringOf', @location OUT, 'location'
    DECLARE @join_time nvarchar(4000)
    EXEC sp_OAMethod @jResp, 'StringOf', @join_time OUT, 'join_time'
    DECLARE @leave_time nvarchar(4000)
    EXEC sp_OAMethod @jResp, 'StringOf', @leave_time OUT, 'leave_time'
    DECLARE @pc_name nvarchar(4000)
    EXEC sp_OAMethod @jResp, 'StringOf', @pc_name OUT, 'pc_name'
    DECLARE @domain nvarchar(4000)
    EXEC sp_OAMethod @jResp, 'StringOf', @domain OUT, 'domain'
    DECLARE @mac_addr nvarchar(4000)
    EXEC sp_OAMethod @jResp, 'StringOf', @mac_addr OUT, 'mac_addr'
    DECLARE @harddisk_id nvarchar(4000)
    EXEC sp_OAMethod @jResp, 'StringOf', @harddisk_id OUT, 'harddisk_id'
    DECLARE @version nvarchar(4000)
    EXEC sp_OAMethod @jResp, 'StringOf', @version OUT, 'version'
    DECLARE @i int
    SELECT @i = 0
    DECLARE @count_i int
    EXEC sp_OAMethod @jResp, 'SizeOfArray', @count_i OUT, 'user_qos'
    WHILE @i < @count_i
      BEGIN
        EXEC sp_OASetProperty @jResp, 'I', @i
        EXEC sp_OAMethod @jResp, 'DtOf', @success OUT, 'user_qos[i].date_time', 0, @date_time
        EXEC sp_OAMethod @jResp, 'StringOf', @Bitrate OUT, 'user_qos[i].audio_input.bitrate'
        EXEC sp_OAMethod @jResp, 'StringOf', @Latency OUT, 'user_qos[i].audio_input.latency'
        EXEC sp_OAMethod @jResp, 'StringOf', @Jitter OUT, 'user_qos[i].audio_input.jitter'
        EXEC sp_OAMethod @jResp, 'StringOf', @Avg_loss OUT, 'user_qos[i].audio_input.avg_loss'
        EXEC sp_OAMethod @jResp, 'StringOf', @Max_loss OUT, 'user_qos[i].audio_input.max_loss'
        EXEC sp_OAMethod @jResp, 'StringOf', @audio_outputBitrate OUT, 'user_qos[i].audio_output.bitrate'
        EXEC sp_OAMethod @jResp, 'StringOf', @audio_outputLatency OUT, 'user_qos[i].audio_output.latency'
        EXEC sp_OAMethod @jResp, 'StringOf', @audio_outputJitter OUT, 'user_qos[i].audio_output.jitter'
        EXEC sp_OAMethod @jResp, 'StringOf', @audio_outputAvg_loss OUT, 'user_qos[i].audio_output.avg_loss'
        EXEC sp_OAMethod @jResp, 'StringOf', @audio_outputMax_loss OUT, 'user_qos[i].audio_output.max_loss'
        EXEC sp_OAMethod @jResp, 'StringOf', @video_inputBitrate OUT, 'user_qos[i].video_input.bitrate'
        EXEC sp_OAMethod @jResp, 'StringOf', @video_inputLatency OUT, 'user_qos[i].video_input.latency'
        EXEC sp_OAMethod @jResp, 'StringOf', @video_inputJitter OUT, 'user_qos[i].video_input.jitter'
        EXEC sp_OAMethod @jResp, 'StringOf', @video_inputAvg_loss OUT, 'user_qos[i].video_input.avg_loss'
        EXEC sp_OAMethod @jResp, 'StringOf', @video_inputMax_loss OUT, 'user_qos[i].video_input.max_loss'
        EXEC sp_OAMethod @jResp, 'StringOf', @Resolution OUT, 'user_qos[i].video_input.resolution'
        EXEC sp_OAMethod @jResp, 'StringOf', @Frame_rate OUT, 'user_qos[i].video_input.frame_rate'
        EXEC sp_OAMethod @jResp, 'StringOf', @video_outputBitrate OUT, 'user_qos[i].video_output.bitrate'
        EXEC sp_OAMethod @jResp, 'StringOf', @video_outputLatency OUT, 'user_qos[i].video_output.latency'
        EXEC sp_OAMethod @jResp, 'StringOf', @video_outputJitter OUT, 'user_qos[i].video_output.jitter'
        EXEC sp_OAMethod @jResp, 'StringOf', @video_outputAvg_loss OUT, 'user_qos[i].video_output.avg_loss'
        EXEC sp_OAMethod @jResp, 'StringOf', @video_outputMax_loss OUT, 'user_qos[i].video_output.max_loss'
        EXEC sp_OAMethod @jResp, 'StringOf', @video_outputResolution OUT, 'user_qos[i].video_output.resolution'
        EXEC sp_OAMethod @jResp, 'StringOf', @video_outputFrame_rate OUT, 'user_qos[i].video_output.frame_rate'
        EXEC sp_OAMethod @jResp, 'StringOf', @as_inputBitrate OUT, 'user_qos[i].as_input.bitrate'
        EXEC sp_OAMethod @jResp, 'StringOf', @as_inputLatency OUT, 'user_qos[i].as_input.latency'
        EXEC sp_OAMethod @jResp, 'StringOf', @as_inputJitter OUT, 'user_qos[i].as_input.jitter'
        EXEC sp_OAMethod @jResp, 'StringOf', @as_inputAvg_loss OUT, 'user_qos[i].as_input.avg_loss'
        EXEC sp_OAMethod @jResp, 'StringOf', @as_inputMax_loss OUT, 'user_qos[i].as_input.max_loss'
        EXEC sp_OAMethod @jResp, 'StringOf', @as_inputResolution OUT, 'user_qos[i].as_input.resolution'
        EXEC sp_OAMethod @jResp, 'StringOf', @as_inputFrame_rate OUT, 'user_qos[i].as_input.frame_rate'
        EXEC sp_OAMethod @jResp, 'StringOf', @as_outputBitrate OUT, 'user_qos[i].as_output.bitrate'
        EXEC sp_OAMethod @jResp, 'StringOf', @as_outputLatency OUT, 'user_qos[i].as_output.latency'
        EXEC sp_OAMethod @jResp, 'StringOf', @as_outputJitter OUT, 'user_qos[i].as_output.jitter'
        EXEC sp_OAMethod @jResp, 'StringOf', @as_outputAvg_loss OUT, 'user_qos[i].as_output.avg_loss'
        EXEC sp_OAMethod @jResp, 'StringOf', @as_outputMax_loss OUT, 'user_qos[i].as_output.max_loss'
        EXEC sp_OAMethod @jResp, 'StringOf', @as_outputResolution OUT, 'user_qos[i].as_output.resolution'
        EXEC sp_OAMethod @jResp, 'StringOf', @as_outputFrame_rate OUT, 'user_qos[i].as_output.frame_rate'
        EXEC sp_OAMethod @jResp, 'StringOf', @Zoom_min_cpu_usage OUT, 'user_qos[i].cpu_usage.zoom_min_cpu_usage'
        EXEC sp_OAMethod @jResp, 'StringOf', @Zoom_avg_cpu_usage OUT, 'user_qos[i].cpu_usage.zoom_avg_cpu_usage'
        EXEC sp_OAMethod @jResp, 'StringOf', @Zoom_max_cpu_usage OUT, 'user_qos[i].cpu_usage.zoom_max_cpu_usage'
        EXEC sp_OAMethod @jResp, 'StringOf', @System_max_cpu_usage OUT, 'user_qos[i].cpu_usage.system_max_cpu_usage'
        SELECT @i = @i + 1
      END

    EXEC @hr = sp_OADestroy @http
    EXEC @hr = sp_OADestroy @queryParams
    EXEC @hr = sp_OADestroy @sbResponseBody
    EXEC @hr = sp_OADestroy @jResp
    EXEC @hr = sp_OADestroy @date_time


END
GO

Curl Command

curl -G -d "type=live"
	-H "Authorization: Bearer <access_token>"
https://api.zoom.us/v2/metrics/meetings/:meetingId/participants/:participantId/qos

Postman Collection Item JSON

{
  "name": "Get meeting participant QoS",
  "request": {
    "auth": {
      "type": "oauth2"
    },
    "method": "GET",
    "header": [
    ],
    "url": {
      "raw": "{{baseUrl}}/metrics/meetings/:meetingId/participants/:participantId/qos?type=live",
      "host": [
        "{{baseUrl}}"
      ],
      "path": [
        "metrics",
        "meetings",
        ":meetingId",
        "participants",
        ":participantId",
        "qos"
      ],
      "query": [
        {
          "key": "type",
          "value": "live",
          "description": "The type of meeting to query: \n* `past` — All past meetings. \n* `live` - All live meetings. \n\nThis value defaults to `live`."
        }
      ],
      "variable": [
        {
          "key": "meetingId",
          "value": "quis officia in reprehenderit",
          "description": "(Required) The meeting's ID or universally unique ID (UUID). \n* If you provide a meeting ID, the API will return a response for the latest meeting instance. \n* If you provide a meeting UUID that begins with a `/` character or contains the `//` characters, you **must** double-encode the meeting UUID before making an API request."
        },
        {
          "key": "participantId",
          "value": "quis officia in reprehenderit",
          "description": "(Required) The participant's ID."
        }
      ]
    },
    "description": "Use this API to return the quality of service (QoS) report for participants from live or past meetings. The data returned indicates the connection quality for sending/receiving video, audio, and shared content. The API returns this data for either the API request or when the API request was last received. \n\nWhen the sender sends data, a timestamp is attached to the sender’s data packet. The receiver then returns this timestamp to the sender. This helps determine the upstream and downstream latency, which includes the application processing time. The latency data returned is the five second average and five second maximum. \n\n This API will **not** return data if there is no data being sent or received at the time of request. \n\n**Note:** \n\nThis API may return empty values for participants' `user_name`, `ip_address`, `location`, and `email` responses when the account calling this API: \n* Does **not** have a signed HIPAA business associate agreement (BAA). \n* Is a [**legacy** HIPAA BAA account](https://marketplace.zoom.us/docs/api-reference/other-references/legacy-business-associate-agreements). \n\n**Scopes:** `dashboard_meetings:read:admin` <br> **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Heavy`"
  },
  "response": [
    {
      "name": "**HTTP Status Code:** `200`<br>\nMeeting participant QOS returned.<br>\nOnly available for paid account that have enabled the dashboard feature.",
      "originalRequest": {
        "method": "GET",
        "header": [
          {
            "description": "Added as a part of security scheme: oauth2",
            "key": "Authorization",
            "value": "<token>"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/metrics/meetings/:meetingId/participants/:participantId/qos?type=live",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "metrics",
            "meetings",
            ":meetingId",
            "participants",
            ":participantId",
            "qos"
          ],
          "query": [
            {
              "key": "type",
              "value": "live"
            }
          ],
          "variable": [
            {
              "key": "meetingId",
              "value": "quis officia in reprehenderit",
              "description": "(Required) The meeting's ID or universally unique ID (UUID). \n* If you provide a meeting ID, the API will return a response for the latest meeting instance. \n* If you provide a meeting UUID that begins with a `/` character or contains the `//` characters, you **must** double-encode the meeting UUID before making an API request."
            },
            {
              "key": "participantId",
              "value": "quis officia in reprehenderit",
              "description": "(Required) The participant's ID."
            }
          ]
        }
      },
      "status": "OK",
      "code": 200,
      "_postman_previewlanguage": "json",
      "header": [
        {
          "key": "Content-Type",
          "value": "application/json"
        }
      ],
      "cookie": [
      ],
      "body": "{\n \"user_id\": \"1670000000\",\n \"user_name\": \"User\",\n \"device\": \"Android\",\n \"ip_address\": \"192.0.2.0\",\n \"location\": \"San Jose (US)\",\n \"join_time\": \"2021-06-24T20:00:00Z\",\n \"leave_time\": \"2021-06-24T20:00:00Z\",\n \"pc_name\": \"User's Phone\",\n \"domain\": \"user-android\",\n \"mac_addr\": \"\",\n \"harddisk_id\": \"\",\n \"version\": \"4.4.55383.0726\",\n \"user_qos\": [\n  {\n   \"date_time\": \"2021-06-24T20:00:00Z\",\n   \"audio_input\": {\n    \"bitrate\": \"23 kbps\",\n    \"latency\": \"126 ms\",\n    \"jitter\": \"6 ms\",\n    \"avg_loss\": \"0.3%\",\n    \"max_loss\": \"1.9%\"\n   },\n   \"audio_output\": {\n    \"bitrate\": \"63 kbps\",\n    \"latency\": \"134 ms\",\n    \"jitter\": \"6 ms\",\n    \"avg_loss\": \"0.0%\",\n    \"max_loss\": \"0.0%\"\n   },\n   \"video_input\": {\n    \"bitrate\": \"1055 kbps\",\n    \"latency\": \"129 ms\",\n    \"jitter\": \"11 ms\",\n    \"avg_loss\": \"0.0%\",\n    \"max_loss\": \"4.9%\",\n    \"resolution\": \"1280*720\",\n    \"frame_rate\": \"12 fps\"\n   },\n   \"video_output\": {\n    \"bitrate\": \"673 kbps\",\n    \"latency\": \"135 ms\",\n    \"jitter\": \"11 ms\",\n    \"avg_loss\": \"0.0%\",\n    \"max_loss\": \"0.0%\",\n    \"resolution\": \"640*360\",\n    \"frame_rate\": \"22 fps\"\n   },\n   \"as_input\": {\n    \"bitrate\": \"70 kbps\",\n    \"latency\": \"135 ms\",\n    \"jitter\": \"8 ms\",\n    \"avg_loss\": \"0.0%\",\n    \"max_loss\": \"0.0%\",\n    \"resolution\": \"0*0\",\n    \"frame_rate\": \"\"\n   },\n   \"as_output\": {\n    \"bitrate\": \"70 kbps\",\n    \"latency\": \"135 ms\",\n    \"jitter\": \"8 ms\",\n    \"avg_loss\": \"0.0%\",\n    \"max_loss\": \"0.0%\",\n    \"resolution\": \"0*0\",\n    \"frame_rate\": \"\"\n   },\n   \"cpu_usage\": {\n    \"zoom_min_cpu_usage\": \"8%\",\n    \"zoom_avg_cpu_usage\": \"12%\",\n    \"zoom_max_cpu_usage\": \"18%\",\n    \"system_max_cpu_usage\": \"40%\"\n   }\n  }\n ]\n}"
    },
    {
      "name": "**Error Code:** `300`<br>\nCan not access webinar info, {meetingId}.",
      "originalRequest": {
        "method": "GET",
        "header": [
          {
            "description": "Added as a part of security scheme: oauth2",
            "key": "Authorization",
            "value": "<token>"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/metrics/meetings/:meetingId/participants/:participantId/qos?type=live",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "metrics",
            "meetings",
            ":meetingId",
            "participants",
            ":participantId",
            "qos"
          ],
          "query": [
            {
              "key": "type",
              "value": "live"
            }
          ],
          "variable": [
            {
              "key": "meetingId",
              "value": "quis officia in reprehenderit",
              "description": "(Required) The meeting's ID or universally unique ID (UUID). \n* If you provide a meeting ID, the API will return a response for the latest meeting instance. \n* If you provide a meeting UUID that begins with a `/` character or contains the `//` characters, you **must** double-encode the meeting UUID before making an API request."
            },
            {
              "key": "participantId",
              "value": "quis officia in reprehenderit",
              "description": "(Required) The participant's ID."
            }
          ]
        }
      },
      "status": "Multiple Choices",
      "code": 300,
      "_postman_previewlanguage": "text",
      "header": [
        {
          "key": "Content-Type",
          "value": "text/plain"
        }
      ],
      "cookie": [
      ],
      "body": ""
    },
    {
      "name": "**HTTP Status Code:** `404`<br>\n**Error Code:** `3001`<br>\nThis meeting's detail info is not available.<br>\nThis meeting has not ended yet or the Meeting ID is invalid.",
      "originalRequest": {
        "method": "GET",
        "header": [
          {
            "description": "Added as a part of security scheme: oauth2",
            "key": "Authorization",
            "value": "<token>"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/metrics/meetings/:meetingId/participants/:participantId/qos?type=live",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "metrics",
            "meetings",
            ":meetingId",
            "participants",
            ":participantId",
            "qos"
          ],
          "query": [
            {
              "key": "type",
              "value": "live"
            }
          ],
          "variable": [
            {
              "key": "meetingId",
              "value": "quis officia in reprehenderit",
              "description": "(Required) The meeting's ID or universally unique ID (UUID). \n* If you provide a meeting ID, the API will return a response for the latest meeting instance. \n* If you provide a meeting UUID that begins with a `/` character or contains the `//` characters, you **must** double-encode the meeting UUID before making an API request."
            },
            {
              "key": "participantId",
              "value": "quis officia in reprehenderit",
              "description": "(Required) The participant's ID."
            }
          ]
        }
      },
      "status": "Not Found",
      "code": 404,
      "_postman_previewlanguage": "text",
      "header": [
        {
          "key": "Content-Type",
          "value": "text/plain"
        }
      ],
      "cookie": [
      ],
      "body": ""
    }
  ]
}