{"openapi":"3.0.3","info":{"title":"24observe API","version":"1.0.0","description":"## A pure REST API for observability — built for agents and humans alike.\n\nEvery feature is a documented HTTP endpoint. No SDK to install, no client library to maintain, no proprietary protocol. If your code can `fetch` JSON, it can drive monitors, search logs, manage incidents, and publish status updates.\n\n### Quick facts for LLM agents and automation\n- **Authentication:** Bearer PAT (`obs_…`) — mint at `POST /api/v1/me/tokens`. Scopes are enforced per resource (e.g. `monitors:write`, `logs:read`).\n- **Errors:** every 4xx/5xx response includes an `error` (human-readable) and `code` (machine-stable). Branch on `code`, not message text.\n- **Idempotency:** mutating endpoints honour the `Idempotency-Key` request header (24h window, Stripe-style).\n- **Rate limits:** every response carries `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Reset` — back off on those.\n- **Function-calling formats:** the same operations exposed as OpenAI tools at `/openapi/openai-tools.json` and Anthropic tools at `/openapi/anthropic-tools.json`.\n- **Audit trail:** every state-changing call is recorded with PAT id, IP, and user-agent — visible at `GET /api/v1/audit-logs`.\n\nFull integration guide: https://24observe.com/agents · Self-host: https://github.com/vikasswaminh/observe24","contact":{"name":"24observe support","url":"https://24observe.com","email":"support@24observe.com"},"license":{"name":"MIT (self-host)","url":"https://github.com/vikasswaminh/observe24/blob/main/LICENSE"}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"obs_<43-char-base64url>","description":"Personal access token. Format: `obs_` followed by 43 base64url characters. Mint via `POST /api/v1/me/tokens` (requires `tokens:write` scope) or in the dashboard. Tokens are scoped per resource family — `monitors:read`, `monitors:write`, `logs:read`, `logs:write`, `incidents:write`, `secrets:read`, `tokens:write`, etc. Wildcards: `monitors:*` grants read+write within that family; `*` is full account access (use sparingly — single-purpose narrow tokens are the recommended pattern for agents). Optional per-token caps on daily mutations and ingested log bytes provide a hard safety budget for automated callers — if you set them, requests beyond the cap return `429 PAT_DAILY_LIMIT_EXCEEDED`."},"sessionCookie":{"type":"apiKey","in":"cookie","name":"session","description":"Browser session cookie. Set by /api/v1/auth/login. Use bearerAuth for programmatic access."}},"schemas":{}},"paths":{"/health/live":{"get":{"tags":["Other"],"security":[],"responses":{"200":{"description":"Default Response"}},"summary":"Read other health live","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/health/live\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/health/live\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/health/live\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/version":{"get":{"tags":["Other"],"responses":{"200":{"description":"Default Response"}},"summary":"Read other version","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/version\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/version\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/version\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/health/ready":{"get":{"tags":["Other"],"security":[],"responses":{"200":{"description":"Default Response"}},"summary":"Read other health ready","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/health/ready\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/health/ready\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/health/ready\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/health":{"get":{"tags":["Other"],"security":[],"responses":{"200":{"description":"Default Response"}},"summary":"Read other health","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/health\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/health\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/health\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/metrics":{"get":{"tags":["Other"],"security":[],"responses":{"200":{"description":"Default Response"}},"summary":"Read other metrics","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/metrics\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/metrics\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/metrics\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/openapi.json":{"get":{"tags":["Other"],"security":[],"responses":{"200":{"description":"Default Response"}},"summary":"Read other openapi.json","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/openapi.json\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/openapi.json\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/openapi.json\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/install.sh":{"get":{"tags":["Other"],"responses":{"200":{"description":"Default Response"}},"summary":"Read other install.sh","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/install.sh\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/install.sh\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/install.sh\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/auth/register":{"post":{"tags":["Auth"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email","maxLength":255},"password":{"type":"string","minLength":12,"maxLength":128},"organizationName":{"type":"string","minLength":1,"maxLength":255}},"required":["email","password"],"additionalProperties":false}}},"required":true},"security":[],"responses":{"200":{"description":"Default Response"}},"summary":"Create auth register","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/auth/register\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/auth/register\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/auth/register\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/auth/login":{"post":{"tags":["Auth"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email","maxLength":255},"password":{"type":"string","minLength":1,"maxLength":128},"totp":{"type":"string","minLength":6,"maxLength":11}},"required":["email","password"],"additionalProperties":false}}},"required":true},"security":[],"responses":{"200":{"description":"Default Response"}},"summary":"Create auth login","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/auth/login\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/auth/login\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/auth/login\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/auth/logout":{"post":{"tags":["Auth"],"security":[],"responses":{"200":{"description":"Default Response"}},"summary":"Create auth logout","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/auth/logout\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/auth/logout\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/auth/logout\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/auth/forgot-password":{"post":{"tags":["Auth"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email","maxLength":255}},"required":["email"],"additionalProperties":false}}},"required":true},"security":[],"responses":{"200":{"description":"Default Response"}},"summary":"Create auth forgot password","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/auth/forgot-password\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/auth/forgot-password\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/auth/forgot-password\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/auth/reset-password":{"post":{"tags":["Auth"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","minLength":20,"maxLength":200},"newPassword":{"type":"string","minLength":12,"maxLength":128}},"required":["token","newPassword"],"additionalProperties":false}}},"required":true},"security":[],"responses":{"200":{"description":"Default Response"}},"summary":"Create auth reset password","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/auth/reset-password\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/auth/reset-password\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/auth/reset-password\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/auth/verify-email":{"get":{"tags":["Auth"],"parameters":[{"schema":{"type":"string"},"in":"query","name":"token","required":true}],"security":[],"responses":{"200":{"description":"Default Response"}},"summary":"Read auth verify email","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/auth/verify-email\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/auth/verify-email\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/auth/verify-email\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/auth/resend-verification":{"post":{"tags":["Auth"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email","maxLength":255}},"required":["email"],"additionalProperties":false}}},"required":true},"security":[],"responses":{"200":{"description":"Default Response"}},"summary":"Create auth resend verification","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/auth/resend-verification\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/auth/resend-verification\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/auth/resend-verification\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/auth/mfa/enroll":{"post":{"tags":["Auth"],"security":[],"responses":{"200":{"description":"Default Response"}},"summary":"Create auth mfa enroll","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/auth/mfa/enroll\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/auth/mfa/enroll\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/auth/mfa/enroll\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/auth/mfa/verify":{"post":{"tags":["Auth"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","minLength":6,"maxLength":11}},"required":["code"],"additionalProperties":false}}},"required":true},"security":[],"responses":{"200":{"description":"Default Response"}},"summary":"Create auth mfa verify","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/auth/mfa/verify\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/auth/mfa/verify\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/auth/mfa/verify\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/auth/mfa/disable":{"post":{"tags":["Auth"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"password":{"type":"string","minLength":1,"maxLength":128},"code":{"type":"string","minLength":6,"maxLength":11}},"additionalProperties":false}}}},"security":[],"responses":{"200":{"description":"Default Response"}},"summary":"Create auth mfa disable","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/auth/mfa/disable\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/auth/mfa/disable\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/auth/mfa/disable\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/auth/google/start":{"get":{"tags":["Auth"],"security":[],"responses":{"200":{"description":"Default Response"}},"summary":"Read auth google start","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/auth/google/start\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/auth/google/start\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/auth/google/start\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/auth/google/callback":{"get":{"tags":["Auth"],"security":[],"responses":{"200":{"description":"Default Response"}},"summary":"Read auth google callback","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/auth/google/callback\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/auth/google/callback\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/auth/google/callback\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/auth/github/start":{"get":{"tags":["Auth"],"security":[],"responses":{"200":{"description":"Default Response"}},"summary":"Read auth github start","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/auth/github/start\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/auth/github/start\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/auth/github/start\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/auth/github/callback":{"get":{"tags":["Auth"],"security":[],"responses":{"200":{"description":"Default Response"}},"summary":"Read auth github callback","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/auth/github/callback\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/auth/github/callback\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/auth/github/callback\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/auth/sso/{slug}/start":{"get":{"tags":["Auth"],"security":[],"parameters":[{"schema":{"type":"string"},"in":"path","name":"slug","required":true}],"responses":{"200":{"description":"Default Response"}},"summary":"Read auth sso {slug} start","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/auth/sso/{slug}/start\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/auth/sso/{slug}/start\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/auth/sso/{slug}/start\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/auth/sso/callback":{"get":{"tags":["Auth"],"security":[],"responses":{"200":{"description":"Default Response"}},"summary":"Read auth sso callback","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/auth/sso/callback\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/auth/sso/callback\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/auth/sso/callback\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/me/oauth/":{"get":{"tags":["OAuth linking"],"responses":{"200":{"description":"Default Response"}},"summary":"Read oauth linking oauth","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/me/oauth/\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/me/oauth/\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/me/oauth/\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/me/oauth/google/start":{"get":{"tags":["OAuth linking"],"responses":{"200":{"description":"Default Response"}},"summary":"Read oauth linking oauth google start","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/me/oauth/google/start\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/me/oauth/google/start\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/me/oauth/google/start\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/me/oauth/google":{"delete":{"tags":["OAuth linking"],"responses":{"200":{"description":"Default Response"}},"summary":"Delete oauth linking oauth google","x-code-samples":[{"lang":"curl","source":"curl -X DELETE \"https://api.24observe.com/api/v1/me/oauth/google\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.delete(\n  \"https://api.24observe.com/api/v1/me/oauth/google\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/me/oauth/google\", {\n  method: \"DELETE\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/me/oauth/github/start":{"get":{"tags":["OAuth linking"],"responses":{"200":{"description":"Default Response"}},"summary":"Read oauth linking oauth github start","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/me/oauth/github/start\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/me/oauth/github/start\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/me/oauth/github/start\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/me/oauth/github":{"delete":{"tags":["OAuth linking"],"responses":{"200":{"description":"Default Response"}},"summary":"Delete oauth linking oauth github","x-code-samples":[{"lang":"curl","source":"curl -X DELETE \"https://api.24observe.com/api/v1/me/oauth/github\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.delete(\n  \"https://api.24observe.com/api/v1/me/oauth/github\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/me/oauth/github\", {\n  method: \"DELETE\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/me/":{"get":{"tags":["Account"],"responses":{"200":{"description":"Default Response"}},"summary":"List account","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/me/\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/me/\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/me/\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/me/webhook-secret":{"get":{"tags":["Account"],"responses":{"200":{"description":"Default Response"}},"summary":"Read account webhook secret","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/me/webhook-secret\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/me/webhook-secret\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/me/webhook-secret\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/me/webhook-secret/rotate":{"post":{"tags":["Account"],"responses":{"200":{"description":"Default Response"}},"summary":"Create account webhook secret rotate","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/me/webhook-secret/rotate\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/me/webhook-secret/rotate\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/me/webhook-secret/rotate\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/me/members":{"get":{"tags":["Account"],"responses":{"200":{"description":"Default Response"}},"summary":"Read account members","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/me/members\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/me/members\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/me/members\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/me/members/{userId}":{"patch":{"tags":["Account"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"role":{"type":"string","enum":["owner","admin","member","viewer"]}},"required":["role"],"additionalProperties":false}}},"required":true},"parameters":[{"schema":{"type":"string"},"in":"path","name":"userId","required":true}],"responses":{"200":{"description":"Default Response"}},"summary":"Update account members {userId}","x-code-samples":[{"lang":"curl","source":"curl -X PATCH \"https://api.24observe.com/api/v1/me/members/{userId}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.patch(\n  \"https://api.24observe.com/api/v1/me/members/{userId}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/me/members/{userId}\", {\n  method: \"PATCH\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/me/change-password":{"post":{"tags":["Account"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"currentPassword":{"type":"string","minLength":1},"newPassword":{"type":"string","minLength":12,"maxLength":256}},"required":["currentPassword","newPassword"],"additionalProperties":false}}},"required":true},"responses":{"200":{"description":"Default Response"}},"summary":"Create account change password","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/me/change-password\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/me/change-password\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/me/change-password\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/monitors/":{"post":{"tags":["Monitors"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255},"url":{"type":"string","minLength":1,"maxLength":2048},"type":{"type":"string","enum":["http","https","tcp","ping","port","ssl","keyword","heartbeat","dns","smtp","multi_step","browser"]},"intervalSec":{"type":"number","enum":[30,60,300,900,1800,3600]},"timeoutMs":{"type":"integer","minimum":1000,"maximum":30000},"headers":{"type":"object","additionalProperties":{"type":"string","maxLength":2048}},"expectedStatusCode":{"type":"integer","minimum":100,"maximum":599},"degradedResponseTimeMs":{"type":"integer","minimum":100,"maximum":60000},"port":{"type":"integer","minimum":1,"maximum":65535},"keyword":{"type":"string","maxLength":1024},"keywordMatchType":{"type":"string","enum":["contains","not_contains"]},"alertEmail":{"type":"string","format":"email","maxLength":255},"alertWebhookUrl":{"type":"string","format":"uri","maxLength":2048},"alertSlackUrl":{"type":"string","format":"uri","maxLength":2048},"alertDiscordUrl":{"type":"string","format":"uri","maxLength":2048},"alertMsteamsUrl":{"type":"string","format":"uri","maxLength":2048},"alertTelegramBotToken":{"type":"string","maxLength":128},"alertTelegramChatId":{"type":"string","maxLength":64},"alertPagerdutyRoutingKey":{"type":"string","minLength":8,"maxLength":512},"alertOpsgenieApiKey":{"type":"string","minLength":8,"maxLength":512},"alertSmsNumber":{"type":"string","pattern":"^\\+[1-9]\\d{6,14}$"},"alertVoiceNumber":{"type":"string","pattern":"^\\+[1-9]\\d{6,14}$"},"escalationPolicyId":{"type":"integer","exclusiveMinimum":0},"alertThreshold":{"type":"integer","minimum":1,"maximum":10},"alertOnDegraded":{"type":"boolean"},"paused":{"type":"boolean"},"heartbeatGraceSec":{"type":"integer","minimum":0,"maximum":86400},"uptimeTargetBp":{"type":"integer","minimum":1,"maximum":10000},"uptimeWindowDays":{"type":"integer","minimum":1,"maximum":365},"tags":{"type":"array","items":{"type":"string","minLength":1,"maxLength":50,"pattern":"^[a-z0-9][a-z0-9_-]*$"},"maxItems":20},"regions":{"type":"array","items":{"type":"string","enum":["local","weur","eeur","enam","wnam","apac","oc","sam","afr"]},"minItems":1,"maxItems":6},"steps":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":128},"method":{"type":"string","enum":["GET","POST","PUT","PATCH","DELETE","HEAD"]},"url":{"type":"string","minLength":1,"maxLength":2048},"headers":{"type":"object","additionalProperties":{"type":"string","maxLength":2048}},"body":{"type":"string","maxLength":65536},"assertions":{"type":"array","items":{"type":"object","properties":{"source":{"type":"string","enum":["status_code","response_time_ms","body_json","body_text","header"]},"path":{"type":"string","maxLength":512},"comparison":{"type":"string","enum":["eq","ne","contains","not_contains","gt","lt","exists","not_exists"]},"value":{"anyOf":[{"type":"string","maxLength":2048},{"type":"number"}]}},"required":["source","comparison"],"additionalProperties":false},"maxItems":20},"extract":{"type":"array","items":{"type":"object","properties":{"var":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[a-zA-Z_][a-zA-Z0-9_]*$"},"source":{"type":"string","enum":["body_json","header"]},"path":{"type":"string","minLength":1,"maxLength":512}},"required":["var","source","path"],"additionalProperties":false},"maxItems":10}},"required":["name","method","url"],"additionalProperties":false},"minItems":1,"maxItems":20}},"required":["name","url","type","intervalSec","timeoutMs"],"additionalProperties":false}}},"required":true},"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer"},"organizationId":{"type":"integer"},"name":{"type":"string"},"url":{"type":"string"},"type":{"type":"string","enum":["http","https","tcp","ping","port","ssl","keyword","heartbeat","dns","smtp"]},"intervalSec":{"type":"integer"},"timeoutMs":{"type":"integer"},"expectedStatusCode":{"anyOf":[{"type":"integer"},{"type":"null"}]},"degradedResponseTimeMs":{"anyOf":[{"type":"integer"},{"type":"null"}]},"port":{"anyOf":[{"type":"integer"},{"type":"null"}]},"keyword":{"type":["null","string"]},"keywordMatchType":{"anyOf":[{"type":"string","enum":["contains","not_contains"]},{"type":"null"}]},"alertEmail":{"type":["null","string"]},"alertThreshold":{"type":"integer"},"alertOnDegraded":{"type":"boolean"},"consecutiveFailures":{"type":"integer"},"lastStatus":{"anyOf":[{"type":"string","enum":["up","down","degraded"]},{"type":"null"}]},"lastCheckedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"paused":{"type":"boolean"},"heartbeatGraceSec":{"type":"integer"},"heartbeatLastReceivedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"uptimeTargetBp":{"type":"integer"},"uptimeWindowDays":{"type":"integer"},"sloBreachOpen":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"hasAlertWebhook":{"type":"boolean"},"hasAlertSlack":{"type":"boolean"},"hasAlertDiscord":{"type":"boolean"},"hasAlertMsteams":{"type":"boolean"},"hasAlertTelegram":{"type":"boolean"},"hasAlertPagerduty":{"type":"boolean"},"hasAlertOpsgenie":{"type":"boolean"},"hasAlertSms":{"type":"boolean"},"hasAlertVoice":{"type":"boolean"},"hasHeaders":{"type":"boolean"},"tags":{"type":"array","items":{"type":"string"}},"regions":{"anyOf":[{"type":"array","items":{"type":"string","enum":["local","weur","eeur","enam","wnam","apac","oc","sam","afr"]}},{"type":"null"}]},"escalationPolicyId":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["id","organizationId","name","url","type","intervalSec","timeoutMs","expectedStatusCode","degradedResponseTimeMs","port","keyword","keywordMatchType","alertEmail","alertThreshold","alertOnDegraded","consecutiveFailures","lastStatus","lastCheckedAt","paused","heartbeatGraceSec","heartbeatLastReceivedAt","uptimeTargetBp","uptimeWindowDays","sloBreachOpen","createdAt","hasAlertWebhook","hasAlertSlack","hasAlertDiscord","hasAlertMsteams","hasAlertTelegram","hasAlertPagerduty","hasAlertOpsgenie","hasAlertSms","hasAlertVoice","hasHeaders","tags","regions","escalationPolicyId"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"summary":"Create monitors","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/monitors/\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/monitors/\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/monitors/\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]},"get":{"tags":["Monitors"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"organizationId":{"type":"integer"},"name":{"type":"string"},"url":{"type":"string"},"type":{"type":"string","enum":["http","https","tcp","ping","port","ssl","keyword","heartbeat","dns","smtp"]},"intervalSec":{"type":"integer"},"timeoutMs":{"type":"integer"},"expectedStatusCode":{"anyOf":[{"type":"integer"},{"type":"null"}]},"degradedResponseTimeMs":{"anyOf":[{"type":"integer"},{"type":"null"}]},"port":{"anyOf":[{"type":"integer"},{"type":"null"}]},"keyword":{"type":["null","string"]},"keywordMatchType":{"anyOf":[{"type":"string","enum":["contains","not_contains"]},{"type":"null"}]},"alertEmail":{"type":["null","string"]},"alertThreshold":{"type":"integer"},"alertOnDegraded":{"type":"boolean"},"consecutiveFailures":{"type":"integer"},"lastStatus":{"anyOf":[{"type":"string","enum":["up","down","degraded"]},{"type":"null"}]},"lastCheckedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"paused":{"type":"boolean"},"heartbeatGraceSec":{"type":"integer"},"heartbeatLastReceivedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"uptimeTargetBp":{"type":"integer"},"uptimeWindowDays":{"type":"integer"},"sloBreachOpen":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"hasAlertWebhook":{"type":"boolean"},"hasAlertSlack":{"type":"boolean"},"hasAlertDiscord":{"type":"boolean"},"hasAlertMsteams":{"type":"boolean"},"hasAlertTelegram":{"type":"boolean"},"hasAlertPagerduty":{"type":"boolean"},"hasAlertOpsgenie":{"type":"boolean"},"hasAlertSms":{"type":"boolean"},"hasAlertVoice":{"type":"boolean"},"hasHeaders":{"type":"boolean"},"tags":{"type":"array","items":{"type":"string"}},"regions":{"anyOf":[{"type":"array","items":{"type":"string","enum":["local","weur","eeur","enam","wnam","apac","oc","sam","afr"]}},{"type":"null"}]},"escalationPolicyId":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["id","organizationId","name","url","type","intervalSec","timeoutMs","expectedStatusCode","degradedResponseTimeMs","port","keyword","keywordMatchType","alertEmail","alertThreshold","alertOnDegraded","consecutiveFailures","lastStatus","lastCheckedAt","paused","heartbeatGraceSec","heartbeatLastReceivedAt","uptimeTargetBp","uptimeWindowDays","sloBreachOpen","createdAt","hasAlertWebhook","hasAlertSlack","hasAlertDiscord","hasAlertMsteams","hasAlertTelegram","hasAlertPagerduty","hasAlertOpsgenie","hasAlertSms","hasAlertVoice","hasHeaders","tags","regions","escalationPolicyId"],"additionalProperties":false}}}}}},"summary":"List monitors","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/monitors/\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/monitors/\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/monitors/\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/monitors/{id}":{"get":{"tags":["Monitors"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer"},"organizationId":{"type":"integer"},"name":{"type":"string"},"url":{"type":"string"},"type":{"type":"string","enum":["http","https","tcp","ping","port","ssl","keyword","heartbeat","dns","smtp"]},"intervalSec":{"type":"integer"},"timeoutMs":{"type":"integer"},"expectedStatusCode":{"anyOf":[{"type":"integer"},{"type":"null"}]},"degradedResponseTimeMs":{"anyOf":[{"type":"integer"},{"type":"null"}]},"port":{"anyOf":[{"type":"integer"},{"type":"null"}]},"keyword":{"type":["null","string"]},"keywordMatchType":{"anyOf":[{"type":"string","enum":["contains","not_contains"]},{"type":"null"}]},"alertEmail":{"type":["null","string"]},"alertThreshold":{"type":"integer"},"alertOnDegraded":{"type":"boolean"},"consecutiveFailures":{"type":"integer"},"lastStatus":{"anyOf":[{"type":"string","enum":["up","down","degraded"]},{"type":"null"}]},"lastCheckedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"paused":{"type":"boolean"},"heartbeatGraceSec":{"type":"integer"},"heartbeatLastReceivedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"uptimeTargetBp":{"type":"integer"},"uptimeWindowDays":{"type":"integer"},"sloBreachOpen":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"hasAlertWebhook":{"type":"boolean"},"hasAlertSlack":{"type":"boolean"},"hasAlertDiscord":{"type":"boolean"},"hasAlertMsteams":{"type":"boolean"},"hasAlertTelegram":{"type":"boolean"},"hasAlertPagerduty":{"type":"boolean"},"hasAlertOpsgenie":{"type":"boolean"},"hasAlertSms":{"type":"boolean"},"hasAlertVoice":{"type":"boolean"},"hasHeaders":{"type":"boolean"},"tags":{"type":"array","items":{"type":"string"}},"regions":{"anyOf":[{"type":"array","items":{"type":"string","enum":["local","weur","eeur","enam","wnam","apac","oc","sam","afr"]}},{"type":"null"}]},"escalationPolicyId":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["id","organizationId","name","url","type","intervalSec","timeoutMs","expectedStatusCode","degradedResponseTimeMs","port","keyword","keywordMatchType","alertEmail","alertThreshold","alertOnDegraded","consecutiveFailures","lastStatus","lastCheckedAt","paused","heartbeatGraceSec","heartbeatLastReceivedAt","uptimeTargetBp","uptimeWindowDays","sloBreachOpen","createdAt","hasAlertWebhook","hasAlertSlack","hasAlertDiscord","hasAlertMsteams","hasAlertTelegram","hasAlertPagerduty","hasAlertOpsgenie","hasAlertSms","hasAlertVoice","hasHeaders","tags","regions","escalationPolicyId"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"summary":"Read monitors {id}","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/monitors/{id}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/monitors/{id}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/monitors/{id}\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]},"patch":{"tags":["Monitors"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255},"url":{"type":"string","minLength":1,"maxLength":2048},"type":{"type":"string","enum":["http","https","tcp","ping","port","ssl","keyword","heartbeat","dns","smtp","multi_step","browser"]},"intervalSec":{"type":"number","enum":[30,60,300,900,1800,3600]},"timeoutMs":{"type":"integer","minimum":1000,"maximum":30000},"headers":{"anyOf":[{"type":"object","additionalProperties":{"type":"string","maxLength":2048}},{"type":"null"}]},"expectedStatusCode":{"anyOf":[{"type":"integer","minimum":100,"maximum":599},{"type":"null"}]},"degradedResponseTimeMs":{"anyOf":[{"type":"integer","minimum":100,"maximum":60000},{"type":"null"}]},"port":{"anyOf":[{"type":"integer","minimum":1,"maximum":65535},{"type":"null"}]},"keyword":{"anyOf":[{"type":"string","maxLength":1024},{"type":"null"}]},"keywordMatchType":{"anyOf":[{"type":"string","enum":["contains","not_contains"]},{"type":"null"}]},"alertEmail":{"anyOf":[{"type":"string","format":"email","maxLength":255},{"type":"null"}]},"alertWebhookUrl":{"anyOf":[{"type":"string","format":"uri","maxLength":2048},{"type":"null"}]},"alertSlackUrl":{"anyOf":[{"type":"string","format":"uri","maxLength":2048},{"type":"null"}]},"alertDiscordUrl":{"anyOf":[{"type":"string","format":"uri","maxLength":2048},{"type":"null"}]},"alertMsteamsUrl":{"anyOf":[{"type":"string","format":"uri","maxLength":2048},{"type":"null"}]},"alertTelegramBotToken":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}]},"alertTelegramChatId":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}]},"alertPagerdutyRoutingKey":{"anyOf":[{"type":"string","minLength":8,"maxLength":512},{"type":"null"}]},"alertOpsgenieApiKey":{"anyOf":[{"type":"string","minLength":8,"maxLength":512},{"type":"null"}]},"alertSmsNumber":{"anyOf":[{"type":"string","pattern":"^\\+[1-9]\\d{6,14}$"},{"type":"null"}]},"alertVoiceNumber":{"anyOf":[{"type":"string","pattern":"^\\+[1-9]\\d{6,14}$"},{"type":"null"}]},"escalationPolicyId":{"anyOf":[{"type":"integer","exclusiveMinimum":0},{"type":"null"}]},"alertThreshold":{"type":"integer","minimum":1,"maximum":10},"alertOnDegraded":{"type":"boolean"},"paused":{"type":"boolean"},"heartbeatGraceSec":{"type":"integer","minimum":0,"maximum":86400},"uptimeTargetBp":{"type":"integer","minimum":1,"maximum":10000},"uptimeWindowDays":{"type":"integer","minimum":1,"maximum":365},"tags":{"type":"array","items":{"type":"string","minLength":1,"maxLength":50,"pattern":"^[a-z0-9][a-z0-9_-]*$"},"maxItems":20},"regions":{"type":"array","items":{"type":"string","enum":["local","weur","eeur","enam","wnam","apac","oc","sam","afr"]},"minItems":1,"maxItems":6},"steps":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":128},"method":{"type":"string","enum":["GET","POST","PUT","PATCH","DELETE","HEAD"]},"url":{"type":"string","minLength":1,"maxLength":2048},"headers":{"type":"object","additionalProperties":{"type":"string","maxLength":2048}},"body":{"type":"string","maxLength":65536},"assertions":{"type":"array","items":{"type":"object","properties":{"source":{"type":"string","enum":["status_code","response_time_ms","body_json","body_text","header"]},"path":{"type":"string","maxLength":512},"comparison":{"type":"string","enum":["eq","ne","contains","not_contains","gt","lt","exists","not_exists"]},"value":{"anyOf":[{"type":"string","maxLength":2048},{"type":"number"}]}},"required":["source","comparison"],"additionalProperties":false},"maxItems":20},"extract":{"type":"array","items":{"type":"object","properties":{"var":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[a-zA-Z_][a-zA-Z0-9_]*$"},"source":{"type":"string","enum":["body_json","header"]},"path":{"type":"string","minLength":1,"maxLength":512}},"required":["var","source","path"],"additionalProperties":false},"maxItems":10}},"required":["name","method","url"],"additionalProperties":false},"minItems":1,"maxItems":20},{"type":"null"}]}},"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer"},"organizationId":{"type":"integer"},"name":{"type":"string"},"url":{"type":"string"},"type":{"type":"string","enum":["http","https","tcp","ping","port","ssl","keyword","heartbeat","dns","smtp"]},"intervalSec":{"type":"integer"},"timeoutMs":{"type":"integer"},"expectedStatusCode":{"anyOf":[{"type":"integer"},{"type":"null"}]},"degradedResponseTimeMs":{"anyOf":[{"type":"integer"},{"type":"null"}]},"port":{"anyOf":[{"type":"integer"},{"type":"null"}]},"keyword":{"type":["null","string"]},"keywordMatchType":{"anyOf":[{"type":"string","enum":["contains","not_contains"]},{"type":"null"}]},"alertEmail":{"type":["null","string"]},"alertThreshold":{"type":"integer"},"alertOnDegraded":{"type":"boolean"},"consecutiveFailures":{"type":"integer"},"lastStatus":{"anyOf":[{"type":"string","enum":["up","down","degraded"]},{"type":"null"}]},"lastCheckedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"paused":{"type":"boolean"},"heartbeatGraceSec":{"type":"integer"},"heartbeatLastReceivedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"uptimeTargetBp":{"type":"integer"},"uptimeWindowDays":{"type":"integer"},"sloBreachOpen":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"hasAlertWebhook":{"type":"boolean"},"hasAlertSlack":{"type":"boolean"},"hasAlertDiscord":{"type":"boolean"},"hasAlertMsteams":{"type":"boolean"},"hasAlertTelegram":{"type":"boolean"},"hasAlertPagerduty":{"type":"boolean"},"hasAlertOpsgenie":{"type":"boolean"},"hasAlertSms":{"type":"boolean"},"hasAlertVoice":{"type":"boolean"},"hasHeaders":{"type":"boolean"},"tags":{"type":"array","items":{"type":"string"}},"regions":{"anyOf":[{"type":"array","items":{"type":"string","enum":["local","weur","eeur","enam","wnam","apac","oc","sam","afr"]}},{"type":"null"}]},"escalationPolicyId":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["id","organizationId","name","url","type","intervalSec","timeoutMs","expectedStatusCode","degradedResponseTimeMs","port","keyword","keywordMatchType","alertEmail","alertThreshold","alertOnDegraded","consecutiveFailures","lastStatus","lastCheckedAt","paused","heartbeatGraceSec","heartbeatLastReceivedAt","uptimeTargetBp","uptimeWindowDays","sloBreachOpen","createdAt","hasAlertWebhook","hasAlertSlack","hasAlertDiscord","hasAlertMsteams","hasAlertTelegram","hasAlertPagerduty","hasAlertOpsgenie","hasAlertSms","hasAlertVoice","hasHeaders","tags","regions","escalationPolicyId"],"additionalProperties":false}}}}},"summary":"Update monitors {id}","x-code-samples":[{"lang":"curl","source":"curl -X PATCH \"https://api.24observe.com/api/v1/monitors/{id}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.patch(\n  \"https://api.24observe.com/api/v1/monitors/{id}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/monitors/{id}\", {\n  method: \"PATCH\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]},"delete":{"tags":["Monitors"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}},"summary":"Delete monitors {id}","x-code-samples":[{"lang":"curl","source":"curl -X DELETE \"https://api.24observe.com/api/v1/monitors/{id}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.delete(\n  \"https://api.24observe.com/api/v1/monitors/{id}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/monitors/{id}\", {\n  method: \"DELETE\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/monitors/{id}/secrets":{"get":{"tags":["Monitors"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer"},"alertWebhookUrl":{"type":["null","string"]},"alertSlackUrl":{"type":["null","string"]},"alertDiscordUrl":{"type":["null","string"]},"alertMsteamsUrl":{"type":["null","string"]},"alertTelegramBotToken":{"type":["null","string"]},"alertTelegramChatId":{"type":["null","string"]},"alertPagerdutyRoutingKey":{"type":["null","string"]},"alertOpsgenieApiKey":{"type":["null","string"]},"heartbeatToken":{"type":["null","string"],"description":"64-char hex plaintext for heartbeat monitors. Build the receive URL as `https://api.24observe.com/api/v1/heartbeats/<this>`. NULL for non-heartbeat monitors."}},"required":["id","alertWebhookUrl","alertSlackUrl","alertDiscordUrl","alertMsteamsUrl","alertTelegramBotToken","alertTelegramChatId","alertPagerdutyRoutingKey","alertOpsgenieApiKey","heartbeatToken"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"summary":"Read monitors {id} secrets","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/monitors/{id}/secrets\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/monitors/{id}/secrets\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/monitors/{id}/secrets\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/monitors/{id}/rotate-heartbeat-token":{"post":{"tags":["Monitors"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer"},"organizationId":{"type":"integer"},"name":{"type":"string"},"url":{"type":"string"},"type":{"type":"string","enum":["http","https","tcp","ping","port","ssl","keyword","heartbeat","dns","smtp"]},"intervalSec":{"type":"integer"},"timeoutMs":{"type":"integer"},"expectedStatusCode":{"anyOf":[{"type":"integer"},{"type":"null"}]},"degradedResponseTimeMs":{"anyOf":[{"type":"integer"},{"type":"null"}]},"port":{"anyOf":[{"type":"integer"},{"type":"null"}]},"keyword":{"type":["null","string"]},"keywordMatchType":{"anyOf":[{"type":"string","enum":["contains","not_contains"]},{"type":"null"}]},"alertEmail":{"type":["null","string"]},"alertThreshold":{"type":"integer"},"alertOnDegraded":{"type":"boolean"},"consecutiveFailures":{"type":"integer"},"lastStatus":{"anyOf":[{"type":"string","enum":["up","down","degraded"]},{"type":"null"}]},"lastCheckedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"paused":{"type":"boolean"},"heartbeatGraceSec":{"type":"integer"},"heartbeatLastReceivedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"uptimeTargetBp":{"type":"integer"},"uptimeWindowDays":{"type":"integer"},"sloBreachOpen":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"hasAlertWebhook":{"type":"boolean"},"hasAlertSlack":{"type":"boolean"},"hasAlertDiscord":{"type":"boolean"},"hasAlertMsteams":{"type":"boolean"},"hasAlertTelegram":{"type":"boolean"},"hasAlertPagerduty":{"type":"boolean"},"hasAlertOpsgenie":{"type":"boolean"},"hasAlertSms":{"type":"boolean"},"hasAlertVoice":{"type":"boolean"},"hasHeaders":{"type":"boolean"},"tags":{"type":"array","items":{"type":"string"}},"regions":{"anyOf":[{"type":"array","items":{"type":"string","enum":["local","weur","eeur","enam","wnam","apac","oc","sam","afr"]}},{"type":"null"}]},"escalationPolicyId":{"anyOf":[{"type":"integer"},{"type":"null"}]},"heartbeatToken":{"type":"string"}},"required":["id","organizationId","name","url","type","intervalSec","timeoutMs","expectedStatusCode","degradedResponseTimeMs","port","keyword","keywordMatchType","alertEmail","alertThreshold","alertOnDegraded","consecutiveFailures","lastStatus","lastCheckedAt","paused","heartbeatGraceSec","heartbeatLastReceivedAt","uptimeTargetBp","uptimeWindowDays","sloBreachOpen","createdAt","hasAlertWebhook","hasAlertSlack","hasAlertDiscord","hasAlertMsteams","hasAlertTelegram","hasAlertPagerduty","hasAlertOpsgenie","hasAlertSms","hasAlertVoice","hasHeaders","tags","regions","escalationPolicyId","heartbeatToken"],"additionalProperties":false}}}}},"summary":"Create monitors {id} rotate heartbeat token","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/monitors/{id}/rotate-heartbeat-token\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/monitors/{id}/rotate-heartbeat-token\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/monitors/{id}/rotate-heartbeat-token\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/monitors/bulk":{"post":{"tags":["Monitors"],"responses":{"200":{"description":"Default Response"}},"summary":"Create monitors bulk","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/monitors/bulk\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/monitors/bulk\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/monitors/bulk\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]},"patch":{"tags":["Monitors"],"responses":{"200":{"description":"Default Response"}},"summary":"Update monitors bulk","x-code-samples":[{"lang":"curl","source":"curl -X PATCH \"https://api.24observe.com/api/v1/monitors/bulk\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.patch(\n  \"https://api.24observe.com/api/v1/monitors/bulk\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/monitors/bulk\", {\n  method: \"PATCH\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]},"delete":{"tags":["Monitors"],"responses":{"200":{"description":"Default Response"}},"summary":"Delete monitors bulk","x-code-samples":[{"lang":"curl","source":"curl -X DELETE \"https://api.24observe.com/api/v1/monitors/bulk\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.delete(\n  \"https://api.24observe.com/api/v1/monitors/bulk\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/monitors/bulk\", {\n  method: \"DELETE\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/incidents/":{"get":{"tags":["Incidents"],"parameters":[{"schema":{"type":"string"},"in":"query","name":"limit","required":false},{"schema":{"type":"string"},"in":"query","name":"offset","required":false},{"schema":{"type":"string","enum":["investigating","identified","monitoring","resolved","open"]},"in":"query","name":"status","required":false}],"responses":{"200":{"description":"Default Response"}},"summary":"List incidents","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/incidents/\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/incidents/\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/incidents/\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/incidents/{id}":{"get":{"tags":["Incidents"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}},"summary":"Read incidents {id}","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/incidents/{id}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/incidents/{id}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/incidents/{id}\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/incidents/{id}/deliveries":{"get":{"tags":["Incidents"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}},"summary":"Read incidents {id} deliveries","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/incidents/{id}/deliveries\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/incidents/{id}/deliveries\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/incidents/{id}/deliveries\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/incidents/{id}/analysis":{"get":{"tags":["Incidents"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}},"summary":"Read incidents {id} analysis","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/incidents/{id}/analysis\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/incidents/{id}/analysis\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/incidents/{id}/analysis\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/incidents/{id}/updates":{"post":{"tags":["Incidents"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["investigating","identified","monitoring","resolved"]},"body":{"type":"string","minLength":1,"maxLength":4096}},"required":["status","body"],"additionalProperties":false}}},"required":true},"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}},"summary":"Create incidents {id} updates","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/incidents/{id}/updates\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/incidents/{id}/updates\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/incidents/{id}/updates\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/incidents/{id}/acknowledge":{"post":{"tags":["Incidents"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}},"summary":"Create incidents {id} acknowledge","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/incidents/{id}/acknowledge\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/incidents/{id}/acknowledge\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/incidents/{id}/acknowledge\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/incidents/{id}/postmortem":{"put":{"tags":["Incidents"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"postmortem":{"type":"string","maxLength":16384}},"required":["postmortem"],"additionalProperties":false}}},"required":true},"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}},"summary":"Replace incidents {id} postmortem","x-code-samples":[{"lang":"curl","source":"curl -X PUT \"https://api.24observe.com/api/v1/incidents/{id}/postmortem\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.put(\n  \"https://api.24observe.com/api/v1/incidents/{id}/postmortem\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/incidents/{id}/postmortem\", {\n  method: \"PUT\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/incidents/{id}/resolve":{"post":{"tags":["Incidents"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}},"summary":"Create incidents {id} resolve","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/incidents/{id}/resolve\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/incidents/{id}/resolve\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/incidents/{id}/resolve\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/incidents/{id}/context":{"get":{"tags":["Incidents"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}},"summary":"Read incidents {id} context","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/incidents/{id}/context\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/incidents/{id}/context\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/incidents/{id}/context\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/monitors/{id}/stats":{"get":{"tags":["Monitors"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}},"summary":"Read monitors {id} stats","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/monitors/{id}/stats\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/monitors/{id}/stats\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/monitors/{id}/stats\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/monitors/{id}/timeline":{"get":{"tags":["Monitors"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}},"summary":"Read monitors {id} timeline","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/monitors/{id}/timeline\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/monitors/{id}/timeline\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/monitors/{id}/timeline\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/monitors/stats/batch":{"get":{"tags":["Monitors"],"responses":{"200":{"description":"Default Response"}},"summary":"Read monitors stats batch","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/monitors/stats/batch\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/monitors/stats/batch\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/monitors/stats/batch\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/monitors/{id}/checks":{"get":{"tags":["Monitors"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}},"summary":"Read monitors {id} checks","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/monitors/{id}/checks\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/monitors/{id}/checks\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/monitors/{id}/checks\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/status-pages/public/{slug}":{"get":{"tags":["Status pages (public)"],"security":[],"parameters":[{"schema":{"type":"string"},"in":"path","name":"slug","required":true}],"responses":{"200":{"description":"Default Response"}},"summary":"Read status pages (public) public {slug}","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/status-pages/public/{slug}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/status-pages/public/{slug}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/status-pages/public/{slug}\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/status-pages/public/by-host/{host}":{"get":{"tags":["Status pages (public)"],"security":[],"parameters":[{"schema":{"type":"string"},"in":"path","name":"host","required":true}],"responses":{"200":{"description":"Default Response"}},"summary":"Read status pages (public) public by host {host}","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/status-pages/public/by-host/{host}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/status-pages/public/by-host/{host}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/status-pages/public/by-host/{host}\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/status-pages/public/{slug}/unlock":{"post":{"tags":["Status pages (public)"],"security":[],"parameters":[{"schema":{"type":"string"},"in":"path","name":"slug","required":true}],"responses":{"200":{"description":"Default Response"}},"summary":"Create status pages (public) public {slug} unlock","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/status-pages/public/{slug}/unlock\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/status-pages/public/{slug}/unlock\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/status-pages/public/{slug}/unlock\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/status-pages/":{"get":{"tags":["Status pages"],"responses":{"200":{"description":"Default Response"}},"summary":"List status pages","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/status-pages/\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/status-pages/\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/status-pages/\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]},"post":{"tags":["Status pages"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[a-z0-9-]+$"},"title":{"type":"string","minLength":1,"maxLength":255},"isPublic":{"type":"boolean","default":true},"customDomain":{"type":"string","minLength":4,"maxLength":255,"pattern":"^(?=.{4,253}$)([a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z]{2,63}$"},"logoUrl":{"type":"string","format":"uri","maxLength":2048},"accentColor":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"}},"required":["slug","title"],"additionalProperties":false}}},"required":true},"responses":{"200":{"description":"Default Response"}},"summary":"Create status pages","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/status-pages/\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/status-pages/\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/status-pages/\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/status-pages/{id}":{"get":{"tags":["Status pages"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}},"summary":"Read status pages {id}","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/status-pages/{id}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/status-pages/{id}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/status-pages/{id}\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]},"patch":{"tags":["Status pages"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[a-z0-9-]+$"},"title":{"type":"string","minLength":1,"maxLength":255},"isPublic":{"type":"boolean"},"customDomain":{"anyOf":[{"type":"string","minLength":4,"maxLength":255,"pattern":"^(?=.{4,253}$)([a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z]{2,63}$"},{"type":"null"}]},"logoUrl":{"anyOf":[{"type":"string","format":"uri","maxLength":2048},{"type":"null"}]},"accentColor":{"anyOf":[{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},{"type":"null"}]},"footerLinks":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":60},"url":{"type":"string","format":"uri","maxLength":2048}},"required":["label","url"],"additionalProperties":false},"maxItems":8},{"type":"null"}]},"customCss":{"anyOf":[{"type":"string","maxLength":20000},{"type":"null"}]},"ipAllowlist":{"anyOf":[{"type":"array","items":{"type":"string","minLength":1,"maxLength":64},"maxItems":50},{"type":"null"}]},"hideBranding":{"type":"boolean"}},"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}},"summary":"Update status pages {id}","x-code-samples":[{"lang":"curl","source":"curl -X PATCH \"https://api.24observe.com/api/v1/status-pages/{id}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.patch(\n  \"https://api.24observe.com/api/v1/status-pages/{id}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/status-pages/{id}\", {\n  method: \"PATCH\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]},"delete":{"tags":["Status pages"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}},"summary":"Delete status pages {id}","x-code-samples":[{"lang":"curl","source":"curl -X DELETE \"https://api.24observe.com/api/v1/status-pages/{id}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.delete(\n  \"https://api.24observe.com/api/v1/status-pages/{id}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/status-pages/{id}\", {\n  method: \"DELETE\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/status-pages/{id}/password":{"put":{"tags":["Status pages"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"password":{"type":"string","maxLength":256}},"required":["password"],"additionalProperties":false}}},"required":true},"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}},"summary":"Replace status pages {id} password","x-code-samples":[{"lang":"curl","source":"curl -X PUT \"https://api.24observe.com/api/v1/status-pages/{id}/password\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.put(\n  \"https://api.24observe.com/api/v1/status-pages/{id}/password\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/status-pages/{id}/password\", {\n  method: \"PUT\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/status-pages/{id}/components":{"get":{"tags":["Status pages"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}},"summary":"Read status pages {id} components","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/status-pages/{id}/components\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/status-pages/{id}/components\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/status-pages/{id}/components\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]},"post":{"tags":["Status pages"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"monitorId":{"type":"number"},"name":{"type":"string","minLength":1,"maxLength":255},"description":{"type":"string","maxLength":500},"groupName":{"type":"string","maxLength":100},"position":{"type":"integer","minimum":0,"default":0}},"required":["monitorId","name"],"additionalProperties":false}}},"required":true},"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}},"summary":"Create status pages {id} components","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/status-pages/{id}/components\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/status-pages/{id}/components\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/status-pages/{id}/components\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/status-pages/{id}/components/{cid}":{"patch":{"tags":["Status pages"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"monitorId":{"type":"number"},"name":{"type":"string","minLength":1,"maxLength":255},"description":{"type":"string","maxLength":500},"groupName":{"type":"string","maxLength":100},"position":{"type":"integer","minimum":0,"default":0}},"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true},{"schema":{"type":"string"},"in":"path","name":"cid","required":true}],"responses":{"200":{"description":"Default Response"}},"summary":"Update status pages {id} components {cid}","x-code-samples":[{"lang":"curl","source":"curl -X PATCH \"https://api.24observe.com/api/v1/status-pages/{id}/components/{cid}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.patch(\n  \"https://api.24observe.com/api/v1/status-pages/{id}/components/{cid}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/status-pages/{id}/components/{cid}\", {\n  method: \"PATCH\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]},"delete":{"tags":["Status pages"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true},{"schema":{"type":"string"},"in":"path","name":"cid","required":true}],"responses":{"200":{"description":"Default Response"}},"summary":"Delete status pages {id} components {cid}","x-code-samples":[{"lang":"curl","source":"curl -X DELETE \"https://api.24observe.com/api/v1/status-pages/{id}/components/{cid}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.delete(\n  \"https://api.24observe.com/api/v1/status-pages/{id}/components/{cid}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/status-pages/{id}/components/{cid}\", {\n  method: \"DELETE\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/maintenance-windows/":{"post":{"tags":["Maintenance"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"monitorId":{"type":"number"},"startsAt":{"type":"string","format":"date-time"},"endsAt":{"type":"string","format":"date-time"}},"required":["startsAt","endsAt"],"additionalProperties":false}}},"required":true},"responses":{"200":{"description":"Default Response"}},"summary":"Create maintenance","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/maintenance-windows/\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/maintenance-windows/\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/maintenance-windows/\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]},"get":{"tags":["Maintenance"],"responses":{"200":{"description":"Default Response"}},"summary":"List maintenance","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/maintenance-windows/\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/maintenance-windows/\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/maintenance-windows/\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/maintenance-windows/{id}":{"patch":{"tags":["Maintenance"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"monitorId":{"type":["number","null"]},"startsAt":{"type":"string","format":"date-time"},"endsAt":{"type":"string","format":"date-time"}},"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}},"summary":"Update maintenance {id}","x-code-samples":[{"lang":"curl","source":"curl -X PATCH \"https://api.24observe.com/api/v1/maintenance-windows/{id}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.patch(\n  \"https://api.24observe.com/api/v1/maintenance-windows/{id}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/maintenance-windows/{id}\", {\n  method: \"PATCH\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]},"delete":{"tags":["Maintenance"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}},"summary":"Delete maintenance {id}","x-code-samples":[{"lang":"curl","source":"curl -X DELETE \"https://api.24observe.com/api/v1/maintenance-windows/{id}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.delete(\n  \"https://api.24observe.com/api/v1/maintenance-windows/{id}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/maintenance-windows/{id}\", {\n  method: \"DELETE\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/audit-logs/verify":{"get":{"tags":["Audit"],"responses":{"200":{"description":"Default Response"}},"summary":"Read audit verify","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/audit-logs/verify\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/audit-logs/verify\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/audit-logs/verify\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/audit-logs/":{"get":{"tags":["Audit"],"responses":{"200":{"description":"Default Response"}},"summary":"List audit","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/audit-logs/\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/audit-logs/\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/audit-logs/\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/audit-logs/export":{"get":{"tags":["Audit"],"responses":{"200":{"description":"Default Response"}},"summary":"Read audit export","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/audit-logs/export\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/audit-logs/export\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/audit-logs/export\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/billing/":{"get":{"tags":["Billing"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"summary":"List billing","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/billing/\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/billing/\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/billing/\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/billing/checkout":{"post":{"tags":["Billing"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"plan":{"type":"string","enum":["starter","business","scale"]}},"required":["plan"],"additionalProperties":false}}},"required":true},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}},"503":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"summary":"Create billing checkout","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/billing/checkout\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/billing/checkout\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/billing/checkout\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/billing/portal":{"post":{"tags":["Billing"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}},"502":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}},"503":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"summary":"Create billing portal","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/billing/portal\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/billing/portal\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/billing/portal\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/billing/webhook":{"post":{"tags":["Billing"],"security":[],"responses":{"200":{"description":"Default Response"}},"summary":"Create billing webhook","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/billing/webhook\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/billing/webhook\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/billing/webhook\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/account/":{"delete":{"tags":["Account"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"confirm":{"type":"string","minLength":1}},"required":["confirm"],"additionalProperties":false}}},"required":true},"responses":{"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"summary":"Delete account","x-code-samples":[{"lang":"curl","source":"curl -X DELETE \"https://api.24observe.com/api/v1/account/\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.delete(\n  \"https://api.24observe.com/api/v1/account/\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/account/\", {\n  method: \"DELETE\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/settings/log-redaction":{"get":{"summary":"Read this org's log-redaction rules.","tags":["Settings"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/settings/log-redaction\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/settings/log-redaction\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/settings/log-redaction\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]},"put":{"summary":"Replace this org's log-redaction rules. Validates each regex; rejects on bad input.","tags":["Settings"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"rules":{"type":"array","items":{"type":"object","properties":{"pattern":{"type":"string"},"replacement":{"type":"string"},"flags":{"type":"string"}},"required":["pattern"],"additionalProperties":false},"maxItems":50}},"required":["rules"],"additionalProperties":false}}},"required":true},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"x-code-samples":[{"lang":"curl","source":"curl -X PUT \"https://api.24observe.com/api/v1/settings/log-redaction\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.put(\n  \"https://api.24observe.com/api/v1/settings/log-redaction\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/settings/log-redaction\", {\n  method: \"PUT\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/settings/digest":{"get":{"summary":"Read whether this org's weekly digest email is enabled.","tags":["Settings"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/settings/digest\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/settings/digest\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/settings/digest\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]},"put":{"summary":"Enable/disable this org's weekly uptime+incident digest email (owners/admins receive it).","tags":["Settings"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean"}},"required":["enabled"],"additionalProperties":false}}},"required":true},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"x-code-samples":[{"lang":"curl","source":"curl -X PUT \"https://api.24observe.com/api/v1/settings/digest\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.put(\n  \"https://api.24observe.com/api/v1/settings/digest\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/settings/digest\", {\n  method: \"PUT\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/settings/genai-pricing":{"get":{"summary":"Read this org's GenAI pricing overrides (negotiated per-1k-token rates).","tags":["Settings"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/settings/genai-pricing\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/settings/genai-pricing\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/settings/genai-pricing\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]},"put":{"summary":"Replace this org's GenAI pricing overrides. Rates are USD per 1,000 tokens; validated + capped.","tags":["Settings"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"overrides":{"type":"array","items":{"type":"object","properties":{"prefix":{"type":"string","minLength":1,"maxLength":100},"inPer1k":{"type":"number","minimum":0},"outPer1k":{"type":"number","minimum":0}},"required":["prefix","inPer1k","outPer1k"],"additionalProperties":false},"maxItems":100}},"required":["overrides"],"additionalProperties":false}}},"required":true},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"x-code-samples":[{"lang":"curl","source":"curl -X PUT \"https://api.24observe.com/api/v1/settings/genai-pricing\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.put(\n  \"https://api.24observe.com/api/v1/settings/genai-pricing\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/settings/genai-pricing\", {\n  method: \"PUT\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/settings/sso":{"get":{"summary":"Read this org's SSO (OIDC) connection (without the client secret).","tags":["Settings"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/settings/sso\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/settings/sso\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/settings/sso\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]},"put":{"summary":"Create or update this org's SSO (OIDC) connection. Secret is encrypted at rest.","tags":["Settings"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"issuer":{"type":"string","format":"uri","maxLength":512},"clientId":{"type":"string","minLength":1,"maxLength":512},"clientSecret":{"type":"string","minLength":1,"maxLength":1024},"enabled":{"type":"boolean"},"defaultRole":{"type":"string","enum":["admin","member","viewer"]},"allowedDomain":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}]}},"required":["issuer","clientId"],"additionalProperties":false}}},"required":true},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"x-code-samples":[{"lang":"curl","source":"curl -X PUT \"https://api.24observe.com/api/v1/settings/sso\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.put(\n  \"https://api.24observe.com/api/v1/settings/sso\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/settings/sso\", {\n  method: \"PUT\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]},"delete":{"summary":"Delete this org's SSO connection.","tags":["Settings"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"x-code-samples":[{"lang":"curl","source":"curl -X DELETE \"https://api.24observe.com/api/v1/settings/sso\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.delete(\n  \"https://api.24observe.com/api/v1/settings/sso\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/settings/sso\", {\n  method: \"DELETE\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/overview/":{"get":{"tags":["Overview"],"responses":{"200":{"description":"Default Response"}},"summary":"List overview","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/overview/\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/overview/\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/overview/\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/admin/query-stats/":{"get":{"tags":["Other"],"responses":{"200":{"description":"Default Response"}},"summary":"Read other query stats","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/admin/query-stats/\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/admin/query-stats/\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/admin/query-stats/\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/admin/ch-probe/":{"get":{"tags":["Other"],"responses":{"200":{"description":"Default Response"}},"summary":"Read other ch probe","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/admin/ch-probe/\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/admin/ch-probe/\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/admin/ch-probe/\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/me/tokens/":{"get":{"tags":["API tokens"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"prefix":{"type":"string"},"lastUsedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"expiresAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"revokedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time"},"scopes":{"type":"array","items":{"type":"string"}},"dailyMutationLimit":{"anyOf":[{"type":"integer"},{"type":"null"}]},"dailyLogBytesLimit":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["id","name","prefix","lastUsedAt","expiresAt","revokedAt","createdAt","scopes","dailyMutationLimit","dailyLogBytesLimit"],"additionalProperties":false}}}}}},"summary":"Read api tokens tokens","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/me/tokens/\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/me/tokens/\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/me/tokens/\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]},"post":{"tags":["API tokens"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"expiresAt":{"type":"string","format":"date-time"},"scopes":{"type":"array","items":{"type":"string","enum":["*","monitors:read","monitors:write","secrets:read","incidents:read","incidents:write","status-pages:read","status-pages:write","logs:read","logs:write","ai-agents:read","siem:read","siem:write","metrics:read","metrics:write","audit:read","tokens:write","maintenance:read","maintenance:write","webhooks:read","webhooks:write","saved-searches:read","saved-searches:write","on-call:read","on-call:write","escalations:read","escalations:write","context:read","sensors:read","sensors:write"]},"minItems":1,"maxItems":30},"dailyMutationLimit":{"type":"integer","exclusiveMinimum":0,"maximum":1000000},"dailyLogBytesLimit":{"type":"integer","exclusiveMinimum":0,"maximum":1000000000000}},"required":["name"],"additionalProperties":false}}},"required":true},"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"prefix":{"type":"string","description":"First 12 chars of the plaintext, safe to show in lists."},"token":{"type":"string","description":"Full plaintext (obs_<43-char base64url>). Only returned here; never readable again."},"expiresAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time"}},"required":["id","name","prefix","token","expiresAt","createdAt"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"summary":"Create api tokens tokens","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/me/tokens/\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/me/tokens/\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/me/tokens/\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/me/tokens/{id}":{"delete":{"tags":["API tokens"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}},"summary":"Delete api tokens tokens {id}","x-code-samples":[{"lang":"curl","source":"curl -X DELETE \"https://api.24observe.com/api/v1/me/tokens/{id}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.delete(\n  \"https://api.24observe.com/api/v1/me/tokens/{id}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/me/tokens/{id}\", {\n  method: \"DELETE\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/monitors/{id}/test-alert":{"post":{"tags":["Monitors"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}},"summary":"Create monitors {id} test alert","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/monitors/{id}/test-alert\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/monitors/{id}/test-alert\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/monitors/{id}/test-alert\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/export/monitors.csv":{"get":{"tags":["Export"],"responses":{"200":{"description":"Default Response"}},"summary":"Read export monitors.csv","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/export/monitors.csv\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/export/monitors.csv\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/export/monitors.csv\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/export/account.zip":{"get":{"summary":"Export all of this organization's data as a ZIP of per-resource JSON files.","tags":["Export"],"responses":{"200":{"description":"Default Response"}},"x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/export/account.zip\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/export/account.zip\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/export/account.zip\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/badge/monitors/{id}.svg":{"get":{"tags":["Badge"],"security":[],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}},"summary":"Read badge monitors {id}.svg","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/badge/monitors/{id}.svg\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/badge/monitors/{id}.svg\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/badge/monitors/{id}.svg\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/status-pages/public/{slug}/feed.xml":{"get":{"tags":["Status pages (public)"],"security":[],"parameters":[{"schema":{"type":"string"},"in":"path","name":"slug","required":true}],"responses":{"200":{"description":"Default Response"}},"summary":"Read status pages (public) public {slug} feed.xml","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/status-pages/public/{slug}/feed.xml\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/status-pages/public/{slug}/feed.xml\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/status-pages/public/{slug}/feed.xml\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/status-pages/public/{slug}/subscribe":{"post":{"tags":["Status pages (public)"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email","maxLength":255}},"required":["email"],"additionalProperties":false}}},"required":true},"security":[],"parameters":[{"schema":{"type":"string"},"in":"path","name":"slug","required":true}],"responses":{"200":{"description":"Default Response"}},"summary":"Create status pages (public) public {slug} subscribe","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/status-pages/public/{slug}/subscribe\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/status-pages/public/{slug}/subscribe\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/status-pages/public/{slug}/subscribe\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/status-pages/public/{slug}/subscribe/confirm":{"get":{"tags":["Status pages (public)"],"security":[],"parameters":[{"schema":{"type":"string"},"in":"path","name":"slug","required":true}],"responses":{"200":{"description":"Default Response"}},"summary":"Read status pages (public) public {slug} subscribe confirm","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/status-pages/public/{slug}/subscribe/confirm\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/status-pages/public/{slug}/subscribe/confirm\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/status-pages/public/{slug}/subscribe/confirm\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/status-pages/public/unsubscribe":{"get":{"tags":["Status pages (public)"],"security":[],"responses":{"200":{"description":"Default Response"}},"summary":"Read status pages (public) public unsubscribe","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/status-pages/public/unsubscribe\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/status-pages/public/unsubscribe\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/status-pages/public/unsubscribe\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/status-pages/{id}/subscribers":{"get":{"tags":["Status pages"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}},"summary":"Read status pages {id} subscribers","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/status-pages/{id}/subscribers\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/status-pages/{id}/subscribers\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/status-pages/{id}/subscribers\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/status-pages/{id}/subscribers/{sid}":{"delete":{"tags":["Status pages"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true},{"schema":{"type":"string"},"in":"path","name":"sid","required":true}],"responses":{"200":{"description":"Default Response"}},"summary":"Delete status pages {id} subscribers {sid}","x-code-samples":[{"lang":"curl","source":"curl -X DELETE \"https://api.24observe.com/api/v1/status-pages/{id}/subscribers/{sid}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.delete(\n  \"https://api.24observe.com/api/v1/status-pages/{id}/subscribers/{sid}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/status-pages/{id}/subscribers/{sid}\", {\n  method: \"DELETE\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/heartbeats/{token}":{"post":{"tags":["Heartbeats"],"security":[],"parameters":[{"schema":{"type":"string"},"in":"path","name":"token","required":true}],"responses":{"200":{"description":"Default Response"}},"summary":"Create heartbeats {token}","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/heartbeats/{token}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/heartbeats/{token}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/heartbeats/{token}\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/me/invites/":{"get":{"tags":["Invites"],"responses":{"200":{"description":"Default Response"}},"summary":"Read invites invites","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/me/invites/\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/me/invites/\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/me/invites/\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]},"post":{"tags":["Invites"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email","maxLength":255},"role":{"type":"string","enum":["admin","member","viewer"]}},"required":["email","role"],"additionalProperties":false}}},"required":true},"responses":{"200":{"description":"Default Response"}},"summary":"Create invites invites","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/me/invites/\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/me/invites/\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/me/invites/\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/me/invites/{id}":{"delete":{"tags":["Invites"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}},"summary":"Delete invites invites {id}","x-code-samples":[{"lang":"curl","source":"curl -X DELETE \"https://api.24observe.com/api/v1/me/invites/{id}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.delete(\n  \"https://api.24observe.com/api/v1/me/invites/{id}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/me/invites/{id}\", {\n  method: \"DELETE\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/invites/{token}":{"get":{"tags":["Invites"],"security":[],"parameters":[{"schema":{"type":"string"},"in":"path","name":"token","required":true}],"responses":{"200":{"description":"Default Response"}},"summary":"Read invites {token}","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/invites/{token}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/invites/{token}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/invites/{token}\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/invites/{token}/accept":{"post":{"tags":["Invites"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"password":{"type":"string","minLength":12,"maxLength":128}},"additionalProperties":false}}}},"security":[],"parameters":[{"schema":{"type":"string"},"in":"path","name":"token","required":true}],"responses":{"200":{"description":"Default Response"}},"summary":"Create invites {token} accept","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/invites/{token}/accept\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/invites/{token}/accept\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/invites/{token}/accept\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/internal/probe-result":{"post":{"tags":["Internal"],"responses":{"200":{"description":"Default Response"}},"summary":"Create internal probe result","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/internal/probe-result\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/internal/probe-result\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/internal/probe-result\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/internal/watchdog":{"get":{"tags":["Internal"],"responses":{"200":{"description":"Default Response"}},"summary":"Read internal watchdog","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/internal/watchdog\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/internal/watchdog\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/internal/watchdog\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/internal/sigma/matches":{"post":{"tags":["Internal"],"responses":{"200":{"description":"Default Response"}},"summary":"Create internal sigma matches","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/internal/sigma/matches\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/internal/sigma/matches\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/internal/sigma/matches\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/internal/twiml/voice":{"get":{"tags":["Internal"],"responses":{"200":{"description":"Default Response"}},"summary":"Read internal twiml voice","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/internal/twiml/voice\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/internal/twiml/voice\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/internal/twiml/voice\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/logs/ingest":{"post":{"tags":["Logs"],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"ts":{"anyOf":[{"type":"string","format":"date-time"},{"type":"integer","exclusiveMinimum":0}]},"level":{"type":"string","enum":["trace","debug","info","warn","error","fatal"]},"service":{"type":"string","minLength":1,"maxLength":255},"source":{"type":"string","maxLength":255},"host":{"type":"string","maxLength":255},"message":{"type":"string","minLength":1,"maxLength":8192},"attrs":{"type":"object","additionalProperties":{}},"event_id":{"type":"string","minLength":1,"maxLength":128}},"required":["message"],"additionalProperties":false},{"type":"array","items":{"$ref":"#/anyOf/0"},"minItems":1,"maxItems":500}]}}}},"responses":{"202":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"accepted":{"type":"integer","minimum":0},"rejected":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer"},"reason":{"type":"string"}},"required":["index","reason"],"additionalProperties":false}},"bytesAccounted":{"type":"integer","minimum":0}},"required":["accepted","rejected","bytesAccounted"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"summary":"Create logs ingest","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/logs/ingest\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/logs/ingest\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/logs/ingest\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/logs/ingest/heroku/{token}":{"post":{"tags":["Logs"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"token","required":true}],"responses":{"200":{"description":"Default Response"}},"summary":"Create logs ingest heroku {token}","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/logs/ingest/heroku/{token}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/logs/ingest/heroku/{token}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/logs/ingest/heroku/{token}\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/logs/ingest/vercel/{token}":{"post":{"tags":["Logs"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"token","required":true}],"responses":{"200":{"description":"Default Response"}},"summary":"Create logs ingest vercel {token}","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/logs/ingest/vercel/{token}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/logs/ingest/vercel/{token}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/logs/ingest/vercel/{token}\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/logs/ingest/aws-firehose/{token}":{"post":{"tags":["Logs"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"token","required":true}],"responses":{"200":{"description":"Default Response"}},"summary":"Create logs ingest aws firehose {token}","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/logs/ingest/aws-firehose/{token}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/logs/ingest/aws-firehose/{token}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/logs/ingest/aws-firehose/{token}\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/logs/search":{"get":{"tags":["Logs"],"parameters":[{"schema":{"type":"string","maxLength":1024},"in":"query","name":"q","required":false},{"schema":{"type":"string","maxLength":2048},"in":"query","name":"query","required":false},{"schema":{"type":"string","maxLength":255},"in":"query","name":"service","required":false},{"schema":{"type":"string","enum":["trace","debug","info","warn","error","fatal"]},"in":"query","name":"level","required":false},{"schema":{"type":"string","format":"date-time"},"in":"query","name":"from","required":false},{"schema":{"type":"string","format":"date-time"},"in":"query","name":"to","required":false},{"schema":{"type":"integer","minimum":1,"maximum":1000},"in":"query","name":"limit","required":false},{"schema":{"type":"string","maxLength":64},"in":"query","name":"cursor","required":false}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"events":{"type":"array","items":{"type":"object","properties":{"ts":{"type":"string","format":"date-time"},"level":{"type":"string"},"service":{"type":"string"},"source":{"type":"string"},"host":{"type":"string"},"message":{"type":"string"},"attrs":{"type":"object","additionalProperties":{}}},"required":["ts","level","service","source","host","message","attrs"],"additionalProperties":false}},"nextCursor":{"type":["null","string"]},"tookMs":{"type":"integer","minimum":0},"facets":{"type":"object","additionalProperties":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"count":{"type":"integer","exclusiveMinimum":0}},"required":["value","count"],"additionalProperties":false}}}},"required":["events","nextCursor","tookMs","facets"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"summary":"Read logs search","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/logs/search\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/logs/search\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/logs/search\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/logs/query":{"post":{"tags":["Logs"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string","minLength":1,"maxLength":4096},"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"}},"required":["query"],"additionalProperties":false}}},"required":true},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"summary":"Create logs query","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/logs/query\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/logs/query\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/logs/query\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/logs/patterns":{"get":{"tags":["Logs"],"parameters":[{"schema":{"type":"string","format":"date-time"},"in":"query","name":"from","required":false},{"schema":{"type":"string","format":"date-time"},"in":"query","name":"to","required":false},{"schema":{"type":"string","maxLength":255},"in":"query","name":"service","required":false},{"schema":{"type":"string","enum":["trace","debug","info","warn","error","fatal"]},"in":"query","name":"level","required":false},{"schema":{"type":"string","maxLength":1024},"in":"query","name":"q","required":false},{"schema":{"type":"integer","minimum":1,"maximum":200},"in":"query","name":"limit","required":false}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"patterns":{"type":"array","items":{"type":"object","properties":{"templateHash":{"type":"string"},"template":{"type":"string"},"sample":{"type":"string"},"service":{"type":"string"},"level":{"type":"string"},"count":{"type":"integer"},"firstSeen":{"type":"string"},"lastSeen":{"type":"string"}},"required":["templateHash","template","sample","service","level","count","firstSeen","lastSeen"],"additionalProperties":false}},"tookMs":{"type":"integer","minimum":0},"scannedRows":{"type":"integer","minimum":0}},"required":["patterns","tookMs","scannedRows"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"summary":"Read logs patterns","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/logs/patterns\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/logs/patterns\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/logs/patterns\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/logs/archive":{"get":{"tags":["Logs"],"parameters":[{"schema":{"type":"string","maxLength":1024},"in":"query","name":"q","required":false},{"schema":{"type":"string","maxLength":2048},"in":"query","name":"query","required":false},{"schema":{"type":"string","maxLength":255},"in":"query","name":"service","required":false},{"schema":{"type":"string","enum":["trace","debug","info","warn","error","fatal"]},"in":"query","name":"level","required":false},{"schema":{"type":"string","format":"date-time"},"in":"query","name":"from","required":false},{"schema":{"type":"string","format":"date-time"},"in":"query","name":"to","required":false},{"schema":{"type":"integer","minimum":1,"maximum":1000},"in":"query","name":"limit","required":false},{"schema":{"type":"string","maxLength":64},"in":"query","name":"cursor","required":false}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"events":{"type":"array","items":{"type":"object","properties":{"ts":{"type":"string","format":"date-time"},"level":{"type":"string"},"service":{"type":"string"},"source":{"type":"string"},"host":{"type":"string"},"message":{"type":"string"},"attrs":{"type":"object","additionalProperties":{}}},"required":["ts","level","service","source","host","message","attrs"],"additionalProperties":false}},"nextCursor":{"type":["null","string"]},"tookMs":{"type":"integer","minimum":0},"facets":{"type":"object","additionalProperties":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"count":{"type":"integer","exclusiveMinimum":0}},"required":["value","count"],"additionalProperties":false}}}},"required":["events","nextCursor","tookMs","facets"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"summary":"Read logs archive","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/logs/archive\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/logs/archive\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/logs/archive\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/logs/tail/session":{"post":{"tags":["Logs"],"responses":{"200":{"description":"Default Response"}},"summary":"Create logs tail session","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/logs/tail/session\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/logs/tail/session\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/logs/tail/session\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/logs/tail":{"get":{"tags":["Logs"],"parameters":[{"schema":{"type":"string","maxLength":1024},"in":"query","name":"q","required":false},{"schema":{"type":"string","maxLength":255},"in":"query","name":"service","required":false},{"schema":{"type":"string","enum":["trace","debug","info","warn","error","fatal"]},"in":"query","name":"level","required":false},{"schema":{"type":"string","maxLength":128},"in":"query","name":"token","required":false}],"responses":{"200":{"description":"Default Response"}},"summary":"Read logs tail","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/logs/tail\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/logs/tail\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/logs/tail\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/log-alerts/":{"get":{"tags":["Log alerts"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"organizationId":{"type":"integer"},"name":{"type":"string"},"kind":{"type":"string","enum":["threshold","anomaly"]},"query":{"type":["null","string"]},"kql":{"type":["null","string"]},"severity":{"type":"string","enum":["low","medium","high","critical"]},"mitreTechnique":{"type":["null","string"]},"description":{"type":["null","string"]},"rulePack":{"type":["null","string"]},"seeded":{"type":"boolean"},"service":{"type":["null","string"]},"level":{"type":["null","string"]},"threshold":{"type":"integer"},"windowSec":{"type":"integer"},"baselineHours":{"anyOf":[{"type":"integer"},{"type":"null"}]},"ratioThreshold":{"type":["null","number"]},"minBaselineEvents":{"anyOf":[{"type":"integer"},{"type":"null"}]},"openLatched":{"type":"boolean"},"enabled":{"type":"boolean"},"hasAlertEmail":{"type":"boolean"},"hasAlertWebhook":{"type":"boolean"},"hasAlertSlack":{"type":"boolean"},"hasAlertDiscord":{"type":"boolean"},"hasAlertMsteams":{"type":"boolean"},"hasAlertTelegram":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","organizationId","name","kind","query","kql","severity","mitreTechnique","description","rulePack","seeded","service","level","threshold","windowSec","baselineHours","ratioThreshold","minBaselineEvents","openLatched","enabled","hasAlertEmail","hasAlertWebhook","hasAlertSlack","hasAlertDiscord","hasAlertMsteams","hasAlertTelegram","createdAt","updatedAt"],"additionalProperties":false}}}}}},"summary":"List log alerts","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/log-alerts/\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/log-alerts/\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/log-alerts/\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]},"post":{"tags":["Log alerts"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255},"kind":{"type":"string","enum":["threshold","anomaly"]},"query":{"type":"string","maxLength":1024},"kql":{"type":"string","maxLength":2048},"severity":{"type":"string","enum":["low","medium","high","critical"]},"mitreTechnique":{"type":"string","pattern":"^T\\d{4}(\\.\\d{3})?$","maxLength":16},"description":{"type":"string","maxLength":2048},"service":{"type":"string","maxLength":255},"level":{"type":"string","enum":["trace","debug","info","warn","error","fatal"]},"threshold":{"type":"integer","minimum":1,"maximum":1000000},"windowSec":{"type":"integer","minimum":30,"maximum":86400},"baselineHours":{"type":"integer","minimum":1,"maximum":720},"ratioThreshold":{"type":"number","minimum":1.1,"maximum":1000},"minBaselineEvents":{"type":"integer","minimum":1,"maximum":1000000},"enabled":{"type":"boolean"},"alertEmail":{"type":"string","format":"email","maxLength":255},"alertWebhookUrl":{"type":"string","format":"uri","maxLength":2048},"alertSlackUrl":{"type":"string","format":"uri","maxLength":2048},"alertDiscordUrl":{"type":"string","format":"uri","maxLength":2048},"alertMsteamsUrl":{"type":"string","format":"uri","maxLength":2048},"alertTelegramBotToken":{"type":"string","maxLength":128},"alertTelegramChatId":{"type":"string","maxLength":64}},"required":["name"],"additionalProperties":false}}},"required":true},"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer"},"organizationId":{"type":"integer"},"name":{"type":"string"},"kind":{"type":"string","enum":["threshold","anomaly"]},"query":{"type":["null","string"]},"kql":{"type":["null","string"]},"severity":{"type":"string","enum":["low","medium","high","critical"]},"mitreTechnique":{"type":["null","string"]},"description":{"type":["null","string"]},"rulePack":{"type":["null","string"]},"seeded":{"type":"boolean"},"service":{"type":["null","string"]},"level":{"type":["null","string"]},"threshold":{"type":"integer"},"windowSec":{"type":"integer"},"baselineHours":{"anyOf":[{"type":"integer"},{"type":"null"}]},"ratioThreshold":{"type":["null","number"]},"minBaselineEvents":{"anyOf":[{"type":"integer"},{"type":"null"}]},"openLatched":{"type":"boolean"},"enabled":{"type":"boolean"},"hasAlertEmail":{"type":"boolean"},"hasAlertWebhook":{"type":"boolean"},"hasAlertSlack":{"type":"boolean"},"hasAlertDiscord":{"type":"boolean"},"hasAlertMsteams":{"type":"boolean"},"hasAlertTelegram":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","organizationId","name","kind","query","kql","severity","mitreTechnique","description","rulePack","seeded","service","level","threshold","windowSec","baselineHours","ratioThreshold","minBaselineEvents","openLatched","enabled","hasAlertEmail","hasAlertWebhook","hasAlertSlack","hasAlertDiscord","hasAlertMsteams","hasAlertTelegram","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"summary":"Create log alerts","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/log-alerts/\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/log-alerts/\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/log-alerts/\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/log-alerts/catalog":{"get":{"tags":["Log alerts"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"packs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"}},"required":["id","title","description"],"additionalProperties":false}},"rules":{"type":"array","items":{"type":"object","properties":{"pack":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"severity":{"type":"string","enum":["low","medium","high","critical"]},"mitreTechnique":{"type":["null","string"]},"kind":{"type":"string","enum":["threshold","anomaly"]},"kql":{"type":"string"},"windowSec":{"type":"integer"},"threshold":{"anyOf":[{"type":"integer"},{"type":"null"}]},"ratioThreshold":{"type":["null","number"]}},"required":["pack","name","description","severity","mitreTechnique","kind","kql","windowSec","threshold","ratioThreshold"],"additionalProperties":false}}},"required":["packs","rules"],"additionalProperties":false}}}}},"summary":"Read log alerts catalog","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/log-alerts/catalog\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/log-alerts/catalog\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/log-alerts/catalog\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/log-alerts/seed":{"post":{"tags":["Log alerts"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"packs":{"type":"array","items":{"type":"string","minLength":1,"maxLength":64},"maxItems":50},"enable":{"type":"boolean"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"seeded":{"type":"integer","minimum":0},"skipped":{"type":"integer","minimum":0},"packs":{"type":"array","items":{"type":"string"}},"enabled":{"type":"boolean"}},"required":["seeded","skipped","packs","enabled"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"summary":"Create log alerts seed","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/log-alerts/seed\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/log-alerts/seed\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/log-alerts/seed\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/log-alerts/{id}":{"get":{"tags":["Log alerts"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer"},"organizationId":{"type":"integer"},"name":{"type":"string"},"kind":{"type":"string","enum":["threshold","anomaly"]},"query":{"type":["null","string"]},"kql":{"type":["null","string"]},"severity":{"type":"string","enum":["low","medium","high","critical"]},"mitreTechnique":{"type":["null","string"]},"description":{"type":["null","string"]},"rulePack":{"type":["null","string"]},"seeded":{"type":"boolean"},"service":{"type":["null","string"]},"level":{"type":["null","string"]},"threshold":{"type":"integer"},"windowSec":{"type":"integer"},"baselineHours":{"anyOf":[{"type":"integer"},{"type":"null"}]},"ratioThreshold":{"type":["null","number"]},"minBaselineEvents":{"anyOf":[{"type":"integer"},{"type":"null"}]},"openLatched":{"type":"boolean"},"enabled":{"type":"boolean"},"hasAlertEmail":{"type":"boolean"},"hasAlertWebhook":{"type":"boolean"},"hasAlertSlack":{"type":"boolean"},"hasAlertDiscord":{"type":"boolean"},"hasAlertMsteams":{"type":"boolean"},"hasAlertTelegram":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","organizationId","name","kind","query","kql","severity","mitreTechnique","description","rulePack","seeded","service","level","threshold","windowSec","baselineHours","ratioThreshold","minBaselineEvents","openLatched","enabled","hasAlertEmail","hasAlertWebhook","hasAlertSlack","hasAlertDiscord","hasAlertMsteams","hasAlertTelegram","createdAt","updatedAt"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"summary":"Read log alerts {id}","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/log-alerts/{id}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/log-alerts/{id}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/log-alerts/{id}\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]},"patch":{"tags":["Log alerts"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255},"kind":{"type":"string","enum":["threshold","anomaly"]},"query":{"type":"string","maxLength":1024},"kql":{"type":"string","maxLength":2048},"severity":{"type":"string","enum":["low","medium","high","critical"]},"mitreTechnique":{"type":"string","pattern":"^T\\d{4}(\\.\\d{3})?$","maxLength":16},"description":{"type":"string","maxLength":2048},"service":{"type":"string","maxLength":255},"level":{"type":"string","enum":["trace","debug","info","warn","error","fatal"]},"threshold":{"type":"integer","minimum":1,"maximum":1000000},"windowSec":{"type":"integer","minimum":30,"maximum":86400},"baselineHours":{"type":"integer","minimum":1,"maximum":720},"ratioThreshold":{"type":"number","minimum":1.1,"maximum":1000},"minBaselineEvents":{"type":"integer","minimum":1,"maximum":1000000},"enabled":{"type":"boolean"},"alertEmail":{"type":"string","format":"email","maxLength":255},"alertWebhookUrl":{"type":"string","format":"uri","maxLength":2048},"alertSlackUrl":{"type":"string","format":"uri","maxLength":2048},"alertDiscordUrl":{"type":"string","format":"uri","maxLength":2048},"alertMsteamsUrl":{"type":"string","format":"uri","maxLength":2048},"alertTelegramBotToken":{"type":"string","maxLength":128},"alertTelegramChatId":{"type":"string","maxLength":64}},"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer"},"organizationId":{"type":"integer"},"name":{"type":"string"},"kind":{"type":"string","enum":["threshold","anomaly"]},"query":{"type":["null","string"]},"kql":{"type":["null","string"]},"severity":{"type":"string","enum":["low","medium","high","critical"]},"mitreTechnique":{"type":["null","string"]},"description":{"type":["null","string"]},"rulePack":{"type":["null","string"]},"seeded":{"type":"boolean"},"service":{"type":["null","string"]},"level":{"type":["null","string"]},"threshold":{"type":"integer"},"windowSec":{"type":"integer"},"baselineHours":{"anyOf":[{"type":"integer"},{"type":"null"}]},"ratioThreshold":{"type":["null","number"]},"minBaselineEvents":{"anyOf":[{"type":"integer"},{"type":"null"}]},"openLatched":{"type":"boolean"},"enabled":{"type":"boolean"},"hasAlertEmail":{"type":"boolean"},"hasAlertWebhook":{"type":"boolean"},"hasAlertSlack":{"type":"boolean"},"hasAlertDiscord":{"type":"boolean"},"hasAlertMsteams":{"type":"boolean"},"hasAlertTelegram":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","organizationId","name","kind","query","kql","severity","mitreTechnique","description","rulePack","seeded","service","level","threshold","windowSec","baselineHours","ratioThreshold","minBaselineEvents","openLatched","enabled","hasAlertEmail","hasAlertWebhook","hasAlertSlack","hasAlertDiscord","hasAlertMsteams","hasAlertTelegram","createdAt","updatedAt"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"summary":"Update log alerts {id}","x-code-samples":[{"lang":"curl","source":"curl -X PATCH \"https://api.24observe.com/api/v1/log-alerts/{id}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.patch(\n  \"https://api.24observe.com/api/v1/log-alerts/{id}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/log-alerts/{id}\", {\n  method: \"PATCH\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]},"delete":{"tags":["Log alerts"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"summary":"Delete log alerts {id}","x-code-samples":[{"lang":"curl","source":"curl -X DELETE \"https://api.24observe.com/api/v1/log-alerts/{id}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.delete(\n  \"https://api.24observe.com/api/v1/log-alerts/{id}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/log-alerts/{id}\", {\n  method: \"DELETE\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/metric-alerts/":{"get":{"tags":["Metric alerts"],"responses":{"200":{"description":"Default Response"}},"summary":"List metric alerts","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/metric-alerts/\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/metric-alerts/\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/metric-alerts/\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]},"post":{"tags":["Metric alerts"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255},"metricName":{"type":"string","minLength":1,"maxLength":255},"service":{"type":"string","maxLength":255},"aggregation":{"type":"string","enum":["avg","sum","min","max","last"],"default":"avg"},"comparator":{"type":"string","enum":["gt","lt","gte","lte"],"default":"gt"},"threshold":{"type":"number"},"windowSec":{"type":"integer","minimum":60,"maximum":86400,"default":300},"severity":{"type":"string","enum":["low","medium","high","critical"],"default":"medium"},"enabled":{"type":"boolean","default":true}},"required":["name","metricName","threshold"],"additionalProperties":false}}},"required":true},"responses":{"200":{"description":"Default Response"}},"summary":"Create metric alerts","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/metric-alerts/\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/metric-alerts/\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/metric-alerts/\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/metric-alerts/{id}":{"get":{"tags":["Metric alerts"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}},"summary":"Read metric alerts {id}","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/metric-alerts/{id}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/metric-alerts/{id}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/metric-alerts/{id}\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]},"patch":{"tags":["Metric alerts"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean"},"threshold":{"type":"number"}},"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}},"summary":"Update metric alerts {id}","x-code-samples":[{"lang":"curl","source":"curl -X PATCH \"https://api.24observe.com/api/v1/metric-alerts/{id}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.patch(\n  \"https://api.24observe.com/api/v1/metric-alerts/{id}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/metric-alerts/{id}\", {\n  method: \"PATCH\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]},"delete":{"tags":["Metric alerts"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}},"summary":"Delete metric alerts {id}","x-code-samples":[{"lang":"curl","source":"curl -X DELETE \"https://api.24observe.com/api/v1/metric-alerts/{id}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.delete(\n  \"https://api.24observe.com/api/v1/metric-alerts/{id}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/metric-alerts/{id}\", {\n  method: \"DELETE\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/log-metrics/":{"get":{"tags":["Log metrics"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"organizationId":{"type":"integer"},"name":{"type":"string"},"query":{"type":["null","string"]},"service":{"type":["null","string"]},"level":{"type":["null","string"]},"bucketSec":{"type":"integer"},"enabled":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","organizationId","name","query","service","level","bucketSec","enabled","createdAt","updatedAt"],"additionalProperties":false}}}}}},"summary":"List log metrics","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/log-metrics/\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/log-metrics/\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/log-metrics/\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]},"post":{"tags":["Log metrics"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255},"query":{"type":"string","maxLength":1024},"service":{"type":"string","maxLength":255},"level":{"type":"string","enum":["trace","debug","info","warn","error","fatal"]},"bucketSec":{"type":"number","enum":[60,300,900,1800,3600]},"enabled":{"type":"boolean"}},"required":["name"],"additionalProperties":false}}},"required":true},"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer"},"organizationId":{"type":"integer"},"name":{"type":"string"},"query":{"type":["null","string"]},"service":{"type":["null","string"]},"level":{"type":["null","string"]},"bucketSec":{"type":"integer"},"enabled":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","organizationId","name","query","service","level","bucketSec","enabled","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"summary":"Create log metrics","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/log-metrics/\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/log-metrics/\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/log-metrics/\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/log-metrics/{id}":{"get":{"tags":["Log metrics"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer"},"organizationId":{"type":"integer"},"name":{"type":"string"},"query":{"type":["null","string"]},"service":{"type":["null","string"]},"level":{"type":["null","string"]},"bucketSec":{"type":"integer"},"enabled":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","organizationId","name","query","service","level","bucketSec","enabled","createdAt","updatedAt"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"summary":"Read log metrics {id}","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/log-metrics/{id}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/log-metrics/{id}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/log-metrics/{id}\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]},"patch":{"tags":["Log metrics"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255},"query":{"type":"string","maxLength":1024},"service":{"type":"string","maxLength":255},"level":{"type":"string","enum":["trace","debug","info","warn","error","fatal"]},"bucketSec":{"type":"number","enum":[60,300,900,1800,3600]},"enabled":{"type":"boolean"}},"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer"},"organizationId":{"type":"integer"},"name":{"type":"string"},"query":{"type":["null","string"]},"service":{"type":["null","string"]},"level":{"type":["null","string"]},"bucketSec":{"type":"integer"},"enabled":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","organizationId","name","query","service","level","bucketSec","enabled","createdAt","updatedAt"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"summary":"Update log metrics {id}","x-code-samples":[{"lang":"curl","source":"curl -X PATCH \"https://api.24observe.com/api/v1/log-metrics/{id}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.patch(\n  \"https://api.24observe.com/api/v1/log-metrics/{id}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/log-metrics/{id}\", {\n  method: \"PATCH\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]},"delete":{"tags":["Log metrics"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"204":{"description":"Default Response"},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"summary":"Delete log metrics {id}","x-code-samples":[{"lang":"curl","source":"curl -X DELETE \"https://api.24observe.com/api/v1/log-metrics/{id}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.delete(\n  \"https://api.24observe.com/api/v1/log-metrics/{id}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/log-metrics/{id}\", {\n  method: \"DELETE\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/log-metrics/{id}/series":{"get":{"tags":["Log metrics"],"parameters":[{"schema":{"type":"string","format":"date-time"},"in":"query","name":"from","required":false},{"schema":{"type":"string","format":"date-time"},"in":"query","name":"to","required":false},{"schema":{"type":"number","enum":[60,300,900,1800,3600]},"in":"query","name":"bucketSec","required":false},{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"metricId":{"type":"integer"},"bucketSec":{"type":"integer"},"points":{"type":"array","items":{"type":"object","properties":{"ts":{"type":"string","format":"date-time"},"value":{"type":"integer","minimum":0}},"required":["ts","value"],"additionalProperties":false}},"tookMs":{"type":"integer","minimum":0}},"required":["metricId","bucketSec","points","tookMs"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"summary":"Read log metrics {id} series","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/log-metrics/{id}/series\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/log-metrics/{id}/series\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/log-metrics/{id}/series\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/ai-agents/connection":{"get":{"tags":["AI Agents"],"responses":{"200":{"description":"Default Response"}},"summary":"Read ai agents connection","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/ai-agents/connection\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/ai-agents/connection\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/ai-agents/connection\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/ai-agents/overview":{"get":{"tags":["AI Agents"],"parameters":[{"schema":{"type":"integer","minimum":0},"in":"query","name":"fromMs","required":false},{"schema":{"type":"integer","minimum":0},"in":"query","name":"toMs","required":false}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"window":{"type":"object","properties":{"fromMs":{"type":"integer"},"toMs":{"type":"integer"}},"required":["fromMs","toMs"],"additionalProperties":false},"totals":{"type":"object","properties":{"calls":{"type":"integer","minimum":0},"inputTokens":{"type":"integer","minimum":0},"outputTokens":{"type":"integer","minimum":0},"totalTokens":{"type":"integer","minimum":0},"errors":{"type":"integer","minimum":0},"errorRatePct":{"type":"number"},"avgLatencyMs":{"type":"number"},"p95LatencyMs":{"type":"number"},"estimatedCostUsd":{"type":"number"}},"required":["calls","inputTokens","outputTokens","totalTokens","errors","errorRatePct","avgLatencyMs","p95LatencyMs","estimatedCostUsd"],"additionalProperties":false},"cost":{"type":"object","properties":{"totalUsd":{"type":"number"},"reportedUsd":{"type":"number"},"overrideUsd":{"type":"number"},"listUsd":{"type":"number"},"coveragePct":{"type":"number"},"unpricedCalls":{"type":"integer","minimum":0},"unknownModels":{"type":"array","items":{"type":"string"}},"pricingAsOf":{"type":"string"}},"required":["totalUsd","reportedUsd","overrideUsd","listUsd","coveragePct","unpricedCalls","unknownModels","pricingAsOf"],"additionalProperties":false},"byModel":{"type":"array","items":{"type":"object","properties":{"model":{"type":"string"},"calls":{"type":"integer","minimum":0},"inputTokens":{"type":"integer","minimum":0},"outputTokens":{"type":"integer","minimum":0},"totalTokens":{"type":"integer","minimum":0},"errors":{"type":"integer","minimum":0},"avgLatencyMs":{"type":"number"},"costUsd":{"type":"number"},"costSource":{"type":"string","enum":["reported","override","list","mixed","unknown"]}},"required":["model","calls","inputTokens","outputTokens","totalTokens","errors","avgLatencyMs","costUsd","costSource"],"additionalProperties":false}},"byAgent":{"type":"array","items":{"type":"object","properties":{"agent":{"type":"string"},"calls":{"type":"integer","minimum":0},"totalTokens":{"type":"integer","minimum":0},"errors":{"type":"integer","minimum":0},"avgLatencyMs":{"type":"number"}},"required":["agent","calls","totalTokens","errors","avgLatencyMs"],"additionalProperties":false}},"byOperation":{"type":"array","items":{"type":"object","properties":{"operation":{"type":"string"},"calls":{"type":"integer","minimum":0},"totalTokens":{"type":"integer","minimum":0}},"required":["operation","calls","totalTokens"],"additionalProperties":false}},"tookMs":{"type":"integer","minimum":0}},"required":["window","totals","cost","byModel","byAgent","byOperation","tookMs"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"summary":"Read ai agents overview","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/ai-agents/overview\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/ai-agents/overview\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/ai-agents/overview\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/ai-agents/security":{"get":{"tags":["AI Agents"],"parameters":[{"schema":{"type":"integer","minimum":0},"in":"query","name":"fromMs","required":false},{"schema":{"type":"integer","minimum":0},"in":"query","name":"toMs","required":false}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"summary":"Read ai agents security","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/ai-agents/security\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/ai-agents/security\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/ai-agents/security\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/log-errors/":{"get":{"tags":["Log errors"],"parameters":[{"schema":{"type":"string","enum":["open","resolved","ignored","all"]},"in":"query","name":"status","required":false},{"schema":{"type":"string","maxLength":255},"in":"query","name":"service","required":false},{"schema":{"type":"integer","minimum":1,"maximum":200},"in":"query","name":"limit","required":false}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"organizationId":{"type":"integer"},"signatureHash":{"type":"string"},"signature":{"type":"string"},"errorType":{"type":"string"},"service":{"type":["null","string"]},"sampleMessage":{"type":["null","string"]},"firstSeen":{"type":"string","format":"date-time"},"lastSeen":{"type":"string","format":"date-time"},"totalCount":{"type":"integer","minimum":0},"resolvedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"resolvedByUserId":{"anyOf":[{"type":"integer"},{"type":"null"}]},"ignored":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","organizationId","signatureHash","signature","errorType","service","sampleMessage","firstSeen","lastSeen","totalCount","resolvedAt","resolvedByUserId","ignored","createdAt"],"additionalProperties":false}}}}}},"summary":"List log errors","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/log-errors/\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/log-errors/\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/log-errors/\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/log-errors/{id}":{"get":{"tags":["Log errors"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer"},"organizationId":{"type":"integer"},"signatureHash":{"type":"string"},"signature":{"type":"string"},"errorType":{"type":"string"},"service":{"type":["null","string"]},"sampleMessage":{"type":["null","string"]},"firstSeen":{"type":"string","format":"date-time"},"lastSeen":{"type":"string","format":"date-time"},"totalCount":{"type":"integer","minimum":0},"resolvedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"resolvedByUserId":{"anyOf":[{"type":"integer"},{"type":"null"}]},"ignored":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","organizationId","signatureHash","signature","errorType","service","sampleMessage","firstSeen","lastSeen","totalCount","resolvedAt","resolvedByUserId","ignored","createdAt"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"summary":"Read log errors {id}","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/log-errors/{id}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/log-errors/{id}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/log-errors/{id}\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]},"patch":{"tags":["Log errors"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"resolved":{"type":"boolean"},"ignored":{"type":"boolean"}},"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer"},"organizationId":{"type":"integer"},"signatureHash":{"type":"string"},"signature":{"type":"string"},"errorType":{"type":"string"},"service":{"type":["null","string"]},"sampleMessage":{"type":["null","string"]},"firstSeen":{"type":"string","format":"date-time"},"lastSeen":{"type":"string","format":"date-time"},"totalCount":{"type":"integer","minimum":0},"resolvedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"resolvedByUserId":{"anyOf":[{"type":"integer"},{"type":"null"}]},"ignored":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","organizationId","signatureHash","signature","errorType","service","sampleMessage","firstSeen","lastSeen","totalCount","resolvedAt","resolvedByUserId","ignored","createdAt"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"summary":"Update log errors {id}","x-code-samples":[{"lang":"curl","source":"curl -X PATCH \"https://api.24observe.com/api/v1/log-errors/{id}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.patch(\n  \"https://api.24observe.com/api/v1/log-errors/{id}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/log-errors/{id}\", {\n  method: \"PATCH\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/assets":{"get":{"tags":["SIEM context"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"organizationId":{"type":"integer"},"ip":{"type":"string"},"hostname":{"type":["null","string"]},"owner":{"type":["null","string"]},"criticality":{"type":"string","enum":["low","medium","high","critical"]},"tags":{"type":"array","items":{"type":"string"}},"notes":{"type":["null","string"]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","organizationId","ip","hostname","owner","criticality","tags","notes","createdAt","updatedAt"],"additionalProperties":false}}}}}},"summary":"List siem context","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/assets\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/assets\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/assets\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]},"post":{"tags":["SIEM context"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"ip":{"type":"string","minLength":1,"maxLength":45},"hostname":{"type":"string","maxLength":255},"owner":{"type":"string","maxLength":255},"criticality":{"type":"string","enum":["low","medium","high","critical"]},"tags":{"type":"array","items":{"type":"string","maxLength":64},"maxItems":50},"notes":{"type":"string","maxLength":2048}},"required":["ip"],"additionalProperties":false}}},"required":true},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer"},"organizationId":{"type":"integer"},"ip":{"type":"string"},"hostname":{"type":["null","string"]},"owner":{"type":["null","string"]},"criticality":{"type":"string","enum":["low","medium","high","critical"]},"tags":{"type":"array","items":{"type":"string"}},"notes":{"type":["null","string"]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","organizationId","ip","hostname","owner","criticality","tags","notes","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"summary":"Create siem context","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/assets\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/assets\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/assets\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/assets/{id}":{"delete":{"tags":["SIEM context"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"summary":"Delete siem context {id}","x-code-samples":[{"lang":"curl","source":"curl -X DELETE \"https://api.24observe.com/api/v1/assets/{id}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.delete(\n  \"https://api.24observe.com/api/v1/assets/{id}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/assets/{id}\", {\n  method: \"DELETE\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/identities":{"get":{"tags":["SIEM context"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"organizationId":{"type":"integer"},"principal":{"type":"string"},"displayName":{"type":["null","string"]},"isInternal":{"type":"boolean"},"risk":{"type":"string","enum":["low","medium","high"]},"tags":{"type":"array","items":{"type":"string"}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","organizationId","principal","displayName","isInternal","risk","tags","createdAt","updatedAt"],"additionalProperties":false}}}}}},"summary":"List siem context","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/identities\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/identities\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/identities\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]},"post":{"tags":["SIEM context"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"principal":{"type":"string","minLength":1,"maxLength":255},"displayName":{"type":"string","maxLength":255},"isInternal":{"type":"boolean"},"risk":{"type":"string","enum":["low","medium","high"]},"tags":{"type":"array","items":{"type":"string","maxLength":64},"maxItems":50}},"required":["principal"],"additionalProperties":false}}},"required":true},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer"},"organizationId":{"type":"integer"},"principal":{"type":"string"},"displayName":{"type":["null","string"]},"isInternal":{"type":"boolean"},"risk":{"type":"string","enum":["low","medium","high"]},"tags":{"type":"array","items":{"type":"string"}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","organizationId","principal","displayName","isInternal","risk","tags","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"summary":"Create siem context","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/identities\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/identities\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/identities\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/identities/{id}":{"delete":{"tags":["SIEM context"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"summary":"Delete siem context {id}","x-code-samples":[{"lang":"curl","source":"curl -X DELETE \"https://api.24observe.com/api/v1/identities/{id}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.delete(\n  \"https://api.24observe.com/api/v1/identities/{id}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/identities/{id}\", {\n  method: \"DELETE\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/correlation-rules/":{"get":{"tags":["Correlation"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"organizationId":{"type":"integer"},"name":{"type":"string"},"kind":{"type":"string","enum":["sequence","cardinality"]},"severity":{"type":"string","enum":["low","medium","high","critical"]},"mitreTechnique":{"type":["null","string"]},"description":{"type":["null","string"]},"windowSec":{"type":"integer"},"joinField":{"type":"string"},"steps":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"kql":{"type":"string","minLength":1,"maxLength":2048}},"required":["kql"],"additionalProperties":false}},{"type":"null"}]},"matchKql":{"type":["null","string"]},"distinctField":{"type":["null","string"]},"threshold":{"anyOf":[{"type":"integer"},{"type":"null"}]},"enabled":{"type":"boolean"},"openLatched":{"type":"boolean"},"hasAlertEmail":{"type":"boolean"},"hasAlertWebhook":{"type":"boolean"},"hasAlertSlack":{"type":"boolean"},"hasAlertDiscord":{"type":"boolean"},"hasAlertMsteams":{"type":"boolean"},"hasAlertTelegram":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","organizationId","name","kind","severity","mitreTechnique","description","windowSec","joinField","steps","matchKql","distinctField","threshold","enabled","openLatched","hasAlertEmail","hasAlertWebhook","hasAlertSlack","hasAlertDiscord","hasAlertMsteams","hasAlertTelegram","createdAt","updatedAt"],"additionalProperties":false}}}}}},"summary":"List correlation","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/correlation-rules/\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/correlation-rules/\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/correlation-rules/\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]},"post":{"tags":["Correlation"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255},"kind":{"type":"string","enum":["sequence","cardinality"]},"severity":{"type":"string","enum":["low","medium","high","critical"]},"mitreTechnique":{"type":"string","pattern":"^T\\d{4}(\\.\\d{3})?$","maxLength":16},"description":{"type":"string","maxLength":2048},"windowSec":{"type":"integer","minimum":30,"maximum":86400},"joinField":{"type":"string","minLength":1,"maxLength":255},"steps":{"type":"array","items":{"type":"object","properties":{"kql":{"type":"string","minLength":1,"maxLength":2048}},"required":["kql"],"additionalProperties":false},"minItems":2,"maxItems":6},"matchKql":{"type":"string","maxLength":2048},"distinctField":{"type":"string","maxLength":255},"threshold":{"type":"integer","minimum":1,"maximum":1000000},"enabled":{"type":"boolean"},"alertEmail":{"type":"string","format":"email","maxLength":255},"alertWebhookUrl":{"type":"string","format":"uri","maxLength":2048},"alertSlackUrl":{"type":"string","format":"uri","maxLength":2048},"alertDiscordUrl":{"type":"string","format":"uri","maxLength":2048},"alertMsteamsUrl":{"type":"string","format":"uri","maxLength":2048},"alertTelegramBotToken":{"type":"string","maxLength":128},"alertTelegramChatId":{"type":"string","maxLength":64}},"required":["name","kind","joinField"],"additionalProperties":false}}},"required":true},"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer"},"organizationId":{"type":"integer"},"name":{"type":"string"},"kind":{"type":"string","enum":["sequence","cardinality"]},"severity":{"type":"string","enum":["low","medium","high","critical"]},"mitreTechnique":{"type":["null","string"]},"description":{"type":["null","string"]},"windowSec":{"type":"integer"},"joinField":{"type":"string"},"steps":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"kql":{"type":"string","minLength":1,"maxLength":2048}},"required":["kql"],"additionalProperties":false}},{"type":"null"}]},"matchKql":{"type":["null","string"]},"distinctField":{"type":["null","string"]},"threshold":{"anyOf":[{"type":"integer"},{"type":"null"}]},"enabled":{"type":"boolean"},"openLatched":{"type":"boolean"},"hasAlertEmail":{"type":"boolean"},"hasAlertWebhook":{"type":"boolean"},"hasAlertSlack":{"type":"boolean"},"hasAlertDiscord":{"type":"boolean"},"hasAlertMsteams":{"type":"boolean"},"hasAlertTelegram":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","organizationId","name","kind","severity","mitreTechnique","description","windowSec","joinField","steps","matchKql","distinctField","threshold","enabled","openLatched","hasAlertEmail","hasAlertWebhook","hasAlertSlack","hasAlertDiscord","hasAlertMsteams","hasAlertTelegram","createdAt","updatedAt"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"summary":"Create correlation","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/correlation-rules/\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/correlation-rules/\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/correlation-rules/\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/correlation-rules/catalog":{"get":{"tags":["Correlation"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"kind":{"type":"string","enum":["sequence","cardinality"]},"severity":{"type":"string","enum":["low","medium","high","critical"]},"mitreTechnique":{"type":["null","string"]},"windowSec":{"type":"integer"},"joinField":{"type":"string"},"steps":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"kql":{"type":"string","minLength":1,"maxLength":2048}},"required":["kql"],"additionalProperties":false}},{"type":"null"}]},"matchKql":{"type":["null","string"]},"distinctField":{"type":["null","string"]},"threshold":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["name","description","kind","severity","mitreTechnique","windowSec","joinField","steps","matchKql","distinctField","threshold"],"additionalProperties":false}}}}}},"summary":"Read correlation catalog","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/correlation-rules/catalog\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/correlation-rules/catalog\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/correlation-rules/catalog\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/correlation-rules/seed":{"post":{"tags":["Correlation"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"enable":{"type":"boolean"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"seeded":{"type":"integer","minimum":0},"skipped":{"type":"integer","minimum":0},"enabled":{"type":"boolean"}},"required":["seeded","skipped","enabled"],"additionalProperties":false}}}}},"summary":"Create correlation seed","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/correlation-rules/seed\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/correlation-rules/seed\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/correlation-rules/seed\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/correlation-rules/{id}":{"get":{"tags":["Correlation"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer"},"organizationId":{"type":"integer"},"name":{"type":"string"},"kind":{"type":"string","enum":["sequence","cardinality"]},"severity":{"type":"string","enum":["low","medium","high","critical"]},"mitreTechnique":{"type":["null","string"]},"description":{"type":["null","string"]},"windowSec":{"type":"integer"},"joinField":{"type":"string"},"steps":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"kql":{"type":"string","minLength":1,"maxLength":2048}},"required":["kql"],"additionalProperties":false}},{"type":"null"}]},"matchKql":{"type":["null","string"]},"distinctField":{"type":["null","string"]},"threshold":{"anyOf":[{"type":"integer"},{"type":"null"}]},"enabled":{"type":"boolean"},"openLatched":{"type":"boolean"},"hasAlertEmail":{"type":"boolean"},"hasAlertWebhook":{"type":"boolean"},"hasAlertSlack":{"type":"boolean"},"hasAlertDiscord":{"type":"boolean"},"hasAlertMsteams":{"type":"boolean"},"hasAlertTelegram":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","organizationId","name","kind","severity","mitreTechnique","description","windowSec","joinField","steps","matchKql","distinctField","threshold","enabled","openLatched","hasAlertEmail","hasAlertWebhook","hasAlertSlack","hasAlertDiscord","hasAlertMsteams","hasAlertTelegram","createdAt","updatedAt"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"summary":"Read correlation {id}","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/correlation-rules/{id}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/correlation-rules/{id}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/correlation-rules/{id}\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]},"patch":{"tags":["Correlation"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255},"severity":{"type":"string","enum":["low","medium","high","critical"]},"mitreTechnique":{"type":"string","pattern":"^T\\d{4}(\\.\\d{3})?$","maxLength":16},"description":{"type":"string","maxLength":2048},"windowSec":{"type":"integer","minimum":30,"maximum":86400},"joinField":{"type":"string","minLength":1,"maxLength":255},"steps":{"type":"array","items":{"type":"object","properties":{"kql":{"type":"string","minLength":1,"maxLength":2048}},"required":["kql"],"additionalProperties":false},"minItems":2,"maxItems":6},"matchKql":{"type":"string","maxLength":2048},"distinctField":{"type":"string","maxLength":255},"threshold":{"type":"integer","minimum":1,"maximum":1000000},"enabled":{"type":"boolean"},"alertEmail":{"type":"string","format":"email","maxLength":255},"alertWebhookUrl":{"type":"string","format":"uri","maxLength":2048},"alertSlackUrl":{"type":"string","format":"uri","maxLength":2048},"alertDiscordUrl":{"type":"string","format":"uri","maxLength":2048},"alertMsteamsUrl":{"type":"string","format":"uri","maxLength":2048},"alertTelegramBotToken":{"type":"string","maxLength":128},"alertTelegramChatId":{"type":"string","maxLength":64}},"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer"},"organizationId":{"type":"integer"},"name":{"type":"string"},"kind":{"type":"string","enum":["sequence","cardinality"]},"severity":{"type":"string","enum":["low","medium","high","critical"]},"mitreTechnique":{"type":["null","string"]},"description":{"type":["null","string"]},"windowSec":{"type":"integer"},"joinField":{"type":"string"},"steps":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"kql":{"type":"string","minLength":1,"maxLength":2048}},"required":["kql"],"additionalProperties":false}},{"type":"null"}]},"matchKql":{"type":["null","string"]},"distinctField":{"type":["null","string"]},"threshold":{"anyOf":[{"type":"integer"},{"type":"null"}]},"enabled":{"type":"boolean"},"openLatched":{"type":"boolean"},"hasAlertEmail":{"type":"boolean"},"hasAlertWebhook":{"type":"boolean"},"hasAlertSlack":{"type":"boolean"},"hasAlertDiscord":{"type":"boolean"},"hasAlertMsteams":{"type":"boolean"},"hasAlertTelegram":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","organizationId","name","kind","severity","mitreTechnique","description","windowSec","joinField","steps","matchKql","distinctField","threshold","enabled","openLatched","hasAlertEmail","hasAlertWebhook","hasAlertSlack","hasAlertDiscord","hasAlertMsteams","hasAlertTelegram","createdAt","updatedAt"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"summary":"Update correlation {id}","x-code-samples":[{"lang":"curl","source":"curl -X PATCH \"https://api.24observe.com/api/v1/correlation-rules/{id}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.patch(\n  \"https://api.24observe.com/api/v1/correlation-rules/{id}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/correlation-rules/{id}\", {\n  method: \"PATCH\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]},"delete":{"tags":["Correlation"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"summary":"Delete correlation {id}","x-code-samples":[{"lang":"curl","source":"curl -X DELETE \"https://api.24observe.com/api/v1/correlation-rules/{id}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.delete(\n  \"https://api.24observe.com/api/v1/correlation-rules/{id}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/correlation-rules/{id}\", {\n  method: \"DELETE\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/iocs/":{"get":{"tags":["Threat intel"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"organizationId":{"anyOf":[{"type":"integer"},{"type":"null"}]},"type":{"type":"string","enum":["ip","domain","hash"]},"value":{"type":"string"},"source":{"type":"string"},"severity":{"type":"string","enum":["low","medium","high","critical"]},"description":{"type":["null","string"]},"firstSeen":{"type":"string","format":"date-time"},"lastSeen":{"type":"string","format":"date-time"},"expiresAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time"}},"required":["id","organizationId","type","value","source","severity","description","firstSeen","lastSeen","expiresAt","createdAt"],"additionalProperties":false}}}}}},"summary":"List threat intel","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/iocs/\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/iocs/\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/iocs/\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]},"post":{"tags":["Threat intel"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["ip","domain","hash"]},"value":{"type":"string","minLength":1,"maxLength":512},"severity":{"type":"string","enum":["low","medium","high","critical"]},"description":{"type":"string","maxLength":2048}},"required":["type","value"],"additionalProperties":false}}},"required":true},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer"},"organizationId":{"anyOf":[{"type":"integer"},{"type":"null"}]},"type":{"type":"string","enum":["ip","domain","hash"]},"value":{"type":"string"},"source":{"type":"string"},"severity":{"type":"string","enum":["low","medium","high","critical"]},"description":{"type":["null","string"]},"firstSeen":{"type":"string","format":"date-time"},"lastSeen":{"type":"string","format":"date-time"},"expiresAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time"}},"required":["id","organizationId","type","value","source","severity","description","firstSeen","lastSeen","expiresAt","createdAt"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"summary":"Create threat intel","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/iocs/\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/iocs/\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/iocs/\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/iocs/feed-stats":{"get":{"tags":["Threat intel"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["ip","domain","hash"]},"source":{"type":"string"},"count":{"type":"integer","minimum":0}},"required":["type","source","count"],"additionalProperties":false}}}}}},"summary":"Read threat intel feed stats","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/iocs/feed-stats\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/iocs/feed-stats\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/iocs/feed-stats\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/iocs/{id}":{"delete":{"tags":["Threat intel"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"summary":"Delete threat intel {id}","x-code-samples":[{"lang":"curl","source":"curl -X DELETE \"https://api.24observe.com/api/v1/iocs/{id}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.delete(\n  \"https://api.24observe.com/api/v1/iocs/{id}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/iocs/{id}\", {\n  method: \"DELETE\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/cases/":{"get":{"tags":["Cases"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"organizationId":{"type":"integer"},"title":{"type":"string"},"status":{"type":"string","enum":["open","investigating","contained","closed"]},"severity":{"type":"string","enum":["low","medium","high","critical"]},"assigneeUserId":{"anyOf":[{"type":"integer"},{"type":"null"}]},"disposition":{"anyOf":[{"type":"string","enum":["true_positive","false_positive","benign","duplicate"]},{"type":"null"}]},"summary":{"type":["null","string"]},"createdByUserId":{"anyOf":[{"type":"integer"},{"type":"null"}]},"incidentCount":{"type":"integer","minimum":0},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"closedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]}},"required":["id","organizationId","title","status","severity","assigneeUserId","disposition","summary","createdByUserId","incidentCount","createdAt","updatedAt","closedAt"],"additionalProperties":false}}}}}},"summary":"List cases","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/cases/\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/cases/\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/cases/\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]},"post":{"tags":["Cases"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":255},"severity":{"type":"string","enum":["low","medium","high","critical"]},"summary":{"type":"string","maxLength":8192},"assigneeUserId":{"anyOf":[{"type":"integer"},{"type":"null"}]},"incidentIds":{"type":"array","items":{"type":"integer"},"maxItems":200}},"required":["title"],"additionalProperties":false}}},"required":true},"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer"},"organizationId":{"type":"integer"},"title":{"type":"string"},"status":{"type":"string","enum":["open","investigating","contained","closed"]},"severity":{"type":"string","enum":["low","medium","high","critical"]},"assigneeUserId":{"anyOf":[{"type":"integer"},{"type":"null"}]},"disposition":{"anyOf":[{"type":"string","enum":["true_positive","false_positive","benign","duplicate"]},{"type":"null"}]},"summary":{"type":["null","string"]},"createdByUserId":{"anyOf":[{"type":"integer"},{"type":"null"}]},"incidentCount":{"type":"integer","minimum":0},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"closedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]}},"required":["id","organizationId","title","status","severity","assigneeUserId","disposition","summary","createdByUserId","incidentCount","createdAt","updatedAt","closedAt"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"summary":"Create cases","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/cases/\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/cases/\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/cases/\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/cases/{id}":{"get":{"tags":["Cases"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer"},"organizationId":{"type":"integer"},"title":{"type":"string"},"status":{"type":"string","enum":["open","investigating","contained","closed"]},"severity":{"type":"string","enum":["low","medium","high","critical"]},"assigneeUserId":{"anyOf":[{"type":"integer"},{"type":"null"}]},"disposition":{"anyOf":[{"type":"string","enum":["true_positive","false_positive","benign","duplicate"]},{"type":"null"}]},"summary":{"type":["null","string"]},"createdByUserId":{"anyOf":[{"type":"integer"},{"type":"null"}]},"incidentCount":{"type":"integer","minimum":0},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"closedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"incidents":{"type":"array","items":{"type":"object","properties":{"incidentId":{"type":"integer"},"title":{"type":"string"},"status":{"type":"string"},"severity":{"type":"string"},"startedAt":{"type":"string","format":"date-time"},"addedAt":{"type":"string","format":"date-time"}},"required":["incidentId","title","status","severity","startedAt","addedAt"],"additionalProperties":false}},"notes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"authorUserId":{"anyOf":[{"type":"integer"},{"type":"null"}]},"body":{"type":"string"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","authorUserId","body","createdAt"],"additionalProperties":false}}},"required":["id","organizationId","title","status","severity","assigneeUserId","disposition","summary","createdByUserId","incidentCount","createdAt","updatedAt","closedAt","incidents","notes"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"summary":"Read cases {id}","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/cases/{id}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/cases/{id}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/cases/{id}\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]},"patch":{"tags":["Cases"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":255},"status":{"type":"string","enum":["open","investigating","contained","closed"]},"severity":{"type":"string","enum":["low","medium","high","critical"]},"summary":{"type":"string","maxLength":8192},"assigneeUserId":{"anyOf":[{"type":"integer"},{"type":"null"}]},"disposition":{"anyOf":[{"type":"string","enum":["true_positive","false_positive","benign","duplicate"]},{"type":"null"}]}},"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer"},"organizationId":{"type":"integer"},"title":{"type":"string"},"status":{"type":"string","enum":["open","investigating","contained","closed"]},"severity":{"type":"string","enum":["low","medium","high","critical"]},"assigneeUserId":{"anyOf":[{"type":"integer"},{"type":"null"}]},"disposition":{"anyOf":[{"type":"string","enum":["true_positive","false_positive","benign","duplicate"]},{"type":"null"}]},"summary":{"type":["null","string"]},"createdByUserId":{"anyOf":[{"type":"integer"},{"type":"null"}]},"incidentCount":{"type":"integer","minimum":0},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"closedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]}},"required":["id","organizationId","title","status","severity","assigneeUserId","disposition","summary","createdByUserId","incidentCount","createdAt","updatedAt","closedAt"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"summary":"Update cases {id}","x-code-samples":[{"lang":"curl","source":"curl -X PATCH \"https://api.24observe.com/api/v1/cases/{id}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.patch(\n  \"https://api.24observe.com/api/v1/cases/{id}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/cases/{id}\", {\n  method: \"PATCH\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]},"delete":{"tags":["Cases"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"summary":"Delete cases {id}","x-code-samples":[{"lang":"curl","source":"curl -X DELETE \"https://api.24observe.com/api/v1/cases/{id}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.delete(\n  \"https://api.24observe.com/api/v1/cases/{id}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/cases/{id}\", {\n  method: \"DELETE\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/cases/{id}/incidents":{"post":{"tags":["Cases"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"incidentId":{"type":"integer"}},"required":["incidentId"],"additionalProperties":false}}},"required":true},"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer"},"organizationId":{"type":"integer"},"title":{"type":"string"},"status":{"type":"string","enum":["open","investigating","contained","closed"]},"severity":{"type":"string","enum":["low","medium","high","critical"]},"assigneeUserId":{"anyOf":[{"type":"integer"},{"type":"null"}]},"disposition":{"anyOf":[{"type":"string","enum":["true_positive","false_positive","benign","duplicate"]},{"type":"null"}]},"summary":{"type":["null","string"]},"createdByUserId":{"anyOf":[{"type":"integer"},{"type":"null"}]},"incidentCount":{"type":"integer","minimum":0},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"closedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]}},"required":["id","organizationId","title","status","severity","assigneeUserId","disposition","summary","createdByUserId","incidentCount","createdAt","updatedAt","closedAt"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"summary":"Create cases {id} incidents","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/cases/{id}/incidents\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/cases/{id}/incidents\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/cases/{id}/incidents\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/cases/{id}/incidents/{incidentId}":{"delete":{"tags":["Cases"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true},{"schema":{"type":"string"},"in":"path","name":"incidentId","required":true}],"responses":{"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"summary":"Delete cases {id} incidents {incidentId}","x-code-samples":[{"lang":"curl","source":"curl -X DELETE \"https://api.24observe.com/api/v1/cases/{id}/incidents/{incidentId}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.delete(\n  \"https://api.24observe.com/api/v1/cases/{id}/incidents/{incidentId}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/cases/{id}/incidents/{incidentId}\", {\n  method: \"DELETE\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/cases/{id}/notes":{"post":{"tags":["Cases"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"body":{"type":"string","minLength":1,"maxLength":8192}},"required":["body"],"additionalProperties":false}}},"required":true},"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer"},"organizationId":{"type":"integer"},"title":{"type":"string"},"status":{"type":"string","enum":["open","investigating","contained","closed"]},"severity":{"type":"string","enum":["low","medium","high","critical"]},"assigneeUserId":{"anyOf":[{"type":"integer"},{"type":"null"}]},"disposition":{"anyOf":[{"type":"string","enum":["true_positive","false_positive","benign","duplicate"]},{"type":"null"}]},"summary":{"type":["null","string"]},"createdByUserId":{"anyOf":[{"type":"integer"},{"type":"null"}]},"incidentCount":{"type":"integer","minimum":0},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"closedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"incidents":{"type":"array","items":{"type":"object","properties":{"incidentId":{"type":"integer"},"title":{"type":"string"},"status":{"type":"string"},"severity":{"type":"string"},"startedAt":{"type":"string","format":"date-time"},"addedAt":{"type":"string","format":"date-time"}},"required":["incidentId","title","status","severity","startedAt","addedAt"],"additionalProperties":false}},"notes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"authorUserId":{"anyOf":[{"type":"integer"},{"type":"null"}]},"body":{"type":"string"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","authorUserId","body","createdAt"],"additionalProperties":false}}},"required":["id","organizationId","title","status","severity","assigneeUserId","disposition","summary","createdByUserId","incidentCount","createdAt","updatedAt","closedAt","incidents","notes"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"summary":"Create cases {id} notes","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/cases/{id}/notes\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/cases/{id}/notes\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/cases/{id}/notes\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/otlp/v1/logs":{"post":{"tags":["OpenTelemetry"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"resourceLogs":{"type":"array","items":{"type":"object","properties":{"resource":{"type":"object","properties":{"attributes":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"object","properties":{"stringValue":{"type":"string"},"intValue":{"type":["number","string"]},"doubleValue":{"type":"number"},"boolValue":{"type":"boolean"},"bytesValue":{"type":"string"},"arrayValue":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/properties/resourceLogs/items/properties/resource/properties/attributes/items/properties/value"},"default":[]}},"additionalProperties":false},"kvlistValue":{"type":"object","properties":{"values":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"$ref":"#/properties/resourceLogs/items/properties/resource/properties/attributes/items/properties/value"}},"required":["key","value"],"additionalProperties":false},"default":[]}},"additionalProperties":false}},"additionalProperties":false}},"required":["key","value"],"additionalProperties":false}},"droppedAttributesCount":{"type":"number"}},"additionalProperties":false},"scopeLogs":{"type":"array","items":{"type":"object","properties":{"scope":{"type":"object","properties":{"name":{"type":"string"},"version":{"type":"string"},"attributes":{"type":"array","items":{"$ref":"#/properties/resourceLogs/items/properties/resource/properties/attributes/items"}},"droppedAttributesCount":{"type":"number"}},"additionalProperties":false},"logRecords":{"type":"array","items":{"type":"object","properties":{"timeUnixNano":{"type":["string","number"]},"observedTimeUnixNano":{"type":["string","number"]},"severityNumber":{"type":"integer","minimum":0,"maximum":24},"severityText":{"type":"string","maxLength":32},"body":{"$ref":"#/properties/resourceLogs/items/properties/resource/properties/attributes/items/properties/value"},"attributes":{"type":"array","items":{"$ref":"#/properties/resourceLogs/items/properties/resource/properties/attributes/items"}},"droppedAttributesCount":{"type":"number"},"flags":{"type":"number"},"traceId":{"type":"string","maxLength":64},"spanId":{"type":"string","maxLength":32}},"additionalProperties":true}},"schemaUrl":{"type":"string"}},"required":["logRecords"],"additionalProperties":false}},"schemaUrl":{"type":"string"}},"required":["scopeLogs"],"additionalProperties":false}}},"required":["resourceLogs"],"additionalProperties":false}}},"required":true},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"summary":"Create opentelemetry v1 logs","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/otlp/v1/logs\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/otlp/v1/logs\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/otlp/v1/logs\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/otlp/v1/metrics":{"post":{"tags":["OpenTelemetry"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"resourceMetrics":{"type":"array","items":{"type":"object","properties":{"resource":{"type":"object","properties":{"attributes":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"object","properties":{"stringValue":{"type":"string"},"intValue":{"type":["number","string"]},"doubleValue":{"type":"number"},"boolValue":{"type":"boolean"},"bytesValue":{"type":"string"},"arrayValue":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/properties/resourceMetrics/items/properties/resource/properties/attributes/items/properties/value"},"default":[]}},"additionalProperties":false},"kvlistValue":{"type":"object","properties":{"values":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"$ref":"#/properties/resourceMetrics/items/properties/resource/properties/attributes/items/properties/value"}},"required":["key","value"],"additionalProperties":false},"default":[]}},"additionalProperties":false}},"additionalProperties":false}},"required":["key","value"],"additionalProperties":false}},"droppedAttributesCount":{"type":"number"}},"additionalProperties":false},"scopeMetrics":{"type":"array","items":{"type":"object","properties":{"scope":{"type":"object","properties":{"name":{"type":"string"},"version":{"type":"string"},"attributes":{"type":"array","items":{"$ref":"#/properties/resourceMetrics/items/properties/resource/properties/attributes/items"}},"droppedAttributesCount":{"type":"number"}},"additionalProperties":false},"metrics":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255},"description":{"type":"string"},"unit":{"type":"string","maxLength":64},"gauge":{"type":"object","properties":{"dataPoints":{"type":"array","items":{"type":"object","properties":{"attributes":{"type":"array","items":{"$ref":"#/properties/resourceMetrics/items/properties/resource/properties/attributes/items"}},"startTimeUnixNano":{"type":["string","number"]},"timeUnixNano":{"type":["string","number"]},"asDouble":{"type":"number"},"asInt":{"type":["string","number"]},"flags":{"type":"number"}},"additionalProperties":true}}},"required":["dataPoints"],"additionalProperties":false},"sum":{"type":"object","properties":{"dataPoints":{"type":"array","items":{"$ref":"#/properties/resourceMetrics/items/properties/scopeMetrics/items/properties/metrics/items/properties/gauge/properties/dataPoints/items"}},"aggregationTemporality":{"type":"number"},"isMonotonic":{"type":"boolean"}},"required":["dataPoints"],"additionalProperties":false},"histogram":{"type":"object","properties":{"dataPoints":{"type":"array","items":{"type":"object","properties":{"attributes":{"type":"array","items":{"$ref":"#/properties/resourceMetrics/items/properties/resource/properties/attributes/items"}},"timeUnixNano":{"type":["string","number"]},"count":{"type":["string","number"]},"sum":{"type":"number"}},"additionalProperties":true}},"aggregationTemporality":{"type":"number"}},"required":["dataPoints"],"additionalProperties":true},"summary":{"type":"object","properties":{"dataPoints":{"type":"array","items":{"$ref":"#/properties/resourceMetrics/items/properties/scopeMetrics/items/properties/metrics/items/properties/histogram/properties/dataPoints/items"}}},"required":["dataPoints"],"additionalProperties":true}},"required":["name"],"additionalProperties":true}},"schemaUrl":{"type":"string"}},"required":["metrics"],"additionalProperties":false}},"schemaUrl":{"type":"string"}},"required":["scopeMetrics"],"additionalProperties":false}}},"required":["resourceMetrics"],"additionalProperties":false}}},"required":true},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"summary":"Create opentelemetry v1 metrics","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/otlp/v1/metrics\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/otlp/v1/metrics\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/otlp/v1/metrics\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/otlp/v1/traces":{"post":{"tags":["OpenTelemetry"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"resourceSpans":{"type":"array","items":{"type":"object","properties":{"resource":{"type":"object","properties":{"attributes":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"object","properties":{"stringValue":{"type":"string"},"intValue":{"type":["number","string"]},"doubleValue":{"type":"number"},"boolValue":{"type":"boolean"},"bytesValue":{"type":"string"},"arrayValue":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/properties/resourceSpans/items/properties/resource/properties/attributes/items/properties/value"},"default":[]}},"additionalProperties":false},"kvlistValue":{"type":"object","properties":{"values":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"$ref":"#/properties/resourceSpans/items/properties/resource/properties/attributes/items/properties/value"}},"required":["key","value"],"additionalProperties":false},"default":[]}},"additionalProperties":false}},"additionalProperties":false}},"required":["key","value"],"additionalProperties":false}},"droppedAttributesCount":{"type":"number"}},"additionalProperties":false},"scopeSpans":{"type":"array","items":{"type":"object","properties":{"scope":{"type":"object","properties":{"name":{"type":"string"},"version":{"type":"string"},"attributes":{"type":"array","items":{"$ref":"#/properties/resourceSpans/items/properties/resource/properties/attributes/items"}},"droppedAttributesCount":{"type":"number"}},"additionalProperties":false},"spans":{"type":"array","items":{"type":"object","properties":{"traceId":{"type":"string","maxLength":64},"spanId":{"type":"string","maxLength":32},"parentSpanId":{"type":"string","maxLength":32},"name":{"type":"string","maxLength":1024},"kind":{"type":"integer"},"startTimeUnixNano":{"type":["string","number"]},"endTimeUnixNano":{"type":["string","number"]},"attributes":{"type":"array","items":{"$ref":"#/properties/resourceSpans/items/properties/resource/properties/attributes/items"}},"events":{"type":"array","items":{"type":"object","properties":{"timeUnixNano":{"type":["string","number"]},"name":{"type":"string"},"attributes":{"type":"array","items":{"$ref":"#/properties/resourceSpans/items/properties/resource/properties/attributes/items"}},"droppedAttributesCount":{"type":"number"}},"additionalProperties":true}},"status":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"}},"additionalProperties":true},"droppedAttributesCount":{"type":"number"}},"additionalProperties":true}},"schemaUrl":{"type":"string"}},"required":["spans"],"additionalProperties":false}},"schemaUrl":{"type":"string"}},"required":["scopeSpans"],"additionalProperties":false}}},"required":["resourceSpans"],"additionalProperties":false}}},"required":true},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"summary":"Create opentelemetry v1 traces","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/otlp/v1/traces\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/otlp/v1/traces\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/otlp/v1/traces\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/{projectId}/envelope/":{"post":{"tags":["Other"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"projectId","required":true}],"responses":{"200":{"description":"Default Response"}},"summary":"Create other api {projectId} envelope","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/{projectId}/envelope/\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/{projectId}/envelope/\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/{projectId}/envelope/\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/rum/vitals":{"post":{"tags":["Other"],"responses":{"200":{"description":"Default Response"}},"summary":"Create other vitals","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/rum/vitals\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/rum/vitals\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/rum/vitals\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/metrics/names":{"get":{"tags":["Metrics"],"parameters":[{"schema":{"type":"string","format":"date-time"},"in":"query","name":"since","required":false},{"schema":{"type":"integer","minimum":1,"maximum":1000},"in":"query","name":"limit","required":false}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"summary":"Read metrics names","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/metrics/names\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/metrics/names\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/metrics/names\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/metrics/series":{"get":{"tags":["Metrics"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255},"in":"query","name":"name","required":true},{"schema":{"type":"string","maxLength":255},"in":"query","name":"service","required":false},{"schema":{"type":"string","format":"date-time"},"in":"query","name":"to","required":false},{"schema":{"type":"string","format":"date-time"},"in":"query","name":"from","required":false},{"schema":{"type":"integer","minimum":1,"maximum":86400},"in":"query","name":"bucket","required":false},{"schema":{"type":"string","enum":["avg","sum","min","max","last"]},"in":"query","name":"agg","required":false}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"summary":"Read metrics series","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/metrics/series\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/metrics/series\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/metrics/series\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/context/lookup":{"get":{"operationId":"context_lookup_entity","summary":"Resolve a name to an operational context entity","tags":["Context"],"description":"Look up an entity by (type, key) to get its id, then call /context/entity/{id}/neighborhood. Returns { entity } or { entity: null }.","parameters":[{"schema":{"type":"string"},"in":"query","name":"type","required":false,"description":"Entity type — service|host|asset|identity|ioc|monitor|incident|case|detection|ai_agent|ip|domain|model|tool|metric|location. Required."},{"schema":{"type":"string"},"in":"query","name":"key","required":false,"description":"Canonical key to resolve (e.g. a service name or host). Required."}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/context/lookup\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/context/lookup\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/context/lookup\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/context/entity/{id}":{"get":{"operationId":"context_get_entity","summary":"Fetch one context entity by id","tags":["Context"],"description":"Return a single operational entity (type, canonical key, display name, attrs, first/last seen).","parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true,"description":"Context entity id."}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/context/entity/{id}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/context/entity/{id}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/context/entity/{id}\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/context/entity/{id}/neighborhood":{"get":{"operationId":"context_entity_neighborhood","summary":"One-hop neighborhood of an entity","tags":["Context"],"description":"Return the entity's directly-connected neighbors, ranked by edge strength + recency. Each edge carries confidence + evidence (a deep-link into the proving record). Use ?types to filter edge kinds.","parameters":[{"schema":{"type":"string"},"in":"query","name":"types","required":false,"description":"Optional CSV of edge types to filter, e.g. calls,runs_on,impacts,owns."},{"schema":{"type":"string"},"in":"query","name":"limit","required":false,"description":"Max neighbors to return (default 100, capped at 500)."},{"schema":{"type":"string"},"in":"path","name":"id","required":true,"description":"Context entity id."}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/context/entity/{id}/neighborhood\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/context/entity/{id}/neighborhood\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/context/entity/{id}/neighborhood\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/context/incident/{incidentKey}/summary":{"get":{"operationId":"context_incident_summary","summary":"Incident blast-radius, owners, and recent changes","tags":["Context"],"description":"For an incident (canonical key like inc-123), return the impacted services/assets, who owns them, and what changed in the lookback window. Every item is evidence-backed and deep-links into the existing API.","parameters":[{"schema":{"type":"string"},"in":"query","name":"window","required":false,"description":"Change lookback window in minutes (default 60)."},{"schema":{"type":"string"},"in":"path","name":"incidentKey","required":true,"description":"Incident canonical key, e.g. inc-123."}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/context/incident/{incidentKey}/summary\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/context/incident/{incidentKey}/summary\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/context/incident/{incidentKey}/summary\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/context/incident/{incidentKey}/blast":{"get":{"operationId":"context_incident_blast","summary":"N-hop graph blast-radius of an incident","tags":["Context"],"description":"Everything reachable within N hops of an incident in the operational graph (impacted services, owners, related incidents on the same services, ...). Deeper than /summary; powered by the embedded-graph sidecar.","parameters":[{"schema":{"type":"string"},"in":"query","name":"hops","required":false,"description":"Traversal depth 1..5 (default 3)."},{"schema":{"type":"string"},"in":"path","name":"incidentKey","required":true,"description":"Incident canonical key, e.g. inc-123."}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"502":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}},"503":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/context/incident/{incidentKey}/blast\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/context/incident/{incidentKey}/blast\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/context/incident/{incidentKey}/blast\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/context/topology":{"get":{"operationId":"context_topology","summary":"Whole-org topology with a health overlay","tags":["Context"],"description":"The entity/edge graph for the org (capped) plus a per-node health overlay: a node is \"critical\" when a host's Sensor is offline or the entity is implicated in an open incident, else \"ok\". Powers the topology health map.","responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/context/topology\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/context/topology\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/context/topology\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/analyst/verdicts":{"get":{"tags":["Analyst"],"responses":{"200":{"description":"Default Response"}},"summary":"Read analyst verdicts","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/analyst/verdicts\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/analyst/verdicts\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/analyst/verdicts\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/analyst/metrics":{"get":{"tags":["Analyst"],"responses":{"200":{"description":"Default Response"}},"summary":"Read analyst metrics","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/analyst/metrics\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/analyst/metrics\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/analyst/metrics\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/analyst/verdicts/{id}/review":{"post":{"tags":["Analyst"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["accepted","overridden"]},"overrideDisposition":{"type":"string","enum":["true_positive","false_positive","benign","needs_human"]},"note":{"type":"string","maxLength":2000}},"required":["status"],"additionalProperties":false}}},"required":true},"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}},"summary":"Create analyst verdicts {id} review","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/analyst/verdicts/{id}/review\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/analyst/verdicts/{id}/review\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/analyst/verdicts/{id}/review\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/analyst/actions":{"get":{"tags":["Analyst"],"responses":{"200":{"description":"Default Response"}},"summary":"Read analyst actions","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/analyst/actions\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/analyst/actions\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/analyst/actions\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/analyst/actions/{id}/decide":{"post":{"tags":["Analyst"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"approve":{"type":"boolean"}},"required":["approve"],"additionalProperties":false}}},"required":true},"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}},"summary":"Create analyst actions {id} decide","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/analyst/actions/{id}/decide\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/analyst/actions/{id}/decide\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/analyst/actions/{id}/decide\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/analyst/config":{"get":{"tags":["Analyst"],"responses":{"200":{"description":"Default Response"}},"summary":"Read analyst config","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/analyst/config\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/analyst/config\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/analyst/config\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]},"post":{"tags":["Analyst"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean"},"redact":{"type":"boolean"},"llmApiKey":{"type":"string","maxLength":400},"llmModel":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}]},"llmBaseUrl":{"anyOf":[{"type":"string","format":"uri","maxLength":400},{"type":"null"}]},"dailyTokenBudget":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]},"monthlyTokenBudget":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]}},"additionalProperties":false}}}},"responses":{"200":{"description":"Default Response"}},"summary":"Create analyst config","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/analyst/config\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/analyst/config\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/analyst/config\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/sensors/bootstrap":{"post":{"tags":["Sensors"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"machineId":{"type":"string","minLength":8,"maxLength":128},"hostname":{"type":"string","minLength":1,"maxLength":255},"os":{"type":"string","maxLength":128},"sensorVersion":{"type":"string","maxLength":64},"enableFindings":{"type":"boolean"},"profiles":{"type":"array","items":{"type":"string","enum":["docker","nginx","auditd","syslog","snmp"]},"maxItems":5}},"required":["machineId","hostname"],"additionalProperties":false}}},"required":true},"responses":{"200":{"description":"Default Response"}},"summary":"Create sensors bootstrap","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/sensors/bootstrap\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/sensors/bootstrap\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/sensors/bootstrap\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/sensors/enroll-token":{"post":{"tags":["Sensors"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":100},"profiles":{"type":"array","items":{"type":"string","enum":["docker","nginx","auditd","syslog","snmp"]},"maxItems":5},"enableFindings":{"type":"boolean"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Default Response"}},"summary":"Create sensors enroll token","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/sensors/enroll-token\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/sensors/enroll-token\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/sensors/enroll-token\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/sensors/":{"get":{"tags":["Sensors"],"responses":{"200":{"description":"Default Response"}},"summary":"List sensors","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/sensors/\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/sensors/\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/sensors/\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/sensors/{id}":{"get":{"tags":["Sensors"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}},"summary":"Read sensors {id}","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/sensors/{id}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/sensors/{id}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/sensors/{id}\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]},"delete":{"tags":["Sensors"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}},"summary":"Delete sensors {id}","x-code-samples":[{"lang":"curl","source":"curl -X DELETE \"https://api.24observe.com/api/v1/sensors/{id}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.delete(\n  \"https://api.24observe.com/api/v1/sensors/{id}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/sensors/{id}\", {\n  method: \"DELETE\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/ingest/sources":{"post":{"tags":["Ingest"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"sourceKey":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{1,62}$"},"name":{"type":"string","minLength":1,"maxLength":255},"format":{"type":"string","enum":["json","ndjson","cef"],"default":"json"},"mapping":{"type":"object","properties":{"format":{"$ref":"#/properties/format"},"timestamp":{"type":"object","properties":{"from":{"type":"string"},"parse":{"type":"string","enum":["epoch_ms","epoch_s","iso","auto"]}},"additionalProperties":false},"fields":{"type":"object","additionalProperties":{"type":"object","properties":{"from":{"type":"string"},"fromDefault":{"type":"string"},"const":{"type":"string"},"default":{"type":"string"},"map":{"type":"object","additionalProperties":{"type":"string"}},"lowercase":{"type":"boolean"}},"additionalProperties":false}}},"additionalProperties":true},"preset":{"type":"string","minLength":1,"maxLength":64}},"required":["sourceKey","name"],"additionalProperties":false}}},"required":true},"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"summary":"Create ingest sources","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/ingest/sources\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/ingest/sources\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/ingest/sources\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]},"get":{"tags":["Ingest"],"responses":{"200":{"description":"Default Response"}},"summary":"Read ingest sources","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/ingest/sources\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/ingest/sources\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/ingest/sources\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/ingest/presets":{"get":{"tags":["Ingest"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"summary":"Read ingest presets","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/ingest/presets\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/ingest/presets\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/ingest/presets\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/ingest/sources/{key}":{"patch":{"tags":["Ingest"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255},"format":{"type":"string","enum":["json","ndjson","cef"]},"mapping":{"type":"object","properties":{"format":{"$ref":"#/properties/format"},"timestamp":{"type":"object","properties":{"from":{"type":"string"},"parse":{"type":"string","enum":["epoch_ms","epoch_s","iso","auto"]}},"additionalProperties":false},"fields":{"type":"object","additionalProperties":{"type":"object","properties":{"from":{"type":"string"},"fromDefault":{"type":"string"},"const":{"type":"string"},"default":{"type":"string"},"map":{"type":"object","additionalProperties":{"type":"string"}},"lowercase":{"type":"boolean"}},"additionalProperties":false}}},"additionalProperties":true},"status":{"type":"string","enum":["active","learning","error","disabled"]}},"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string"},"in":"path","name":"key","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"summary":"Update ingest sources {key}","x-code-samples":[{"lang":"curl","source":"curl -X PATCH \"https://api.24observe.com/api/v1/ingest/sources/{key}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.patch(\n  \"https://api.24observe.com/api/v1/ingest/sources/{key}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/ingest/sources/{key}\", {\n  method: \"PATCH\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/ingest/sources/{key}/infer-mapping":{"post":{"tags":["Ingest"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"sample":{},"hint":{"type":"string","maxLength":200}},"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string"},"in":"path","name":"key","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}},"502":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}},"503":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"summary":"Create ingest sources {key} infer mapping","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/ingest/sources/{key}/infer-mapping\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/ingest/sources/{key}/infer-mapping\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/ingest/sources/{key}/infer-mapping\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/ingest/{sourceKey}":{"post":{"tags":["Ingest"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"sourceKey","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Machine-readable code (PLAN_LIMIT_MONITORS, ALERT_URL_BLOCKED, VALIDATION_FAILED, IDEMPOTENCY_IN_PROGRESS, etc.)"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}},"required":["path","code","message"],"additionalProperties":false},"description":"Per-field issues. Present when code=VALIDATION_FAILED."}},"required":["error"],"additionalProperties":false}}}}},"summary":"Create ingest {sourceKey}","x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/ingest/{sourceKey}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/ingest/{sourceKey}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/ingest/{sourceKey}\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/webhook-subscriptions/":{"get":{"summary":"List webhook subscriptions for the current org.","tags":["Webhooks"],"responses":{"200":{"description":"Default Response"}},"x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/webhook-subscriptions/\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/webhook-subscriptions/\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/webhook-subscriptions/\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]},"post":{"summary":"Create a webhook subscription. Empty eventTypes = subscribe to all events.","tags":["Webhooks"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","maxLength":2048},"eventTypes":{"type":"array","items":{"type":"string","enum":["incident.opened","incident.acknowledged","incident.resolved","monitor.status_changed","log_alert.fired","sensor.offline","sensor.online","storm.detected","metric_alert.fired"]},"default":[]},"description":{"type":"string","maxLength":255},"enabled":{"type":"boolean","default":true}},"required":["url"],"additionalProperties":false}}},"required":true},"responses":{"200":{"description":"Default Response"}},"x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/webhook-subscriptions/\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/webhook-subscriptions/\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/webhook-subscriptions/\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/webhook-subscriptions/{id}":{"get":{"summary":"Get a single webhook subscription.","tags":["Webhooks"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}},"x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/webhook-subscriptions/{id}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/webhook-subscriptions/{id}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/webhook-subscriptions/{id}\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]},"patch":{"summary":"Update a webhook subscription. URL changes are re-validated against SSRF.","tags":["Webhooks"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","maxLength":2048},"eventTypes":{"type":"array","items":{"type":"string","enum":["incident.opened","incident.acknowledged","incident.resolved","monitor.status_changed","log_alert.fired","sensor.offline","sensor.online","storm.detected","metric_alert.fired"]}},"description":{"type":"string","maxLength":255},"enabled":{"type":"boolean"}},"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}},"x-code-samples":[{"lang":"curl","source":"curl -X PATCH \"https://api.24observe.com/api/v1/webhook-subscriptions/{id}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.patch(\n  \"https://api.24observe.com/api/v1/webhook-subscriptions/{id}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/webhook-subscriptions/{id}\", {\n  method: \"PATCH\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]},"delete":{"summary":"Delete a webhook subscription. Past delivery rows are cascaded.","tags":["Webhooks"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}},"x-code-samples":[{"lang":"curl","source":"curl -X DELETE \"https://api.24observe.com/api/v1/webhook-subscriptions/{id}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.delete(\n  \"https://api.24observe.com/api/v1/webhook-subscriptions/{id}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/webhook-subscriptions/{id}\", {\n  method: \"DELETE\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/webhook-subscriptions/{id}/deliveries":{"get":{"summary":"Recent delivery attempts (last 50) for a subscription.","tags":["Webhooks"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}},"x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/webhook-subscriptions/{id}/deliveries\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/webhook-subscriptions/{id}/deliveries\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/webhook-subscriptions/{id}/deliveries\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/saved-searches/":{"get":{"summary":"List saved searches for the current org.","tags":["Saved searches"],"responses":{"200":{"description":"Default Response"}},"x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/saved-searches/\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/saved-searches/\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/saved-searches/\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]},"post":{"summary":"Create a saved log search. Validates the KQL query at save time.","tags":["Saved searches"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255},"description":{"type":"string","maxLength":2000},"query":{"type":"string","maxLength":2048},"q":{"type":"string","maxLength":1024},"service":{"type":"string","maxLength":255},"level":{"type":"string","maxLength":64},"rangeMinutes":{"type":"integer","minimum":1,"maximum":43200}},"required":["name"],"additionalProperties":false}}},"required":true},"responses":{"200":{"description":"Default Response"}},"x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/saved-searches/\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/saved-searches/\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/saved-searches/\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/saved-searches/{id}":{"patch":{"summary":"Update a saved search. Re-validates KQL query if changed.","tags":["Saved searches"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255},"description":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"query":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}]},"q":{"anyOf":[{"type":"string","maxLength":1024},{"type":"null"}]},"service":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}]},"level":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}]},"rangeMinutes":{"anyOf":[{"type":"integer","minimum":1,"maximum":43200},{"type":"null"}]}},"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}},"x-code-samples":[{"lang":"curl","source":"curl -X PATCH \"https://api.24observe.com/api/v1/saved-searches/{id}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.patch(\n  \"https://api.24observe.com/api/v1/saved-searches/{id}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/saved-searches/{id}\", {\n  method: \"PATCH\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]},"delete":{"summary":"Delete a saved search.","tags":["Saved searches"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}},"x-code-samples":[{"lang":"curl","source":"curl -X DELETE \"https://api.24observe.com/api/v1/saved-searches/{id}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.delete(\n  \"https://api.24observe.com/api/v1/saved-searches/{id}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/saved-searches/{id}\", {\n  method: \"DELETE\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/on-call/schedules":{"get":{"summary":"List on-call schedules.","tags":["On-call"],"responses":{"200":{"description":"Default Response"}},"x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/on-call/schedules\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/on-call/schedules\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/on-call/schedules\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]},"post":{"summary":"Create an on-call schedule. Rotations are added separately.","tags":["On-call"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255},"description":{"type":"string","maxLength":2000},"timezone":{"type":"string","minLength":1,"maxLength":64,"default":"UTC"}},"required":["name"],"additionalProperties":false}}},"required":true},"responses":{"200":{"description":"Default Response"}},"x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/on-call/schedules\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/on-call/schedules\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/on-call/schedules\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/on-call/schedules/{id}":{"get":{"summary":"Read a schedule, its rotations, and the user currently on-call.","tags":["On-call"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}},"x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/on-call/schedules/{id}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/on-call/schedules/{id}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/on-call/schedules/{id}\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]},"patch":{"summary":"Update a schedule.","tags":["On-call"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255},"description":{"type":"string","maxLength":2000},"timezone":{"type":"string","minLength":1,"maxLength":64,"default":"UTC"}},"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}},"x-code-samples":[{"lang":"curl","source":"curl -X PATCH \"https://api.24observe.com/api/v1/on-call/schedules/{id}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.patch(\n  \"https://api.24observe.com/api/v1/on-call/schedules/{id}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/on-call/schedules/{id}\", {\n  method: \"PATCH\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]},"delete":{"summary":"Delete a schedule and all its rotations.","tags":["On-call"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}},"x-code-samples":[{"lang":"curl","source":"curl -X DELETE \"https://api.24observe.com/api/v1/on-call/schedules/{id}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.delete(\n  \"https://api.24observe.com/api/v1/on-call/schedules/{id}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/on-call/schedules/{id}\", {\n  method: \"DELETE\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/on-call/schedules/{id}/rotations":{"post":{"summary":"Add a rotation to a schedule (one user covers one [starts_at, ends_at) window).","tags":["On-call"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"integer","exclusiveMinimum":0},"startsAt":{"type":"string","format":"date-time"},"endsAt":{"type":"string","format":"date-time"},"overrideUserId":{"anyOf":[{"type":"integer","exclusiveMinimum":0},{"type":"null"}]},"overrideStartsAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"overrideEndsAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]}},"required":["userId","startsAt","endsAt"],"additionalProperties":false}}},"required":true},"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}},"x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/on-call/schedules/{id}/rotations\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/on-call/schedules/{id}/rotations\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/on-call/schedules/{id}/rotations\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/on-call/schedules/{id}/rotations/{rotationId}":{"delete":{"summary":"Remove a rotation row.","tags":["On-call"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true},{"schema":{"type":"string"},"in":"path","name":"rotationId","required":true}],"responses":{"200":{"description":"Default Response"}},"x-code-samples":[{"lang":"curl","source":"curl -X DELETE \"https://api.24observe.com/api/v1/on-call/schedules/{id}/rotations/{rotationId}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.delete(\n  \"https://api.24observe.com/api/v1/on-call/schedules/{id}/rotations/{rotationId}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/on-call/schedules/{id}/rotations/{rotationId}\", {\n  method: \"DELETE\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/api/v1/escalation-policies/":{"get":{"summary":"List escalation policies for the current org.","tags":["Escalations"],"responses":{"200":{"description":"Default Response"}},"x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/escalation-policies/\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/escalation-policies/\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/escalation-policies/\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]},"post":{"summary":"Create an escalation policy. Steps fire in order on incident.opened.","tags":["Escalations"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255},"description":{"type":"string","maxLength":2000},"steps":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["schedule"]},"delaySec":{"type":"integer","minimum":0,"maximum":604800},"scheduleId":{"type":"integer","exclusiveMinimum":0}},"required":["type","delaySec","scheduleId"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["user"]},"delaySec":{"type":"integer","minimum":0,"maximum":604800},"userId":{"type":"integer","exclusiveMinimum":0}},"required":["type","delaySec","userId"],"additionalProperties":false}]},"minItems":1,"maxItems":10}},"required":["name","steps"],"additionalProperties":false}}},"required":true},"responses":{"200":{"description":"Default Response"}},"x-code-samples":[{"lang":"curl","source":"curl -X POST \"https://api.24observe.com/api/v1/escalation-policies/\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.post(\n  \"https://api.24observe.com/api/v1/escalation-policies/\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/escalation-policies/\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]}},"/api/v1/escalation-policies/{id}":{"get":{"summary":"Read one escalation policy.","tags":["Escalations"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}},"x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/api/v1/escalation-policies/{id}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/api/v1/escalation-policies/{id}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/escalation-policies/{id}\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]},"patch":{"summary":"Update an escalation policy.","tags":["Escalations"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255},"description":{"type":"string","maxLength":2000},"steps":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["schedule"]},"delaySec":{"type":"integer","minimum":0,"maximum":604800},"scheduleId":{"type":"integer","exclusiveMinimum":0}},"required":["type","delaySec","scheduleId"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["user"]},"delaySec":{"type":"integer","minimum":0,"maximum":604800},"userId":{"type":"integer","exclusiveMinimum":0}},"required":["type","delaySec","userId"],"additionalProperties":false}]},"minItems":1,"maxItems":10}},"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}},"x-code-samples":[{"lang":"curl","source":"curl -X PATCH \"https://api.24observe.com/api/v1/escalation-policies/{id}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\"\n  -H \"Content-Type: application/json\" \\\n  --data '{}'"},{"lang":"python","source":"import requests\nrequests.patch(\n  \"https://api.24observe.com/api/v1/escalation-policies/{id}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"},\n  json={}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/escalation-policies/{id}\", {\n  method: \"PATCH\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\",\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({})\n});"}]},"delete":{"summary":"Delete an escalation policy.","tags":["Escalations"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}},"x-code-samples":[{"lang":"curl","source":"curl -X DELETE \"https://api.24observe.com/api/v1/escalation-policies/{id}\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.delete(\n  \"https://api.24observe.com/api/v1/escalation-policies/{id}\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/api/v1/escalation-policies/{id}\", {\n  method: \"DELETE\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/openapi/openai-tools.json":{"get":{"tags":["Other"],"responses":{"200":{"description":"Default Response"}},"summary":"Read other openapi openai tools.json","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/openapi/openai-tools.json\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/openapi/openai-tools.json\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/openapi/openai-tools.json\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/openapi/anthropic-tools.json":{"get":{"tags":["Other"],"responses":{"200":{"description":"Default Response"}},"summary":"Read other openapi anthropic tools.json","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/openapi/anthropic-tools.json\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/openapi/anthropic-tools.json\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/openapi/anthropic-tools.json\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/openapi/langchain-tools.json":{"get":{"tags":["Other"],"responses":{"200":{"description":"Default Response"}},"summary":"Read other openapi langchain tools.json","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/openapi/langchain-tools.json\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/openapi/langchain-tools.json\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/openapi/langchain-tools.json\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}},"/openapi/tools-index.json":{"get":{"tags":["Other"],"responses":{"200":{"description":"Default Response"}},"summary":"Read other openapi tools index.json","x-code-samples":[{"lang":"curl","source":"curl -X GET \"https://api.24observe.com/openapi/tools-index.json\" \\\n  -H \"Authorization: Bearer obs_<your_token>\""},{"lang":"python","source":"import requests\nrequests.get(\n  \"https://api.24observe.com/openapi/tools-index.json\",\n  headers={\"Authorization\": \"Bearer obs_<your_token>\"}\n)"},{"lang":"javascript","source":"await fetch(\"https://api.24observe.com/openapi/tools-index.json\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer obs_<your_token>\"\n  }\n});"}]}}},"servers":[{"url":"https://api.24observe.com","description":"Managed production"},{"url":"http://localhost:3000","description":"Local dev / self-host default"}],"security":[{"bearerAuth":[]}],"tags":[{"name":"Auth","description":"Register, log in, password reset, and OAuth login flows."},{"name":"API tokens","description":"Mint, list, and revoke personal access tokens (PATs)."},{"name":"OAuth linking","description":"Link or unlink Google / GitHub identities on the current account."},{"name":"Invites","description":"Create and manage team-member invitations."},{"name":"Invites","description":"Public flow for accepting an invite via emailed link."},{"name":"Account","description":"Current user, members, webhook secret, password change."},{"name":"Account","description":"Account-level destructive operations (GDPR org deletion)."},{"name":"Monitors","description":"Create, read, update, delete monitors; test alerts; rotate heartbeat tokens; per-monitor stats and history."},{"name":"Incidents","description":"Read incidents, post timeline updates, acknowledge, resolve, attach postmortems."},{"name":"Status pages (public)","description":"Unauthenticated endpoints used by the public-facing status page renderer."},{"name":"Status pages","description":"Create and manage status pages, components, password protection, and email subscribers."},{"name":"Maintenance","description":"Schedule planned maintenance windows that suppress alerts for affected monitors."},{"name":"Heartbeats","description":"Receive heartbeat pings from scheduled jobs and cron tasks."},{"name":"Logs","description":"Ingest, search, and live-tail customer log events."},{"name":"Log alerts","description":"Define and manage alert rules that fire when matching log events arrive."},{"name":"Metric alerts","description":"Define metric-threshold alert rules (CPU, latency, interface util, SNMP) that open incidents on breach."},{"name":"Log metrics","description":"Saved log queries exposed as chartable time-series (count of matching events per bucket)."},{"name":"Log errors","description":"Error tracking — stack-trace fingerprints grouped per org, with resolve/ignore actions."},{"name":"AI Agents","description":"Analytics over GenAI (gen_ai.*) span telemetry: token usage, estimated cost, latency, and error rate by model / agent / operation."},{"name":"Sensors","description":"24Observe Sensor (Linux data-in collector): enroll hosts (mint per-host ingest tokens) and list the enrolled fleet."},{"name":"Ingest","description":"Universal webhook ingest: configure a source + mapping, then POST any firewall/EDR/cloud-sec events to be normalised into the log pipeline."},{"name":"SIEM context","description":"Asset inventory keyed by source IP; enriches log events with owner + criticality."},{"name":"SIEM context","description":"Identity directory keyed by principal; enriches log events with display name, internal flag, and risk."},{"name":"Correlation","description":"Multi-event detection rules: sequence (A→B funnel) and cardinality (distinct-count) correlations that open incidents."},{"name":"Threat intel","description":"Threat-intel indicators of compromise: manage org-custom IOCs, view global feed stats; matched against logs at ingest."},{"name":"Cases","description":"Security cases — group incidents into an investigation with status, severity, assignee, notes timeline, and disposition."},{"name":"Webhooks","description":"Register URLs to receive signed event pushes (incident.opened, incident.resolved, etc.) — replaces polling for agents."},{"name":"Saved searches","description":"Save reusable KQL-lite log queries for dashboards and recurring investigations."},{"name":"On-call","description":"Define on-call schedules with rotations and overrides. Resolves to a single user at any instant for escalations."},{"name":"Escalations","description":"Ordered escalation steps (delay + target schedule or user) fired on incident.opened."},{"name":"Context","description":"Operational Context Layer — per-tenant entity/edge graph for investigation: resolve entities, walk evidence-ranked neighborhoods, and get incident blast-radius (impacted services, owners, recent changes)."},{"name":"OpenTelemetry","description":"Native OTLP/HTTP receiver for OpenTelemetry SDK log + metric exporters."},{"name":"Metrics","description":"Query OTLP-ingested metrics: list metric names and fetch bucketed time series."},{"name":"Audit","description":"Read the org audit log; track every mutation with actor, action, and resource."},{"name":"Analyst","description":"AI Analyst — autonomous incident-triage verdicts, SOC metrics, and the SOAR enforcement-action approval queue."},{"name":"Billing","description":"Read the current plan + entitlements, open a hosted checkout to upgrade, and receive subscription webhooks."},{"name":"Settings","description":"Org-level configuration: log-redaction rules and other per-organization settings."},{"name":"Overview","description":"Single-pane org summary: monitor health counts, open incidents, open error count, and 24h log volume."},{"name":"Export","description":"CSV / data exports for backup and migration."},{"name":"Badge","description":"Public SVG status badges (shields.io-style) for embedding in READMEs."},{"name":"Internal","description":"Server-to-server endpoints, not part of the public API contract."}]}