{"openapi":"3.1.0","info":{"title":"UptimePoint API","version":"1.0.0","description":"Complete REST API to manage your sites, checks, alerts, status pages and reports.\n\nAuthentication: all requests require an `Authorization: Bearer awm_xxx` header where `awm_xxx` is your API key (generated from Dashboard > Settings > API Keys).\n\nRate limits: pagination defaults to 50 results, max 100 per page."},"servers":[{"url":"/api/v1","description":"API v1"}],"paths":{"/sites":{"get":{"tags":["Sites"],"summary":"List sites","description":"Returns all sites for the organization with pagination and search.","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","default":50},"description":"Max results"},{"name":"offset","in":"query","schema":{"type":"integer","default":0},"description":"Offset (page)"},{"name":"search","in":"query","schema":{"type":"string"},"description":"Search by name"}],"responses":{"200":{"description":"List of sites","content":{"application/json":{"example":{"data":[{"id":"clx...","name":"My Site","url":"https://example.com","isActive":true,"checkInterval":5,"latestCheck":{"status":"UP","checkedAt":"2026-06-14T08:00:00Z"}}],"meta":{"total":1,"limit":50,"offset":0}}}}},"401":{"description":"Invalid or missing API key"}}},"post":{"tags":["Sites"],"summary":"Create a site","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["name","url"],"properties":{"name":{"type":"string","description":"Site name"},"url":{"type":"string","description":"Site URL"},"clientName":{"type":"string"},"clientEmail":{"type":"string"},"checkInterval":{"type":"number","default":5},"monitorUptime":{"type":"boolean","default":true},"monitorSsl":{"type":"boolean","default":true},"monitorDomain":{"type":"boolean","default":true},"monitorDns":{"type":"boolean","default":true},"monitorPerformance":{"type":"boolean","default":true},"monitorSecurity":{"type":"boolean","default":true},"monitorPing":{"type":"boolean","default":false},"monitorPort":{"type":"boolean","default":false},"monitorPorts":{"type":"string"},"monitorKeyword":{"type":"boolean","default":false},"monitorKeywords":{"type":"string"},"monitorUdp":{"type":"boolean","default":false},"monitorUdpPorts":{"type":"string"}}}}}},"responses":{"201":{"description":"Site created"},"400":{"description":"name and url are required"}}}},"/sites/{id}":{"get":{"tags":["Sites"],"summary":"Get site details","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Site details"},"404":{"description":"Site not found"}}},"put":{"tags":["Sites"],"summary":"Update a site","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string"},"clientName":{"type":"string"},"isActive":{"type":"boolean"},"checkInterval":{"type":"number"},"monitorUptime":{"type":"boolean"},"monitorSsl":{"type":"boolean"},"monitorDomain":{"type":"boolean"},"monitorDns":{"type":"boolean"},"monitorPerformance":{"type":"boolean"},"monitorSecurity":{"type":"boolean"},"monitorPing":{"type":"boolean"},"monitorPort":{"type":"boolean"},"monitorPorts":{"type":"string"},"monitorKeyword":{"type":"boolean"},"monitorKeywords":{"type":"string"},"monitorUdp":{"type":"boolean"},"monitorUdpPorts":{"type":"string"}}}}}},"responses":{"200":{"description":"Site updated"}}},"delete":{"tags":["Sites"],"summary":"Delete a site","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Site deleted"}}}},"/sites/{id}/checks":{"get":{"tags":["Checks"],"summary":"Check history for a site","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","default":50}}],"responses":{"200":{"description":"List of check results"}}},"post":{"tags":["Checks"],"summary":"Trigger an immediate check","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Checks triggered"}}}},"/checks":{"get":{"tags":["Checks"],"summary":"List check results","description":"Filterable by siteId and type.","parameters":[{"name":"siteId","in":"query","schema":{"type":"string"},"description":"Filter by site"},{"name":"type","in":"query","schema":{"type":"string"},"description":"Filter by type (UPTIME, SSL, DNS, ...)"},{"name":"limit","in":"query","schema":{"type":"integer","default":50}},{"name":"offset","in":"query","schema":{"type":"integer","default":0}}],"responses":{"200":{"description":"List of check results"}}}},"/checks/{id}":{"get":{"tags":["Checks"],"summary":"Get check result details","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Check details"}}}},"/alerts":{"get":{"tags":["Alerts"],"summary":"List alert configurations","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","default":50}},{"name":"offset","in":"query","schema":{"type":"integer","default":0}}],"responses":{"200":{"description":"List of alerts with the last 5 events"}}},"post":{"tags":["Alerts"],"summary":"Create an alert configuration","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["email"],"properties":{"email":{"type":"string"},"enabled":{"type":"boolean","default":true},"uptimeDown":{"type":"boolean","default":true},"uptimeRecovered":{"type":"boolean","default":true},"sslWarningDays":{"type":"array","items":{"type":"integer"}},"domainWarningDays":{"type":"array","items":{"type":"integer"}},"dnsAlerts":{"type":"boolean","default":true},"performanceAlerts":{"type":"boolean","default":true},"securityAlerts":{"type":"boolean","default":true},"pingDown":{"type":"boolean","default":true},"portDown":{"type":"boolean","default":true},"keywordDown":{"type":"boolean","default":true},"udpDown":{"type":"boolean","default":true},"slackWebhookUrl":{"type":"string"},"telegramBotToken":{"type":"string"},"telegramChatId":{"type":"string"}}}}}},"responses":{"201":{"description":"Alert created"}}}},"/alerts/{id}":{"get":{"tags":["Alerts"],"summary":"Get alert details","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Alert details with the last 20 events"}}},"put":{"tags":["Alerts"],"summary":"Update an alert","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string"},"enabled":{"type":"boolean"},"uptimeDown":{"type":"boolean"},"slackWebhookUrl":{"type":"string"},"telegramBotToken":{"type":"string"},"telegramChatId":{"type":"string"}}}}}},"responses":{"200":{"description":"Alert updated"}}},"delete":{"tags":["Alerts"],"summary":"Delete an alert","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Alert deleted"}}}},"/alerts/events":{"get":{"tags":["Alerts"],"summary":"Alert event history","parameters":[{"name":"alertConfigId","in":"query","schema":{"type":"string"},"description":"Filter by alert"},{"name":"limit","in":"query","schema":{"type":"integer","default":50}},{"name":"offset","in":"query","schema":{"type":"integer","default":0}}],"responses":{"200":{"description":"List of events"}}}},"/status-pages":{"get":{"tags":["Status Pages"],"summary":"List status pages","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","default":50}},{"name":"offset","in":"query","schema":{"type":"integer","default":0}}],"responses":{"200":{"description":"List of status pages with subscribers"}}},"post":{"tags":["Status Pages"],"summary":"Create a status page","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["title","slug"],"properties":{"title":{"type":"string"},"slug":{"type":"string","description":"Unique URL identifier (e.g. my-status)"},"description":{"type":"string"},"siteIds":{"type":"array","items":{"type":"string"}},"isPublished":{"type":"boolean","default":false},"template":{"type":"string","enum":["compact","detailed","minimal"]},"allowSubscribers":{"type":"boolean","default":false}}}}}},"responses":{"201":{"description":"Status page created"}}}},"/status-pages/{id}":{"get":{"tags":["Status Pages"],"summary":"Get status page details","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Details with subscribers"}}},"put":{"tags":["Status Pages"],"summary":"Update a status page","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"siteIds":{"type":"array","items":{"type":"string"}},"isPublished":{"type":"boolean"},"customDomain":{"type":"string"},"template":{"type":"string"},"password":{"type":"string"},"noIndex":{"type":"boolean"},"gaTrackingId":{"type":"string"},"allowSubscribers":{"type":"boolean"},"maintenanceMode":{"type":"boolean"},"serviceGroups":{"type":"array","items":{"type":"object"}},"incidents":{"type":"array","items":{"type":"object"}}}}}}},"responses":{"200":{"description":"Status page updated"}}},"delete":{"tags":["Status Pages"],"summary":"Delete a status page","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Status page deleted"}}}},"/status-pages/{id}/subscribers":{"get":{"tags":["Status Pages"],"summary":"List subscribers for a status page","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"List of email subscribers"}}}},"/monitors":{"$ref":"#/paths/~1sites"},"/monitors/{id}":{"$ref":"#/paths/~1sites~1{id}"},"/monitors/{id}/checks":{"$ref":"#/paths/~1sites~1{id}~1checks"},"/maintenance-windows":{"get":{"tags":["Maintenance"],"summary":"List maintenance windows","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","default":50}},{"name":"offset","in":"query","schema":{"type":"integer","default":0}}],"responses":{"200":{"description":"List of maintenance windows"}}},"post":{"tags":["Maintenance"],"summary":"Create a maintenance window","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["title","startsAt","endsAt","siteIds"],"properties":{"title":{"type":"string"},"description":{"type":"string"},"startsAt":{"type":"string","format":"date-time"},"endsAt":{"type":"string","format":"date-time"},"siteIds":{"type":"array","items":{"type":"string"}},"recurring":{"type":"string","enum":["none","daily","weekly","monthly"],"default":"none"},"timezone":{"type":"string","default":"UTC"}}}}}},"responses":{"201":{"description":"Window created"}}}},"/maintenance-windows/{id}":{"get":{"tags":["Maintenance"],"summary":"Get maintenance window details","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Window details"}}},"put":{"tags":["Maintenance"],"summary":"Update a maintenance window","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"startsAt":{"type":"string","format":"date-time"},"endsAt":{"type":"string","format":"date-time"},"siteIds":{"type":"array","items":{"type":"string"}},"recurring":{"type":"string"},"timezone":{"type":"string"}}}}}},"responses":{"200":{"description":"Window updated"}}},"delete":{"tags":["Maintenance"],"summary":"Delete a maintenance window","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Window deleted"}}}},"/heartbeats":{"get":{"tags":["Heartbeats"],"summary":"List heartbeats","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","default":50}},{"name":"offset","in":"query","schema":{"type":"integer","default":0}}],"responses":{"200":{"description":"List of heartbeats"}}},"post":{"tags":["Heartbeats"],"summary":"Create a heartbeat","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["name"],"properties":{"name":{"type":"string"},"gracePeriod":{"type":"integer","default":300},"interval":{"type":"integer","default":300},"cronExpression":{"type":"string"}}}}}},"responses":{"201":{"description":"Heartbeat created"}}}},"/heartbeats/{id}":{"get":{"tags":["Heartbeats"],"summary":"Get heartbeat details","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Heartbeat details with pings"}}},"put":{"tags":["Heartbeats"],"summary":"Update a heartbeat","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"gracePeriod":{"type":"integer"},"interval":{"type":"integer"},"cronExpression":{"type":"string"},"paused":{"type":"boolean"}}}}}},"responses":{"200":{"description":"Heartbeat updated"}}},"delete":{"tags":["Heartbeats"],"summary":"Delete a heartbeat","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Heartbeat deleted"}}}},"/heartbeats/{id}/pings":{"get":{"tags":["Heartbeats"],"summary":"Ping history for a heartbeat","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","default":50}},{"name":"offset","in":"query","schema":{"type":"integer","default":0}}],"responses":{"200":{"description":"List of pings"}}}},"/reports":{"get":{"tags":["Reports"],"summary":"List client reports","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","default":50}},{"name":"offset","in":"query","schema":{"type":"integer","default":0}}],"responses":{"200":{"description":"List of reports"}}},"post":{"tags":["Reports"],"summary":"Create a client report","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["title","clientName"],"properties":{"title":{"type":"string"},"clientName":{"type":"string"},"clientEmail":{"type":"string"},"siteIds":{"type":"array","items":{"type":"string"}},"includeUptime":{"type":"boolean","default":true},"includeSsl":{"type":"boolean","default":true},"includeDomain":{"type":"boolean","default":true},"includeDns":{"type":"boolean","default":true},"includePerformance":{"type":"boolean","default":true},"includeSecurity":{"type":"boolean","default":true},"periodDays":{"type":"integer","default":30},"frequency":{"type":"string","enum":["WEEKLY","MONTHLY","QUARTERLY"]},"autoSend":{"type":"boolean","default":false}}}}}},"responses":{"201":{"description":"Report created"}}}},"/reports/{id}":{"get":{"tags":["Reports"],"summary":"Get report details","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Report details"}}},"delete":{"tags":["Reports"],"summary":"Delete a report","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Report deleted"}}}},"/incidents":{"get":{"tags":["Incidents"],"summary":"List incidents","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","default":50}},{"name":"offset","in":"query","schema":{"type":"integer","default":0}}],"responses":{"200":{"description":"List of incidents"}}},"post":{"tags":["Incidents"],"summary":"Create an incident","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"rootCause":{"type":"string"},"impact":{"type":"string","enum":["minor","major","critical"]},"siteIds":{"type":"array","items":{"type":"string"}},"statusPageIds":{"type":"array","items":{"type":"string"}}},"required":["title"]}}}},"responses":{"201":{"description":"Incident created"}}}},"/incidents/{id}":{"get":{"tags":["Incidents"],"summary":"Get incident details","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Incident details with updates"}}},"put":{"tags":["Incidents"],"summary":"Update an incident","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"rootCause":{"type":"string"},"impact":{"type":"string"},"status":{"type":"string","enum":["investigating","identified","monitoring","resolved"]}}}}}},"responses":{"200":{"description":"Incident updated"}}},"delete":{"tags":["Incidents"],"summary":"Delete an incident","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Incident deleted"}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"awm_xxx","description":"Your API key starts with awm_"}}},"security":[{"bearerAuth":[]}]}