> This page is for Harmonic.

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://mediakind.ferndocs.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://mediakind.ferndocs.com/_mcp/server.

# Get list of discovery

GET https://device.example.com:443/cluster1/vos-api/source-monitor/v1/discover

Get list of active source monitors.

Reference: https://mediakind.ferndocs.com/harmonic/api/vos/monitor-source/get-list-discovery

## Authentication

- `Authorization` header (bearer token, required) — Bearer authentication of the form `Bearer <token>`, where token is your auth token.

## Response

### 200

OK

- `list of com.harmonicinc.vos.app.sourcemonitor.model.DiscoverySource`

## Errors

### 401 Unauthorized Error

Unauthorized

- `any`

### 403 Forbidden Error

Forbidden

- `any`

### 404 Not Found Error

Not Found

- `any`

## Types

### com.harmonicinc.vos.app.sourcemonitor.model.DiscoverySource

- `sourceType` (enum, required) — Source Type
  - Allowed values: `IP`, `ZIXI`, `SRT`, `HSP`, `CLOUD`, `RF`, `DEMUX`
- `cloudSource` (com.harmonicinc.vos.app.sourcemonitor.model.CloudSource, optional)
- `creationTimestamp` (long, optional) — Creation timestamp of Discovery Task
- `demuxSource` (com.harmonicinc.vos.app.sourcemonitor.model.DemuxSource, optional)
- `hspSource` (com.harmonicinc.vos.app.sourcemonitor.model.HspSource, optional)
- `id` (string, optional) — Discovery ID
- `inputId` (string, optional) — Input ID
- `ipSourceRange` (com.harmonicinc.vos.app.sourcemonitor.model.IPSourceRange, optional)
- `probingDurationInMs` (integer, optional) — Probing duration in milliseconds. Ranging from 5000 to 30000 ms. Default value is 5000 ms
- `rfsource` (com.harmonicinc.vos.app.sourcemonitor.model.RFSource, optional)
- `sourceId` (string, optional) — Source ID
- `srtSource` (com.harmonicinc.vos.app.sourcemonitor.model.SrtSource, optional)
- `zixiSource` (com.harmonicinc.vos.app.sourcemonitor.model.ZixiSource, optional)

### com.harmonicinc.vos.app.sourcemonitor.model.CloudSource

- `automaticGrooming` (boolean, optional) — Automatic grooming
- `cloudInputType` (enum, optional) — Cloud input type
  - Allowed values: `CLOUD_SOURCE`, `CLOUD_EDGE`
- `cloudSourceType` (enum, optional) — Cloud source type
  - Allowed values: `SRT`, `RTMP`, `RIST`, `ZIXI`
- `egressId` (string, optional) — Id of the cloud egress
- `region` (string, optional) — Region of the cloud egress
- `resourceMode` (enum, optional) — Cloud resource mode, determines whether a single stream or multiple different streams are used
  - Allowed values: `SHARED`, `DEDICATED`
- `sourceId` (string, optional) — Id of cloud source
- `srtSource` (com.harmonicinc.vos.app.sourcemonitor.model.SrtSource, optional)
- `userStreamId` (string, optional) — Stream ID for cloud resource

### com.harmonicinc.vos.app.sourcemonitor.model.DemuxSource

- `demuxServiceId` (string, required) — Indicates the uuid of the Demux service

### com.harmonicinc.vos.app.sourcemonitor.model.HspSource

- `hspEndpoint` (string, required) — HSP Endpoint
- `variantPlaylistFileName` (string, required) — Playlist File Name of the source
- `authenticationHeader` (com.harmonicinc.vos.app.sourcemonitor.model.HspAuthenticationHeader, optional)
- `backupEndpointSettings` (com.harmonicinc.vos.app.sourcemonitor.model.HspEndpointSettings, optional)
- `ipNetworkAddress` (string, optional) — IP Network Address used to receive the stream
- `scte35Annotation` (enum, optional) — SCTE-35 annotation format
  - Allowed values: `NONE`, `BASE64_SCTE35_CUE`, `SIMPLE_SCTE35_CUE`

### com.harmonicinc.vos.app.sourcemonitor.model.IPSourceRange

- `ipPortRangeEnd` (integer, required) — End IP Port of IP Port Range to Scan
- `ipPortRangeStart` (integer, required) — Start IP Port of IP Port Range to Scan
- `ipRangeEnd` (string, required) — End IP Address of IP Address Range to Scan
- `ipRangeStart` (string, required) — Start IP Address of IP Address Range to Scan
- `descramblingKey` (string, optional) — Descrambling key
- `ipNetworkAddress` (string, optional) — IP Network Address used to receive the stream
- `smpte20227DelayBufferInMs` (integer, optional) — SMPTE 2022-7 Delay Buffer in ms
- `smpte20227IpSource` (com.harmonicinc.vos.app.sourcemonitor.model.IPConnectionSettings, optional)
- `ssm` (list of string, optional) — Source Specific Address

### com.harmonicinc.vos.app.sourcemonitor.model.RFSource

