System

Base URL https://api.example.com
GET /api/v1/system/health

Health Check

Health check endpoint for monitoring Checks: - API server status - PostgreSQL connection - Redis connection - RabbitMQ connection Returns: Service status information

Responses
  • 200Successful Response
GET /api/v1/system/health
curl -X GET 'https://api.example.com/api/v1/system/health' \
  -H 'Authorization: Bearer '
import httpx

resp = httpx.get(
    "https://api.example.com/api/v1/system/health",
    headers={"Authorization": "Bearer "},
)
resp.raise_for_status()
print(resp.json())
const resp = await fetch("https://api.example.com/api/v1/system/health", {
  method: "GET",
  headers: { "Authorization": "Bearer " }
});
const data = await resp.json();
console.log(data);
package main

import (
	"net/http"
)

func main() {
	req, _ := http.NewRequest("GET", "https://api.example.com/api/v1/system/health", nil)
	req.Header.Set("Authorization", "Bearer ")
	resp, _ := http.DefaultClient.Do(req)
	defer resp.Body.Close()
}
GET /api/v1/system/queue-stats

Get Queue Stats

Get queue statistics Returns: Current queue depths for all job types

Responses
  • 200Successful Response
GET /api/v1/system/queue-stats
curl -X GET 'https://api.example.com/api/v1/system/queue-stats' \
  -H 'Authorization: Bearer '
import httpx

resp = httpx.get(
    "https://api.example.com/api/v1/system/queue-stats",
    headers={"Authorization": "Bearer "},
)
resp.raise_for_status()
print(resp.json())
const resp = await fetch("https://api.example.com/api/v1/system/queue-stats", {
  method: "GET",
  headers: { "Authorization": "Bearer " }
});
const data = await resp.json();
console.log(data);
package main

import (
	"net/http"
)

func main() {
	req, _ := http.NewRequest("GET", "https://api.example.com/api/v1/system/queue-stats", nil)
	req.Header.Set("Authorization", "Bearer ")
	resp, _ := http.DefaultClient.Do(req)
	defer resp.Body.Close()
}
GET /api/v1/system/credential-health

Credential Health

Count active clients missing Fernet-encrypted credentials. `missing_encrypted_credentials` must stay at 0 — any non-zero value means one or more active clients cannot have their Bearer token reconstructed by the scheduler, so their WindMill campaigns will be skipped (and the scheduler will emit ERROR logs every cycle until fixed). Run `python -m scripts.backfill_missing_encrypted_credentials` to rotate.

Responses
  • 200Successful Response
GET /api/v1/system/credential-health
curl -X GET 'https://api.example.com/api/v1/system/credential-health' \
  -H 'Authorization: Bearer '
import httpx

resp = httpx.get(
    "https://api.example.com/api/v1/system/credential-health",
    headers={"Authorization": "Bearer "},
)
resp.raise_for_status()
print(resp.json())
const resp = await fetch("https://api.example.com/api/v1/system/credential-health", {
  method: "GET",
  headers: { "Authorization": "Bearer " }
});
const data = await resp.json();
console.log(data);
package main

import (
	"net/http"
)

func main() {
	req, _ := http.NewRequest("GET", "https://api.example.com/api/v1/system/credential-health", nil)
	req.Header.Set("Authorization", "Bearer ")
	resp, _ := http.DefaultClient.Do(req)
	defer resp.Body.Close()
}
GET /api/v1/system/info

Get System Info

Get system information Returns: API configuration and version information

Responses
  • 200Successful Response
GET /api/v1/system/info
curl -X GET 'https://api.example.com/api/v1/system/info' \
  -H 'Authorization: Bearer '
import httpx

resp = httpx.get(
    "https://api.example.com/api/v1/system/info",
    headers={"Authorization": "Bearer "},
)
resp.raise_for_status()
print(resp.json())
const resp = await fetch("https://api.example.com/api/v1/system/info", {
  method: "GET",
  headers: { "Authorization": "Bearer " }
});
const data = await resp.json();
console.log(data);
package main

import (
	"net/http"
)

func main() {
	req, _ := http.NewRequest("GET", "https://api.example.com/api/v1/system/info", nil)
	req.Header.Set("Authorization", "Bearer ")
	resp, _ := http.DefaultClient.Do(req)
	defer resp.Body.Close()
}