2024-08-11 16:15:30 +03:00
{
2024-10-17 12:07:30 +08:00
"openapi" : "3.1.0" ,
"info" : {
"title" : "BlueWave Uptime" ,
"summary" : "BlueWave Uptime OpenAPI Specifications" ,
"description" : "BlueWave Uptime is an open source server monitoring application used to track the operational status and performance of servers and websites. It regularly checks whether a server/website is accessible and performs optimally, providing real-time alerts and reports on the monitored services' availability, downtime, and response time." ,
"contact" : {
"name" : "API Support" ,
"url" : "mailto:support@bluewavelabs.ca" ,
"email" : "support@bluewavelabs.ca"
},
"license" : {
"name" : "AGPLv3" ,
"url" : "https://github.com/bluewave-labs/bluewave-uptime/tree/HEAD/LICENSE"
},
"version" : "1.0"
},
"servers" : [
{
"url" : "http://localhost:{PORT}/{API_PATH}" ,
"description" : "Local Development Server" ,
"variables" : {
"PORT" : {
"description" : "API Port" ,
2024-10-18 11:39:07 +05:30
"enum" : [
"5000"
],
2024-10-17 12:07:30 +08:00
"default" : "5000"
},
"API_PATH" : {
"description" : "API Base Path" ,
2024-10-18 11:39:07 +05:30
"enum" : [
"api/v1"
],
2024-10-17 12:07:30 +08:00
"default" : "api/v1"
}
}
},
{
"url" : "http://localhost/{API_PATH}" ,
"description" : "Distribution Local Development Server" ,
"variables" : {
"API_PATH" : {
"description" : "API Base Path" ,
2024-10-18 11:39:07 +05:30
"enum" : [
"api/v1"
],
2024-10-17 12:07:30 +08:00
"default" : "api/v1"
}
}
},
{
"url" : "https://uptime-demo.bluewavelabs.ca/{API_PATH}" ,
"description" : "Bluewave Demo Server" ,
"variables" : {
"PORT" : {
"description" : "API Port" ,
2024-10-18 11:39:07 +05:30
"enum" : [
"5000"
],
2024-10-17 12:07:30 +08:00
"default" : "5000"
},
"API_PATH" : {
"description" : "API Base Path" ,
2024-10-18 11:39:07 +05:30
"enum" : [
"api/v1"
],
2024-10-17 12:07:30 +08:00
"default" : "api/v1"
}
}
}
],
"tags" : [
{
"name" : "auth" ,
"description" : "Authentication"
},
{
"name" : "invite" ,
"description" : "Invite"
},
{
"name" : "monitors" ,
"description" : "Monitors"
},
{
"name" : "checks" ,
"description" : "Checks"
},
{
"name" : "maintenance-window" ,
"description" : "Maintenance window"
},
{
"name" : "queue" ,
"description" : "Queue"
}
],
"paths" : {
"/auth/register" : {
"post" : {
2024-10-18 11:39:07 +05:30
"tags" : [
"auth"
],
2024-10-17 12:07:30 +08:00
"description" : "Register a new user" ,
"requestBody" : {
"content" : {
"application/json" : {
"schema" : {
"type" : "object" ,
"required" : [
"firstName" ,
"lastName" ,
"email" ,
"password" ,
"role" ,
"teamId"
],
"properties" : {
"firstName" : {
"type" : "string"
},
"lastName" : {
"type" : "string"
},
"email" : {
"type" : "string" ,
"format" : "email"
},
"password" : {
"type" : "string" ,
"format" : "password"
},
"profileImage" : {
"type" : "file" ,
"format" : "file"
},
"role" : {
"type" : "array" ,
2024-10-18 11:39:07 +05:30
"enum" : [
[
"user"
],
[
"admin"
],
[
"superadmin"
],
[
"Demo"
]
],
"default" : [
"superadmin"
]
2024-10-17 12:07:30 +08:00
},
"teamId" : {
"type" : "string" ,
"format" : "uuid"
}
}
}
}
}
},
"responses" : {
"200" : {
"description" : "OK" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/SuccessResponse"
}
}
}
},
"422" : {
"description" : "Unprocessable Content" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
},
"500" : {
"description" : "Internal Server Error" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/auth/login" : {
"post" : {
2024-10-18 11:39:07 +05:30
"tags" : [
"auth"
],
2024-10-17 12:07:30 +08:00
"description" : "Login with credentials" ,
"requestBody" : {
"content" : {
"application/json" : {
"schema" : {
"type" : "object" ,
2024-10-18 11:39:07 +05:30
"required" : [
"email" ,
"password"
],
2024-10-17 12:07:30 +08:00
"properties" : {
"email" : {
"type" : "string" ,
"format" : "email"
},
"password" : {
"type" : "string" ,
"format" : "password"
}
}
}
}
}
},
"responses" : {
"200" : {
"description" : "OK" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/SuccessResponse"
}
}
}
},
"422" : {
"description" : "Unprocessable Content" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
},
"500" : {
"description" : "Internal Server Error" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
2024-10-22 10:26:49 +05:30
"/auth/refresh" : {
"post" : {
"tags" : [
"auth"
],
"description" : "Generates a new auth token if the refresh token is valid." ,
"requestBody" : {
"content" : {
"application/json" : {
"schema" : {
"type" : "object" ,
"properties" : {}
}
}
},
"required" : false
},
"parameters" : [
{
"name" : "x-refresh-token" ,
"in" : "header" ,
"description" : "Refresh token required to generate a new auth token." ,
"required" : true ,
"schema" : {
"type" : "string"
}
},
{
"name" : "authorization" ,
"in" : "header" ,
"description" : "Old access token, used to extract payload)." ,
"required" : true ,
"schema" : {
"type" : "string"
}
}
],
"responses" : {
"200" : {
"description" : "New access token generated." ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/SuccessResponse"
}
}
}
},
"401" : {
"description" : "Unauthorized or invalid refresh token." ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
},
"500" : {
"description" : "Internal Server Error" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
2024-10-17 12:07:30 +08:00
"/auth/user/{userId}" : {
"put" : {
2024-10-18 11:39:07 +05:30
"tags" : [
"auth"
],
2024-10-17 12:07:30 +08:00
"description" : "Change user information" ,
"parameters" : [
{
"name" : "userId" ,
"in" : "path" ,
"required" : true ,
"schema" : {
"type" : "string"
}
}
],
"requestBody" : {
"required" : true ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/UserUpdateRequest"
}
}
}
},
"responses" : {
"200" : {
"description" : "OK" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/SuccessResponse"
}
}
}
},
"422" : {
"description" : "Unprocessable Content" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
},
"500" : {
"description" : "Internal Server Error" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
}
},
"security" : [
{
"bearerAuth" : []
}
]
},
"delete" : {
2024-10-18 11:39:07 +05:30
"tags" : [
"auth"
],
2024-10-17 12:07:30 +08:00
"description" : "Delete user" ,
"parameters" : [
{
"name" : "userId" ,
"in" : "path" ,
"required" : true ,
"schema" : {
"type" : "string"
}
}
],
"responses" : {
"200" : {
"description" : "OK" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/SuccessResponse"
}
}
}
},
"422" : {
"description" : "Unprocessable Content" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
},
"500" : {
"description" : "Internal Server Error" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
}
},
"security" : [
{
"bearerAuth" : []
}
]
}
},
"/auth/users/superadmin" : {
"get" : {
2024-10-18 11:39:07 +05:30
"tags" : [
"auth"
],
2024-10-17 12:07:30 +08:00
"description" : "Checks to see if an admin account exists" ,
"responses" : {
"200" : {
"description" : "OK" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/SuccessResponse"
}
}
}
},
"422" : {
"description" : "Unprocessable Content" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
},
"500" : {
"description" : "Internal Server Error" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
}
},
"security" : [
{
"bearerAuth" : []
}
]
}
},
"/auth/users" : {
"get" : {
2024-10-18 11:39:07 +05:30
"tags" : [
"auth"
],
2024-10-17 12:07:30 +08:00
"description" : "Get all users" ,
"responses" : {
"200" : {
"description" : "OK" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/SuccessResponse"
}
}
}
},
"422" : {
"description" : "Unprocessable Content" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
},
"500" : {
"description" : "Internal Server Error" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
}
},
"security" : [
{
"bearerAuth" : []
}
]
}
},
"/auth/recovery/request" : {
"post" : {
2024-10-18 11:39:07 +05:30
"tags" : [
"auth"
],
2024-10-17 12:07:30 +08:00
"description" : "Request a recovery token" ,
"requestBody" : {
"content" : {
"application/json" : {
"schema" : {
"type" : "object" ,
2024-10-18 11:39:07 +05:30
"required" : [
"email"
],
2024-10-17 12:07:30 +08:00
"properties" : {
"email" : {
"type" : "string" ,
"format" : "email"
}
}
}
}
}
},
"responses" : {
"200" : {
"description" : "OK" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/SuccessResponse"
}
}
}
},
"422" : {
"description" : "Unprocessable Content" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
},
"500" : {
"description" : "Internal Server Error" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/auth/recovery/validate" : {
"post" : {
2024-10-18 11:39:07 +05:30
"tags" : [
"auth"
],
2024-10-17 12:07:30 +08:00
"description" : "Validate recovery token" ,
"requestBody" : {
"content" : {
"application/json" : {
"schema" : {
"type" : "object" ,
2024-10-18 11:39:07 +05:30
"required" : [
"recoveryToken"
],
2024-10-17 12:07:30 +08:00
"properties" : {
"recoveryToken" : {
"type" : "string"
}
}
}
}
}
},
"responses" : {
"200" : {
"description" : "OK" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/SuccessResponse"
}
}
}
},
"422" : {
"description" : "Unprocessable Content" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
},
"500" : {
"description" : "Internal Server Error" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/auth/recovery/reset" : {
"post" : {
2024-10-18 11:39:07 +05:30
"tags" : [
"auth"
],
2024-10-17 12:07:30 +08:00
"description" : "Password reset" ,
"requestBody" : {
"content" : {
"application/json" : {
"schema" : {
"type" : "object" ,
2024-10-18 11:39:07 +05:30
"required" : [
"recoveryToken" ,
"password"
],
2024-10-17 12:07:30 +08:00
"properties" : {
"recoveryToken" : {
"type" : "string"
},
"password" : {
"type" : "string"
}
}
}
}
}
},
"responses" : {
"200" : {
"description" : "OK" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/SuccessResponse"
}
}
}
},
"422" : {
"description" : "Unprocessable Content" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
},
"500" : {
"description" : "Internal Server Error" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/invite" : {
"post" : {
2024-10-18 11:39:07 +05:30
"tags" : [
"invite"
],
2024-10-17 12:07:30 +08:00
"description" : "Request an invitation" ,
"requestBody" : {
"content" : {
"application/json" : {
"schema" : {
"type" : "object" ,
2024-10-18 11:39:07 +05:30
"required" : [
"email" ,
"role"
],
2024-10-17 12:07:30 +08:00
"properties" : {
"email" : {
"type" : "string"
},
"role" : {
"type" : "array"
}
}
}
}
}
},
"responses" : {
"200" : {
"description" : "OK" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/SuccessResponse"
}
}
}
},
"422" : {
"description" : "Unprocessable Content" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
},
"500" : {
"description" : "Internal Server Error" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
}
},
"security" : [
{
"bearerAuth" : []
}
]
}
},
"/invite/verify" : {
"post" : {
2024-10-18 11:39:07 +05:30
"tags" : [
"invite"
],
2024-10-17 12:07:30 +08:00
"description" : "Request an invitation" ,
"requestBody" : {
"content" : {
"application/json" : {
"schema" : {
"type" : "object" ,
2024-10-18 11:39:07 +05:30
"required" : [
"token"
],
2024-10-17 12:07:30 +08:00
"properties" : {
"token" : {
"type" : "string"
}
}
}
}
}
},
"responses" : {
"200" : {
"description" : "OK" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/SuccessResponse"
}
}
}
},
"422" : {
"description" : "Unprocessable Content" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
},
"500" : {
"description" : "Internal Server Error" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
}
},
"security" : [
{
"bearerAuth" : []
}
]
}
},
"/monitors" : {
"get" : {
2024-10-18 11:39:07 +05:30
"tags" : [
"monitors"
],
2024-10-17 12:07:30 +08:00
"description" : "Get all monitors" ,
"responses" : {
"200" : {
"description" : "OK" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/SuccessResponse"
}
}
}
},
"422" : {
"description" : "Unprocessable Content" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
},
"500" : {
"description" : "Internal Server Error" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
}
},
"security" : [
{
"bearerAuth" : []
}
]
},
"post" : {
2024-10-18 11:39:07 +05:30
"tags" : [
"monitors"
],
2024-10-17 12:07:30 +08:00
"description" : "Create a new monitor" ,
"requestBody" : {
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/CreateMonitorBody"
}
}
}
},
"responses" : {
"200" : {
"description" : "OK" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/SuccessResponse"
}
}
}
},
"422" : {
"description" : "Unprocessable Content" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
},
"500" : {
"description" : "Internal Server Error" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
}
},
"security" : [
{
"bearerAuth" : []
}
]
},
"delete" : {
2024-10-18 11:39:07 +05:30
"tags" : [
"monitors"
],
2024-10-17 12:07:30 +08:00
"description" : "Delete all monitors" ,
"responses" : {
"200" : {
"description" : "OK" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/SuccessResponse"
}
}
}
},
"422" : {
"description" : "Unprocessable Content" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
},
"500" : {
"description" : "Internal Server Error" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
}
},
"security" : [
{
"bearerAuth" : []
}
]
}
},
2024-10-18 11:39:07 +05:30
"/monitors/resolution/url" : {
"get" : {
"tags" : [
"monitors"
],
"description" : "Check DNS resolution for a given URL" ,
"parameters" : [
{
"name" : "monitorURL" ,
"in" : "query" ,
"required" : true ,
"schema" : {
"type" : "string" ,
"example" : "https://example.com"
},
"description" : "The URL to check DNS resolution for"
}
],
"responses" : {
"200" : {
"description" : "URL resolved successfully" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/SuccessResponse"
}
}
}
},
"400" : {
"description" : "DNS resolution failed" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
},
"422" : {
"description" : "Unprocessable Content" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
},
"500" : {
"description" : "Internal Server Error" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
}
},
"security" : [
{
"bearerAuth" : []
}
]
}
},
2024-10-17 12:07:30 +08:00
"/monitors/{monitorId}" : {
"get" : {
2024-10-18 11:39:07 +05:30
"tags" : [
"monitors"
],
2024-10-17 12:07:30 +08:00
"description" : "Get monitor by id" ,
"parameters" : [
{
"name" : "monitorId" ,
"in" : "path" ,
"required" : true ,
"schema" : {
"type" : "string"
}
}
],
"responses" : {
"200" : {
"description" : "OK" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/SuccessResponse"
}
}
}
},
"422" : {
"description" : "Unprocessable Content" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
},
"500" : {
"description" : "Internal Server Error" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
}
},
"security" : [
{
"bearerAuth" : []
}
]
},
"put" : {
2024-10-18 11:39:07 +05:30
"tags" : [
"monitors"
],
2024-10-17 12:07:30 +08:00
"description" : "Update monitor by id" ,
"parameters" : [
{
"name" : "monitorId" ,
"in" : "path" ,
"required" : true ,
"schema" : {
"type" : "string"
}
}
],
"requestBody" : {
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/UpdateMonitorBody"
}
}
}
},
"responses" : {
"200" : {
"description" : "OK" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/SuccessResponse"
}
}
}
},
"422" : {
"description" : "Unprocessable Content" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
},
"500" : {
"description" : "Internal Server Error" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
}
},
"security" : [
{
"bearerAuth" : []
}
]
},
"delete" : {
2024-10-18 11:39:07 +05:30
"tags" : [
"monitors"
],
2024-10-17 12:07:30 +08:00
"description" : "Delete monitor by id" ,
"parameters" : [
{
"name" : "monitorId" ,
"in" : "path" ,
"required" : true ,
"schema" : {
"type" : "string"
}
}
],
"responses" : {
"200" : {
"description" : "OK" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/SuccessResponse"
}
}
}
},
"422" : {
"description" : "Unprocessable Content" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
},
"500" : {
"description" : "Internal Server Error" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
}
},
"security" : [
{
"bearerAuth" : []
}
]
}
},
"/monitors/stats/{monitorId}" : {
"get" : {
2024-10-18 11:39:07 +05:30
"tags" : [
"monitors"
],
2024-10-17 12:07:30 +08:00
"description" : "Get monitor stats" ,
"parameters" : [
{
"name" : "monitorId" ,
"in" : "path" ,
"required" : true ,
"schema" : {
"type" : "string"
}
}
],
"responses" : {
"200" : {
"description" : "OK" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/SuccessResponse"
}
}
}
},
"422" : {
"description" : "Unprocessable Content" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
},
"500" : {
"description" : "Internal Server Error" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
}
},
"security" : [
{
"bearerAuth" : []
}
]
}
},
"/monitors/certificate/{monitorId}" : {
"get" : {
2024-10-18 11:39:07 +05:30
"tags" : [
"monitors"
],
2024-10-17 12:07:30 +08:00
"description" : "Get monitor certificate" ,
"parameters" : [
{
"name" : "monitorId" ,
"in" : "path" ,
"required" : true ,
"schema" : {
"type" : "string"
}
}
],
"responses" : {
"200" : {
"description" : "OK" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/SuccessResponse"
}
}
}
},
"422" : {
"description" : "Unprocessable Content" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
},
"500" : {
"description" : "Internal Server Error" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
}
},
"security" : [
{
"bearerAuth" : []
}
]
}
},
"/monitors/team/summary/{teamId}" : {
"get" : {
2024-10-18 11:39:07 +05:30
"tags" : [
"monitors"
],
2024-10-17 12:07:30 +08:00
"description" : "Get monitors and summary by teamId" ,
"parameters" : [
{
"name" : "teamId" ,
"in" : "path" ,
"required" : true ,
"schema" : {
"type" : "string"
}
},
{
"name" : "type" ,
"in" : "query" ,
"required" : false ,
"schema" : {
"type" : "array" ,
2024-10-18 11:39:07 +05:30
"enum" : [
"http" ,
"ping" ,
"pagespeed"
]
2024-10-17 12:07:30 +08:00
}
}
],
"responses" : {
"200" : {
"description" : "OK" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/SuccessResponse"
}
}
}
},
"422" : {
"description" : "Unprocessable Content" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
},
"500" : {
"description" : "Internal Server Error" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
}
},
"security" : [
{
"bearerAuth" : []
}
]
}
},
"/monitors/team/{teamId}" : {
"get" : {
2024-10-18 11:39:07 +05:30
"tags" : [
"monitors"
],
2024-10-17 12:07:30 +08:00
"description" : "Get monitors by teamId" ,
"parameters" : [
{
"name" : "teamId" ,
"in" : "path" ,
"required" : true ,
"schema" : {
"type" : "string"
}
},
{
"name" : "status" ,
"description" : "Status of monitor, true for up, false for down" ,
"in" : "query" ,
"required" : false ,
"schema" : {
"type" : "boolean"
}
},
{
"name" : "checkOrder" ,
"description" : "Order of checks" ,
"in" : "query" ,
"required" : false ,
"schema" : {
"type" : "string" ,
2024-10-18 11:39:07 +05:30
"enum" : [
"asc" ,
"desc"
]
2024-10-17 12:07:30 +08:00
}
},
{
"name" : "limit" ,
"description" : "Number of checks to return with monitor" ,
"in" : "query" ,
"required" : false ,
"schema" : {
"type" : "integer"
}
},
{
"name" : "type" ,
"description" : "Type of monitor" ,
"in" : "query" ,
"required" : false ,
"schema" : {
"type" : "string" ,
2024-10-18 11:39:07 +05:30
"enum" : [
"http" ,
"ping" ,
"pagespeed"
]
2024-10-17 12:07:30 +08:00
}
},
{
"name" : "page" ,
"in" : "query" ,
"required" : false ,
"schema" : {
"type" : "integer"
}
},
{
"name" : "rowsPerPage" ,
"in" : "query" ,
"required" : false ,
"schema" : {
"type" : "integer"
}
},
{
"name" : "filter" ,
"description" : "Value to filter by" ,
"in" : "query" ,
"required" : false ,
"schema" : {
"type" : "string"
}
},
{
"name" : "field" ,
"description" : "Field to filter on" ,
"in" : "query" ,
"required" : false ,
"schema" : {
"type" : "string"
}
},
{
"name" : "order" ,
"description" : "Sort order of results" ,
"in" : "query" ,
"required" : false ,
"schema" : {
"type" : "string" ,
2024-10-18 11:39:07 +05:30
"enum" : [
"http" ,
"ping" ,
"pagespeed"
]
2024-10-17 12:07:30 +08:00
}
}
],
"responses" : {
"200" : {
"description" : "OK" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/SuccessResponse"
}
}
}
},
"422" : {
"description" : "Unprocessable Content" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
},
"500" : {
"description" : "Internal Server Error" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
}
},
"security" : [
{
"bearerAuth" : []
}
]
}
},
"/monitors/pause/{monitorId}" : {
"post" : {
2024-10-18 11:39:07 +05:30
"tags" : [
"monitors"
],
2024-10-17 12:07:30 +08:00
"description" : "Pause monitor" ,
"parameters" : [
{
"name" : "monitorId" ,
"in" : "path" ,
"required" : true ,
"schema" : {
"type" : "string"
}
}
],
"responses" : {
"200" : {
"description" : "OK" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/SuccessResponse"
}
}
}
},
"422" : {
"description" : "Unprocessable Content" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
},
"500" : {
"description" : "Internal Server Error" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
}
},
"security" : [
{
"bearerAuth" : []
}
]
}
},
"/monitors/demo" : {
"post" : {
2024-10-18 11:39:07 +05:30
"tags" : [
"monitors"
],
2024-10-17 12:07:30 +08:00
"description" : "Create a demo monitor" ,
"requestBody" : {
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/CreateMonitorBody"
}
}
}
},
"responses" : {
"200" : {
"description" : "OK" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/SuccessResponse"
}
}
}
},
"422" : {
"description" : "Unprocessable Content" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
},
"500" : {
"description" : "Internal Server Error" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
}
},
"security" : [
{
"bearerAuth" : []
}
]
}
},
"/checks/{monitorId}" : {
"get" : {
2024-10-18 11:39:07 +05:30
"tags" : [
"checks"
],
2024-10-17 12:07:30 +08:00
"description" : "Get all checks for a monitor" ,
"parameters" : [
{
"name" : "monitorId" ,
"in" : "path" ,
"required" : true ,
"schema" : {
"type" : "string"
}
}
],
"responses" : {
"200" : {
"description" : "OK" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/SuccessResponse"
}
}
}
},
"422" : {
"description" : "Unprocessable Content" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
},
"500" : {
"description" : "Internal Server Error" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
}
},
"security" : [
{
"bearerAuth" : []
}
]
},
"post" : {
2024-10-18 11:39:07 +05:30
"tags" : [
"checks"
],
2024-10-17 12:07:30 +08:00
"description" : "Create a new check" ,
"parameters" : [
{
"name" : "monitorId" ,
"in" : "path" ,
"required" : true ,
"schema" : {
"type" : "string"
}
}
],
"requestBody" : {
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/CreateCheckBody"
}
}
}
},
"responses" : {
"200" : {
"description" : "OK" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/SuccessResponse"
}
}
}
},
"422" : {
"description" : "Unprocessable Content" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
},
"500" : {
"description" : "Internal Server Error" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
}
},
"security" : [
{
"bearerAuth" : []
}
]
},
"delete" : {
2024-10-18 11:39:07 +05:30
"tags" : [
"checks"
],
2024-10-17 12:07:30 +08:00
"description" : "Delete all checks for a monitor" ,
"parameters" : [
{
"name" : "monitorId" ,
"in" : "path" ,
"required" : true ,
"schema" : {
"type" : "string"
}
}
],
"responses" : {
"200" : {
"description" : "OK" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/SuccessResponse"
}
}
}
},
"422" : {
"description" : "Unprocessable Content" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
},
"500" : {
"description" : "Internal Server Error" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
}
},
"security" : [
{
"bearerAuth" : []
}
]
}
},
"/checks/team/{teamId}" : {
"get" : {
2024-10-18 11:39:07 +05:30
"tags" : [
"checks"
],
2024-10-17 12:07:30 +08:00
"description" : "Get all checks for a team" ,
"parameters" : [
{
"name" : "teamId" ,
"in" : "path" ,
"required" : true ,
"schema" : {
"type" : "string"
}
}
],
"responses" : {
"200" : {
"description" : "OK" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/SuccessResponse"
}
}
}
},
"422" : {
"description" : "Unprocessable Content" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
},
"500" : {
"description" : "Internal Server Error" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
}
},
"security" : [
{
"bearerAuth" : []
}
]
},
"delete" : {
2024-10-18 11:39:07 +05:30
"tags" : [
"checks"
],
2024-10-17 12:07:30 +08:00
"description" : "Delete all checks for a team" ,
"parameters" : [
{
"name" : "teamId" ,
"in" : "path" ,
"required" : true ,
"schema" : {
"type" : "string"
}
}
],
"responses" : {
"200" : {
"description" : "OK" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/SuccessResponse"
}
}
}
},
"422" : {
"description" : "Unprocessable Content" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
},
"500" : {
"description" : "Internal Server Error" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
}
},
"security" : [
{
"bearerAuth" : []
}
]
}
},
"/checks/team/ttl" : {
"put" : {
2024-10-18 11:39:07 +05:30
"tags" : [
"checks"
],
2024-10-17 12:07:30 +08:00
"description" : "Update check TTL" ,
"requestBody" : {
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/UpdateCheckTTLBody"
}
}
}
},
"responses" : {
"200" : {
"description" : "OK" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/SuccessResponse"
}
}
}
},
"422" : {
"description" : "Unprocessable Content" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
},
"500" : {
"description" : "Internal Server Error" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
}
},
"security" : [
{
"bearerAuth" : []
}
]
}
},
"/maintenance-window/monitor/{monitorId}" : {
"get" : {
2024-10-18 11:39:07 +05:30
"tags" : [
"maintenance-window"
],
2024-10-17 12:07:30 +08:00
"description" : "Get maintenance window for monitor" ,
"parameters" : [
{
"name" : "monitorId" ,
"in" : "path" ,
"required" : true ,
"schema" : {
"type" : "string"
}
}
],
"responses" : {
"200" : {
"description" : "OK" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/SuccessResponse"
}
}
}
},
"422" : {
"description" : "Unprocessable Content" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
},
"500" : {
"description" : "Internal Server Error" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
}
},
"security" : [
{
"bearerAuth" : []
}
]
},
"post" : {
2024-10-18 11:39:07 +05:30
"tags" : [
"maintenance-window"
],
2024-10-17 12:07:30 +08:00
"description" : "Create maintenance window for monitor" ,
"parameters" : [
{
"name" : "monitorId" ,
"in" : "path" ,
"required" : true ,
"schema" : {
"type" : "string"
}
}
],
"requestBody" : {
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/CreateMaintenanceWindowBody"
}
}
}
},
"responses" : {
"200" : {
"description" : "OK" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/SuccessResponse"
}
}
}
},
"422" : {
"description" : "Unprocessable Content" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
},
"500" : {
"description" : "Internal Server Error" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
}
},
"security" : [
{
"bearerAuth" : []
}
]
}
},
"/maintenance-window/user/{userId}" : {
"get" : {
2024-10-18 11:39:07 +05:30
"tags" : [
"maintenance-window"
],
2024-10-17 12:07:30 +08:00
"description" : "Get maintenance window for user" ,
"parameters" : [
{
"name" : "userId" ,
"in" : "path" ,
"required" : true ,
"schema" : {
"type" : "string"
}
}
],
"responses" : {
"200" : {
"description" : "OK" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/SuccessResponse"
}
}
}
},
"422" : {
"description" : "Unprocessable Content" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
},
"500" : {
"description" : "Internal Server Error" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
}
},
"security" : [
{
"bearerAuth" : []
}
]
}
},
"/queue/jobs" : {
"get" : {
2024-10-18 11:39:07 +05:30
"tags" : [
"queue"
],
2024-10-17 12:07:30 +08:00
"description" : "Get all jobs in queue" ,
"responses" : {
"200" : {
"description" : "OK" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/SuccessResponse"
}
}
}
},
"422" : {
"description" : "Unprocessable Content" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
},
"500" : {
"description" : "Internal Server Error" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
}
},
"security" : [
{
"bearerAuth" : []
}
]
},
"post" : {
2024-10-18 11:39:07 +05:30
"tags" : [
"queue"
],
2024-10-17 12:07:30 +08:00
"description" : "Create a new job. Useful for testing scaling workers" ,
"responses" : {
"200" : {
"description" : "OK" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/SuccessResponse"
}
}
}
},
"422" : {
"description" : "Unprocessable Content" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
},
"500" : {
"description" : "Internal Server Error" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
}
},
"security" : [
{
"bearerAuth" : []
}
]
}
},
"/queue/metrics" : {
"get" : {
2024-10-18 11:39:07 +05:30
"tags" : [
"queue"
],
2024-10-17 12:07:30 +08:00
"description" : "Get queue metrics" ,
"responses" : {
"200" : {
"description" : "OK" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/SuccessResponse"
}
}
}
},
"422" : {
"description" : "Unprocessable Content" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
},
"500" : {
"description" : "Internal Server Error" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
}
},
"security" : [
{
"bearerAuth" : []
}
]
}
},
"/queue/obliterate" : {
"post" : {
2024-10-18 11:39:07 +05:30
"tags" : [
"queue"
],
2024-10-17 12:07:30 +08:00
"description" : "Obliterate job queue" ,
"responses" : {
"200" : {
"description" : "OK" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/SuccessResponse"
}
}
}
},
"422" : {
"description" : "Unprocessable Content" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
},
"500" : {
"description" : "Internal Server Error" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ErrorResponse"
}
}
}
}
},
"security" : [
{
"bearerAuth" : []
}
]
}
}
},
"components" : {
"securitySchemes" : {
"bearerAuth" : {
"type" : "http" ,
"scheme" : "bearer" ,
"bearerFormat" : "JWT"
}
},
"schemas" : {
"ErrorResponse" : {
"type" : "object" ,
"properties" : {
"success" : {
"type" : "boolean" ,
"default" : false
},
"msg" : {
"type" : "string"
}
}
},
"SuccessResponse" : {
"type" : "object" ,
"properties" : {
"success" : {
"type" : "boolean" ,
"default" : true
},
"msg" : {
"type" : "string"
},
"data" : {
"type" : "object"
}
}
},
"UserUpdateRequest" : {
"type" : "object" ,
2024-10-18 11:39:07 +05:30
"required" : [
"firstName" ,
"lastName" ,
"email" ,
"password" ,
"role" ,
"teamId"
],
2024-10-17 12:07:30 +08:00
"properties" : {
"firstName" : {
"type" : "string"
},
"lastName" : {
"type" : "string"
},
"password" : {
"type" : "string" ,
"format" : "password"
},
"newPassword" : {
"type" : "string" ,
"format" : "password"
},
"profileImage" : {
"type" : "file" ,
"format" : "file"
},
"role" : {
"type" : "array" ,
2024-10-18 11:39:07 +05:30
"enum" : [
[
"user"
],
[
"admin"
],
[
"superadmin"
],
[
"Demo"
]
],
"default" : [
"superadmin"
]
2024-10-17 12:07:30 +08:00
},
"deleteProfileImage" : {
"type" : "boolean"
}
}
},
"CreateMonitorBody" : {
"type" : "object" ,
2024-10-18 11:39:07 +05:30
"required" : [
"userId" ,
"teamId" ,
"name" ,
"description" ,
"type" ,
"url"
],
2024-10-17 12:07:30 +08:00
"properties" : {
"_id" : {
"type" : "string"
},
"userId" : {
"type" : "string"
},
"teamId" : {
"type" : "string"
},
"name" : {
"type" : "string"
},
"description" : {
"type" : "string"
},
"type" : {
"type" : "string" ,
2024-10-18 11:39:07 +05:30
"enum" : [
"http" ,
"ping" ,
"pagespeed"
]
2024-10-17 12:07:30 +08:00
},
"url" : {
"type" : "string"
},
"isActive" : {
"type" : "boolean"
},
"interval" : {
"type" : "integer"
},
"notifications" : {
"type" : "array" ,
"items" : {
"type" : "string"
}
}
}
},
"UpdateMonitorBody" : {
"type" : "object" ,
"properties" : {
"name" : {
"type" : "string"
},
"description" : {
"type" : "string"
},
"interval" : {
"type" : "integer"
},
"notifications" : {
"type" : "array" ,
"items" : {
"type" : "string"
}
}
}
},
"CreateCheckBody" : {
"type" : "object" ,
2024-10-18 11:39:07 +05:30
"required" : [
"monitorId" ,
"status" ,
"responseTime" ,
"statusCode" ,
"message"
],
2024-10-17 12:07:30 +08:00
"properties" : {
"monitorId" : {
"type" : "string"
},
"status" : {
"type" : "boolean"
},
"responseTime" : {
"type" : "integer"
},
"statusCode" : {
"type" : "integer"
},
"message" : {
"type" : "string"
}
}
},
"UpdateCheckTTLBody" : {
"type" : "object" ,
2024-10-18 11:39:07 +05:30
"required" : [
"ttl"
],
2024-10-17 12:07:30 +08:00
"properties" : {
"ttl" : {
"type" : "integer"
}
}
},
"CreateMaintenanceWindowBody" : {
"type" : "object" ,
2024-10-18 11:39:07 +05:30
"required" : [
"userId" ,
"active" ,
"oneTime" ,
"start" ,
"end"
],
2024-10-17 12:07:30 +08:00
"properties" : {
"userId" : {
"type" : "string"
},
"active" : {
"type" : "boolean"
},
"oneTime" : {
"type" : "boolean"
},
"start" : {
"type" : "string" ,
"format" : "date-time"
},
"end" : {
"type" : "string" ,
"format" : "date-time"
},
"expiry" : {
"type" : "string" ,
"format" : "date-time"
}
}
}
}
}
2024-08-11 16:15:30 +03:00
}