- `adapter` (integer, required) — Adapter, corresponds to tuner Ids (adapter 0 is tuner 1)
- `frontend` (integer, required) — Frontend
- `rfdeliverySystemType` (enum, required) — RF Delivery System
  - Allowed values: `DVBT`, `DVBT2`, `DVBS`, `DVBS2`, `ATSCT`

### com.harmonicinc.vos.app.sourcemonitor.model.SrtSource

- `automaticGrooming` (boolean, optional) — Automatic grooming
- `cloudlinkGroupId` (string, optional) — Id of the cloudlink group
- `cloudlinkId` (string, optional) — Id of the cloudlink
- `connectionMode` (enum, optional) — Mode for establishing SRT connection
  - Allowed values: `LISTENER`, `CALLER`
- `descramblingKey` (string, optional) — Descrambling key
- `descramblingRequired` (boolean, optional) — Whether descrambling is required
- `ipAddress` (string, optional) — IPv4 or IPv6 address to receive the input
- `ipNetworkAddress` (string, optional) — Local interface for outgoing connections
- `ipPort` (integer, optional) — IP port to receive the input
- `ipPortRangeEnd` (integer, optional) — UDP port range end used to receive input
- `latency` (integer, optional) — Latency parameter
- `pathRedundancyMode` (enum, optional) — Path redundancy mode
  - Allowed values: `SRT_SOCKET_GROUP`, `ST_2022_7`
- `pidList` (list of integer, optional) — PID list
- `programId` (integer, optional) — Program ID
- `srtConnectionSettings` (list of com.harmonicinc.vos.app.sourcemonitor.model.SrtConnectionSettings, optional) — Srt connection setting list
- `srtEncryptionParams` (com.harmonicinc.vos.app.sourcemonitor.model.SrtEncryptionParams, optional)
- `ssmIpAddresses` (list of string, optional) — Source-specific multicast IP addresses
- `st20227DelayBufferInMs` (integer, optional) — Buffer delay for reordering RTP packet
- `streamIds` (list of string, optional) — StreamId specifications

### com.harmonicinc.vos.app.sourcemonitor.model.ZixiSource

- `harmonicUplinkSetting` (com.harmonicinc.vos.app.sourcemonitor.model.HarmonicUplinkSetting, optional)

### com.harmonicinc.vos.app.sourcemonitor.model.HspAuthenticationHeader

- `isDirty` (boolean, required)
- `key` (string, required) — Key
- `value` (string, required) — Value

### com.harmonicinc.vos.app.sourcemonitor.model.HspEndpointSettings

- `hspEndpoint` (string, required) — HSP Endpoint
- `variantPlaylistFileName` (string, required) — Playlist File Name of the source
- `authenticationHeader` (com.harmonicinc.vos.app.sourcemonitor.model.HspAuthenticationHeader, optional)
- `ipNetworkAddress` (string, optional) — IP Network Address used to receive the stream

### com.harmonicinc.vos.app.sourcemonitor.model.IPConnectionSettings

- `ip` (string, required) — IP Address of input
- `ipPort` (integer, required) — IP Port of input
- `ipNetworkAddress` (string, optional) — IP Network Address used to receive the stream
- `ssm` (list of string, optional) — SSM Address List of Input

### com.harmonicinc.vos.app.sourcemonitor.model.SrtConnectionSettings

- `ipAddress` (string, optional) — Ip address
- `ipNetworkAddress` (string, optional) — Interface
- `latency` (integer, optional) — Latency parameter
- `port` (integer, optional) — Port
- `srtEncryptionParams` (com.harmonicinc.vos.app.sourcemonitor.model.SrtEncryptionParams, optional)
- `streamId` (string, optional) — StreamId specification

### com.harmonicinc.vos.app.sourcemonitor.model.SrtEncryptionParams

- `encryptionKey` (string, optional) — Srt encryption key
- `encryptionType` (enum, optional) — Srt encryption type
  - Allowed values: `AES_128`, `AES_192`, `AES_256`, `NO_ENCRYPTION`

### com.harmonicinc.vos.app.sourcemonitor.model.HarmonicUplinkSetting

- `descramblingKey` (string, optional) — Descrambling key
- `descramblingRequired` (boolean, optional) — Whether descrambling is required
- `ipAddress` (string, optional) — IPv4 or IPv6 address to receive the input
- `ipPort` (integer, optional) — IP port to receive the input
- `ipPortRangeEnd` (integer, optional) — UDP port range end used to receive input
- `pidList` (list of integer, optional) — PID list
- `programId` (integer, optional) — Program ID
- `ssmIpAddresses` (list of string, optional) — Source-specific multicast IP addresses
- `uplinkGroupId` (string, optional) — Id of the uplinkGroup
- `uplinkId` (string, optional) — Id of the uplink

## Examples

**Response**

