> 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.

# Scan stream information

POST https://device.example.com:443/cluster1/vos-api/source-monitor/v1/discover
Content-Type: application/json

Scan stream information.

Reference: https://mediakind.ferndocs.com/harmonic/api/vos/monitor-source/scan-stream-information

## Authentication

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

## Request

### Body (application/json)

This endpoint expects a 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)

## Response

### 200

OK

- `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)

### 201

Created

## 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.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

### Example 1

**Request**

```json
{
  "sourceType": "IP"
}
```

**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"

payload = { "sourceType": "IP" }
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript
const url = 'https://device.example.com/cluster1/vos-api/source-monitor/v1/discover';
const options = {
  method: 'POST',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: '{"sourceType":"IP"}'
};

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"
	"strings"
	"net/http"
	"io"
)

func main() {

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

	payload := strings.NewReader("{\n  \"sourceType\": \"IP\"\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Authorization", "Bearer <token>")
	req.Header.Add("Content-Type", "application/json")

	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::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"sourceType\": \"IP\"\n}"

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.post("https://device.example.com/cluster1/vos-api/source-monitor/v1/discover")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"sourceType\": \"IP\"\n}")
  .asString();
```

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

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://device.example.com/cluster1/vos-api/source-monitor/v1/discover', [
  'body' => '{
  "sourceType": "IP"
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
  ],
]);

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.POST);
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"sourceType\": \"IP\"\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = [
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = ["sourceType": "IP"] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

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 = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

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()
```

### Example 2

**Request**

```json
{
  "sourceType": "IP"
}
```

**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"

payload = { "sourceType": "IP" }
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript
const url = 'https://device.example.com/cluster1/vos-api/source-monitor/v1/discover';
const options = {
  method: 'POST',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: '{"sourceType":"IP"}'
};

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"
	"strings"
	"net/http"
	"io"
)

func main() {

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

	payload := strings.NewReader("{\n  \"sourceType\": \"IP\"\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Authorization", "Bearer <token>")
	req.Header.Add("Content-Type", "application/json")

	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::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"sourceType\": \"IP\"\n}"

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.post("https://device.example.com/cluster1/vos-api/source-monitor/v1/discover")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"sourceType\": \"IP\"\n}")
  .asString();
```

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

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://device.example.com/cluster1/vos-api/source-monitor/v1/discover', [
  'body' => '{
  "sourceType": "IP"
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
  ],
]);

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.POST);
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"sourceType\": \"IP\"\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = [
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = ["sourceType": "IP"] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

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 = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

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()
```