Endpoints

Monitors

GET/api/v1/me/monitors

List all monitors for the organization with pagination and filters.

Requires: Any member role

Authorization

APIKeyHeader
X-API-Key<token>

In: header

Query Parameters

page?Page

Page number

Range1 <= value
Default1
per_page?Per Page

Items per page

Range1 <= value <= 100
Default20
status?|

Filter by status

type?|

Filter by monitor type

search?|

Search in name and URL

sort?Sort

Sort field

Default"created_at"
order?Order

Sort order (asc/desc)

Default"desc"

Response Body

application/json

application/json

curl -X GET "https://example.com/api/v1/me/monitors"
{  "data": [    {      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",      "name": "string",      "type": "http",      "url": "string",      "status": "up",      "interval_seconds": 0,      "last_check_at": "2019-08-24T14:15:22Z",      "last_response_time_ms": 0,      "created_at": "2019-08-24T14:15:22Z",      "uptime_24h": 0,      "service_id": "641e839f-864e-4cce-98f9-40f6cbb3e9e0"    }  ],  "pagination": {},  "meta": {}}
POST/api/v1/me/monitors

Create a new monitor for the organization.

Requires: Editor role or above

Authorization

HTTPBearer
AuthorizationBearer <token>

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Schema for creating a monitor.

Response Body

application/json

application/json

curl -X POST "https://example.com/api/v1/me/monitors" \  -H "Content-Type: application/json" \  -d '{    "name": "string"  }'
{  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",  "org_id": "a40f5d1f-d889-42e9-94ea-b9b33585fc6b",  "created_by": "ee824cad-d7a6-4f48-87dc-e8461a9201c4",  "name": "string",  "type": "http",  "url": "string",  "interval_seconds": 0,  "status": "up",  "last_check_at": "2019-08-24T14:15:22Z",  "last_response_time_ms": 0,  "config": {    "type": "http",    "method": "GET",    "timeout_ms": 1000,    "expected_status": [      100    ],    "expected_body": "string",    "headers": {      "property1": "string",      "property2": "string"    },    "body": "string",    "follow_redirects": true,    "verify_ssl": true  },  "created_at": "2019-08-24T14:15:22Z",  "updated_at": "2019-08-24T14:15:22Z",  "paused_at": "2019-08-24T14:15:22Z",  "service_id": "641e839f-864e-4cce-98f9-40f6cbb3e9e0",  "uptime_24h": 0}
GET/api/v1/me/monitors/{monitor_id}

Get monitor details by ID.

Requires: Any member role

Authorization

APIKeyHeader
X-API-Key<token>

In: header

Path Parameters

monitor_id*Monitor Id
Formatuuid

Response Body

application/json

application/json

curl -X GET "https://example.com/api/v1/me/monitors/497f6eca-6276-4993-bfeb-53cbbbba6f08"
{  "data": {    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",    "org_id": "a40f5d1f-d889-42e9-94ea-b9b33585fc6b",    "created_by": "ee824cad-d7a6-4f48-87dc-e8461a9201c4",    "name": "string",    "type": "http",    "url": "string",    "interval_seconds": 0,    "status": "up",    "last_check_at": "2019-08-24T14:15:22Z",    "last_response_time_ms": 0,    "config": {      "type": "http",      "method": "GET",      "timeout_ms": 1000,      "expected_status": [        100      ],      "expected_body": "string",      "headers": {        "property1": "string",        "property2": "string"      },      "body": "string",      "follow_redirects": true,      "verify_ssl": true    },    "created_at": "2019-08-24T14:15:22Z",    "updated_at": "2019-08-24T14:15:22Z",    "paused_at": "2019-08-24T14:15:22Z",    "service_id": "641e839f-864e-4cce-98f9-40f6cbb3e9e0",    "uptime_24h": 0  },  "meta": {}}
PATCH/api/v1/me/monitors/{monitor_id}

Update a monitor.

Requires: Editor role or above

Gated by require_monitors_write, which also accepts a monitors:write API key, so the actor is resolved via get_audit_actor rather than required via get_current_user (issue #603's regression — see app/dependencies/audit_actor.py).

Authorization

X-API-Key<token>

In: header

Path Parameters

monitor_id*Monitor Id
Formatuuid

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Schema for updating a monitor.

Response Body

application/json

application/json

curl -X PATCH "https://example.com/api/v1/me/monitors/497f6eca-6276-4993-bfeb-53cbbbba6f08" \  -H "Content-Type: application/json" \  -d '{}'
{  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",  "org_id": "a40f5d1f-d889-42e9-94ea-b9b33585fc6b",  "created_by": "ee824cad-d7a6-4f48-87dc-e8461a9201c4",  "name": "string",  "type": "http",  "url": "string",  "interval_seconds": 0,  "status": "up",  "last_check_at": "2019-08-24T14:15:22Z",  "last_response_time_ms": 0,  "config": {    "type": "http",    "method": "GET",    "timeout_ms": 1000,    "expected_status": [      100    ],    "expected_body": "string",    "headers": {      "property1": "string",      "property2": "string"    },    "body": "string",    "follow_redirects": true,    "verify_ssl": true  },  "created_at": "2019-08-24T14:15:22Z",  "updated_at": "2019-08-24T14:15:22Z",  "paused_at": "2019-08-24T14:15:22Z",  "service_id": "641e839f-864e-4cce-98f9-40f6cbb3e9e0",  "uptime_24h": 0}
DELETE/api/v1/me/monitors/{monitor_id}

Delete a monitor (soft delete).

Requires: Editor role or above

Gated by require_monitors_write, which also accepts a monitors:write API key, so the actor is resolved via get_audit_actor rather than required via get_current_user (issue #603's regression — see app/dependencies/audit_actor.py).

Authorization

X-API-Key<token>

In: header

Path Parameters

monitor_id*Monitor Id
Formatuuid

Response Body

application/json

curl -X DELETE "https://example.com/api/v1/me/monitors/497f6eca-6276-4993-bfeb-53cbbbba6f08"
Empty
POST/api/v1/me/monitors/{monitor_id}/pause

Pause a monitor.

Requires: Editor role or above

Gated by require_monitors_write, which also accepts a monitors:write API key, so the actor is resolved via get_audit_actor rather than required via get_current_user (issue #603's regression — see app/dependencies/audit_actor.py).

Authorization

X-API-Key<token>

In: header

Path Parameters

monitor_id*Monitor Id
Formatuuid

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Schema for pausing a monitor.

Response Body

application/json

application/json

curl -X POST "https://example.com/api/v1/me/monitors/497f6eca-6276-4993-bfeb-53cbbbba6f08/pause" \  -H "Content-Type: application/json" \  -d '{}'
{  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",  "org_id": "a40f5d1f-d889-42e9-94ea-b9b33585fc6b",  "created_by": "ee824cad-d7a6-4f48-87dc-e8461a9201c4",  "name": "string",  "type": "http",  "url": "string",  "interval_seconds": 0,  "status": "up",  "last_check_at": "2019-08-24T14:15:22Z",  "last_response_time_ms": 0,  "config": {    "type": "http",    "method": "GET",    "timeout_ms": 1000,    "expected_status": [      100    ],    "expected_body": "string",    "headers": {      "property1": "string",      "property2": "string"    },    "body": "string",    "follow_redirects": true,    "verify_ssl": true  },  "created_at": "2019-08-24T14:15:22Z",  "updated_at": "2019-08-24T14:15:22Z",  "paused_at": "2019-08-24T14:15:22Z",  "service_id": "641e839f-864e-4cce-98f9-40f6cbb3e9e0",  "uptime_24h": 0}
POST/api/v1/me/monitors/{monitor_id}/resume

Resume a paused monitor.

Requires: Editor role or above

Gated by require_monitors_write, which also accepts a monitors:write API key, so the actor is resolved via get_audit_actor rather than required via get_current_user (issue #603's regression — see app/dependencies/audit_actor.py).

Authorization

X-API-Key<token>

In: header

Path Parameters

monitor_id*Monitor Id
Formatuuid

Response Body

application/json

application/json

curl -X POST "https://example.com/api/v1/me/monitors/497f6eca-6276-4993-bfeb-53cbbbba6f08/resume"
{  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",  "org_id": "a40f5d1f-d889-42e9-94ea-b9b33585fc6b",  "created_by": "ee824cad-d7a6-4f48-87dc-e8461a9201c4",  "name": "string",  "type": "http",  "url": "string",  "interval_seconds": 0,  "status": "up",  "last_check_at": "2019-08-24T14:15:22Z",  "last_response_time_ms": 0,  "config": {    "type": "http",    "method": "GET",    "timeout_ms": 1000,    "expected_status": [      100    ],    "expected_body": "string",    "headers": {      "property1": "string",      "property2": "string"    },    "body": "string",    "follow_redirects": true,    "verify_ssl": true  },  "created_at": "2019-08-24T14:15:22Z",  "updated_at": "2019-08-24T14:15:22Z",  "paused_at": "2019-08-24T14:15:22Z",  "service_id": "641e839f-864e-4cce-98f9-40f6cbb3e9e0",  "uptime_24h": 0}
GET/api/v1/me/monitors/{monitor_id}/checks

Get paginated monitoring check results for a specific monitor.

Results are ordered newest first. Use since to filter by timestamp and limit/offset for pagination.

Requires: Any member role

Authorization

APIKeyHeader
X-API-Key<token>

In: header

Path Parameters

monitor_id*Monitor Id
Formatuuid

Query Parameters

limit?Limit

Number of results to return

Range1 <= value <= 200
Default50
offset?Offset

Number of records to skip

Range0 <= value
Default0
since?|

Return checks after this timestamp

Response Body

application/json

application/json

curl -X GET "https://example.com/api/v1/me/monitors/497f6eca-6276-4993-bfeb-53cbbbba6f08/checks"
{  "checks": [    {      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",      "monitor_id": "ff93e0f3-22fc-4809-8875-a2d24a9803b1",      "is_successful": true,      "response_time_ms": 0,      "status_code": 0,      "error_message": "string",      "created_at": "2019-08-24T14:15:22Z"    }  ],  "total": 0,  "limit": 0,  "offset": 0}