Skip to main content
POST

Restrictions

Use datasource IDs from /monit/datasource/list. Disabled datasources return datasource_disabled; alerting_enabled=false does not block tools. Errors use non-2xx HTTP status and error.code, error.message, error.reason. tool_not_supported indicates the selected executor does not provide this tool; it is not a vendor permission error. Never retry through another Edge or the legacy diagnose endpoint automatically.

Usage

  • The caller needs query access to the datasource (see readonly_team_ids on the datasource); without it the call fails with 403 access_denied. A datasource in another account returns 404 datasource_not_found.
  • Diagnostic tools exist only for datasource types mysql, postgres, redis_node, redis_sentinel, mongodb_mongod, mongodb_mongos, kafka, elasticsearch, prometheus, loki and victorialogs; oracle, clickhouse, sls and tencent_cls support only their <type>.query tool. Other combinations fail with invalid_request.
  • Two tool families share this entry: diagnostic tools defined by the executing Edge (e.g. mysql.overview, prometheus.metric_trends) and query tools named <type>.query. The tool prefix must match the datasource type.
  • Query tools require the Edge cluster to support Explore queries (protocol milestone v0.68.0); diagnostic tools require the v0.71.0 base invoke protocol. Unsupported clusters fail with edge_upgrade_required, mixed_edge_versions, or edge_version_unknown; never fall back to /monit/query/data or another endpoint automatically.
  • For query tools, params follows the per-datasource schema named in the tool field description. expr and execution are always required. limit/direction only bound raw-log retrieval, never SQL rows or scanned data. Unknown extension fields are tolerated but never executed or forwarded.
  • Query data is the complete Explore result: format is explore_result.v1 and result.kind is samples, frames, or logs; log results keep applied_limit and has_more. Query results never synthesize summary or truncated.
  • Request body limit 128 KiB; complete success response limit 10 MiB for both families; diagnostic tool timeout at most 25 seconds.

Authorizations

app_key
string
query
required

APP Key created in the Flashduty console under My → APP Key. Send it as the app_key query parameter or in the Fd-App-Key request header. Its effective access is the intersection of the key's permission scope and the creator's current role permissions. Keep it secret.

Body

application/json
datasource_id
integer<uint64>
required

ID of the datasource to run the tool against, from /monit/datasource/list. The caller needs query access to it. For query tools (<type>.query) the ID must not exceed 9007199254740991.

Required range: x >= 1
tool
string
required

Single tool name prefixed by the datasource type. Diagnostic tools are defined by the executing Edge (e.g. mysql.overview). Query tools are <type>.query where <type> is one of prometheus, mysql, postgres, oracle, clickhouse, elasticsearch, loki, victorialogs, sls, tencent_cls; their params follow PrometheusQueryParams, MySQLQueryParams, PostgresQueryParams, OracleQueryParams, ClickHouseQueryParams, ElasticsearchQueryParams, LokiQueryParams, VictoriaLogsQueryParams, SLSQueryParams, or TencentCLSQueryParams respectively.

Required string length: 1 - 128
account_id
integer<uint64>

Optional consistency check; must equal the authenticated account.

params
object

Tool-specific JSON parameters; omitted means {}. Explicit null is invalid. Query tools (<type>.query) use the per-datasource params schemas named in the tool description.

Response

Success

Success response envelope. On every 2xx response, request_id identifies the call (also mirrored in the Flashcat-Request-Id header) and data holds the endpoint-specific payload. Failure responses use a different shape — see ErrorResponse.

request_id
string
required

Unique ID for this request. Mirrored in the Flashcat-Request-Id response header. Include it when reporting issues.

Example:

"01HK8XQE3Z7JM2NTFQ5YJ8P9R4"

data
object

Operation-specific payload, documented in each operation's 200 response. Operations without a payload return {} or omit data entirely.