```json
[
  {
    "sourceType": "IP",
    "cloudSource": {
      "automaticGrooming": true,
      "cloudInputType": "CLOUD_SOURCE",
      "cloudSourceType": "SRT",
      "egressId": "string",
      "region": "string",
      "resourceMode": "SHARED",
      "sourceId": "string",
      "srtSource": {
        "automaticGrooming": true,
        "cloudlinkGroupId": "string",
        "cloudlinkId": "string",
        "connectionMode": "LISTENER",
        "descramblingKey": "string",
        "descramblingRequired": true,
        "ipAddress": "string",
        "ipNetworkAddress": "string",
        "ipPort": 1,
        "ipPortRangeEnd": 1,
        "latency": 1,
        "pathRedundancyMode": "SRT_SOCKET_GROUP",
        "pidList": [
          1
        ],
        "programId": 1,
        "srtConnectionSettings": [
          {
            "ipAddress": "string",
            "ipNetworkAddress": "string",
            "latency": 1,
            "port": 1,
            "srtEncryptionParams": {
              "encryptionKey": "string",
              "encryptionType": "AES_128"
            },
            "streamId": "string"
          }
        ],
        "srtEncryptionParams": {
          "encryptionKey": "string",
          "encryptionType": "AES_128"
        },
        "ssmIpAddresses": [
          "string"
        ],
        "st20227DelayBufferInMs": 1,
        "streamIds": [
          "string"
        ]
      },
      "userStreamId": "string"
    },
    "creationTimestamp": 1,
    "demuxSource": {
      "demuxServiceId": "string"
    },
    "hspSource": {
      "hspEndpoint": "string",
      "variantPlaylistFileName": "string",
      "authenticationHeader": {
        "isDirty": true,
        "key": "string",
        "value": "string"
      },
      "backupEndpointSettings": {
        "hspEndpoint": "string",
        "variantPlaylistFileName": "string",
        "authenticationHeader": {
          "isDirty": true,
          "key": "string",
          "value": "string"
        },
        "ipNetworkAddress": "string"
      },
      "ipNetworkAddress": "string",
      "scte35Annotation": "NONE"
    },
    "id": "string",
    "inputId": "string",
    "ipSourceRange": {
      "ipPortRangeEnd": 1,
      "ipPortRangeStart": 1,
      "ipRangeEnd": "string",
      "ipRangeStart": "string",
      "descramblingKey": "string",
      "ipNetworkAddress": "string",
      "smpte20227DelayBufferInMs": 1,
      "smpte20227IpSource": {
        "ip": "string",
        "ipPort": 1,
        "ipNetworkAddress": "string",
        "ssm": [
          "string"
        ]
      },
      "ssm": [
        "string"
      ]
    },
    "probingDurationInMs": 1,
    "rfsource": {
      "adapter": 1,
      "frontend": 1,
      "rfdeliverySystemType": "DVBT"
    },
    "sourceId": "string",
    "srtSource": {
      "automaticGrooming": true,
      "cloudlinkGroupId": "string",
      "cloudlinkId": "string",
      "connectionMode": "LISTENER",
      "descramblingKey": "string",
      "descramblingRequired": true,
      "ipAddress": "string",
      "ipNetworkAddress": "string",
      "ipPort": 1,
      "ipPortRangeEnd": 1,
      "latency": 1,
      "pathRedundancyMode": "SRT_SOCKET_GROUP",
      "pidList": [
        1
      ],
      "programId": 1,
      "srtConnectionSettings": [
        {
          "ipAddress": "string",
          "ipNetworkAddress": "string",
          "latency": 1,
          "port": 1,
          "srtEncryptionParams": {
            "encryptionKey": "string",
            "encryptionType": "AES_128"
          },
          "streamId": "string"
        }
      ],
      "srtEncryptionParams": {
        "encryptionKey": "string",
        "encryptionType": "AES_128"
      },
      "ssmIpAddresses": [
        "string"
      ],
      "st20227DelayBufferInMs": 1,
      "streamIds": [
        "string"
      ]
    },
    "zixiSource": {
      "harmonicUplinkSetting": {
        "descramblingKey": "string",
        "descramblingRequired": true,
        "ipAddress": "string",
        "ipPort": 1,
        "ipPortRangeEnd": 1,
        "pidList": [
          1
        ],
        "programId": 1,
        "ssmIpAddresses": [
          "string"
        ],
        "uplinkGroupId": "string",
        "uplinkId": "string"
      }
    }
  }
]
```

**SDK Code**

```python
import requests

url = "https://device.example.com/cluster1/vos-api/source-monitor/v1/discover"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript
const url = 'https://device.example.com/cluster1/vos-api/source-monitor/v1/discover';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://device.example.com/cluster1/vos-api/source-monitor/v1/discover"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Authorization", "Bearer <token>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://device.example.com/cluster1/vos-api/source-monitor/v1/discover")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://device.example.com/cluster1/vos-api/source-monitor/v1/discover")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://device.example.com/cluster1/vos-api/source-monitor/v1/discover', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://device.example.com/cluster1/vos-api/source-monitor/v1/discover");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["Authorization": "Bearer <token>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://device.example.com/cluster1/vos-api/source-monitor/v1/discover")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```