{
  "info": {
    "title": "Kener API",
    "version": "3.0.0",
    "description": "# Kener Selfhost node js status page\n![Kener](https://kener.ing/newbg.png \"kener\")\nAPI specification for Kener status page and incident management system. This API spec was created using [Frogment](https://www.frogment.app)\n",
    "contact": {
      "name": "Raj Nandan Sharma",
      "email": "rajnandan1@gmail.com",
      "url": "https://github.com/rajnandan1/kener/issues"
    },
    "license": {
      "name": "MIT",
      "url": "https://opensource.org/licenses/MIT"
    }
  },
  "openapi": "3.0.0",
  "servers": [
    {
      "url": "https://{host}",
      "description": "Kener host URL"
    }
  ],
  "tags": [
    {
      "name": "Monitors",
      "description": "APIs to interact with monitors"
    },
    {
      "name": "MonitorStatus",
      "description": "APIs to interact with monitor status"
    },
    {
      "name": "Incidents",
      "description": "APIs to integrate incidents"
    }
  ],
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT",
        "description": "enter your api key here"
      }
    },
    "schemas": {
      "MonitorStatus": {
        "type": "object",
        "description": "Monitor Status",
        "required": ["status", "latency", "tag"],
        "properties": {
          "status": {
            "type": "string",
            "example": "UP",
            "enum": ["UP", "DOWN", "DEGRADED"]
          },
          "latency": {
            "type": "number",
            "description": "In seconds",
            "example": 100
          },
          "timestampInSeconds": {
            "type": "integer",
            "description": "UTC timestamp in seconds",
            "example": 1731251760
          },
          "tag": {
            "type": "string",
            "example": "earth",
            "description": "Tag of a monitor"
          }
        },
        "example": {
          "status": "UP",
          "timestampInSeconds": 1731251760,
          "latency": 100,
          "tag": "earth"
        }
      },
      "StatusResponse": {
        "type": "object",
        "description": "Status of a monitor given a tag",
        "properties": {
          "status": {
            "type": "string",
            "example": "UP",
            "enum": ["UP", "DOWN", "DEGRADED"]
          },
          "uptime": {
            "type": "string",
            "example": "100"
          },
          "last_updated_at": {
            "type": "integer",
            "example": 1731251760
          }
        },
        "example": {
          "status": "UP",
          "last_updated_at": 1731251760,
          "uptime": "100"
        }
      },
      "Incident": {
        "type": "object",
        "description": "body of an incident",
        "properties": {
          "start_date_time": {
            "type": "integer",
            "description": "UTC timestamp in seconds",
            "example": 1731901920
          },
          "end_date_time": {
            "type": "integer",
            "description": "UTC timestamp in seconds",
            "nullable": true,
            "example": 1704123938
          },
          "title": {
            "type": "string",
            "example": "Outage in mumbai",
            "description": "title of the incident"
          },
          "created_at": {
            "type": "string",
            "example": "2025-01-09 04:12:01",
            "description": "created at time"
          },
          "updated_at": {
            "type": "string",
            "example": "2025-01-09 06:10:00",
            "description": "updated at time"
          },
          "status": {
            "type": "string",
            "example": "OPEN",
            "description": "delete or not deleted incident",
            "enum": ["OPEN", "CLOSED"]
          },
          "state": {
            "type": "string",
            "description": "the current status of the incident",
            "example": "INVESTIGATING",
            "enum": ["INVESTIGATING", "IDENTIFIED", "MONITORING", "RESOLVED"]
          }
        },
        "example": {
          "start_date_time": 1731901920,
          "end_date_time": 1704123938,
          "title": "title of the incident",
          "created_at": "2025-01-09 04:12:01",
          "updated_at": "2025-01-09 04:12:01",
          "state": "INVESTIGATING",
          "status": "OPEN",
          "id": 4
        }
      },
      "IncidentResponse": {
        "description": "Incident response schema",
        "allOf": [
          {
            "$ref": "#/components/schemas/Incident"
          }
        ]
      },
      "Comment": {
        "type": "object",
        "description": "Comment of an incident",
        "properties": {
          "comment": {
            "type": "string",
            "example": "comment 1"
          },
          "commented_at": {
            "type": "integer",
            "example": 1736398336
          },
          "state": {
            "type": "string",
            "example": "IDENTIFIED"
          }
        },
        "example": {
          "body": "comment 2",
          "commented_at": 1736398336,
          "state": "IDENTIFIED"
        }
      },
      "CommentResponse": {
        "type": "object",
        "description": "Comment Response",
        "properties": {
          "id": {
            "type": "integer",
            "description": "ID of the comment",
            "example": 60
          },
          "comment": {
            "type": "string",
            "description": "The content of the comment",
            "example": "Sometimes, you want all the goodness of moment#from but you don't want to have to create two moments, you just want to display a length of time."
          },
          "incident_id": {
            "type": "integer",
            "description": "ID of the associated incident",
            "example": 24
          },
          "commented_at": {
            "type": "integer",
            "description": "Timestamp when the comment was added",
            "example": 1736398336
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp when the comment was created in ISO 8601 format",
            "example": "2025-01-09 04:52:16"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp when the comment was last updated in ISO 8601 format",
            "example": "2025-01-09 04:52:16"
          },
          "status": {
            "type": "string",
            "description": "Current status of the comment",
            "example": "ACTIVE"
          },
          "state": {
            "type": "string",
            "description": "the current status of the incident",
            "example": "INVESTIGATING",
            "enum": ["INVESTIGATING", "IDENTIFIED", "MONITORING", "RESOLVED"]
          }
        },
        "example": {
          "id": 60,
          "comment": "Sometimes, you want all the goodness of moment",
          "incident_id": 24,
          "commented_at": 1736398336,
          "created_at": "2025-01-09 04:52:16",
          "updated_at": "2025-01-09 04:52:16",
          "status": "ACTIVE",
          "state": "MONITORING"
        }
      },
      "IncidentStatus": {
        "type": "object",
        "description": "Status of the incident",
        "properties": {
          "isIdentified": {
            "type": "boolean",
            "description": "Has the incident been indetified",
            "example": true
          },
          "isResolved": {
            "type": "boolean",
            "description": "has the incident been resolved",
            "example": true
          },
          "endDatetime": {
            "type": "integer",
            "description": "Incident end time",
            "example": 1731901920
          }
        },
        "example": {
          "isIdentified": true,
          "isResolved": true,
          "endDatetime": 1731901920
        }
      },
      "IncidentCreateRequest": {
        "title": "Incident Create Request Body",
        "type": "object",
        "description": "body of an incident",
        "required": ["title", "start_date_time"],
        "properties": {
          "start_date_time": {
            "type": "integer",
            "description": "UTC timestamp in seconds",
            "example": 1731901920
          },
          "title": {
            "type": "string",
            "example": "Outage in mumbai",
            "description": "title of the incident"
          }
        },
        "example": {
          "start_date_time": 1731901920,
          "title": "title of the incident"
        }
      }
    },
    "responses": {
      "Response401": {
        "description": "Bad API keys response",
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "properties": {
                "error": {
                  "type": "string",
                  "description": "Invalid token response",
                  "example": "invalid token"
                }
              }
            },
            "example": {
              "error": "invalid token"
            }
          }
        }
      },
      "Response400": {
        "description": "bad request",
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "properties": {
                "error": {
                  "type": "string",
                  "description": "bad request while calling kener apis",
                  "example": "unknown tags"
                }
              }
            },
            "example": {
              "error": "unknown tags"
            }
          }
        }
      }
    },
    "examples": {
      "GetMonitorStatusExample200": {
        "summary": "response of get status of a monitor",
        "description": "Some Description",
        "value": {
          "status": "UP",
          "uptime": "100",
          "lastUpdatedAt": 1731901920
        }
      },
      "DegradedRequestBody": {
        "summary": "update to degraded",
        "description": "Some Description",
        "value": {
          "status": "DEGRADED",
          "timestampInSeconds": 1731251760,
          "latency": 100,
          "tag": "earth"
        }
      },
      "CreateIncidentResponse": {
        "summary": "create incident response",
        "description": "create incident response",
        "value": {
          "start_date_time": 1731901920,
          "end_date_time": 1731901920,
          "id": 4,
          "created_at": "2025-01-09 04:12:01",
          "updated_at": "2025-01-10 04:12:01",
          "title": "title of the incident",
          "status": "OPEN",
          "state": "INVESTIGATING"
        }
      },
      "CreateIncidentRequest": {
        "summary": "create incident request body",
        "description": "create incident request body",
        "value": {
          "start_date_time": 1731901920,
          "title": "title of the incident"
        }
      },
      "SearchIncidentsResponse": {
        "summary": "array of incidents",
        "description": "Some Description",
        "value": [
          {
            "id": 2,
            "title": "future wala",
            "start_date_time": 1736774486,
            "end_date_time": 1737033787,
            "created_at": "2025-01-12 13:21:32",
            "updated_at": "2025-01-12 13:23:15",
            "status": "OPEN",
            "state": "RESOLVED"
          },
          {
            "id": 1,
            "title": "internatiinal asda",
            "start_date_time": 1736684329,
            "end_date_time": null,
            "created_at": "2025-01-12 12:18:53",
            "updated_at": "2025-01-12 13:21:32",
            "status": "OPEN",
            "state": "INVESTIGATING"
          }
        ]
      },
      "CommentsResponse": {
        "summary": "list of comments",
        "description": "Some Description",
        "value": [
          {
            "id": 58,
            "comment": "idensad",
            "incident_id": 24,
            "commented_at": 1736398295,
            "created_at": "2025-01-09 04:51:37",
            "updated_at": "2025-01-09 04:51:37",
            "status": "ACTIVE",
            "state": "IDENTIFIED"
          },
          {
            "id": 57,
            "comment": "Sometimes, you want all the goodness of moment#from but you don't want to have to create two moments, you just want to display a length of time.",
            "incident_id": 24,
            "commented_at": 1736398279,
            "created_at": "2025-01-09 04:51:19",
            "updated_at": "2025-01-09 04:51:19",
            "status": "ACTIVE",
            "state": "INVESTIGATING"
          }
        ]
      },
      "CommentRequestBody": {
        "summary": "request body for a update",
        "description": "request body for a update to add in an incident",
        "value": {
          "comment": "This is a comment",
          "commented_at": 1736398336,
          "state": "IDENTIFIED"
        }
      },
      "CreateCommentResponse": {
        "summary": "create update response body sample",
        "description": "create update response body sample",
        "value": {
          "id": 60,
          "comment": "Sometimes, you want all the goodness of moment",
          "incident_id": 24,
          "commented_at": 1736398336,
          "created_at": "2025-01-09 04:52:16",
          "updated_at": "2025-01-09 04:52:16",
          "status": "ACTIVE",
          "state": "MONITORING"
        }
      }
    }
  },
  "paths": {
    "/api/status": {
      "post": {
        "operationId": "updateMonitorStatus",
        "summary": "Update status of a monitor",
        "description": "Update status of a monitor at a given timestamp UTC",
        "tags": ["MonitorStatus"],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "description": "request body to update status of a monitor",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MonitorStatus"
              },
              "examples": {
                "degraded": {
                  "$ref": "#/components/examples/DegradedRequestBody"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Status updated successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "integer",
                      "example": 200
                    },
                    "message": {
                      "type": "string",
                      "example": "success at 1731251760"
                    }
                  }
                },
                "example": {
                  "status": 200,
                  "message": "success at 1731251760"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Response400"
          },
          "401": {
            "$ref": "#/components/responses/Response401"
          }
        }
      },
      "get": {
        "operationId": "getMonitorStatus",
        "summary": "Get status of a monitor",
        "description": "get status of a monitor at timestamp",
        "tags": ["MonitorStatus"],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "tag",
            "in": "query",
            "required": true,
            "description": "monitor tag to get status of it",
            "schema": {
              "type": "string",
              "example": "earth"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Monitor status retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StatusResponse"
                },
                "examples": {
                  "successExample": {
                    "$ref": "#/components/examples/GetMonitorStatusExample200"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Response400"
          },
          "401": {
            "$ref": "#/components/responses/Response401"
          }
        }
      }
    },
    "/api/incident": {
      "post": {
        "operationId": "createIncident",
        "summary": "Create a new incident",
        "description": "API to create incidents",
        "tags": ["Incidents"],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "description": "request body to manually create an incident",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IncidentCreateRequest"
              },
              "examples": {
                "sample": {
                  "$ref": "#/components/examples/CreateIncidentRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Incident created successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IncidentResponse"
                },
                "examples": {
                  "success": {
                    "$ref": "#/components/examples/CreateIncidentResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Response400"
          },
          "401": {
            "$ref": "#/components/responses/Response401"
          }
        }
      },
      "get": {
        "operationId": "searchIncidents",
        "summary": "Search for incidents",
        "description": "API to get incidents",
        "tags": ["Incidents"],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "description": "status of the incident. Can be open or close. close means deleted",
            "schema": {
              "type": "string",
              "description": "status of the incident. Can be open or close. close means deleted",
              "enum": ["OPEN", "CLOSED"],
              "default": "OPEN",
              "example": "OPEN"
            }
          },
          {
            "name": "state",
            "in": "query",
            "description": "state of the incident. Can be open or close",
            "schema": {
              "type": "string",
              "description": "state of the incident. Can be open or close",
              "enum": ["INVESTIGATING", "IDENTIFIED", "MONITORING", "RESOLVED"],
              "default": "INVESTIGATING",
              "example": "IDENTIFIED"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "page number",
            "schema": {
              "type": "integer",
              "description": "page number",
              "default": 1,
              "minimum": 1,
              "example": 1
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "how many per page",
            "schema": {
              "type": "integer",
              "default": 10,
              "description": "how many per page",
              "maximum": 100,
              "example": 10
            }
          },
          {
            "name": "start_date_time",
            "description": "start time",
            "in": "query",
            "schema": {
              "type": "integer",
              "description": "start time",
              "example": 1731866475
            }
          },
          {
            "name": "end_date_time",
            "description": "end time",
            "in": "query",
            "schema": {
              "type": "integer",
              "description": "end time",
              "example": 1731866475
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Search results retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/IncidentResponse"
                  }
                },
                "examples": {
                  "success": {
                    "$ref": "#/components/examples/SearchIncidentsResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Response400"
          },
          "401": {
            "$ref": "#/components/responses/Response401"
          }
        }
      }
    },
    "/api/incident/{incident_id}": {
      "parameters": [
        {
          "name": "incident_id",
          "in": "path",
          "required": true,
          "description": "incident id as an integer to get incident by id",
          "schema": {
            "type": "integer",
            "example": 4
          }
        }
      ],
      "get": {
        "operationId": "getIncident",
        "summary": "Get an incident by id",
        "description": "API to get an incident by incident id",
        "tags": ["Incidents"],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Incident retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IncidentResponse"
                },
                "examples": {
                  "success": {
                    "$ref": "#/components/examples/CreateIncidentResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Response400"
          },
          "401": {
            "$ref": "#/components/responses/Response401"
          }
        }
      },
      "patch": {
        "operationId": "updateIncident",
        "summary": "Update an incident",
        "description": "API to update an incident by incident id",
        "tags": ["Incidents"],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "description": "search for an incident",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Incident"
              },
              "examples": {
                "sample": {
                  "$ref": "#/components/examples/CreateIncidentRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Incident updated successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IncidentResponse"
                },
                "examples": {
                  "success": {
                    "$ref": "#/components/examples/CreateIncidentResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Response400"
          },
          "401": {
            "$ref": "#/components/responses/Response401"
          }
        }
      }
    },
    "/api/incident/{incident_id}/updates": {
      "parameters": [
        {
          "name": "incident_id",
          "in": "path",
          "required": true,
          "description": "incident id to fetch comment for",
          "schema": {
            "type": "integer",
            "example": 4
          }
        }
      ],
      "post": {
        "operationId": "addIncidentComment",
        "summary": "Add an update to an incident",
        "description": "API to create update for an incident",
        "tags": ["Incidents"],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "description": "body to add an update",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Comment"
              },
              "examples": {
                "sample": {
                  "$ref": "#/components/examples/CommentRequestBody"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Comment added successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommentResponse"
                },
                "examples": {
                  "sample": {
                    "$ref": "#/components/examples/CreateCommentResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Response400"
          },
          "401": {
            "$ref": "#/components/responses/Response401"
          }
        }
      },
      "get": {
        "operationId": "getIncidentComments",
        "summary": "Get updates for an incident",
        "description": "API to get updates for an incident",
        "tags": ["Incidents"],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "updates retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CommentResponse"
                  }
                },
                "examples": {
                  "success": {
                    "$ref": "#/components/examples/CommentsResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Response400"
          },
          "401": {
            "$ref": "#/components/responses/Response401"
          }
        }
      }
    },
    "/api/incident/{incident_id}/monitors": {
      "parameters": [
        {
          "name": "incident_id",
          "in": "path",
          "required": true,
          "description": "incident id to fetch comment for",
          "schema": {
            "type": "integer",
            "example": 4
          }
        }
      ],
      "get": {
        "summary": "Get monitors for an incident",
        "operationId": "getIncidentMonitors",
        "tags": ["Incidents"],
        "parameters": [
          {
            "name": "incident_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "description": "The ID of the incident"
          }
        ],
        "responses": {
          "200": {
            "description": "List of monitors for the incident",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "monitor_tag": {
                        "type": "string",
                        "description": "The tag of the monitor",
                        "example": "earth"
                      },
                      "monitor_impact": {
                        "type": "string",
                        "description": "The impact status of the monitor",
                        "example": "DOWN"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      },
      "post": {
        "summary": "Add a monitor to an incident",
        "operationId": "addIncidentMonitor",
        "tags": ["Incidents"],
        "parameters": [
          {
            "name": "incident_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "description": "The ID of the incident"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "tag": {
                    "type": "string",
                    "description": "The tag for the monitor",
                    "example": "okbookmarks"
                  },
                  "impact": {
                    "type": "string",
                    "description": "The impact status of the monitor",
                    "example": "DEGRADED"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Monitor added successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "monitor_tag": {
                        "type": "string",
                        "description": "The tag of the monitor",
                        "example": "okbookmarks"
                      },
                      "monitor_impact": {
                        "type": "string",
                        "description": "The impact status of the monitor",
                        "example": "DEGRADED"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      },
      "delete": {
        "summary": "Delete a monitor from an incident",
        "operationId": "deleteIncidentMonitor",
        "tags": ["Incidents"],
        "parameters": [
          {
            "name": "incident_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "description": "The ID of the incident"
          },
          {
            "name": "tag",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The tag of the monitor to delete"
          }
        ],
        "responses": {
          "200": {
            "description": "Monitor deleted successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string",
                      "description": "Confirmation message",
                      "example": "Monitor deleted successfully"
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/api/monitor": {
      "get": {
        "summary": "Search Monitor",
        "description": "Search Monitor",
        "operationId": "searchMonitor",
        "tags": ["Monitors"],
        "parameters": [
          {
            "name": "tag",
            "in": "query",
            "schema": {
              "type": "string",
              "example": "{{tag}}"
            },
            "description": "Optional tag to filter results"
          }
        ],
        "responses": {
          "200": {
            "description": "Response200",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "category_name": {
                        "type": "string",
                        "example": "Home"
                      },
                      "created_at": {
                        "type": "string",
                        "example": "2025-04-23T11:14:49.822Z"
                      },
                      "cron": {
                        "type": "string",
                        "example": "* * * * *"
                      },
                      "day_degraded_minimum_count": {
                        "type": "number",
                        "example": 1
                      },
                      "day_down_minimum_count": {
                        "type": "number",
                        "example": 1
                      },
                      "default_status": {
                        "type": "string",
                        "example": "NONE"
                      },
                      "degraded_trigger": {
                        "nullable": true,
                        "example": null
                      },
                      "description": {
                        "type": "string",
                        "example": ""
                      },
                      "down_trigger": {
                        "nullable": true,
                        "example": null
                      },
                      "id": {
                        "type": "number",
                        "example": 15
                      },
                      "image": {
                        "type": "string",
                        "example": ""
                      },
                      "include_degraded_in_downtime": {
                        "type": "string",
                        "example": "NO"
                      },
                      "monitor_type": {
                        "type": "string",
                        "example": "SSL"
                      },
                      "name": {
                        "type": "string",
                        "example": "Github SSL Certificate"
                      },
                      "status": {
                        "type": "string",
                        "example": "ACTIVE"
                      },
                      "tag": {
                        "type": "string",
                        "example": "GithubSSL"
                      },
                      "type_data": {
                        "type": "string",
                        "example": "{\"host\":\"github.com\",\"port\":443,\"degradedRemainingHours\":2,\"downRemainingHours\":1}"
                      },
                      "updated_at": {
                        "type": "string",
                        "example": "2025-04-23T12:05:01.941Z"
                      }
                    }
                  },
                  "example": [
                    {
                      "category_name": "Home",
                      "created_at": "2025-04-23T11:14:49.822Z",
                      "cron": "* * * * *",
                      "day_degraded_minimum_count": 1,
                      "day_down_minimum_count": 1,
                      "default_status": "NONE",
                      "degraded_trigger": null,
                      "description": "",
                      "down_trigger": null,
                      "id": 15,
                      "image": "",
                      "include_degraded_in_downtime": "NO",
                      "monitor_type": "SSL",
                      "name": "Github SSL Certificate",
                      "status": "ACTIVE",
                      "tag": "GithubSSL",
                      "type_data": "{\"host\":\"github.com\",\"port\":443,\"degradedRemainingHours\":2,\"downRemainingHours\":1}",
                      "updated_at": "2025-04-23T12:05:01.941Z"
                    }
                  ]
                },
                "examples": {
                  "Response200": {
                    "value": [
                      {
                        "category_name": "Home",
                        "created_at": "2025-04-23T11:14:49.822Z",
                        "cron": "* * * * *",
                        "day_degraded_minimum_count": 1,
                        "day_down_minimum_count": 1,
                        "default_status": "NONE",
                        "degraded_trigger": null,
                        "description": "",
                        "down_trigger": null,
                        "id": 15,
                        "image": "",
                        "include_degraded_in_downtime": "NO",
                        "monitor_type": "SSL",
                        "name": "Github SSL Certificate",
                        "status": "ACTIVE",
                        "tag": "GithubSSL",
                        "type_data": "{\"host\":\"github.com\",\"port\":443,\"degradedRemainingHours\":2,\"downRemainingHours\":1}",
                        "updated_at": "2025-04-23T12:05:01.941Z"
                      }
                    ]
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      },
      "post": {
        "summary": "Create Monitor",
        "description": "API to create monitors",
        "operationId": "createMonitor",
        "tags": ["Monitors"],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "category_name": {
                    "type": "string",
                    "example": "Home"
                  },
                  "created_at": {
                    "type": "string",
                    "example": "2025-04-22T10:10:00.546Z"
                  },
                  "cron": {
                    "type": "string",
                    "example": "* * * * *"
                  },
                  "day_degraded_minimum_count": {
                    "type": "number",
                    "example": 1
                  },
                  "day_down_minimum_count": {
                    "type": "number",
                    "example": 1
                  },
                  "default_status": {
                    "type": "string",
                    "example": "NONE"
                  },
                  "degraded_trigger": {
                    "nullable": true,
                    "example": null
                  },
                  "description": {
                    "type": "string",
                    "example": ""
                  },
                  "down_trigger": {
                    "nullable": true,
                    "example": null
                  },
                  "id": {
                    "type": "number",
                    "example": 15
                  },
                  "image": {
                    "type": "string",
                    "example": ""
                  },
                  "include_degraded_in_downtime": {
                    "type": "string",
                    "example": "NO"
                  },
                  "monitor_type": {
                    "type": "string",
                    "example": "API"
                  },
                  "name": {
                    "type": "string",
                    "example": "Github"
                  },
                  "status": {
                    "type": "string",
                    "example": "ACTIVE"
                  },
                  "tag": {
                    "type": "string",
                    "example": "Github"
                  },
                  "type_data": {
                    "type": "string",
                    "example": "{\"url\":\"https://github.com/\",\"method\":\"GET\",\"headers\":[],\"body\":\"\",\"timeout\":10000,\"eval\":\"(async function (statusCode, responseTime, responseRaw, modules) {\\n\\tlet statusCodeShort = Math.floor(statusCode/100);\\n    if(statusCode == 429 || (statusCodeShort >=2 && statusCodeShort <= 3)) {\\n        return {\\n\\t\\t\\tstatus: 'UP',\\n\\t\\t\\tlatency: responseTime,\\n        }\\n    } \\n\\treturn {\\n\\t\\tstatus: 'DOWN',\\n\\t\\tlatency: responseTime,\\n\\t}\\n})\",\"hideURLForGet\":\"NO\",\"allowSelfSignedCert\":false}"
                  },
                  "updated_at": {
                    "type": "string",
                    "example": "2025-04-22T10:10:00.546Z"
                  }
                }
              },
              "examples": {
                "Create Monitor": {
                  "value": {
                    "category_name": "Home",
                    "created_at": "2025-04-22T10:10:00.546Z",
                    "cron": "* * * * *",
                    "day_degraded_minimum_count": 1,
                    "day_down_minimum_count": 1,
                    "default_status": "NONE",
                    "degraded_trigger": null,
                    "description": "",
                    "down_trigger": null,
                    "id": 15,
                    "image": "",
                    "include_degraded_in_downtime": "NO",
                    "monitor_type": "API",
                    "name": "Github",
                    "status": "ACTIVE",
                    "tag": "Github",
                    "type_data": "{\"url\":\"https://github.com/\",\"method\":\"GET\",\"headers\":[],\"body\":\"\",\"timeout\":10000,\"eval\":\"(async function (statusCode, responseTime, responseRaw, modules) {\\n\\tlet statusCodeShort = Math.floor(statusCode/100);\\n    if(statusCode == 429 || (statusCodeShort >=2 && statusCodeShort <= 3)) {\\n        return {\\n\\t\\t\\tstatus: 'UP',\\n\\t\\t\\tlatency: responseTime,\\n        }\\n    } \\n\\treturn {\\n\\t\\tstatus: 'DOWN',\\n\\t\\tlatency: responseTime,\\n\\t}\\n})\",\"hideURLForGet\":\"NO\",\"allowSelfSignedCert\":false}",
                    "updated_at": "2025-04-22T10:10:00.546Z"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Response201",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "category_name": {
                      "type": "string",
                      "example": "Home"
                    },
                    "created_at": {
                      "type": "string",
                      "example": "2025-04-23T12:35:21.030Z"
                    },
                    "cron": {
                      "type": "string",
                      "example": "* * * * *"
                    },
                    "day_degraded_minimum_count": {
                      "type": "number",
                      "example": 1
                    },
                    "day_down_minimum_count": {
                      "type": "number",
                      "example": 1
                    },
                    "default_status": {
                      "type": "string",
                      "example": "NONE"
                    },
                    "degraded_trigger": {
                      "nullable": true,
                      "example": null
                    },
                    "description": {
                      "type": "string",
                      "example": ""
                    },
                    "down_trigger": {
                      "nullable": true,
                      "example": null
                    },
                    "id": {
                      "type": "number",
                      "example": 16
                    },
                    "image": {
                      "type": "string",
                      "example": ""
                    },
                    "include_degraded_in_downtime": {
                      "type": "string",
                      "example": "NO"
                    },
                    "monitor_type": {
                      "type": "string",
                      "example": "API"
                    },
                    "name": {
                      "type": "string",
                      "example": "Github"
                    },
                    "status": {
                      "type": "string",
                      "example": "ACTIVE"
                    },
                    "tag": {
                      "type": "string",
                      "example": "Github"
                    },
                    "type_data": {
                      "type": "string",
                      "example": "{\"url\":\"https://github.com/\",\"method\":\"GET\",\"headers\":[],\"body\":\"\",\"timeout\":10000,\"eval\":\"(async function (statusCode, responseTime, responseRaw, modules) {\\n\\tlet statusCodeShort = Math.floor(statusCode/100);\\n    if(statusCode == 429 || (statusCodeShort >=2 && statusCodeShort <= 3)) {\\n        return {\\n\\t\\t\\tstatus: 'UP',\\n\\t\\t\\tlatency: responseTime,\\n        }\\n    } \\n\\treturn {\\n\\t\\tstatus: 'DOWN',\\n\\t\\tlatency: responseTime,\\n\\t}\\n})\",\"hideURLForGet\":\"NO\",\"allowSelfSignedCert\":false}"
                    },
                    "updated_at": {
                      "type": "string",
                      "example": "2025-04-23T12:35:21.030Z"
                    }
                  }
                },
                "examples": {
                  "Response201": {
                    "value": {
                      "category_name": "Home",
                      "created_at": "2025-04-23T12:35:21.030Z",
                      "cron": "* * * * *",
                      "day_degraded_minimum_count": 1,
                      "day_down_minimum_count": 1,
                      "default_status": "NONE",
                      "degraded_trigger": null,
                      "description": "",
                      "down_trigger": null,
                      "id": 16,
                      "image": "",
                      "include_degraded_in_downtime": "NO",
                      "monitor_type": "API",
                      "name": "Github",
                      "status": "ACTIVE",
                      "tag": "Github",
                      "type_data": "{\"url\":\"https://github.com/\",\"method\":\"GET\",\"headers\":[],\"body\":\"\",\"timeout\":10000,\"eval\":\"(async function (statusCode, responseTime, responseRaw, modules) {\\n\\tlet statusCodeShort = Math.floor(statusCode/100);\\n    if(statusCode == 429 || (statusCodeShort >=2 && statusCodeShort <= 3)) {\\n        return {\\n\\t\\t\\tstatus: 'UP',\\n\\t\\t\\tlatency: responseTime,\\n        }\\n    } \\n\\treturn {\\n\\t\\tstatus: 'DOWN',\\n\\t\\tlatency: responseTime,\\n\\t}\\n})\",\"hideURLForGet\":\"NO\",\"allowSelfSignedCert\":false}",
                      "updated_at": "2025-04-23T12:35:21.030Z"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Response400",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "monitor id must be empty or 0"
                    }
                  }
                },
                "examples": {
                  "Response400": {
                    "value": {
                      "error": "monitor id must be empty or 0"
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/api/monitor/{monitorId}": {
      "get": {
        "summary": "Get Monitor",
        "description": "API to get a specified monitor",
        "operationId": "getMonitor",
        "tags": ["Monitors"],
        "responses": {
          "200": {
            "description": "Response200",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "category_name": {
                      "type": "string",
                      "example": "Home"
                    },
                    "created_at": {
                      "type": "string",
                      "example": "2025-04-23T11:14:49.822Z"
                    },
                    "cron": {
                      "type": "string",
                      "example": "* * * * *"
                    },
                    "day_degraded_minimum_count": {
                      "type": "number",
                      "example": 1
                    },
                    "day_down_minimum_count": {
                      "type": "number",
                      "example": 1
                    },
                    "default_status": {
                      "type": "string",
                      "example": "NONE"
                    },
                    "degraded_trigger": {
                      "nullable": true,
                      "example": null
                    },
                    "description": {
                      "type": "string",
                      "example": ""
                    },
                    "down_trigger": {
                      "nullable": true,
                      "example": null
                    },
                    "id": {
                      "type": "number",
                      "example": 15
                    },
                    "image": {
                      "type": "string",
                      "example": ""
                    },
                    "include_degraded_in_downtime": {
                      "type": "string",
                      "example": "NO"
                    },
                    "monitor_type": {
                      "type": "string",
                      "example": "SSL"
                    },
                    "name": {
                      "type": "string",
                      "example": "Github SSL Certificate"
                    },
                    "status": {
                      "type": "string",
                      "example": "ACTIVE"
                    },
                    "tag": {
                      "type": "string",
                      "example": "GithubSSL"
                    },
                    "type_data": {
                      "type": "string",
                      "example": "{\"host\":\"github.com\",\"port\":443,\"degradedRemainingHours\":2,\"downRemainingHours\":1}"
                    },
                    "updated_at": {
                      "type": "string",
                      "example": "2025-04-23T12:05:01.941Z"
                    }
                  }
                },
                "examples": {
                  "Response200": {
                    "value": {
                      "category_name": "Home",
                      "created_at": "2025-04-23T11:14:49.822Z",
                      "cron": "* * * * *",
                      "day_degraded_minimum_count": 1,
                      "day_down_minimum_count": 1,
                      "default_status": "NONE",
                      "degraded_trigger": null,
                      "description": "",
                      "down_trigger": null,
                      "id": 15,
                      "image": "",
                      "include_degraded_in_downtime": "NO",
                      "monitor_type": "SSL",
                      "name": "Github SSL Certificate",
                      "status": "ACTIVE",
                      "tag": "GithubSSL",
                      "type_data": "{\"host\":\"github.com\",\"port\":443,\"degradedRemainingHours\":2,\"downRemainingHours\":1}",
                      "updated_at": "2025-04-23T12:05:01.941Z"
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Response404",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "monitor does not exist"
                    }
                  }
                },
                "examples": {
                  "Response404": {
                    "value": {
                      "error": "monitor does not exist"
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      },
      "put": {
        "summary": "Update Monitor",
        "description": "API to update a specified monitor",
        "operationId": "updateMonitor",
        "tags": ["Monitors"],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "category_name": {
                    "type": "string",
                    "example": "Home"
                  },
                  "created_at": {
                    "type": "string",
                    "example": "2025-04-23T11:14:49.822Z"
                  },
                  "cron": {
                    "type": "string",
                    "example": "* * * * *"
                  },
                  "day_degraded_minimum_count": {
                    "type": "number",
                    "example": 1
                  },
                  "day_down_minimum_count": {
                    "type": "number",
                    "example": 1
                  },
                  "default_status": {
                    "type": "string",
                    "example": "NONE"
                  },
                  "degraded_trigger": {
                    "nullable": true,
                    "example": null
                  },
                  "description": {
                    "type": "string",
                    "example": ""
                  },
                  "down_trigger": {
                    "nullable": true,
                    "example": null
                  },
                  "id": {
                    "type": "number",
                    "example": 20
                  },
                  "image": {
                    "type": "string",
                    "example": ""
                  },
                  "include_degraded_in_downtime": {
                    "type": "string",
                    "example": "NO"
                  },
                  "monitor_type": {
                    "type": "string",
                    "example": "SSL"
                  },
                  "name": {
                    "type": "string",
                    "example": "Github SSL Certificate"
                  },
                  "status": {
                    "type": "string",
                    "example": "ACTIVE"
                  },
                  "tag": {
                    "type": "string",
                    "example": "GithubSSL"
                  },
                  "type_data": {
                    "type": "string",
                    "example": "{\"host\":\"github.com\",\"port\":443,\"degradedRemainingHours\":2,\"downRemainingHours\":1}"
                  },
                  "updated_at": {
                    "type": "string",
                    "example": "2025-04-23T12:05:01.941Z"
                  }
                }
              },
              "examples": {
                "Update Monitor": {
                  "value": {
                    "category_name": "Home",
                    "created_at": "2025-04-23T11:14:49.822Z",
                    "cron": "* * * * *",
                    "day_degraded_minimum_count": 1,
                    "day_down_minimum_count": 1,
                    "default_status": "NONE",
                    "degraded_trigger": null,
                    "description": "",
                    "down_trigger": null,
                    "id": 20,
                    "image": "",
                    "include_degraded_in_downtime": "NO",
                    "monitor_type": "SSL",
                    "name": "Github SSL Certificate",
                    "status": "ACTIVE",
                    "tag": "GithubSSL",
                    "type_data": "{\"host\":\"github.com\",\"port\":443,\"degradedRemainingHours\":2,\"downRemainingHours\":1}",
                    "updated_at": "2025-04-23T12:05:01.941Z"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Response200",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "category_name": {
                      "type": "string",
                      "example": "Home"
                    },
                    "created_at": {
                      "type": "string",
                      "example": "2025-04-23T11:14:49.822Z"
                    },
                    "cron": {
                      "type": "string",
                      "example": "* * * * *"
                    },
                    "day_degraded_minimum_count": {
                      "type": "number",
                      "example": 1
                    },
                    "day_down_minimum_count": {
                      "type": "number",
                      "example": 1
                    },
                    "default_status": {
                      "type": "string",
                      "example": "NONE"
                    },
                    "degraded_trigger": {
                      "nullable": true,
                      "example": null
                    },
                    "description": {
                      "type": "string",
                      "example": ""
                    },
                    "down_trigger": {
                      "nullable": true,
                      "example": null
                    },
                    "id": {
                      "type": "number",
                      "example": 15
                    },
                    "image": {
                      "type": "string",
                      "example": ""
                    },
                    "include_degraded_in_downtime": {
                      "type": "string",
                      "example": "NO"
                    },
                    "monitor_type": {
                      "type": "string",
                      "example": "SSL"
                    },
                    "name": {
                      "type": "string",
                      "example": "Github SSL Certificate"
                    },
                    "status": {
                      "type": "string",
                      "example": "ACTIVE"
                    },
                    "tag": {
                      "type": "string",
                      "example": "GithubSSL"
                    },
                    "type_data": {
                      "type": "string",
                      "example": "{\"host\":\"github.com\",\"port\":443,\"degradedRemainingHours\":2,\"downRemainingHours\":1}"
                    },
                    "updated_at": {
                      "type": "string",
                      "example": "2025-04-23T13:38:22.965Z"
                    }
                  }
                },
                "examples": {
                  "Response200": {
                    "value": {
                      "category_name": "Home",
                      "created_at": "2025-04-23T11:14:49.822Z",
                      "cron": "* * * * *",
                      "day_degraded_minimum_count": 1,
                      "day_down_minimum_count": 1,
                      "default_status": "NONE",
                      "degraded_trigger": null,
                      "description": "",
                      "down_trigger": null,
                      "id": 15,
                      "image": "",
                      "include_degraded_in_downtime": "NO",
                      "monitor_type": "SSL",
                      "name": "Github SSL Certificate",
                      "status": "ACTIVE",
                      "tag": "GithubSSL",
                      "type_data": "{\"host\":\"github.com\",\"port\":443,\"degradedRemainingHours\":2,\"downRemainingHours\":1}",
                      "updated_at": "2025-04-23T13:38:22.965Z"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Response400",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "id mismatch: payload: 15, url: 14"
                    }
                  }
                },
                "examples": {
                  "Response400": {
                    "value": {
                      "error": "id mismatch: payload: 15, url: 14"
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Response404",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "monitor does not exist"
                    }
                  }
                },
                "examples": {
                  "Response404": {
                    "value": {
                      "error": "monitor does not exist"
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      },
      "delete": {
        "summary": "Delete Monitor",
        "description": "API to delete a specified monitor",
        "operationId": "deleteMonitor",
        "tags": ["Monitors"],
        "responses": {
          "200": {
            "description": "Response200",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {}
                },
                "examples": {
                  "Response200": {
                    "value": {}
                  }
                }
              }
            }
          },
          "404": {
            "description": "Response404",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "monitor does not exist"
                    }
                  }
                },
                "examples": {
                  "Response404": {
                    "value": {
                      "error": "monitor does not exist"
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      },
      "parameters": [
        {
          "name": "monitorId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ]
    }
  }
}
