okokumo Sentinel API (1)

Download OpenAPI specification:

Infrastructure monitoring API — HTTP(S) checks, heartbeat/cron monitoring, TLS/domain expiry checks, and alert channels.

Full narrative walkthrough (auth, examples, gotchas): see docs/api-reference.md and docs/getting-started.md.

Account

Current user and organization

Authorizations:
ApiKeyAuth

Responses

Response samples

Content type
application/json
{
  • "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
  • "email": "string",
  • "organization_id": "7c60d51f-b44e-4682-87d6-449835ea4de6",
  • "organization_name": "string",
  • "role": "owner"
}

API keys

List API keys

Owners/admins only. Only the display prefix is returned, never the raw key.

Authorizations:
ApiKeyAuth

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create an API key

Owners/admins only. The raw key is returned once, at creation — store it somewhere safe; only key_prefix is retrievable afterwards.

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required
name
required
string

Responses

Request samples

Content type
application/json
{
  • "name": "string"
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "name": "string",
  • "key_prefix": "sk_ab12cd34",
  • "created_at": "2019-08-24T14:15:22Z",
  • "key": "string"
}

Revoke an API key

Authorizations:
ApiKeyAuth
path Parameters
id
required
string <uuid>

Responses

Checks

List checks

Authorizations:
ApiKeyAuth

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create a check

interval_seconds is floored by your plan (free 300s, starter 60s, pro 30s). For type: heartbeat or cron, omit url/method/assertions and send grace_seconds instead — the response includes a ping_token.

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required
type
string
Default: "http"
Enum: "http" "heartbeat" "cron" "tls" "domain"
name
required
string
url
string

Required for http/tls/domain

method
string
Default: "GET"
interval_seconds
integer [ 30 .. 86400 ]
Default: 300
timeout_seconds
integer
Default: 10
grace_seconds
integer

heartbeat/cron only

failure_threshold
integer [ 1 .. 10 ]
Default: 2
Array of objects (Assertion)
enabled
boolean
Default: true

Responses

Request samples

Content type
application/json
{
  • "type": "http",
  • "name": "string",
  • "url": "string",
  • "method": "GET",
  • "interval_seconds": 300,
  • "timeout_seconds": 10,
  • "grace_seconds": 0,
  • "failure_threshold": 2,
  • "assertions": [
    ],
  • "enabled": true
}

Response samples

