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