---
title: "Test a discovery query"
method: POST
path: "/api/south/{southId}/test/discovery-query"
tags: ["South Connectors"]
---

# Test a discovery query

`POST /api/south/{southId}/test/discovery-query`

Test a Configuration Workflow discovery query as currently typed, against an ephemeral or the
live connector (mirrors testItem), and return its raw rows

## Path parameters

- `southId` string, required

## Query parameters

- `southType` 'opcua' | 'mqtt' | 'modbus' | 'oianalytics' | 'ads' | 'bacnet' | 'folder-scanner' | 'ftp' | 'influxdb' | 'mongodb' | 'mssql' | 'mysql' | 'odbc' | 'oledb' | 'opc' | 'oracle' | 'osisoft-pi' | 'postgresql' | 'rest' | 's7' | 'sftp' | 'sqlite', required — Type representing the possible types for a South connector.

## Request body

- SouthDiscoveryQueryTestRequest
  - `southSettings` union, required
    - SouthADSSettings
      - `netId` string, required
      - `port` number, double, required
      - `routerAddress` string, nullable, required
      - `routerTcpPort` number, double, nullable, required
      - `clientAmsNetId` string, nullable, required
      - `clientAdsPort` number, double, nullable, required
      - `retryInterval` number, double, required
      - `plcName` string, nullable, required
      - `enumAsText` 'text' | 'integer', required
      - `boolAsText` 'text' | 'integer', required
      - `structureFiltering` SouthADSSettingsStructureFiltering[], nullable, required
        - `name` string, required
        - `fields` string, required
    - SouthBACnetSettings
      - `localInterface` string, nullable, required
      - `port` number, double, required
      - `apduTimeout` number, double, required
      - `broadcastAddress` string, required
      - `retryInterval` number, double, required
      - `maxParallelRun` number, double, required
      - `discoveryTargetAddress` string, nullable, required
      - `covDefaultLifetime` number, double, required
      - `covRenewalMargin` number, double, required
      - `maxObjectsPerRequest` number, double, required
      - `maxNumberOfMessages` number, double, required
      - `flushMessageTimeout` number, double, required
      - `bbmd` SouthBACnetSettingsBbmd, required
        - `enabled` boolean, required
        - `address` string
        - `foreignDeviceTtl` number, double
    - SouthFolderScannerSettings
      - `inputFolder` string, required
      - `compression` boolean, required
      - `username` string, nullable
      - `password` string, nullable
      - `domain` string, nullable
    - SouthFTPSettings
      - `host` string, required
      - `port` number, double, required
      - `authentication` 'none' | 'password', required
      - `username` string, nullable
      - `password` string, nullable
      - `compression` boolean, required
      - `retryInterval` number, double, required
    - SouthInfluxDBSettings
      - `version` '1' | '2' | '3', required
      - `host` string
      - `port` number, double
      - `protocol` 'http' | 'https'
      - `database` string
      - `username` string, nullable
      - `password` string, nullable
      - `url` string
      - `token` string, nullable
      - `organisation` string
      - `bucket` string
    - SouthModbusSettings
      - `host` string, required
      - `port` number, double, required
      - `connectTimeout` number, double, required
      - `networkTimeout` number, double, required
      - `retryInterval` number, double, required
      - `slaveId` number, double, required
      - `addressOffset` 'modbus' | 'jbus', required
      - `endianness` 'big-endian' | 'little-endian', required
      - `swapBytesInWords` boolean, required
      - `swapWordsInDWords` boolean, required
      - `batchQuery` boolean, required
      - `groupingGap` number, double
    - SouthMongoDBSettings
      - `connectionString` string, required
      - `connectionTimeout` number, double, required
      - `username` string, nullable, required
      - `password` string, nullable, required
    - SouthMQTTSettings
      - `url` string, required
      - `qos` '0' | '1' | '2', required
      - `persistent` boolean
      - `authentication` SouthMQTTSettingsAuthentication, required
        - `type` 'none' | 'basic' | 'cert', required
        - `username` string
        - `password` string, nullable
        - `certFilePath` string
        - `keyFilePath` string
        - `caFilePath` string
      - `rejectUnauthorized` boolean, required
      - `reconnectPeriod` number, double, required
      - `connectTimeout` number, double, required
      - `maxNumberOfMessages` number, double, required
      - `flushMessageTimeout` number, double, required
    - SouthMSSQLSettings
      - `host` string, required
      - `port` number, double, required
      - `connectionTimeout` number, double, required
      - `database` string, required
      - `encryption` boolean, required
      - `trustServerCertificate` boolean, required
      - `username` string, nullable, required
      - `password` string, nullable, required
      - `domain` string, nullable, required
      - `requestTimeout` number, double, required
    - SouthMySQLSettings
      - `host` string, required
      - `port` number, double, required
      - `connectionTimeout` number, double, required
      - `database` string, required
      - `username` string, nullable, required
      - `password` string, nullable, required
    - SouthODBCSettings
      - `remoteAgent` boolean, required
      - `agentUrl` string
      - `connectionTimeout` number, double, required
      - `retryInterval` number, double, required
      - `requestTimeout` number, double
      - `connectionString` string, required
      - `password` string, nullable, required
    - SouthOIAnalyticsSettings
      - `useOiaModule` boolean, required
      - `timeout` number, double, required
      - `specificSettings` SouthOIAnalyticsSettingsSpecificSettings
        - `host` string, required
        - `acceptUnauthorized` boolean, required
        - `authentication` 'basic' | 'aad-client-secret' | 'aad-certificate', required
        - `accessKey` string
        - `secretKey` string, nullable
        - `tenantId` string
        - `clientId` string
        - `clientSecret` string, nullable
        - `certificateId` string
        - `scope` string
        - `useProxy` boolean, required
        - `proxyUrl` string
        - `proxyUsername` string
        - `proxyPassword` string, nullable
    - SouthOLEDBSettings
      - `agentUrl` string, required
      - `connectionTimeout` number, double, required
      - `retryInterval` number, double, required
      - `requestTimeout` number, double, required
      - `connectionString` string, required
      - `password` string, nullable, required
    - SouthOPCSettings
      - `agentUrl` string, required
      - `retryInterval` number, double, required
      - `host` string, required
      - `serverName` string, required
      - `mode` 'hda' | 'da', required
    - SouthOPCUASettings
      - `url` string, required
      - `keepSessionAlive` boolean, required
      - `readTimeout` number, double, required
      - `retryInterval` number, double, required
      - `maxNumberOfMessages` number, double, required
      - `flushMessageTimeout` number, double, required
      - `securityMode` 'none' | 'sign' | 'sign-and-encrypt', required
      - `securityPolicy` 'none' | 'basic128' | 'basic192' | 'basic256' | 'basic128-rsa15' | 'basic192-rsa15' | 'basic256-rsa15' | 'basic256-sha256' | 'aes128-sha256-rsa-oaep' | 'pub-sub-aes-128-ctr' | 'pub-sub-aes-256-ctr'
      - `maxParallelRun` number, double, required
      - `authentication` SouthOPCUASettingsAuthentication, required
        - `type` 'none' | 'basic' | 'cert', required
        - `username` string
        - `password` string, nullable
        - `certFilePath` string
        - `keyFilePath` string
    - SouthOracleSettings
      - `thickMode` boolean, required
      - `oracleClient` string
      - `host` string, required
      - `port` number, double, required
      - `connectionTimeout` number, double, required
      - `database` string, required
      - `username` string, nullable, required
      - `password` string, nullable, required
    - SouthPISettings
      - `agentUrl` string, required
      - `retryInterval` number, double, required
    - SouthPostgreSQLSettings
      - `host` string, required
      - `port` number, double, required
      - `sslMode` boolean, required
      - `database` string, required
      - `connectionTimeout` number, double, required
      - `requestTimeout` number, double, required
      - `username` string, nullable, required
      - `password` string, nullable, required
    - SouthRestSettings
      - `host` string, required
      - `acceptUnauthorized` boolean, required
      - `timeout` number, double, required
      - `authentication` SouthRestSettingsAuthentication, required
        - `type` 'none' | 'basic' | 'bearer' | 'api-key', required
        - `username` string
        - `password` string, nullable
        - `token` string, nullable
        - `apiKey` string
        - `apiValue` string, nullable
        - `addTo` 'header' | 'query-params'
      - `proxy` SouthRestSettingsProxy, required
        - `useProxy` boolean, required
        - `proxyUrl` string
        - `proxyUsername` string, nullable
        - `proxyPassword` string, nullable
      - `test` SouthRestSettingsTest, required
        - `method` 'GET' | 'POST' | 'PUT', required
        - `endpoint` string, required
        - `successCode` number, double, required
        - `body` string, nullable
    - SouthS7Settings
      - `host` string, required
      - `port` number, double, required
      - `connectionType` 'PG' | 'OP' | 'S7Basic', required
      - `rack` number, double, required
      - `slot` number, double, required
      - `connectTimeout` number, double, required
      - `requestTimeout` number, double, required
      - `retryInterval` number, double, required
    - SouthSFTPSettings
      - `host` string, required
      - `port` number, double, required
      - `authentication` 'password' | 'private-key', required
      - `username` string, required
      - `password` string, nullable
      - `privateKey` string
      - `passphrase` string, nullable
      - `compression` boolean, required
      - `retryInterval` number, double, required
    - SouthSQLiteSettings
      - `databasePath` string, required
  - `query` string, required — The dedicated metadata query to run, as currently typed (before the workflow is saved)

## Response `200`

The rows returned by the query

- OIBusRecord[]

## Changes

- **2026-09-23** `92023a2f20ae` — 1 info
  - endpoint added
- **2026-09-21** `fbefadfe3be3` — 1 breaking
  - api path removed without deprecation
- **2026-09-21** `91dba375a461` — 1 info
  - endpoint added
- **2026-09-21** `52d824185a20` — 1 breaking
  - api path removed without deprecation
- **2026-09-08** `6cc2578622b5` — 1 info
  - endpoint added

[Full history](https://skmtc.dev/optimistiksas/apis/oibus-api/changes/api/south/:southId/test/discovery-query/post.md)

---

[API](https://skmtc.dev/optimistiksas/apis/oibus-api.md) · [All operations](https://skmtc.dev/optimistiksas/apis/oibus-api/llms.txt) · [OpenAPI document](https://skmtc.dev/optimistiksas/apis/oibus-api/revisions/a34e6afd34e1?raw)