Content type
application/json
{
  • "type": "http",
  • "name": "string",
  • "url": "string",
  • "method": "GET",
  • "interval_seconds": 300,
  • "timeout_seconds": 10,
  • "grace_seconds": 0,
  • "failure_threshold": 2,
  • "assertions": [
    ],
  • "enabled": true,
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "organization_id": "7c60d51f-b44e-4682-87d6-449835ea4de6",
  • "state": "up",
  • "consecutive_failures": 0,
  • "ping_token": "string",
  • "next_run_at": "2019-08-24T14:15:22Z",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

Get a check

Authorizations:
ApiKeyAuth
path Parameters
id
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "type": "http",
  • "name": "string",
  • "url": "string",
  • "method": "GET",
  • "interval_seconds": 300,
  • "timeout_seconds": 10,
  • "grace_seconds": 0,
  • "failure_threshold": 2,
  • "assertions": [
    ],
  • "enabled": true,
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "organization_id": "7c60d51f-b44e-4682-87d6-449835ea4de6",
  • "state": "up",
  • "consecutive_failures": 0,
  • "ping_token": "string",
  • "next_run_at": "2019-08-24T14:15:22Z",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

Replace a check

Replaces the whole check — it does not patch. Omitted fields are not kept from the existing row. type is immutable after creation.

Authorizations:
ApiKeyAuth
path Parameters
id
required
string <uuid>
Request Body schema: application/json
required
type
string
Default: "http"
Enum: "http" "heartbeat" "cron" "tls" "domain"
name
required
string
url
string

Required for http/tls/domain

method
string
Default: "GET"
interval_seconds
integer [ 30 .. 86400 ]
Default: 300
timeout_seconds
integer
Default: 10
grace_seconds
integer

heartbeat/cron only

failure_threshold
integer [ 1 .. 10 ]
Default: 2
Array of objects (Assertion)
enabled
boolean
Default: true

Responses

Request samples

Content type
application/json
{
  • "type": "http",
  • "name": "string",
  • "url": "string",
  • "method": "GET",
  • "interval_seconds": 300,
  • "timeout_seconds": 10,
  • "grace_seconds": 0,
  • "failure_threshold": 2,
  • "assertions": [
    ],
  • "enabled": true
}

Response samples

Content type
application/json
{
  • "type": "http",
  • "name": "string",
  • "url": "string",
  • "method": "GET",
  • "interval_seconds": 300,
  • "timeout_seconds": 10,
  • "grace_seconds": 0,
  • "failure_threshold": 2,
  • "assertions": [
    ],
  • "enabled": true,
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "organization_id": "7c60d51f-b44e-4682-87d6-449835ea4de6",
  • "state": "up",
  • "consecutive_failures": 0,
  • "ping_token": "string",
  • "next_run_at": "2019-08-24T14:15:22Z",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

Delete a check

Authorizations:
ApiKeyAuth
path Parameters
id
required
string <uuid>

Responses

Latency/uptime stats

Authorizations:
ApiKeyAuth
path Parameters
id
required
string <uuid>
query Parameters
period
string
Default: "day"
Enum: "day" "week" "month"

day = 15-min buckets, week = 2h buckets, month = 12h buckets

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Recent state transitions

Last 50 state changes, newest first.

Authorizations:
ApiKeyAuth
path Parameters
id
required
string <uuid>

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Alert-channel routing for a check

No rows = every org channel fires (default). Assigned rows = only those channels fire.

Authorizations:
ApiKeyAuth
path Parameters
id
required
string <uuid>

Responses

Response samples

Content type
application/json
[
  • "497f6eca-6276-4993-bfeb-53cbbbba6f08"
]

Set alert-channel routing for a check

Authorizations:
ApiKeyAuth
path Parameters
id
required
string <uuid>
Request Body schema: application/json
required
Array
string <uuid>

Responses

Request samples

Content type
application/json
[
  • "497f6eca-6276-4993-bfeb-53cbbbba6f08"
]

Alert channels

List alert channels

Authorizations:
ApiKeyAuth

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create an alert channel

For type: webhook, a signing secret is auto-generated if config.secret is omitted — always send the existing secret back unchanged on update, or a new one is minted and downstream signature verification silently breaks.

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required
type
required
string
Enum: "email" "webhook" "slack"
name
required
string
required
object

email: {to}. webhook: {url, secret?}. slack: {webhook_url}.

Responses

Request samples

Content type
application/json
{
  • "type": "email",
  • "name": "string",
  • "config": {
    }
}

Response samples

Content type
application/json
{
  • "type": "email",
  • "name": "string",
  • "config": {
    },
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "organization_id": "7c60d51f-b44e-4682-87d6-449835ea4de6"
}

Replace an alert channel

Authorizations:
ApiKeyAuth
path Parameters
id
required
string <uuid>
Request Body schema: application/json
required
type
required
string
Enum: "email" "webhook" "slack"
name
required
string
required
object

email: {to}. webhook: {url, secret?}. slack: {webhook_url}.

Responses

Request samples

Content type
application/json
{
  • "type": "email",
  • "name": "string",
  • "config": {
    }
}

Response samples

Content type
application/json
{
  • "type": "email",
  • "name": "string",
  • "config": {
    },
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "organization_id": "7c60d51f-b44e-4682-87d6-449835ea4de6"
}

Delete an alert channel

Authorizations:
ApiKeyAuth
path Parameters
id
required
string <uuid>

Responses

Send a test alert

Authorizations:
ApiKeyAuth
path Parameters
id
required
string <uuid>

Responses