# Queues

Provider, Media Router, Transcoder, Publisher 구간에 존재하는 Packet/Frame 타입의 큐의 상태를 모니터링 할 수 있는 API를 제공합니다.

## Queues 상태 조회

> **Request**

<details>

<summary><mark style="color:blue;">GET</mark> /v2/internals/queues</summary>

**Header**

```http
Authorization: Basic {credentials}

# Authorization
    Credentials for HTTP Basic Authentication created with <AccessToken>
```

</details>

> **Responses**

<details>

<summary><mark style="color:blue;">200</mark> Ok</summary>

The request has succeeded

**Header**

```
Content-Type: application/json
```

**Body**

```json
{
    "message": "OK",
    "response": [
        {
            "avgWaitingTime": 13,
            "drop": 0,
            "id": 100,
            "inputPerSecond": 154,
            "outputPerSecond": 153,
            "peak": 15,
            "size": 1,
            "threshold": 1000,
            "type": "std::shared_ptr<MediaRouteStream>",
            "urn": "mngq:v=#default#app:p=imr:n=aw_0"
        },
        {
            "avgWaitingTime": 31,
            "drop": 0,
            "id": 101,
            "inputPerSecond": 472,
            "outputPerSecond": 472,
            "peak": 74,
            "size": 1,
            "threshold": 1000,
            "type": "std::shared_ptr<MediaRouteStream>",
            "urn": "mngq:v=#default#app:p=omr:n=aw_0"
        },
        {
            "avgWaitingTime": 3,
            "drop": 0,
            "id": 102,
            "inputPerSecond": 467,
            "outputPerSecond": 467,
            "peak": 43,
            "size": 1,
            "threshold": 500,
            "type": "std::shared_ptr<pub::ApplicationWorker::StreamData>",
            "urn": "mngq:v=#default#app:p=pub:n=aw-webrtc0"
        },
        {
            "avgWaitingTime": 4,
            "drop": 0,
            "id": 103,
            "inputPerSecond": 476,
            "outputPerSecond": 476,
            "peak": 44,
            "size": 1,
            "threshold": 500,
            "type": "std::shared_ptr<pub::ApplicationWorker::StreamData>",
            "urn": "mngq:v=#default#app:p=pub:n=aw-llhls0"
        },
        {
            "avgWaitingTime": 3,
            "drop": 0,
            "id": 104,
            "inputPerSecond": 467,
            "outputPerSecond": 467,
            "peak": 43,
            "size": 1,
            "threshold": 500,
            "type": "std::shared_ptr<pub::ApplicationWorker::StreamData>",
            "urn": "mngq:v=#default#app:p=pub:n=aw-ovt0"
        },
        ...
    ]
}
```

</details>

<details>

<summary><mark style="color:red;">401</mark> Unauthorized</summary>

Authentication required

**Header**

```http
WWW-Authenticate: Basic realm=”OvenMediaEngine”
```

**Body**

```json
{
    "message": "[HTTP] Authorization header is required to call API (401)",
    "statusCode": 401
}
```

</details>

#### Element

<table><thead><tr><th width="156">Element</th><th>Description</th></tr></thead><tbody><tr><td>avgWaitingTime</td><td>평균 대기 시간입니다.</td></tr><tr><td>drop</td><td>드롭된 메시지의 수입니다.</td></tr><tr><td>id</td><td>고유 식별자입니다.</td></tr><tr><td>inputPerSecond</td><td>초당 입력 메시지의 수입니다.</td></tr><tr><td>outputPerSecond</td><td>초당 출력 메시지의 수입니다.</td></tr><tr><td>peak</td><td>도달했던 최대 메시지 수입니다.</td></tr><tr><td>size</td><td>현재 메시지의 수입니다.</td></tr><tr><td>threshold</td><td>메시지 수의 제한 임계값입니다.</td></tr><tr><td>type</td><td>데이터의 유형(타입)입니다.</td></tr><tr><td>urn</td><td>URN(Uniform Resource Name) 형식의 명명 규칙입니다.</td></tr></tbody></table>

#### 큐 리소스 네이밍 (URN) 규격

```
[URN Pattern]
	- mngq:v={VhostName}#{AppName}[s=/{StreamName}]:p={PART}:r={ROLE}
[PART]
	- pvd: provider
	- imr: mediarouter(inbound)
	- trs: transcoder
	- omr: mediarouter(outbound)
	- pub: publisher
[ROLE]
	- filter_{video|audio}
	- encoder_{codec_name}_{trackid}
	- decoder_{codec_name}_{trackid}
	- appworker_[{protocol}]_{id}
	- stremworker_[{protocol}]_{id}
	
<Examples>
	- mngq:v=#default#app:s=stream:p=trs:r=decoer_h264_0
	- mngq:v=#default#app:s=stream:p=trs:r=filter_video
	- mngq:v=#default#app:s=stream:p=trs:r=filter_audio
	- mngq:v=#default#app:s=stream:p=trs:r=encoder_opus_0
	- mngq:v=#default#app:s=stream:p=trs:r=encoder_h264_1
	- mngq:v=#default#app:p=imr:r=indicator
	- mngq:v=#default#app:p=omr:r=appworker
```
