{
    "openapi": "3.0.0",
    "info": {
        "title": "CA ASM API",
        "description": "App Synthetic Monitor API",
        "contact": {
            "name": "ASM Team"
        },
        "version": "25.10.3/25.10.3"
    },
    "servers": [
        {
            "url": "/{version}",
            "description": "Server",
            "variables": {
                "version": {
                    "enum": [
                        "v3"
                    ],
                    "default": "v3"
                }
            }
        }
    ],
    "paths": {
        "/access/roles": {
            "get": {
                "tags": [
                    "access"
                ],
                "summary": "Get account roles",
                "description": "Get all roles both owned by and assigned to the account except the account main role",
                "operationId": "access-roles-get-all",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/EnrichedRole"
                                    }
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            },
            "post": {
                "tags": [
                    "access"
                ],
                "summary": "Create a new custom role",
                "description": "Create a new custom role",
                "operationId": "access-roles-create",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/RoleCreate"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/EnrichedRole"
                                }
                            }
                        }
                    },
                    "204": {
                        "description": "Role already exists"
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/access/permission/{type}/{resource}": {
            "get": {
                "tags": [
                    "access"
                ],
                "summary": "Get {type} permission on {resource} with level if assigned to an account",
                "description": "Get account permission on resource ID `{resource}` of type `{type}`. If such permission is granted it is returned with the appropriate level value. `204` is returned if no permission is granted.",
                "operationId": "access-permission-get",
                "parameters": [
                    {
                        "name": "type",
                        "in": "path",
                        "description": "Permission type",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "example": "contact"
                    },
                    {
                        "name": "resource",
                        "in": "path",
                        "description": "ID of the resource",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        },
                        "example": 1
                    },
                    {
                        "name": "include",
                        "in": "query",
                        "description": "If set to specific, specific permission is added to the response",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "example": "specific"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "permission": {
                                            "$ref": "#/components/schemas/Permission"
                                        },
                                        "specific": {
                                            "$ref": "#/components/schemas/Permission"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "204": {
                        "description": "Not permitted"
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/access/{user}/permissions": {
            "put": {
                "tags": [
                    "access"
                ],
                "summary": "Grant permission to user",
                "description": "Grant `{permission}` to account `{user}`. If the user already has higher permission it will be replaced with the new level.",
                "operationId": "access-permission-update",
                "parameters": [
                    {
                        "name": "user",
                        "in": "path",
                        "description": "ID of the user the permission is granted to",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "description": "Permission data",
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/Permission"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Success"
                    },
                    "400": {
                        "description": "Bad Request",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Invalid resource"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            },
            "delete": {
                "tags": [
                    "access"
                ],
                "summary": "Revoke permission from user",
                "description": "Revoke permission from another account. Any permission level is revoked.",
                "operationId": "access-permission-remove",
                "parameters": [
                    {
                        "name": "user",
                        "in": "path",
                        "description": "ID of the user the permission is revoked from",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "description": "Permission data",
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "type": {
                                        "type": "string",
                                        "example": "contact"
                                    },
                                    "resource": {
                                        "type": "string",
                                        "example": "5"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "204": {
                        "description": "Success"
                    },
                    "400": {
                        "description": "Bad Request",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Invalid resource"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/access/{user}/permissionsCopyFrom/{from}": {
            "put": {
                "tags": [
                    "access"
                ],
                "summary": "Copy permissions from user",
                "description": "Copy permissions granted to `{from}` to account `{user}`.",
                "operationId": "access-permission-copy",
                "parameters": [
                    {
                        "name": "user",
                        "in": "path",
                        "description": "ID of the user permissions are assigned to",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "from",
                        "in": "path",
                        "description": "ID of the user permissions are read from (source)",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success"
                    },
                    "400": {
                        "description": "Bad Request",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Invalid User"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Source not found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/admin/usage/{year}/{month}": {
            "get": {
                "tags": [
                    "admin"
                ],
                "summary": "Get usage report",
                "description": "Get ASM usage report",
                "operationId": "admin-usage-get",
                "parameters": [
                    {
                        "name": "year",
                        "in": "path",
                        "description": "Year of the reported day",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "month",
                        "in": "path",
                        "description": "Month of the reported day",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api-token": {
            "get": {
                "tags": [
                    "api-token"
                ],
                "summary": "Get list of all api tokens for current account",
                "description": "Get list of all api tokens for current account",
                "operationId": "api-token-list",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/ApiToken"
                                    }
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            },
            "post": {
                "tags": [
                    "api-token"
                ],
                "summary": "Creates a new token",
                "description": "Creates a new token",
                "operationId": "api-token-create",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "name": {
                                        "type": "string",
                                        "example": "Token name"
                                    },
                                    "valid_until": {
                                        "type": "string",
                                        "format": "date-time",
                                        "example": "2030-01-08T11:05:21+01:00"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "Created"
                                        },
                                        "data": {
                                            "properties": {
                                                "id": {
                                                    "type": "integer",
                                                    "example": 1
                                                },
                                                "name": {
                                                    "type": "string",
                                                    "example": "Token name"
                                                },
                                                "token": {
                                                    "type": "string",
                                                    "example": "evEYTp3kOe60sm5UPiNzrbiK88qm1rBFbvhaYem6Q8Y"
                                                },
                                                "valid_until": {
                                                    "type": "string",
                                                    "format": "date-time",
                                                    "example": "2030-01-08T11:05:21+01:00"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api-token/{id}": {
            "get": {
                "tags": [
                    "api-token"
                ],
                "summary": "Get details about individual token",
                "description": "Get details about individual token",
                "operationId": "api-token-get",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Token ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiToken"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Token not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiTokenNotFound"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            },
            "put": {
                "tags": [
                    "api-token"
                ],
                "summary": "Update token's name and/or validity by its ID",
                "description": "The name parameter is required. If you don't supply the valid_until parameter it will be set to null (which means infinite)",
                "operationId": "api-token-update",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "The ID of the item to update",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "description": "The request body for updating token. Name is mandatory, valid_until is optional and defaults to null (valid indefinitely), can be any valid datetime string.",
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "name": {
                                        "type": "string",
                                        "example": "Updated token name"
                                    },
                                    "valid_until": {
                                        "type": "string",
                                        "format": "date-time",
                                        "example": "2023-11-06T01:00:00"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Updated"
                                        },
                                        "data": {
                                            "$ref": "#/components/schemas/ApiToken"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Token not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiTokenNotFound"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            },
            "delete": {
                "tags": [
                    "api-token"
                ],
                "summary": "Deletes token with given ID",
                "description": "Deletes token with given ID",
                "operationId": "api-token-delete",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "The ID of the token to delete",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Deleted"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Token not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiTokenNotFound"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/check/{monitor}": {
            "get": {
                "tags": [
                    "check"
                ],
                "summary": "Run a check",
                "description": "Return a check result",
                "operationId": "check-get",
                "parameters": [
                    {
                        "name": "monitor",
                        "in": "path",
                        "description": "Monitor ID.",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "example": "1"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/LogEvent"
                                }
                            }
                        }
                    },
                    "402": {
                        "description": "No subscription available to run this monitor.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Cannot run the check"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Access to the monitor denied.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Cannot run the check"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Monitor not found.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Cannot run the check"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Check executed too soon, try again later",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Resource limit reached"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "503": {
                        "description": "Temporary error, try again later",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Cannot get a check result, try again"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Other error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/check/dns/{type}/{domain}": {
            "get": {
                "tags": [
                    "check"
                ],
                "summary": "Get DNS check result",
                "description": "Return tupple of DNS result check and delimiter",
                "operationId": "check-dns-get",
                "parameters": [
                    {
                        "name": "type",
                        "in": "path",
                        "description": "DNS check type - A, AAAA, MX, etc.",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "example": "A"
                    },
                    {
                        "name": "domain",
                        "in": "path",
                        "description": "Domain name to check",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "example": "example.com"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "value": {
                                            "type": "string",
                                            "example": "127.0.0.1"
                                        },
                                        "delimiter": {
                                            "type": "string",
                                            "example": ""
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad Request"
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/contacts": {
            "get": {
                "tags": [
                    "contacts"
                ],
                "summary": "Get contacts user is permitted to view",
                "description": "Get contacts",
                "operationId": "contacts-get",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ContactCatalogue"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Access to the resource was denied.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Access to the resource was denied."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            },
            "post": {
                "tags": [
                    "contacts"
                ],
                "summary": "Create a contact",
                "description": "Create a contact. The contact will be inactive before you activate it (if applicable)",
                "operationId": "contacts-create",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ContactItemCreate"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ContactItem"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "You don't have permission to create a contact in this folder",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "You don't have permission to create a contact in this folder"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Unsupported contact type",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Unsupported contact type"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/contacts/{id}": {
            "get": {
                "tags": [
                    "contacts"
                ],
                "summary": "Get details of a contact",
                "description": "Get details of a contact",
                "operationId": "contacts-get-detail",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "The ID of the contact",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ContactItem"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Contact not found or or insufficient privileges",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Contact not found or or insufficient privileges"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Access to the contact was denied.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Access to the contact was denied."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            },
            "put": {
                "tags": [
                    "contacts"
                ],
                "summary": "Update a contact",
                "description": "Update an contact. The contact will be inactive before you activate it (if applicable)",
                "operationId": "contacts-update",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "The ID of the contact",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ContactItemUpdate"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ContactItem"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Contact not found or or insufficient privileges",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Contact not found or or insufficient privileges"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Insufficient privileges to update the contact",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Insufficient privileges to update the contact"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Email address is not valid",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Email address is not valid"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            },
            "delete": {
                "tags": [
                    "contacts"
                ],
                "summary": "Delete contact",
                "description": "Delete contact and set up another as default if necessary",
                "operationId": "contact-delete",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Contact id",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "Success"
                    },
                    "404": {
                        "description": "Contact not found or or insufficient privileges",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Contact not found or or insufficient privileges"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Access to the contact was denied.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Access to the contact was denied."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "The channel is used for alerting.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "The channel is used for alerting."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/contacts/test/{id}": {
            "get": {
                "tags": [
                    "contacts"
                ],
                "summary": "Test contact",
                "description": "Send a test message to the contact",
                "operationId": "contact-test-send",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Contact id",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Success"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Contact not found or or insufficient privileges",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Contact not found or or insufficient privileges"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Access to the contact was denied.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Access to the contact was denied."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Contact has invalid status for sending a test message",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Contact has invalid status for sending a test message"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "409": {
                        "description": "Message not sent",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Message not sent"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Max number of test messages per day already sent",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Max number of test messages per day already sent"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/contacts/{id}/activate": {
            "put": {
                "tags": [
                    "contacts"
                ],
                "summary": "Activate a contact",
                "description": "Activate a contact - change the account status from INACTIVE to CONFIRMED.",
                "operationId": "contact-activate",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "ID of the contact to activate",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "Success"
                    },
                    "404": {
                        "description": "Contact not found or or insufficient privileges",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Contact not found or or insufficient privileges"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Access to the contact was denied.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Access to the contact was denied."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "The contact is not in inactive status, cannot be activated",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "The contact is not in inactive status, cannot be activated"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/contacts/confirm/{id}": {
            "post": {
                "tags": [
                    "contacts"
                ],
                "summary": "Confirms a contact using the confirmation code",
                "description": "Confirms a contact that has an unconfirmed status using the confirmation code received",
                "operationId": "contacts-confirm",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "The contact ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "description": "The code to activate the contact is sent in request body",
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "code": {
                                        "type": "string",
                                        "example": "F6sfaSXfa7"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "204": {
                        "description": "Success"
                    },
                    "404": {
                        "description": "Contact not found or or insufficient privileges",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Contact not found or or insufficient privileges"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "The confirmation code is invalid",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "The confirmation code is invalid"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "The confirmation code is missing",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "The confirmation code is missing"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "409": {
                        "description": "The contact is not waiting for confirmation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "The contact is not waiting for confirmation"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/contacts/request-confirmation-code/{id}": {
            "post": {
                "tags": [
                    "contacts"
                ],
                "summary": "Request a confirmation code for the contact",
                "description": "Request a confirmation code for the contact. This endpoint is rate limited.",
                "operationId": "contacts-request-confirmation-code",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "The ID of the contact",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "Success"
                    },
                    "404": {
                        "description": "Contact not found or or insufficient privileges",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Contact not found or or insufficient privileges"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Access to the contact was denied.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Access to the contact was denied."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "This contact type does not support confirmation codes",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "This contact type does not support confirmation codes"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "409": {
                        "description": "The contact is not waiting for confirmation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "The contact is not waiting for confirmation"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "You can request a confirmation code for one contact once every 300 seconds",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "You can request a confirmation code for one contact once every 300 seconds"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/contacts/block/{id}": {
            "put": {
                "tags": [
                    "contacts"
                ],
                "summary": "Block a contact",
                "description": "Block a channel - change the account status from CONFIRMED to BLOCKED. Only owner of the contact or privileged accounts can perform the action.",
                "operationId": "contacts-block-put",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "ID of the contact to block",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "Success"
                    },
                    "404": {
                        "description": "Contact not found or or insufficient privileges",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Contact not found or or insufficient privileges"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Access to the contact was denied.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Access to the contact was denied."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "You cannot change contact status to this value",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "You cannot change contact status to this value"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            },
            "delete": {
                "tags": [
                    "contacts"
                ],
                "summary": "Unblock an account",
                "description": "Unblock a contact - change the account status from BLOCKED to CONFIRMED. Only owner of the contact or privileged accounts can perform the action.",
                "operationId": "contacts-block-delete",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "ID of the contact to unblock",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "Success"
                    },
                    "404": {
                        "description": "Contact not found or or insufficient privileges",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Contact not found or or insufficient privileges"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Access to the contact was denied.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Access to the contact was denied."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "You cannot change contact status to this value",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "You cannot change contact status to this value"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/contacts/{id}/replaceInNotificationsWith/{to}": {
            "put": {
                "tags": [
                    "contacts"
                ],
                "summary": "Replace all usage of contact `{id}` in monitor notifications with another contact `{to}`",
                "description": "Replace contact with another contact in monitor notifications. This is necessary before you want to delete contact `{id}`. This call will replace contacts only in monitors where you have the update permission.",
                "operationId": "contacts-replace-notifications-with",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "ID of the (old) contact being replaced",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "to",
                        "in": "path",
                        "description": "ID of the (new) contact being used instead of the old one",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "Success"
                    },
                    "404": {
                        "description": "Contact not found or or insufficient privileges",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Contact not found or or insufficient privileges"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Access to the contact was denied.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Access to the contact was denied."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "The old and new contact IDs are the same",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "The old and new contact IDs are the same"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/folders": {
            "get": {
                "tags": [
                    "folders"
                ],
                "summary": "Get monitor folders user is permitted to view",
                "description": "Get folders",
                "operationId": "folders-list",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/FolderItem"
                                    }
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            },
            "post": {
                "tags": [
                    "folders"
                ],
                "summary": "Create monitor folder",
                "description": "Create monitor folder",
                "operationId": "folder-post",
                "requestBody": {
                    "description": "Folder attributes",
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/FolderRequestItem"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/FolderItem"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid data",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "String required: name"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to create",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/folders/{id}": {
            "get": {
                "tags": [
                    "folders"
                ],
                "summary": "Get monitor folder detail",
                "description": "Get folder",
                "operationId": "folder-get",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Folder id",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/FolderItem"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Folder not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Folder not found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            },
            "put": {
                "tags": [
                    "folders"
                ],
                "summary": "Update monitor folder",
                "description": "Update monitor folder",
                "operationId": "folder-update",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Folder id",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "description": "Folder attributes",
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/FolderRequestItem"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/FolderItem"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid data",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "String required: name"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Folder not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Folder not found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to update",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            },
            "delete": {
                "tags": [
                    "folders"
                ],
                "summary": "Delete monitor folder",
                "description": "Delete folder",
                "operationId": "folder-delete",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Folder id",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "Success"
                    },
                    "404": {
                        "description": "Folder not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Folder not found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to delete",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/folders/access/{user}": {
            "get": {
                "tags": [
                    "folders"
                ],
                "summary": "Get monitor folders owned by caller with permissions granted to user's default role",
                "description": "Get folders with permissions",
                "operationId": "folder-access-get",
                "parameters": [
                    {
                        "name": "user",
                        "in": "path",
                        "description": "User id permissions are fetched for",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/FolderItem"
                                    }
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "The user does not exist"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/locations/{id}": {
            "get": {
                "tags": [
                    "locations"
                ],
                "summary": "Get monitoring station location",
                "description": "Get monitoring station locations detailed information",
                "operationId": "locations-get",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Location ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Location"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Not found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            },
            "put": {
                "tags": [
                    "locations"
                ],
                "summary": "Update location",
                "description": "Update location. The new location can be moved as child of another sub-location - provide parent ID of the new parent location or country iso code of the new public parent location.",
                "operationId": "locations-post",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Location ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "description": "Location object.",
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/LocationDraft"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Location"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid request - missing or invalid data",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Invalid request - missing ID"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Parent location not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Not found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            },
            "delete": {
                "tags": [
                    "locations"
                ],
                "summary": "Delete monitoring station location",
                "description": "Delete monitoring station location. It must not be used for monitoring and must be empty.",
                "operationId": "locations-delete",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Location ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "Success"
                    },
                    "400": {
                        "description": "Invalid location - cannot be deleted (is not empty or is used)",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "The location is not empty - it cannot be deleted"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Not found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/locations/{type}": {
            "get": {
                "tags": [
                    "locations"
                ],
                "summary": "Get monitoring station locations filtered by public / private type",
                "description": "Get monitoring stations' locations useable either as a container of monitoring stations or other locations",
                "operationId": "locations-get-by-type",
                "parameters": [
                    {
                        "name": "type",
                        "in": "path",
                        "description": "Location type filter",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "private",
                                "public",
                                "all"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/Location"
                                    }
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/locations": {
            "get": {
                "tags": [
                    "locations"
                ],
                "summary": "Get all monitoring station locations",
                "description": "Get monitoring stations' locations useable either as a container of monitoring stations or other locations",
                "operationId": "locations-get-all",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/Location"
                                    }
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            },
            "post": {
                "tags": [
                    "locations"
                ],
                "summary": "Create new location",
                "description": "Insert new location. The location can be placed as child sub-location of another location -  provide parent as ID of the parent location or country iso code of the public location.",
                "operationId": "locations-create",
                "requestBody": {
                    "description": "Location object.",
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/LocationDraft"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Location"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid request - missing or invalid data",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Invalid parent location specified"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Parent location not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Parent location not found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/locations/leaf/{filter}": {
            "get": {
                "tags": [
                    "locations"
                ],
                "summary": "Get monitoring stations' leaf-locations",
                "description": "Get monitoring stations' leaf-locations - possible or real monitoring station containers",
                "operationId": "locations-leaf-get-filter",
                "parameters": [
                    {
                        "name": "filter",
                        "in": "path",
                        "description": "Location filter",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "default": "all",
                            "enum": [
                                "private",
                                "public",
                                "all"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/Location"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid request - invalid filter",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Invalid request - wrong filter"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/log": {
            "get": {
                "tags": [
                    "log"
                ],
                "summary": "Get monitor check results",
                "description": "Get monitor check results",
                "operationId": "log-get",
                "parameters": [
                    {
                        "name": "monitor",
                        "in": "query",
                        "description": "List of monitors to query. If both 'monitors' and 'folders' are omitted, query all monitors. Format: Monitor name (string) or monitor ID (integer).",
                        "required": false,
                        "style": "form",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "items": {
                                "type": "string",
                                "example": "1,2,4,5"
                            }
                        }
                    },
                    {
                        "name": "folder",
                        "in": "query",
                        "description": "List of folders to query. If both 'monitors' and 'folders' are omitted, query all monitors. Format: Folder name (string) or folder ID (integer).",
                        "required": false,
                        "style": "form",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "items": {
                                "type": "string",
                                "example": "folder1,folder2,folder3"
                            }
                        }
                    },
                    {
                        "name": "location",
                        "in": "query",
                        "description": "List of locations to filter by. Format: Location name (string) or location ID (integer).",
                        "required": false,
                        "style": "form",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "items": {
                                "type": "string",
                                "example": "1,6,13"
                            }
                        }
                    },
                    {
                        "name": "from",
                        "in": "query",
                        "description": "Start of interval. Format: ISO 8601 date and time or event ID.",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "description": "End of interval. Format: ISO 8601 date and time or event ID.",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "status",
                        "in": "query",
                        "description": "Filter results by status.",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "error",
                                "confirmed_error"
                            ]
                        }
                    },
                    {
                        "name": "extended",
                        "in": "query",
                        "description": "Show extended results.",
                        "required": false,
                        "schema": {
                            "type": "boolean",
                            "default": false
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Limit number of results.",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 20,
                            "maximum": 500,
                            "minimum": 1
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/LogEvent"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Bad request : From must be less than to."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/log/{id}": {
            "get": {
                "tags": [
                    "log"
                ],
                "summary": "Get a single event",
                "description": "Get a single event",
                "operationId": "log-get-event",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Event ID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/LogEvent"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Bad request : From must be less than to."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/log/compact": {
            "get": {
                "tags": [
                    "log"
                ],
                "summary": "Get compact monitor check results",
                "description": "Get compact monitor check results",
                "operationId": "log-get-compact",
                "parameters": [
                    {
                        "name": "monitor",
                        "in": "query",
                        "description": "List of monitors to query. If both 'monitors' and 'folders' are omitted, query all monitors. Format: Monitor name (string) or monitor ID (integer).",
                        "required": false,
                        "style": "form",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "items": {
                                "type": "string",
                                "example": "1,2,4,5"
                            }
                        }
                    },
                    {
                        "name": "folder",
                        "in": "query",
                        "description": "List of folders to query. If both 'monitors' and 'folders' are omitted, query all monitors. Format: Folder name (string) or folder ID (integer).",
                        "required": false,
                        "style": "form",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "items": {
                                "type": "string",
                                "example": "folder1,folder2,folder3"
                            }
                        }
                    },
                    {
                        "name": "from",
                        "in": "query",
                        "description": "Start of interval. Format: ISO 8601 date and time or event ID.",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "format": "date-time",
                            "example": "2020-01-15T14:18:50+00:00"
                        }
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "description": "End of interval. Format: ISO 8601 date and time or event ID.",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "format": "date-time",
                            "example": "2020-01-15T16:18:50+00:00"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Limit number of results.",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 20,
                            "maximum": 10000,
                            "minimum": 1
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/CompactCheckResult"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Bad request : From must be less than to."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Not found"
                    }
                }
            }
        },
        "/maintenances": {
            "get": {
                "tags": [
                    "maintenances"
                ],
                "summary": "Get maintenances user is permitted to view",
                "description": "Get maintenances",
                "operationId": "maintenance-get",
                "parameters": [
                    {
                        "name": "includeExpired",
                        "in": "query",
                        "description": "Include also expired maintenance windows.",
                        "required": false,
                        "schema": {
                            "type": "boolean",
                            "default": false
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/MaintenanceCatalogue"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Insufficient permissions",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "You don't have the necessary permission"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            },
            "post": {
                "tags": [
                    "maintenances"
                ],
                "summary": "Create a new maintenance window",
                "description": "Create a new maintenance window",
                "operationId": "maintenances-create",
                "requestBody": {
                    "description": "`name` and `windows` is required.",
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/MaintenanceItemCreate"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/MaintenanceItem"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Insufficient permissions",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "You don't have the necessary permission"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Wrong values were passed",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "The maintenance window must have a name and at least one time window"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/maintenances/{id}": {
            "get": {
                "tags": [
                    "maintenances"
                ],
                "summary": "Get a maintenance window detail",
                "description": "Get a single maintenance window detail",
                "operationId": "maintenance-get-detail",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "The maintenance window ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/MaintenanceItem"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Not Found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            },
            "put": {
                "tags": [
                    "maintenances"
                ],
                "summary": "Updates the maintenance window",
                "description": "Updates the maintenance window. All values provided will be replaced with new values, values not provided in the schema will not be modified.",
                "operationId": "maintenances-update",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "The maintenance window ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "description": "Values not specified are not modified",
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/MaintenanceItem"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/MaintenanceItem"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Insufficient permissions",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "You don't have the necessary permission"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Wrong values were passed",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "The maintenance window must have a name"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            },
            "delete": {
                "tags": [
                    "maintenances"
                ],
                "summary": "Delete maintenance",
                "description": "Delete maintenance",
                "operationId": "maintenance-delete",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Maintenance ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "Success"
                    },
                    "404": {
                        "description": "Maintenance not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Maintenance group not found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/maintenances/{id}/windows": {
            "get": {
                "tags": [
                    "maintenances"
                ],
                "summary": "List individual time windows from a maintenance window",
                "description": "List individual time windows from a maintenance window",
                "operationId": "maintenance-get-windows",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "The maintenance window ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/MaintenanceWindowItem"
                                    }
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Not Found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            },
            "post": {
                "tags": [
                    "maintenances"
                ],
                "summary": "Create a time window inside maintenance window",
                "description": "Create a time window inside maintenance window.",
                "operationId": "maintenances-post-windows",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "The ID of the maintenance window",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/WindowItemCreate"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/MaintenanceWindowItem"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Wrong values were passed",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Missing required parameter"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Insufficient permissions",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Access to the resource was denied"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Maintenance window not found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/maintenances/{maintenanceWindowId}/windows/{timeWindowId}": {
            "get": {
                "tags": [
                    "maintenances"
                ],
                "summary": "Get individual time window from maintenance window",
                "description": "Get individual time window from maintenance window",
                "operationId": "maintenance-get-windows-detail",
                "parameters": [
                    {
                        "name": "maintenanceWindowId",
                        "in": "path",
                        "description": "The maintenance window ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "timeWindowId",
                        "in": "path",
                        "description": "The time window ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/MaintenanceWindowItem"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Not Found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            },
            "put": {
                "tags": [
                    "maintenances"
                ],
                "summary": "Update time window from maintenance window",
                "description": "Update time window from maintenance window",
                "operationId": "maintenance-update-windows-detail",
                "parameters": [
                    {
                        "name": "maintenanceWindowId",
                        "in": "path",
                        "description": "The maintenance window ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "timeWindowId",
                        "in": "path",
                        "description": "The individual window ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/WindowItemCreate"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/MaintenanceWindowItem"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Not Found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            },
            "delete": {
                "tags": [
                    "maintenances"
                ],
                "summary": "Delete a time window from maintenance window",
                "description": "Delete a time window from maintenance window",
                "operationId": "maintenance-delete-windows",
                "parameters": [
                    {
                        "name": "maintenanceWindowId",
                        "in": "path",
                        "description": "The maintenance window ID that the time window belongs to",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "timeWindowId",
                        "in": "path",
                        "description": "The time window to delete",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "Success"
                    },
                    "403": {
                        "description": "Insufficient permissions",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "The resource was either already deleted or you don't have the necessary permission"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Not Found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/maintenances/immediate": {
            "put": {
                "tags": [
                    "maintenances"
                ],
                "summary": "Put monitors in immediate maintenance",
                "description": "Put selected monitors to immediate maintenance. This creates or updates a special monitor specific immediate-maintenance window. You need monitor update permission for the selected monitors.",
                "operationId": "maintenances-immediate-put",
                "requestBody": {
                    "description": "Immediate maintenance window",
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/MaintenanceItemImmediateCreate"
                            }
                        }
                    }
                },
                "responses": {
                    "204": {
                        "description": "Success"
                    },
                    "400": {
                        "description": "Wrong values were passed",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Invalid format of the time maintenance duration"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Insufficient permissions",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            },
            "delete": {
                "tags": [
                    "maintenances"
                ],
                "summary": "Finish the immediate maintenance",
                "description": "Finish the immediate maintenance mode for selected monitors. This affects the special monitor specific immediate-maintenance only. You need monitor update permission for the selected monitors.",
                "operationId": "maintenances-immediate-delete",
                "requestBody": {
                    "description": "Ids of monitors the immediate maintenance should be finished. You need update permission for these monitors",
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "array",
                                "items": {
                                    "type": "integer"
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "204": {
                        "description": "Success"
                    },
                    "400": {
                        "description": "Wrong values were passed",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Monitor #5 not found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Insufficient permissions",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/messages": {
            "get": {
                "tags": [
                    "messages"
                ],
                "summary": "Get messages. If no filter is applied messages of the user are returned (by user ID).",
                "description": "Get messages",
                "operationId": "messages-list",
                "parameters": [
                    {
                        "name": "monitorId",
                        "in": "query",
                        "description": "Filter alerts related to a monitor.",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "folderId",
                        "in": "query",
                        "description": "Filter alerts related to monitors in a folder.",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "isAlert",
                        "in": "query",
                        "description": "Select messages that represent some monitor alert or not. Note: expire certificate notifications are not alerts - they are not bound to a particular monitor or contact.",
                        "required": false,
                        "schema": {
                            "type": "boolean"
                        }
                    },
                    {
                        "name": "contactId",
                        "in": "query",
                        "description": "Contact ID. You need contact update permission to filter by the contact.",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "type",
                        "in": "query",
                        "description": "Select messages by message type.",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "email",
                                "sms",
                                "phone",
                                "action",
                                "rss"
                            ]
                        }
                    },
                    {
                        "name": "status",
                        "in": "query",
                        "description": "Select messages by message status.",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "deleted",
                                "queued",
                                "gateway",
                                "provider",
                                "device",
                                "accepted",
                                "queued-no-fallback",
                                "undeliverable",
                                "suppressed"
                            ]
                        }
                    },
                    {
                        "name": "from",
                        "in": "query",
                        "description": "Select messages by date and time when it was sent. It can also be provided as positive integer - the oldest message ID.",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "format": "date-time"
                        }
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "description": "Select messages by date and time when it was sent. It can also be provided as positive integer - the newest message ID.",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "format": "date-time"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Max number of results to return.",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/MessageItem"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Not found"
                    }
                }
            }
        },
        "/messages/{id}": {
            "get": {
                "tags": [
                    "messages"
                ],
                "summary": "Get message by ID",
                "description": "Get message",
                "operationId": "message-get",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Message id",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/MessageItem"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/monitors": {
            "get": {
                "tags": [
                    "monitors"
                ],
                "summary": "Get all monitors details.",
                "description": "Get list of monitors. Only the common monitor parameters are shown in the response schemas, for full individual monitor types see the corresponding schemas.\n                    The result returned depends on the framesOnly and pagination parameters.\n                    The content of the jmeter and webdriver scripts is not populated, get monitor by ID for full monitor details.",
                "operationId": "monitor-get-all",
                "parameters": [
                    {
                        "name": "framesOnly",
                        "in": "query",
                        "description": "Flag for reading the simple and fast list of monitor frames. If true, the simple monitor schemas (MonitorFrame) are returned in the response (which should be slightly faster), the full schema (Monitor) otherwise",
                        "required": false,
                        "schema": {
                            "type": "boolean"
                        }
                    },
                    {
                        "name": "pagination",
                        "in": "query",
                        "description": "Flag for sending response together with the pagination information. If true, the MonitorsPage schema is returned with pagination information, the simple array of matching monitors otherwise.",
                        "required": false,
                        "schema": {
                            "type": "boolean"
                        }
                    },
                    {
                        "name": "monitorId",
                        "in": "query",
                        "description": "Monitor ID or comma separated list of monitor IDs.",
                        "required": false,
                        "style": "form",
                        "explode": false,
                        "schema": {
                            "type": "string",
                            "example": "1,2,4,5"
                        }
                    },
                    {
                        "name": "folderId",
                        "in": "query",
                        "description": "Folder ID. Use 0 for monitors out of folder.",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "accessLevel",
                        "in": "query",
                        "description": "Select monitors user has this level of access.",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "view",
                                "update",
                                "create-delete"
                            ]
                        }
                    },
                    {
                        "name": "type",
                        "in": "query",
                        "description": "Select monitors by type.",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "browser",
                                "connect",
                                "dnsa",
                                "dnsns",
                                "dns",
                                "domain",
                                "ftp",
                                "ftps",
                                "http",
                                "https",
                                "imap",
                                "ldap",
                                "ping",
                                "plugin",
                                "pop3",
                                "scp",
                                "script",
                                "sftp",
                                "sip",
                                "smtp",
                                "telnet",
                                "webdriver"
                            ]
                        }
                    },
                    {
                        "name": "isActive",
                        "in": "query",
                        "description": "Flag for filtering active monitors only.",
                        "required": false,
                        "schema": {
                            "type": "boolean"
                        }
                    },
                    {
                        "name": "inError",
                        "in": "query",
                        "description": "Flag for filtering failing monitors only. With false both the active non-failing monitors and inactive monitors are returned.",
                        "required": false,
                        "schema": {
                            "type": "boolean"
                        }
                    },
                    {
                        "name": "isUnhealthy",
                        "in": "query",
                        "description": "Flag for filtering monitors with unhealthy pool of stations.",
                        "required": false,
                        "schema": {
                            "type": "boolean"
                        }
                    },
                    {
                        "name": "proxy",
                        "in": "query",
                        "description": "Flag for filtering monitors configured to use a proxy or not.",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "none",
                                "system",
                                "custom"
                            ]
                        }
                    },
                    {
                        "name": "hasAuthentication",
                        "in": "query",
                        "description": "Flag for filtering monitors with authentication enabled.",
                        "required": false,
                        "schema": {
                            "type": "boolean"
                        }
                    },
                    {
                        "name": "username",
                        "in": "query",
                        "description": "Select monitors by username used in authentication.",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "tag",
                        "in": "query",
                        "description": "Select monitors that are tagged by one of this tags (pipe separated list).",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "a|b"
                        }
                    },
                    {
                        "name": "name",
                        "in": "query",
                        "description": "Select monitors by name. See also the nameMatchType option below.",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "nameMatchType",
                        "in": "query",
                        "description": "Match type for the monitor-by-name filtering. I nameMatchType is 'full' (or empty as this is default) the name must be equal to the filter value, if 'partial' the name must contain the filter value.",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "full",
                                "partial"
                            ]
                        }
                    },
                    {
                        "name": "locationId",
                        "in": "query",
                        "description": "Monitoring location ID.",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "stationId",
                        "in": "query",
                        "description": "Monitoring station ID.",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "explicitPoolOnly",
                        "in": "query",
                        "description": "Flag for filtering by station or monitor ID. If true, find only monitors explicitly configured for the location, i.e. do not select monitors with empty (default) pool. Default is false for public stations / locations, true for OPMS.",
                        "required": false,
                        "schema": {
                            "type": "boolean"
                        }
                    },
                    {
                        "name": "from",
                        "in": "query",
                        "description": "Low monitor ID limit for pagination (needs sorting by monitor ID)",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "description": "High monitor ID limit for pagination (needs sorting by monitor ID)",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Max number of results to return.",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "offset",
                        "in": "query",
                        "description": "Zero based offset for pagination. Limit is required if offset is set.",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "description": "Order by string.",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success. The result returned depends on the framesOnly and pagination parameters.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "oneOf": [
                                        {
                                            "$ref": "#/components/schemas/MonitorsPage"
                                        },
                                        {
                                            "type": "array",
                                            "items": {
                                                "oneOf": [
                                                    {
                                                        "$ref": "#/components/schemas/Browser"
                                                    },
                                                    {
                                                        "$ref": "#/components/schemas/Connect"
                                                    },
                                                    {
                                                        "$ref": "#/components/schemas/Dns"
                                                    },
                                                    {
                                                        "$ref": "#/components/schemas/Dnsa"
                                                    },
                                                    {
                                                        "$ref": "#/components/schemas/Dnsns"
                                                    },
                                                    {
                                                        "$ref": "#/components/schemas/Domain"
                                                    },
                                                    {
                                                        "$ref": "#/components/schemas/Ftp"
                                                    },
                                                    {
                                                        "$ref": "#/components/schemas/Ftps"
                                                    },
                                                    {
                                                        "$ref": "#/components/schemas/Http"
                                                    },
                                                    {
                                                        "$ref": "#/components/schemas/Https"
                                                    },
                                                    {
                                                        "$ref": "#/components/schemas/Imap"
                                                    },
                                                    {
                                                        "$ref": "#/components/schemas/Ldap"
                                                    },
                                                    {
                                                        "$ref": "#/components/schemas/Ping"
                                                    },
                                                    {
                                                        "$ref": "#/components/schemas/Plugin"
                                                    },
                                                    {
                                                        "$ref": "#/components/schemas/Pop3"
                                                    },
                                                    {
                                                        "$ref": "#/components/schemas/Scp"
                                                    },
                                                    {
                                                        "$ref": "#/components/schemas/Script"
                                                    },
                                                    {
                                                        "$ref": "#/components/schemas/Sftp"
                                                    },
                                                    {
                                                        "$ref": "#/components/schemas/Sip"
                                                    },
                                                    {
                                                        "$ref": "#/components/schemas/Smtp"
                                                    },
                                                    {
                                                        "$ref": "#/components/schemas/Telnet"
                                                    },
                                                    {
                                                        "$ref": "#/components/schemas/Webdriver"
                                                    },
                                                    {
                                                        "$ref": "#/components/schemas/MonitorFrame"
                                                    }
                                                ]
                                            }
                                        }
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Monitor doesn't exist"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            },
            "post": {
                "tags": [
                    "monitors"
                ],
                "summary": "Create a monitor",
                "description": "Create a monitor",
                "operationId": "monitor-create",
                "requestBody": {
                    "description": "Monitor settings",
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "oneOf": [
                                    {
                                        "$ref": "#/components/schemas/BrowserCreate"
                                    },
                                    {
                                        "$ref": "#/components/schemas/ConnectCreate"
                                    },
                                    {
                                        "$ref": "#/components/schemas/DnsCreate"
                                    },
                                    {
                                        "$ref": "#/components/schemas/DnsaCreate"
                                    },
                                    {
                                        "$ref": "#/components/schemas/DnsnsCreate"
                                    },
                                    {
                                        "$ref": "#/components/schemas/DomainCreate"
                                    },
                                    {
                                        "$ref": "#/components/schemas/FtpCreate"
                                    },
                                    {
                                        "$ref": "#/components/schemas/FtpsCreate"
                                    },
                                    {
                                        "$ref": "#/components/schemas/HttpCreate"
                                    },
                                    {
                                        "$ref": "#/components/schemas/HttpsCreate"
                                    },
                                    {
                                        "$ref": "#/components/schemas/ImapCreate"
                                    },
                                    {
                                        "$ref": "#/components/schemas/LdapCreate"
                                    },
                                    {
                                        "$ref": "#/components/schemas/PingCreate"
                                    },
                                    {
                                        "$ref": "#/components/schemas/PluginCreate"
                                    },
                                    {
                                        "$ref": "#/components/schemas/Pop3Create"
                                    },
                                    {
                                        "$ref": "#/components/schemas/ScpCreate"
                                    },
                                    {
                                        "$ref": "#/components/schemas/ScriptCreate"
                                    },
                                    {
                                        "$ref": "#/components/schemas/SftpCreate"
                                    },
                                    {
                                        "$ref": "#/components/schemas/SipCreate"
                                    },
                                    {
                                        "$ref": "#/components/schemas/SmtpCreate"
                                    },
                                    {
                                        "$ref": "#/components/schemas/TelnetCreate"
                                    },
                                    {
                                        "$ref": "#/components/schemas/WebdriverCreate"
                                    }
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "monitorId": {
                                            "type": "integer",
                                            "example": 4
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "Bad Request"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "The request you sent was invalid."
                                        },
                                        "data": {
                                            "properties": {
                                                "details": {
                                                    "example": {
                                                        "folderId": "Value is invalid",
                                                        "url": "Value is invalid",
                                                        "transactionTag": "Expected format is ???:???"
                                                    }
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/monitors/{id}": {
            "get": {
                "tags": [
                    "monitors"
                ],
                "summary": "Get monitor details",
                "description": "Get detail of a monitor. Only the common parameters are shown, to see details of individual types see the Schemas.",
                "operationId": "monitor-get",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Monitor ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "export",
                        "in": "query",
                        "description": "Export the full monitor schema",
                        "required": false,
                        "schema": {
                            "type": "boolean"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "oneOf": [
                                        {
                                            "$ref": "#/components/schemas/Browser"
                                        },
                                        {
                                            "$ref": "#/components/schemas/Connect"
                                        },
                                        {
                                            "$ref": "#/components/schemas/Dns"
                                        },
                                        {
                                            "$ref": "#/components/schemas/Dnsa"
                                        },
                                        {
                                            "$ref": "#/components/schemas/Dnsns"
                                        },
                                        {
                                            "$ref": "#/components/schemas/Domain"
                                        },
                                        {
                                            "$ref": "#/components/schemas/Ftp"
                                        },
                                        {
                                            "$ref": "#/components/schemas/Ftps"
                                        },
                                        {
                                            "$ref": "#/components/schemas/Http"
                                        },
                                        {
                                            "$ref": "#/components/schemas/Https"
                                        },
                                        {
                                            "$ref": "#/components/schemas/Imap"
                                        },
                                        {
                                            "$ref": "#/components/schemas/Ldap"
                                        },
                                        {
                                            "$ref": "#/components/schemas/Ping"
                                        },
                                        {
                                            "$ref": "#/components/schemas/Plugin"
                                        },
                                        {
                                            "$ref": "#/components/schemas/Pop3"
                                        },
                                        {
                                            "$ref": "#/components/schemas/Scp"
                                        },
                                        {
                                            "$ref": "#/components/schemas/Script"
                                        },
                                        {
                                            "$ref": "#/components/schemas/Sftp"
                                        },
                                        {
                                            "$ref": "#/components/schemas/Sip"
                                        },
                                        {
                                            "$ref": "#/components/schemas/Smtp"
                                        },
                                        {
                                            "$ref": "#/components/schemas/Telnet"
                                        },
                                        {
                                            "$ref": "#/components/schemas/Webdriver"
                                        }
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            },
            "put": {
                "tags": [
                    "monitors"
                ],
                "summary": "Update a monitor",
                "description": "Update a monitor",
                "operationId": "monitor-update",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Monitor ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "description": "Monitor settings",
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "oneOf": [
                                    {
                                        "$ref": "#/components/schemas/BrowserUpdate"
                                    },
                                    {
                                        "$ref": "#/components/schemas/ConnectUpdate"
                                    },
                                    {
                                        "$ref": "#/components/schemas/DnsUpdate"
                                    },
                                    {
                                        "$ref": "#/components/schemas/DnsaUpdate"
                                    },
                                    {
                                        "$ref": "#/components/schemas/DnsnsUpdate"
                                    },
                                    {
                                        "$ref": "#/components/schemas/DomainUpdate"
                                    },
                                    {
                                        "$ref": "#/components/schemas/FtpUpdate"
                                    },
                                    {
                                        "$ref": "#/components/schemas/FtpsUpdate"
                                    },
                                    {
                                        "$ref": "#/components/schemas/HttpUpdate"
                                    },
                                    {
                                        "$ref": "#/components/schemas/HttpsUpdate"
                                    },
                                    {
                                        "$ref": "#/components/schemas/ImapUpdate"
                                    },
                                    {
                                        "$ref": "#/components/schemas/LdapUpdate"
                                    },
                                    {
                                        "$ref": "#/components/schemas/PingUpdate"
                                    },
                                    {
                                        "$ref": "#/components/schemas/PluginUpdate"
                                    },
                                    {
                                        "$ref": "#/components/schemas/Pop3Update"
                                    },
                                    {
                                        "$ref": "#/components/schemas/ScpUpdate"
                                    },
                                    {
                                        "$ref": "#/components/schemas/ScriptUpdate"
                                    },
                                    {
                                        "$ref": "#/components/schemas/SftpUpdate"
                                    },
                                    {
                                        "$ref": "#/components/schemas/SipUpdate"
                                    },
                                    {
                                        "$ref": "#/components/schemas/SmtpUpdate"
                                    },
                                    {
                                        "$ref": "#/components/schemas/TelnetUpdate"
                                    },
                                    {
                                        "$ref": "#/components/schemas/WebdriverUpdate"
                                    }
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Monitor Updated"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "Bad Request"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "The request you sent was invalid."
                                        },
                                        "data": {
                                            "properties": {
                                                "details": {
                                                    "example": {
                                                        "folderId": "Value is invalid",
                                                        "url": "Value is invalid",
                                                        "transactionTag": "Expected format is ???:???"
                                                    }
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            },
            "delete": {
                "tags": [
                    "monitors"
                ],
                "summary": "Delete monitor",
                "description": "Delete monitor",
                "operationId": "monitor-delete",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Monitor ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success"
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Not found"
                    }
                }
            }
        },
        "/monitors/activate": {
            "put": {
                "tags": [
                    "monitors"
                ],
                "summary": "Activate monitors",
                "description": "Activate monitors",
                "operationId": "monitor-activate",
                "parameters": [
                    {
                        "name": "monitor",
                        "in": "query",
                        "description": "List of monitors to activate. Format: Comma-separated monitor IDs or monitor names",
                        "required": true,
                        "style": "form",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful activation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "responses": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "format": "int64",
                                                        "example": 123
                                                    },
                                                    "status": {
                                                        "type": "integer",
                                                        "example": 200
                                                    },
                                                    "resource": {
                                                        "example": null
                                                    },
                                                    "message": {
                                                        "type": "string",
                                                        "example": "OK"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        },
                                        "metadata": {
                                            "$ref": "#/components/schemas/BulkResponseMetadata"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "207": {
                        "$ref": "#/components/responses/BulkResponseMultiStatus"
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "402": {
                        "description": "Subscription not enough for activation"
                    },
                    "403": {
                        "description": "Not permitted"
                    },
                    "404": {
                        "description": "Not found"
                    }
                }
            }
        },
        "/monitors/deactivate": {
            "put": {
                "tags": [
                    "monitors"
                ],
                "summary": "Deactivate monitors",
                "description": "Deactivate monitors",
                "operationId": "monitor-deactivate",
                "parameters": [
                    {
                        "name": "monitor",
                        "in": "query",
                        "description": "List of monitors to deactivate. Format: Comma-separated monitor IDs or monitor names",
                        "required": true,
                        "style": "form",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "A successful deactivation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "responses": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "format": "int64",
                                                        "example": 123
                                                    },
                                                    "status": {
                                                        "type": "integer",
                                                        "example": 200
                                                    },
                                                    "resource": {
                                                        "example": null
                                                    },
                                                    "message": {
                                                        "type": "string",
                                                        "example": "OK"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        },
                                        "metadata": {
                                            "$ref": "#/components/schemas/BulkResponseMetadata"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "207": {
                        "$ref": "#/components/responses/BulkResponseMultiStatus"
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "403": {
                        "description": "Not permitted"
                    },
                    "404": {
                        "description": "Not found"
                    }
                }
            }
        },
        "/oauth2": {
            "get": {
                "tags": [
                    "oauth-client-token"
                ],
                "summary": "Returns list of oauth client credentials",
                "description": "Returns list of oauth client credentials",
                "operationId": "oauth-client-tokens-list",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/OauthClientCredentialsItem"
                                    }
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            },
            "post": {
                "tags": [
                    "oauth-client-token"
                ],
                "summary": "Creates new client credentials",
                "description": "Creates new client credentials",
                "operationId": "oauth-client-tokens-create",
                "requestBody": {
                    "description": "The request body. Name is required, everything else is optional.",
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "name": {
                                        "type": "string",
                                        "example": "My New Token"
                                    },
                                    "valid_until": {
                                        "type": "string",
                                        "example": "2021-03-01T15:00:00+01:00"
                                    },
                                    "access_token_validity": {
                                        "type": "integer",
                                        "example": 3600
                                    },
                                    "refresh_token_validity": {
                                        "type": "integer",
                                        "example": 604800
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "Created"
                                        },
                                        "data": {
                                            "properties": {
                                                "id": {
                                                    "type": "integer",
                                                    "example": 2
                                                },
                                                "name": {
                                                    "type": "string",
                                                    "example": "My New Token"
                                                },
                                                "client_id": {
                                                    "type": "string",
                                                    "example": "oiOUEOH7zvIx55nNl5Xja8XvSAY4gjOeHB9JHbX+GaY="
                                                },
                                                "valid_until": {
                                                    "type": "string",
                                                    "example": "2021-03-01T15:00:00+01:00"
                                                },
                                                "access_token_validity": {
                                                    "type": "integer",
                                                    "example": 3600
                                                },
                                                "refresh_token_validity": {
                                                    "type": "integer",
                                                    "example": 604800
                                                },
                                                "client_secret": {
                                                    "type": "string",
                                                    "example": "d0O5vbwDuo9pO5FGWXmAwf+QDBA3UA0tZj7Hv/fKpHA="
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/oauth2/{id}": {
            "get": {
                "tags": [
                    "oauth-client-token"
                ],
                "summary": "Returns individual client credentials",
                "description": "Returns individual client credentials",
                "operationId": "oauth-client-tokens-get",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "The ID of the credentials",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/OauthClientCredentialsItem"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/OauthClientCredentialsNotFound"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            },
            "put": {
                "tags": [
                    "oauth-client-token"
                ],
                "summary": "Updates client credentials",
                "description": "Updates client credentials",
                "operationId": "oauth-client-tokens-update",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "The ID of the credentials to update",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "description": "The request body. Name is required, everything else is optional.",
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "name": {
                                        "type": "string",
                                        "example": "New Token Name"
                                    },
                                    "valid_until": {
                                        "type": "string",
                                        "example": "2025-03-01T15:00:00+01:00"
                                    },
                                    "access_token_validity": {
                                        "type": "integer",
                                        "example": 600
                                    },
                                    "refresh_token_validity": {
                                        "type": "integer",
                                        "example": 604800
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Updated"
                                        },
                                        "data": {
                                            "$ref": "#/components/schemas/OauthClientCredentialsItem"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/OauthClientCredentialsNotFound"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            },
            "delete": {
                "tags": [
                    "oauth-client-token"
                ],
                "summary": "Deletes individual credentials",
                "description": "Deletes individual credentials",
                "operationId": "oauth-client-tokens-delete",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "The ID of the credentials to delete",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Deleted"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/OauthClientCredentialsNotFound"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/oauth2/auth": {
            "get": {
                "tags": [
                    "oauth"
                ],
                "summary": "Show login form",
                "description": "Show login form",
                "operationId": "oauth-code",
                "responses": {
                    "200": {
                        "description": "Success"
                    }
                },
                "security": [
                    {}
                ]
            },
            "post": {
                "tags": [
                    "oauth"
                ],
                "summary": "Check credentials",
                "description": "Issue authorization code",
                "operationId": "oauth-code-post",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "client_id",
                                    "redirect_uri",
                                    "state"
                                ],
                                "properties": {
                                    "client_id": {
                                        "description": "The client ID",
                                        "example": 1
                                    },
                                    "redirect_uri": {
                                        "description": "The redirect URI",
                                        "example": "https://example.com"
                                    },
                                    "email": {
                                        "description": "Email",
                                        "example": "john.doe@example.com"
                                    },
                                    "password": {
                                        "description": "Password",
                                        "format": "password",
                                        "example": "myPassword"
                                    },
                                    "state": {
                                        "description": "State",
                                        "example": "AcFAidjf7fAQ"
                                    },
                                    "response_type": {
                                        "example": "code"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "url": {
                                            "example": "https://example.com?state=AcFAidjf7fAQ&code=0MLHrbstTvyLzPC"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {}
                ]
            }
        },
        "/oauth2/dxi": {
            "post": {
                "tags": [
                    "oauth"
                ],
                "summary": "Check DXI token",
                "description": "Issue authorization code",
                "operationId": "oauth-dxi-post",
                "parameters": [
                    {
                        "name": "dxiToken",
                        "in": "query",
                        "description": "DXI token",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success"
                    }
                }
            }
        },
        "/oauth2/token": {
            "get": {
                "tags": [
                    "oauth"
                ],
                "summary": "Get list of OAuth access tokens.",
                "description": "Get list of OAuth access tokens",
                "operationId": "oauth-get-token-list",
                "parameters": [
                    {
                        "name": "expired",
                        "in": "query",
                        "description": "Flag for including expired tokens. By default expired tokens are not returned.",
                        "schema": {
                            "type": "boolean"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/OauthToken"
                                    }
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access"
                    }
                }
            },
            "post": {
                "tags": [
                    "oauth"
                ],
                "summary": "Obtain access token using one of the supported grants.",
                "description": "Obtain access token using one of the supported grants. The authorization code grant must be sent using application/json; not standard application/x-www-form-urlencoded",
                "operationId": "oauth-create-token",
                "requestBody": {
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "required": [
                                    "grant_type"
                                ],
                                "properties": {
                                    "grant_type": {
                                        "description": "The grant type according to OAuth2 specification",
                                        "type": "string",
                                        "default": "client_credentials",
                                        "enum": [
                                            "authorization_code",
                                            "client_credentials",
                                            "refresh_token"
                                        ]
                                    },
                                    "client_id": {
                                        "description": "The client ID, required for client_credentials and authorization_code grants.",
                                        "type": "string"
                                    },
                                    "client_secret": {
                                        "description": "The client secret, required for client_credentials, optional for authorization_code.",
                                        "type": "string"
                                    },
                                    "refresh_token": {
                                        "description": "Refresh token user for refresh_token grant.",
                                        "type": "string"
                                    },
                                    "code": {
                                        "description": "Authorization code used in authorization_code grant.",
                                        "type": "string"
                                    },
                                    "redirect_uri": {
                                        "description": "Redirect URI used in authorization_code grant.",
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "required": [
                                    "grant_type"
                                ],
                                "properties": {
                                    "grant_type": {
                                        "description": "The grant type according to OAuth2 specification",
                                        "type": "string",
                                        "default": "client_credentials",
                                        "enum": [
                                            "authorization_code",
                                            "client_credentials",
                                            "refresh_token"
                                        ]
                                    },
                                    "client_id": {
                                        "description": "The client ID, required for client_credentials and authorization_code grants.",
                                        "type": "string"
                                    },
                                    "client_secret": {
                                        "description": "The client secret, required for client_credentials, optional for authorization_code.",
                                        "type": "string"
                                    },
                                    "refresh_token": {
                                        "description": "Refresh token user for refresh_token grant.",
                                        "type": "string"
                                    },
                                    "code": {
                                        "description": "Authorization code used in authorization_code grant.",
                                        "type": "string"
                                    },
                                    "redirect_uri": {
                                        "description": "Redirect URI used in authorization_code grant.",
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Success - refresh_token and client_credentials grants.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "access_token": {
                                            "description": "The new access token",
                                            "type": "string",
                                            "example": "GOqTHsCvUbR/08oLVARB3rFBXp5i1VI+IX7mkZZ1lxY="
                                        },
                                        "token_type": {
                                            "description": "Always 'bearer'",
                                            "type": "string",
                                            "example": "bearer"
                                        },
                                        "expires_in": {
                                            "description": "The remaining time in seconds until access token expires",
                                            "type": "integer",
                                            "example": 3600
                                        },
                                        "refresh_token": {
                                            "description": "A token that can be used to refresh the access token",
                                            "type": "string",
                                            "example": "QrW/iSuh7ineG/QNPsUpwot1uEFIBYRhpBJobg8nSW4="
                                        },
                                        "refresh_token_expires_in": {
                                            "description": "The remaining time in seconds until refresh token expires",
                                            "type": "integer",
                                            "example": 604800
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Invalid credentials",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "error": {
                                            "description": "The error code",
                                            "type": "string",
                                            "example": "invalid_client"
                                        },
                                        "error_description": {
                                            "description": "The error message",
                                            "type": "string",
                                            "example": "Either the client_id does not exist or the client_secret is incorrect"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid data sent",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "error": {
                                            "description": "The error code",
                                            "type": "string",
                                            "example": "invalid_request"
                                        },
                                        "error_description": {
                                            "description": "The error message",
                                            "type": "string",
                                            "example": "The request is missing a grant type"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            },
            "delete": {
                "tags": [
                    "oauth"
                ],
                "summary": "Invalidate current access token",
                "description": "Invalidate access token used in this request",
                "operationId": "oauth-token-delete-current",
                "responses": {
                    "200": {
                        "description": "Success"
                    },
                    "400": {
                        "description": "Bad request",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "example": "Invalid access token"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/oauth2/refreshtoken": {
            "get": {
                "tags": [
                    "oauth"
                ],
                "summary": "Get list of OAuth refresh tokens.",
                "description": "Get list of OAuth refresh tokens",
                "operationId": "oauth-get-refresh-token-list",
                "parameters": [
                    {
                        "name": "expired",
                        "in": "query",
                        "description": "Flag for including expired tokens. By default expired tokens are not returned.",
                        "schema": {
                            "type": "boolean"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/OauthToken"
                                    }
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access"
                    }
                }
            }
        },
        "/oauth2/token/{token}": {
            "delete": {
                "tags": [
                    "oauth"
                ],
                "summary": "Invalidate access token",
                "description": "Invalidate given access token or token given by ID",
                "operationId": "oauth-token-delete",
                "parameters": [
                    {
                        "name": "token",
                        "in": "path",
                        "description": "The access token or the ID of access token to invalidate",
                        "required": true,
                        "schema": {
                            "oneOf": [
                                {
                                    "description": "The access token to invalidate",
                                    "type": "string"
                                },
                                {
                                    "description": "The ID of the access token to invalidate",
                                    "type": "integer"
                                }
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success"
                    },
                    "400": {
                        "description": "Bad request",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "example": "Invalid access token"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/oauth2/refreshtoken/{id}": {
            "delete": {
                "tags": [
                    "oauth"
                ],
                "summary": "Invalidate refresh token by ID",
                "description": "Invalidate given access token",
                "operationId": "oauth-refresh-token-delete-id",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success"
                    },
                    "404": {
                        "description": "Not found"
                    },
                    "400": {
                        "description": "Bad request"
                    }
                }
            }
        },
        "/oauth2/cognate-tokens": {
            "delete": {
                "tags": [
                    "oauth"
                ],
                "summary": "Invalidate all access tokens of the same type as the current access token",
                "description": "Invalidate all access token issued for the same user and client as the access token in the request",
                "operationId": "oauth-token-cognate-delete-current",
                "responses": {
                    "200": {
                        "description": "Success"
                    },
                    "400": {
                        "description": "Bad request",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "example": "Invalid access token"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/oauth2/cognate-tokens/{token}": {
            "delete": {
                "tags": [
                    "oauth"
                ],
                "summary": "Invalidate all access tokens of the same type as the given access token",
                "description": "Invalidate all access token issued for the same user and client as the given access token",
                "operationId": "oauth-token-cognate-delete",
                "parameters": [
                    {
                        "name": "token",
                        "in": "path",
                        "description": "The access token, if empty access token from current request is used",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success"
                    },
                    "400": {
                        "description": "Bad request",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "example": "Invalid access token"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/reports/{monitorId}": {
            "get": {
                "tags": [
                    "reports"
                ],
                "summary": "Get check details",
                "description": "Get detail of a check",
                "operationId": "report-check-get",
                "parameters": [
                    {
                        "name": "monitorId",
                        "in": "path",
                        "description": "Monitor ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "eventId",
                        "in": "query",
                        "description": "Log event ID",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        },
                        "example": "0a4b0150-4433-11ea-aff7-6d6c1e8c7010"
                    },
                    {
                        "name": "parentEventId",
                        "in": "query",
                        "description": "Log parent event ID (UUID)",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "sourceCheckpointId",
                        "in": "query",
                        "description": "Source checkpoint ID",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ReportCheck"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Not found"
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/resource-groups/{type}/{id}": {
            "get": {
                "tags": [
                    "resource-groups"
                ],
                "summary": "Get resource group by ID",
                "description": "Get resource group {id}.",
                "operationId": "resource-group-get",
                "parameters": [
                    {
                        "name": "type",
                        "in": "path",
                        "description": "Resource group type",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "contact",
                                "maintenance"
                            ]
                        }
                    },
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Resource group id",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ResourceGroupItemWithPermission"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Group not found or insufficient privileges",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "group not found or insufficient privileges"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            },
            "put": {
                "tags": [
                    "resource-groups"
                ],
                "summary": "Rename resource group",
                "description": "Rename resource group {id}.",
                "operationId": "resource-group-put",
                "parameters": [
                    {
                        "name": "type",
                        "in": "path",
                        "description": "Resource group type",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "contact",
                                "maintenance"
                            ]
                        }
                    },
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Resource group id",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "description": "Resource group with new name. The id in the object is ignored.",
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ResourceGroupItem"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {},
                                "example": "[]"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Name parameter is required"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Group not found or insufficient privileges",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "group not found or insufficient privileges"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            },
            "delete": {
                "tags": [
                    "resource-groups"
                ],
                "summary": "Delete empty resource group",
                "description": "Delete resource group {id}.",
                "operationId": "resource-group-delete",
                "parameters": [
                    {
                        "name": "type",
                        "in": "path",
                        "description": "Resource group type",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "contact",
                                "maintenance"
                            ]
                        }
                    },
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Resource group id",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "Success"
                    },
                    "404": {
                        "description": "Group not found or insufficient privileges",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "group not found or insufficient privileges"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/resource-groups/{type}/access/{user}": {
            "get": {
                "tags": [
                    "resource-groups"
                ],
                "summary": "Get resource groups owned by caller with permissions granted to user's default role",
                "description": "Get resource groups with permissions",
                "operationId": "resource-group-access-get",
                "parameters": [
                    {
                        "name": "type",
                        "in": "path",
                        "description": "Resource group type",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "contact",
                                "maintenance"
                            ]
                        }
                    },
                    {
                        "name": "user",
                        "in": "path",
                        "description": "User id permissions are fetched for",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/ResourceGroupItemWithPermission"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/resource-groups/{type}/for/{user}": {
            "post": {
                "tags": [
                    "resource-groups"
                ],
                "summary": "Create new root resource group {name} of {type}.",
                "description": "Create new root resource group. The owner of the resource group will be {user}.",
                "operationId": "resource-group-post-for",
                "parameters": [
                    {
                        "name": "type",
                        "in": "path",
                        "description": "Resource group type",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "contact",
                                "maintenance"
                            ]
                        }
                    },
                    {
                        "name": "user",
                        "in": "path",
                        "description": "Owner of the new resource group",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "description": "New resource group. The id in the object is ignored.",
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ResourceGroupItem"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ResourceGroupItem"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Invalid resource group type"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/resource-groups/{type}": {
            "post": {
                "tags": [
                    "resource-groups"
                ],
                "summary": "Create new root resource group {name} of {type}.",
                "description": "Create new root resource group owned by the caller.",
                "operationId": "resource-group-post",
                "parameters": [
                    {
                        "name": "type",
                        "in": "path",
                        "description": "Resource group type",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "contact",
                                "maintenance"
                            ]
                        }
                    }
                ],
                "requestBody": {
                    "description": "New resource group. The id in the object is ignored.",
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ResourceGroupItem"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ResourceGroupItem"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "Bad Request"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "The request you sent was invalid."
                                        },
                                        "data": {
                                            "example": null
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/resource-groups/{type}/{id}/assignment/{resource}": {
            "put": {
                "tags": [
                    "resource-groups"
                ],
                "summary": "Assign resource to a group",
                "description": "Assign resource with ID {resource} to group {id}.",
                "operationId": "resource-group-assignment-put",
                "parameters": [
                    {
                        "name": "type",
                        "in": "path",
                        "description": "Resource group type",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "contact",
                                "maintenance"
                            ]
                        }
                    },
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Resource group id",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "resource",
                        "in": "path",
                        "description": "Resource ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {},
                                "example": "[]"
                            }
                        }
                    },
                    "404": {
                        "description": "Resource or group not found or insufficient privileges",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "resource or group not found or insufficient privileges"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            },
            "delete": {
                "tags": [
                    "resource-groups"
                ],
                "summary": "Unassign resource from a group",
                "description": "Unassign resource with ID {resource} from group {id}.",
                "operationId": "resource-group-assignment-delete",
                "parameters": [
                    {
                        "name": "type",
                        "in": "path",
                        "description": "Resource group type",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "contact",
                                "maintenance"
                            ]
                        }
                    },
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Resource group id",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "resource",
                        "in": "path",
                        "description": "Resource ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "Success"
                    },
                    "404": {
                        "description": "Resource or group not found or insufficient privileges",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "group not found or insufficient privileges"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/access/roles/{roleId}": {
            "get": {
                "tags": [
                    "access"
                ],
                "summary": "Get role detail",
                "description": "Get role detail",
                "operationId": "access-roles-get",
                "parameters": [
                    {
                        "name": "roleId",
                        "in": "path",
                        "description": "Role name or ID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/EnrichedRole"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Role not found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            },
            "put": {
                "tags": [
                    "access"
                ],
                "summary": "Update role",
                "description": "Update role",
                "operationId": "access-roles-put",
                "parameters": [
                    {
                        "name": "roleId",
                        "in": "path",
                        "description": "The role name or ID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "description": "Role attributes",
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/RoleCreate"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/EnrichedRole"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Missing required data"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Role not found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            },
            "delete": {
                "tags": [
                    "access"
                ],
                "summary": "Delete role",
                "description": "Delete role",
                "operationId": "access-roles-delete",
                "parameters": [
                    {
                        "name": "roleId",
                        "in": "path",
                        "description": "The role name or ID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "Success"
                    },
                    "404": {
                        "description": "Not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Role not found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/access/roles/{roleId}/permission/{type}/{resource}": {
            "get": {
                "tags": [
                    "access"
                ],
                "summary": "Get {type} permission on {resource} with level if assigned to a role",
                "description": "Get role permission on resource ID {resource} of type {type}. If such permission is granted it is returned with the appropriate level value. 204 is returned if no permission is granted.",
                "operationId": "access-roles-permission-get",
                "parameters": [
                    {
                        "name": "roleId",
                        "in": "path",
                        "description": "Name or ID of the role the permission is granted to",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "type",
                        "in": "path",
                        "description": "Permission type",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "example": "account-contacts"
                        }
                    },
                    {
                        "name": "resource",
                        "in": "path",
                        "description": "ID of the resource",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "include",
                        "in": "query",
                        "description": "If set to specific, specific permission is added to the response",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "permission": {
                                            "$ref": "#/components/schemas/Permission"
                                        },
                                        "specific": {
                                            "$ref": "#/components/schemas/Permission"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "204": {
                        "description": "Resource not permitted"
                    },
                    "404": {
                        "description": "Not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Role not found"
                                        },
                                        "data": {
                                            "example": null
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/access/roles/{roleId}/permissions/{type}": {
            "get": {
                "tags": [
                    "access"
                ],
                "summary": "Get role permissions for all resources of type {type}",
                "description": "Get role permission for all resources of type {type}. For now only resources of type 'folder' are implemented.",
                "operationId": "access-roles-permissions-get",
                "parameters": [
                    {
                        "name": "roleId",
                        "in": "path",
                        "description": "Name or ID of the role the permission is granted to",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "type",
                        "in": "path",
                        "description": "Permission type",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "include",
                        "in": "query",
                        "description": "If set to specific, specific permission is added to the response",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "All resources for the given role, including their permissions",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "responses": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "format": "int64",
                                                        "example": 123
                                                    },
                                                    "status": {
                                                        "type": "integer",
                                                        "example": 200
                                                    },
                                                    "resource": {
                                                        "$ref": "#/components/schemas/FolderItem"
                                                    },
                                                    "message": {
                                                        "type": "string",
                                                        "example": "OK"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        },
                                        "metadata": {
                                            "$ref": "#/components/schemas/BulkResponseMetadata"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "207": {
                        "description": "Multiple results",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "Multi-status"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Bulk response"
                                        },
                                        "data": {
                                            "properties": {
                                                "responses": {
                                                    "type": "array",
                                                    "items": {
                                                        "properties": {
                                                            "id": {
                                                                "format": "int64",
                                                                "example": 123
                                                            },
                                                            "status": {
                                                                "type": "integer",
                                                                "example": 200
                                                            },
                                                            "resource": {
                                                                "$ref": "#/components/schemas/FolderItem"
                                                            },
                                                            "message": {
                                                                "type": "string",
                                                                "example": "OK"
                                                            }
                                                        },
                                                        "type": "object"
                                                    }
                                                },
                                                "metadata": {
                                                    "$ref": "#/components/schemas/BulkResponseMetadata"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "Bad request"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Resource type not implemented yet"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Not found"
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/access/roles/{roleId}/permissions": {
            "put": {
                "tags": [
                    "access"
                ],
                "summary": "Grant permission to role",
                "description": "Grant permission to role",
                "operationId": "access-roles-permissions-put",
                "parameters": [
                    {
                        "name": "roleId",
                        "in": "path",
                        "description": "Name or ID of the role the permission is granted to",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "description": "Permission data",
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/Permission"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Success"
                    },
                    "204": {
                        "description": "Not needed - role has the permission (or higher) already"
                    },
                    "400": {
                        "description": "Bad request",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Invalid resource"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Role not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Role not found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            },
            "delete": {
                "tags": [
                    "access"
                ],
                "summary": "Revoke permission from role",
                "description": "Revoke permission from role",
                "operationId": "access-roles-permissions-delete",
                "parameters": [
                    {
                        "name": "roleId",
                        "in": "path",
                        "description": "Name or ID of the role the permission is granted to",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "description": "Permission data",
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/Permission"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Success"
                    },
                    "204": {
                        "description": "Not needed - role doesn't have the permission"
                    },
                    "400": {
                        "description": "Bad request",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Invalid resource"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Role not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Role not found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/access/roles/{roleId}/users": {
            "put": {
                "tags": [
                    "access"
                ],
                "summary": "Add user to role",
                "description": "Add user to role",
                "operationId": "access-roles-users-put",
                "parameters": [
                    {
                        "name": "roleId",
                        "in": "path",
                        "description": "Name or ID of the role the permission is granted to",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "description": "User data",
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/UserAssign"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Success"
                    },
                    "204": {
                        "description": "Not needed - user already added"
                    },
                    "400": {
                        "description": "Bad request",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Cannot manage self for an owned role"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Role not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Role not found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            },
            "delete": {
                "tags": [
                    "access"
                ],
                "summary": "Remove user from role",
                "description": "Remove user from role",
                "operationId": "access-roles-users-delete",
                "parameters": [
                    {
                        "name": "roleId",
                        "in": "path",
                        "description": "Name or ID of the role the permission is granted to",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "description": "User data",
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/UserAssign"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Success"
                    },
                    "204": {
                        "description": "Not needed - user already added"
                    },
                    "400": {
                        "description": "Bad request",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Cannot manage self for an owned role"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Role not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Role not found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/saml/isSsoAccount": {
            "post": {
                "tags": [
                    "saml"
                ],
                "summary": "Check if account is SSO enabled",
                "description": "Verify e-mail if the account exists and has active SAML identity provider assigned. Returns SSO url the user should be redirected to.",
                "operationId": "saml-isssoaccount-post",
                "requestBody": {
                    "content": {
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "required": [
                                    "email",
                                    "client_id",
                                    "redirect_uri"
                                ],
                                "properties": {
                                    "email": {
                                        "description": "User e-mail",
                                        "type": "string"
                                    },
                                    "client_id": {
                                        "description": "Client ID",
                                        "type": "integer"
                                    },
                                    "redirect_uri": {
                                        "description": "Redirect URI",
                                        "type": "string"
                                    },
                                    "response_type": {
                                        "description": "Response type",
                                        "type": "string"
                                    },
                                    "state": {
                                        "description": "State",
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "User is configured to use SSO for log-in. The url the user should be redirected to is returned"
                    },
                    "204": {
                        "description": "The user is not configured to use SSO"
                    },
                    "400": {
                        "description": "Bad request"
                    }
                },
                "security": [
                    {}
                ]
            }
        },
        "/saml/meta/{name}": {
            "get": {
                "tags": [
                    "saml"
                ],
                "summary": "Get SAML metadata",
                "description": "Return xml with metadata to pair ASM as service provider with identity provider.",
                "operationId": "saml-meta-get",
                "parameters": [
                    {
                        "name": "name",
                        "in": "path",
                        "description": "SAML provider name",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Metadata returned",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    },
                    "404": {
                        "description": "Identity provider name not found, bad request"
                    }
                },
                "security": [
                    {}
                ]
            }
        },
        "/saml/sls/{name}": {
            "get": {
                "tags": [
                    "saml"
                ],
                "summary": "Single logout service",
                "description": "SAML endpoint for SLS service",
                "operationId": "saml-sls-get",
                "parameters": [
                    {
                        "name": "name",
                        "in": "path",
                        "description": "SAML provider name",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success"
                    },
                    "404": {
                        "description": "Identity provider name not found, bad request"
                    }
                },
                "security": [
                    {}
                ]
            }
        },
        "/saml/acs/{name}": {
            "post": {
                "tags": [
                    "saml"
                ],
                "summary": "SP assertion consumer service endpoint",
                "description": "Verify e-mail if the account exists and has active SAML identity provider assigned. Returns SSO url the user should be redirected to.",
                "operationId": "saml-acs-post",
                "parameters": [
                    {
                        "name": "name",
                        "in": "path",
                        "description": "SAML provider name",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "properties": {
                                    "RelayState": {
                                        "description": "Relay state parameter",
                                        "type": "string"
                                    },
                                    "SAMLResponse": {
                                        "description": "SAML Response",
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "300": {
                        "description": "The user is redirected to ASM"
                    }
                },
                "security": [
                    {}
                ]
            }
        },
        "/saml/logout/{name}": {
            "get": {
                "tags": [
                    "saml"
                ],
                "summary": "Logout SAML users",
                "description": "Logout users who logged in using SAML",
                "operationId": "saml-logout-get",
                "parameters": [
                    {
                        "name": "name",
                        "in": "path",
                        "description": "SAML provider name",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success"
                    },
                    "404": {
                        "description": "Identity provider name not found, bad request"
                    }
                },
                "security": [
                    {}
                ]
            }
        },
        "/settings": {
            "get": {
                "tags": [
                    "settings"
                ],
                "summary": "Get settings",
                "description": "Get settings",
                "operationId": "settings-get",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/SettingsItem"
                                    }
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/settings/{name}": {
            "get": {
                "tags": [
                    "settings"
                ],
                "summary": "Get a settings value",
                "description": "Get a single settings value",
                "operationId": "settings-get-detail",
                "parameters": [
                    {
                        "name": "name",
                        "in": "path",
                        "description": "The setting name",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/SettingsItem"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid parameter name",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Invalid parameter name"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            },
            "put": {
                "tags": [
                    "settings"
                ],
                "summary": "Update the settings value",
                "description": "Updates the settings value.",
                "operationId": "settings-update",
                "parameters": [
                    {
                        "name": "name",
                        "in": "path",
                        "description": "The settigns name",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "description": "The settings value",
                    "content": {
                        "application/json": {
                            "schema": {}
                        }
                    }
                },
                "responses": {
                    "204": {
                        "description": "Success"
                    },
                    "403": {
                        "description": "Insufficient permissions",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "You don't have the necessary permission"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Wrong parameter name or value was passed",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "The settings name is invalid"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/stations": {
            "get": {
                "tags": [
                    "stations"
                ],
                "summary": "Get list of all stations available to user",
                "description": "Get list of all monitoring stations available to user",
                "operationId": "stations-list",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/StationItem"
                                    }
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            },
            "post": {
                "tags": [
                    "stations"
                ],
                "summary": "Create a station",
                "description": "Create a station.",
                "operationId": "stations-create",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/StationItemCreate"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/StationItemDetail"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "Bad Request"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "The request you sent was invalid."
                                        },
                                        "data": {
                                            "properties": {
                                                "details": {
                                                    "type": "string",
                                                    "example": "Invalid host"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/stations/{id}": {
            "get": {
                "tags": [
                    "stations"
                ],
                "summary": "Get individual station details",
                "description": "Get individual station details",
                "operationId": "stations-get",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "The station ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/StationItemDetail"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Not found or not permitted to view",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "The monitoring station was not found or you don't have access to it"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            },
            "put": {
                "tags": [
                    "stations"
                ],
                "summary": "Update a station",
                "description": "Update a station.",
                "operationId": "stations-update",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "The ID of the station",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/StationItemCreate"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/StationItemDetail"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "Bad Request"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "The request you sent was invalid."
                                        },
                                        "data": {
                                            "properties": {
                                                "details": {
                                                    "type": "string",
                                                    "example": "Invalid alias."
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            },
            "delete": {
                "tags": [
                    "stations"
                ],
                "summary": "Delete station",
                "description": "Delete monitoring station",
                "operationId": "station-delete",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Monitoring station id",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "Success"
                    },
                    "404": {
                        "description": "Monitoring station not found or insufficient privileges",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "station not found or insufficient privileges"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/stations/maintenance/{id}": {
            "put": {
                "tags": [
                    "stations"
                ],
                "summary": "Put a station into maintenance mode.",
                "description": "Put a station into maintenance.",
                "operationId": "stations-put-maintenance",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "The ID of the station",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "Success"
                    },
                    "400": {
                        "description": "Bad request",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "Bad Request"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "The request you sent was invalid."
                                        },
                                        "data": {
                                            "properties": {
                                                "details": {
                                                    "type": "string",
                                                    "example": "Monitoring station is not active."
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            },
            "delete": {
                "tags": [
                    "stations"
                ],
                "summary": "Remove the maintenance mode.",
                "description": "Remove station from the maintenance mode (make it active).",
                "operationId": "stations-delete-maintenance",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "The ID of the station",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "Success"
                    },
                    "400": {
                        "description": "Bad request",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "Bad Request"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "The request you sent was invalid."
                                        },
                                        "data": {
                                            "properties": {
                                                "details": {
                                                    "type": "string",
                                                    "example": "Monitoring station is not in maintenance."
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/stations/onpremise": {
            "get": {
                "tags": [
                    "stations"
                ],
                "summary": "Get list of accessible on-premise stations",
                "description": "Get list of accessible on-premise stations",
                "operationId": "stations-onpremise-list",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/StationItem"
                                    }
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/stations/onpremise/connected": {
            "get": {
                "tags": [
                    "stations"
                ],
                "summary": "Get list of connected on-premise stations",
                "description": "Get list of connected on-premise stations",
                "operationId": "stations-onpremise-connected",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/StationItem"
                                    }
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/stations/onpremise/connected/all": {
            "get": {
                "tags": [
                    "stations"
                ],
                "summary": "Get list of all connected on-premise stations (admins only)",
                "description": "Get list of all connected on-premise stations (requires admin permission)",
                "operationId": "stations-onpremise-connected-all",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/StationItem"
                                    }
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/stations/start-install": {
            "post": {
                "tags": [
                    "stations"
                ],
                "summary": "Start station installation",
                "description": "Start installation of a station. The installer data are provided, new token for installation stop is provided.",
                "operationId": "stations-start-install",
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "description": "The installation token",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/StationInstallation"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Expired token"
                    },
                    "404": {
                        "description": "Invalid token - no such station found"
                    },
                    "400": {
                        "description": "Bad request",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "Bad Request"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "The request you sent was invalid."
                                        },
                                        "data": {
                                            "properties": {
                                                "details": {
                                                    "type": "string",
                                                    "example": "Invalid host"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {}
                ]
            }
        },
        "/stations/get-install": {
            "get": {
                "tags": [
                    "stations"
                ],
                "summary": "Get station installation data",
                "description": "Get installation data of a station. The installer data together with a new token for installation start are provided.",
                "operationId": "stations-get-install",
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "description": "The installation token",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/StationInstallation"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Expired token"
                    },
                    "404": {
                        "description": "Invalid token - no such station found"
                    },
                    "400": {
                        "description": "Bad request",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "Bad Request"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "The request you sent was invalid."
                                        },
                                        "data": {
                                            "properties": {
                                                "details": {
                                                    "type": "string",
                                                    "example": "Invalid host"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {}
                ]
            }
        },
        "/stations/end-install": {
            "post": {
                "tags": [
                    "stations"
                ],
                "summary": "Finish station installation",
                "description": "Finish installation of a station. The token is invalidated.",
                "operationId": "stations-end-install",
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "description": "The installation token",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/StationInstallationReport"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/StationInstallation"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Expired token"
                    },
                    "404": {
                        "description": "Invalid token - no such station found"
                    },
                    "400": {
                        "description": "Bad request",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "Bad Request"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "The request you sent was invalid."
                                        },
                                        "data": {
                                            "properties": {
                                                "details": {
                                                    "type": "string",
                                                    "example": "Invalid host"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {}
                ]
            }
        },
        "/stations/uninstall": {
            "post": {
                "tags": [
                    "stations"
                ],
                "summary": "Uninstall a station",
                "description": "Uninstall a station - it is marked as empty. The token is invalidated.",
                "operationId": "stations-uninstall",
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "description": "The uninstallation token",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "Success"
                    },
                    "401": {
                        "description": "Expired token"
                    },
                    "404": {
                        "description": "Invalid token - no such station found"
                    },
                    "400": {
                        "description": "Bad request",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "Bad Request"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "The request you sent was invalid."
                                        },
                                        "data": {
                                            "properties": {
                                                "details": {
                                                    "type": "string",
                                                    "example": "Invalid host"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {}
                ]
            }
        },
        "/stations/latest": {
            "get": {
                "tags": [
                    "stations"
                ],
                "summary": "Get the latest version of both the station and the installer",
                "description": "Get the latest version of both the station and the installer",
                "operationId": "stations-latest",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/StationLatest"
                                    }
                                }
                            }
                        }
                    }
                },
                "security": [
                    {}
                ]
            }
        },
        "/stations/{agent}/{id}": {
            "put": {
                "tags": [
                    "stations"
                ],
                "summary": "Change the simple check agent to ccagent or cbot.",
                "description": "Switch to {agent} for all simple checks on this monitoring station.\n               On new monitoring stations the ccagent is used by default. You can switch it back to the old cbot agent for running simple checks like http(s), ftp(s), smtp, etc.\n               The new agent has many improvements compared to the old agent named cbot: it is using the new SSL3 library, provides asset with server response even for OK checks, create asset with server certificates, etc.\n               In the future, this API call will be removed.",
                "operationId": "stations-agent-type",
                "parameters": [
                    {
                        "name": "agent",
                        "in": "path",
                        "description": "The new agent to use",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "ccagent",
                                "cbot"
                            ]
                        }
                    },
                    {
                        "name": "id",
                        "in": "path",
                        "description": "The ID of the station",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "Success"
                    },
                    "404": {
                        "description": "Not found or not permitted to view",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "The monitoring station was not found or you don't have access to it"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/stations/agents/{id}": {
            "get": {
                "tags": [
                    "stations"
                ],
                "summary": "Get list of agents responsible for the monitor type.",
                "description": "Get list of agents responsible for the monitor type.",
                "operationId": "stations-get-agents",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "The ID of the station",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/StationAgent"
                                    }
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Not found or not permitted to view",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "The monitoring station was not found or you don't have access to it"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/statistic": {
            "get": {
                "tags": [
                    "statistic"
                ],
                "summary": "Get monitor statistics",
                "description": "Get monitor statistics",
                "operationId": "statistic",
                "parameters": [
                    {
                        "name": "monitor",
                        "in": "query",
                        "description": "List of monitors to query. If both 'monitors' and 'folders' are omitted, query all monitors. Format: Monitor name (string) or monitor ID (integer).",
                        "style": "form",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    },
                    {
                        "name": "folder",
                        "in": "query",
                        "description": "List of folders to query. If both 'monitors' and 'folders' are omitted, query all monitors. Format: Folder name (string) or folder ID (integer).",
                        "style": "form",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    },
                    {
                        "name": "location",
                        "in": "query",
                        "description": "List of locations to filter by. Format: Location name (string) or location ID (integer).",
                        "style": "form",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    },
                    {
                        "name": "from",
                        "in": "query",
                        "description": "Start of interval. Format: ISO 8601 date and time.",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "date-time"
                        }
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "description": "End of interval. Format: ISO 8601 date and time. Default is the current time.",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "period",
                        "in": "query",
                        "description": "Return a time series with a given period between data points. Format: ISO 8601 duration. If omitted, return a single value.",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "groupBy",
                        "in": "query",
                        "description": "Group results by monitor or location.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "monitor",
                                "location"
                            ]
                        }
                    },
                    {
                        "name": "metric",
                        "in": "query",
                        "description": "List of metrics to return. If omitted, return all metrics.",
                        "style": "form",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/StatisticItem"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request."
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/subscription/trial/{id}": {
            "get": {
                "tags": [
                    "subscription"
                ],
                "summary": "Get number of days remaining to the end of the trial period.",
                "description": "Get number of remaining trial days",
                "operationId": "subscription-trial-get-by-id",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "ID of the account",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "404": {
                        "description": "User not found or user not on trial subscription"
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    },
                    "200": {
                        "description": "Success"
                    }
                }
            },
            "put": {
                "tags": [
                    "subscription"
                ],
                "summary": "Subscribe trial",
                "description": "Subscribe trial package. This can be performed by any user without any subscription (even deleted) or by user with admin permissions (e.g. reseller).",
                "operationId": "subscription-trial-put-by-id",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "ID of the account",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Success"
                    },
                    "400": {
                        "description": "Bad request",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "This account has a valid subscription"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to register trial",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/subscription/trial": {
            "get": {
                "tags": [
                    "subscription"
                ],
                "summary": "Get number of days remaining to the end of the trial period.",
                "description": "Get number of remaining trial days",
                "operationId": "subscription-get-trial",
                "responses": {
                    "404": {
                        "description": "User not found or user not on trial subscription"
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    },
                    "200": {
                        "description": "Success"
                    }
                }
            },
            "put": {
                "tags": [
                    "subscription"
                ],
                "summary": "Subscribe trial",
                "description": "Subscribe trial package. This can be performed by any user without any subscription (even deleted) or by user with admin permissions (e.g. reseller).",
                "operationId": "subscription-trial-put",
                "responses": {
                    "201": {
                        "description": "Success"
                    },
                    "400": {
                        "description": "Bad request",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "This account has a valid subscription"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to register trial",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/subscription/{id}": {
            "delete": {
                "tags": [
                    "subscription"
                ],
                "summary": "Unsubscribe from ASM",
                "description": "Unsubscribe all package. All monitors and contacts will be deactivated, the subscription will be cancaled. As an accident protection measure the account email is required in the parameters.",
                "operationId": "subscription-delete-by-id",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "ID of the account",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "email",
                        "in": "query",
                        "description": "Email of the account",
                        "required": true,
                        "style": "form",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "Success"
                    },
                    "400": {
                        "description": "Bad request",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "This account has a valid subscription"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to unsubscribe",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/tags": {
            "get": {
                "tags": [
                    "tags"
                ],
                "summary": "Get monitor tags of the user",
                "description": "Get all monitor tags contacts",
                "operationId": "tags-get-all",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/MonitorTag"
                                    }
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Access to the resource was denied.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Access to the resource was denied."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/tenants/manage/{tenantId}": {
            "put": {
                "tags": [
                    "tenants"
                ],
                "summary": "Create user",
                "description": "Create user",
                "operationId": "tenant-put",
                "parameters": [
                    {
                        "name": "tenantId",
                        "in": "path",
                        "description": "Tenant id",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "name",
                                    "email",
                                    "country"
                                ],
                                "properties": {
                                    "name": {
                                        "description": "First name and last name",
                                        "type": "string",
                                        "example": "John Doe"
                                    },
                                    "email": {
                                        "description": "Email",
                                        "type": "string",
                                        "example": "john.doe@example.com"
                                    },
                                    "country": {
                                        "description": "Country two-letter ISO code",
                                        "type": "string",
                                        "example": "us"
                                    },
                                    "company": {
                                        "description": "Company",
                                        "type": "string",
                                        "example": "My Company Ltd."
                                    },
                                    "website": {
                                        "description": "Website",
                                        "type": "string",
                                        "example": "https://example.com"
                                    },
                                    "phone": {
                                        "description": "Phone",
                                        "type": "string",
                                        "example": "￿+1213-555-0167"
                                    },
                                    "city": {
                                        "description": "City",
                                        "type": "string",
                                        "example": "Los Angeles"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Success"
                    },
                    "400": {
                        "description": "Invalid data"
                    }
                },
                "security": [
                    {}
                ]
            }
        },
        "/tenants/manage/{tenantId}/email/{email}": {
            "delete": {
                "tags": [
                    "tenants"
                ],
                "summary": "Delete user",
                "description": "Delete user",
                "operationId": "tenant-delete",
                "parameters": [
                    {
                        "name": "tenantId",
                        "in": "path",
                        "description": "Tenant id",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "email",
                        "in": "path",
                        "description": "User's e-mail",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "Success"
                    },
                    "404": {
                        "description": "Not found"
                    }
                },
                "security": [
                    {}
                ]
            }
        },
        "/timezones": {
            "get": {
                "tags": [
                    "timezones"
                ],
                "summary": "Get list of all supported timezones",
                "description": "Get list of all supported timezones",
                "operationId": "timezones-list",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/TimezoneItem"
                                    }
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Access to the resource was denied.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Access to the resource was denied."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/user": {
            "get": {
                "tags": [
                    "user"
                ],
                "summary": "Get user profile data",
                "description": "Get profile",
                "operationId": "user-get",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/User"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            },
            "post": {
                "tags": [
                    "user"
                ],
                "summary": "Create a new account",
                "description": "Create a new account",
                "operationId": "user-post",
                "requestBody": {
                    "description": "User data",
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/UserCreate"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/User"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Invalid e-mail"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/user/subaccounts": {
            "get": {
                "tags": [
                    "user"
                ],
                "summary": "Get subaccounts",
                "description": "Get subaccounts",
                "operationId": "user-subaccounts-get",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/User"
                                    }
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            },
            "post": {
                "tags": [
                    "user"
                ],
                "summary": "Create a new subaccount",
                "description": "Create a new subaccount",
                "operationId": "user-subaccounts-post",
                "requestBody": {
                    "description": "User data",
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/UserCreate"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/User"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Invalid e-mail"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/user/changePasswordEmail/{type}/{email}": {
            "get": {
                "tags": [
                    "user"
                ],
                "summary": "Send an e-mail with password change link",
                "description": "Send e-mail to the e-mail with a link on the web or API change password page",
                "operationId": "user-changepasswordemail-get",
                "parameters": [
                    {
                        "name": "type",
                        "in": "path",
                        "description": "Which password you want to change",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "web",
                                "api"
                            ]
                        }
                    },
                    {
                        "name": "email",
                        "in": "path",
                        "description": "E-mail of the account the e-mail with the link to the change password page should be sent to",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success"
                    },
                    "400": {
                        "description": "Bad request",
                        "content": {
                            "application/json": {
                                "schema": {},
                                "example": "You have insufficient privileges to send password change e-mail for this account"
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/user/activationEmail/{email}": {
            "get": {
                "tags": [
                    "user"
                ],
                "summary": "Send an activation e-mail",
                "description": "Reset passwords and send an activation e-mail to the e-mail address",
                "operationId": "user-activationemail-get",
                "parameters": [
                    {
                        "name": "email",
                        "in": "path",
                        "description": "E-mail address of the account the activation e-mail should be sent to and whose passwords should be reset",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "Success"
                    },
                    "400": {
                        "description": "Bad request",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "You have insufficient privileges to send password change e-mail for this account"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/user/block/{id}": {
            "put": {
                "tags": [
                    "user"
                ],
                "summary": "Block an account",
                "description": "Block an account - change the account status from ACTIVE or UNCONFIRMED to BLOCKED. Only owner of the account or privileged accounts can perform the action.",
                "operationId": "user-block-put",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "ID of the account to block",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success"
                    },
                    "204": {
                        "description": "Not needed - account already blocked"
                    },
                    "400": {
                        "description": "Bad request",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Invalid account to block"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            },
            "delete": {
                "tags": [
                    "user"
                ],
                "summary": "Unblock an account",
                "description": "Unblock an account - change the account status from BLOCKED to ACTIVE. Only owner of the account or privileged accounts can perform the action.",
                "operationId": "user-block-delete",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "ID of the account to unblock",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success"
                    },
                    "204": {
                        "description": "Not needed - account not blocked"
                    },
                    "400": {
                        "description": "Bad request",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Invalid account to unblock"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/user/lock/{id}": {
            "delete": {
                "tags": [
                    "user"
                ],
                "summary": "Unlock an account",
                "description": "Unlock an account when locked after too many unsuccessful login attempts. Only owner of the account or privileged accounts can perform the action.",
                "operationId": "user-lock-delete",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "ID of the account to unlock",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success"
                    },
                    "204": {
                        "description": "Not needed - account not locked"
                    },
                    "400": {
                        "description": "Bad request",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Invalid account to unlock"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/user/wipe/{id}": {
            "delete": {
                "tags": [
                    "user"
                ],
                "summary": "Wipe an account",
                "description": "Wipe an account - remove all personal data about the account. Only admin with special privileges can perform the action.",
                "operationId": "user-wipe-delete",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "ID of the account to wipe",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "Success"
                    },
                    "400": {
                        "description": "Bad request",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Invalid account to wipe"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/user/{id}": {
            "put": {
                "tags": [
                    "user"
                ],
                "summary": "Update an account",
                "description": "Update an account",
                "operationId": "user-put",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "The ID of the account",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "description": "User data",
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/UserCreate"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/User"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Invalid e-mail"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            },
            "delete": {
                "tags": [
                    "user"
                ],
                "summary": "Delete an account",
                "description": "Delete an account",
                "operationId": "user-delete",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "ID of the account to remove",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "Success"
                    },
                    "400": {
                        "description": "Bad request",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Invalid account to delete"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/user/pla/{id}": {
            "get": {
                "tags": [
                    "user"
                ],
                "summary": "Get PLA details of an account.",
                "description": "Get PLA details",
                "operationId": "user-pla-get",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "The ID of the account",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Pla"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "User not found or PLA not enabled"
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            },
            "put": {
                "tags": [
                    "user"
                ],
                "summary": "Enable PLA for an account or update the PLA details.",
                "description": "Configure PLA for an account",
                "operationId": "user-pla-put",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "The ID of the account",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "description": "User PLA configuration data",
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/Pla"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Pla"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Invalid account"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            },
            "delete": {
                "tags": [
                    "user"
                ],
                "summary": "Disable PLA for an account",
                "description": "Disable PLA",
                "operationId": "user-pla-delete",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "ID of the account",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success"
                    },
                    "204": {
                        "description": "Nothing to do"
                    },
                    "404": {
                        "description": "Not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Account not found or PLA not set"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/user/parent/{id}": {
            "put": {
                "tags": [
                    "user"
                ],
                "summary": "Change account type and/or parent",
                "description": "Change account type and/or the parent account. Only some combinations are permitted. Privileged accounts only can perform the action.",
                "operationId": "user-parent-put",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "ID of the account to change",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "description": "User data",
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/UserParent"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Success"
                    },
                    "204": {
                        "description": "Not needed - no change."
                    },
                    "400": {
                        "description": "Bad request",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Invalid account type"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Not permitted to access",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/users": {
            "get": {
                "tags": [
                    "users"
                ],
                "summary": "Get list of users",
                "description": "Get a list of users according to the conditions",
                "operationId": "users-list",
                "parameters": [
                    {
                        "name": "userId",
                        "in": "query",
                        "description": "List of comma-separated user IDs to query",
                        "required": false,
                        "style": "form",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "items": {
                                "type": "integer"
                            }
                        }
                    },
                    {
                        "name": "parentId",
                        "in": "query",
                        "description": "List of comma-separated parent IDs whose children to fetch",
                        "required": false,
                        "style": "form",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "items": {
                                "type": "integer"
                            }
                        }
                    },
                    {
                        "name": "email",
                        "in": "query",
                        "description": "List of comma-separated email addresses",
                        "required": false,
                        "style": "form",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    },
                    {
                        "name": "type",
                        "in": "query",
                        "description": "List of comma-separated allowed account types",
                        "required": false,
                        "style": "form",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    },
                    {
                        "name": "samlId",
                        "in": "query",
                        "description": "List of comma-separated SAML IDs",
                        "required": false,
                        "style": "form",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "items": {
                                "type": "integer"
                            }
                        }
                    },
                    {
                        "name": "status",
                        "in": "query",
                        "description": "List of comma-separated allowed account states",
                        "required": false,
                        "style": "form",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "items": {
                                "type": "integer"
                            }
                        }
                    },
                    {
                        "name": "status_not",
                        "in": "query",
                        "description": "List of comma-separated excluded account states",
                        "required": false,
                        "style": "form",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "items": {
                                "type": "integer"
                            }
                        }
                    },
                    {
                        "name": "offset",
                        "in": "query",
                        "description": "Result pagination offset",
                        "required": false,
                        "style": "form",
                        "explode": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Result pagination limit",
                        "required": false,
                        "style": "form",
                        "explode": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "orderBy",
                        "in": "query",
                        "description": "The column to order by",
                        "required": false,
                        "style": "form",
                        "explode": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "orderDirection",
                        "in": "query",
                        "description": "Order direction: 'ASC' or 'DESC'",
                        "required": false,
                        "style": "form",
                        "explode": false,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/User"
                                    }
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Access forbidden",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "No result found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Not found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/users/{parentId}/child-accounts": {
            "get": {
                "tags": [
                    "users"
                ],
                "summary": "Get list of all child accounts",
                "description": "Get a list of all child accounts for the given parent user ID",
                "operationId": "users-child-accounts",
                "parameters": [
                    {
                        "name": "parentId",
                        "in": "path",
                        "description": "The parent user ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/User"
                                    }
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Access forbidden",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "No result found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Not found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/users/{parentId}/resold-accounts": {
            "get": {
                "tags": [
                    "users"
                ],
                "summary": "Get list of resold accounts",
                "description": "Get a list of child accounts of type 'resold' for the given parent user ID",
                "operationId": "users-resold-accounts",
                "parameters": [
                    {
                        "name": "parentId",
                        "in": "path",
                        "description": "The parent user ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/User"
                                    }
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Access forbidden",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Forbidden"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "No result found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Not found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "ApiTokenNotFound": {
                "properties": {
                    "status": {
                        "type": "string",
                        "example": "Not Found"
                    },
                    "message": {
                        "type": "string",
                        "example": "Not found"
                    }
                },
                "type": "object"
            },
            "ApiToken": {
                "properties": {
                    "id": {
                        "type": "integer",
                        "example": 1
                    },
                    "name": {
                        "type": "string",
                        "example": "Token name"
                    },
                    "valid_until": {
                        "type": "string",
                        "format": "date-time",
                        "example": "2020-01-08T11:05:21+01:00",
                        "nullable": true
                    },
                    "created": {
                        "type": "string",
                        "format": "date-time",
                        "example": "2020-01-01T11:05:21+01:00"
                    }
                },
                "type": "object"
            },
            "ContactAuth": {
                "required": [
                    "type"
                ],
                "properties": {
                    "type": {
                        "description": "The supported authentication method.",
                        "type": "string",
                        "enum": [
                            "basic",
                            "bearer"
                        ]
                    },
                    "user": {
                        "description": "User name if the authentication type requires it",
                        "type": "string",
                        "example": "me@example.com",
                        "nullable": true
                    },
                    "secret": {
                        "description": "The authentication secret or token. This value is not sent in GET requests, it can only be created or updated.",
                        "type": "string",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "ContactCatalogue": {
                "required": [
                    "folders",
                    "contacts"
                ],
                "properties": {
                    "folders": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/ResourceGroupItemWithPermission"
                        }
                    },
                    "contacts": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/ContactItem"
                        }
                    }
                },
                "type": "object"
            },
            "ContactItem": {
                "required": [
                    "id",
                    "name",
                    "type",
                    "status",
                    "default"
                ],
                "properties": {
                    "id": {
                        "type": "integer",
                        "format": "int64",
                        "example": 1
                    },
                    "name": {
                        "type": "string",
                        "example": "Contact name"
                    },
                    "type": {
                        "description": "Group contacts are containers for standard contacts - members.",
                        "type": "string",
                        "enum": [
                            "email",
                            "sms",
                            "phone",
                            "action",
                            "rss",
                            "group"
                        ]
                    },
                    "address": {
                        "description": "Not used for group contact type",
                        "type": "string",
                        "example": "me@example.com"
                    },
                    "status": {
                        "description": "0=invalid,1=unconfirmed,2=active,3=blocked,4=inactive",
                        "type": "integer",
                        "enum": [
                            0,
                            1,
                            2,
                            3,
                            4
                        ],
                        "example": 2
                    },
                    "default": {
                        "type": "boolean"
                    },
                    "ownerId": {
                        "type": "integer",
                        "example": 6
                    },
                    "folderId": {
                        "type": "integer",
                        "example": null,
                        "nullable": true
                    },
                    "workingFrom": {
                        "description": "Time HH:ss in contact's time zone; workingFrom and workingTo represent time interval when the contact can be alerted.",
                        "type": "string",
                        "example": "00:00"
                    },
                    "workingTo": {
                        "description": "Time HH:ss in contact's time zone; workingFrom and workingTo represent time interval when the contact can be alerted.",
                        "type": "string",
                        "example": "23:59"
                    },
                    "workingDays": {
                        "description": "Days when the contact can be used for alerting. 0 = Monday ... 6 = Sunday",
                        "type": "array",
                        "items": {
                            "type": "integer"
                        },
                        "example": [
                            0,
                            1,
                            2,
                            3,
                            4,
                            5,
                            6
                        ]
                    },
                    "timezone": {
                        "description": "This time zone is used both for date formating in alert messages and for the contact's working hours (workingFrom, workingTo). If empty the time zone of the account is assumed.",
                        "type": "string",
                        "example": "America/Los_Angeles",
                        "nullable": true
                    },
                    "members": {
                        "description": "For contact groups it contains list of members. For all but contact groups it contains list of groups this contact is member of.",
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/ContactGroupMemberItem"
                        }
                    },
                    "auth": {
                        "description": "Authentication details. Authentication can be added for the action url contact type only.",
                        "oneOf": [
                            {
                                "$ref": "#/components/schemas/ContactAuth"
                            },
                            {
                                "type": "object",
                                "nullable": true
                            }
                        ]
                    },
                    "specification": {
                        "description": "Special flags specific for the contact type. Currently, only action contact type supports specifications.\n               Json changes the content type for the action url to send message as a json instead of standard application/x-www-form-urlencoded.\n               gchat changes both content type and message form to send message to a Google chat webhook.",
                        "type": "string",
                        "enum": [
                            "json",
                            "gchat"
                        ],
                        "example": null,
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "ContactItemCreate": {
                "required": [
                    "name",
                    "type",
                    "address"
                ],
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/ContactItemUpdate"
                    },
                    {
                        "properties": {
                            "type": {
                                "type": "string",
                                "enum": [
                                    "email",
                                    "sms",
                                    "phone",
                                    "action",
                                    "rss",
                                    "group"
                                ]
                            }
                        }
                    }
                ]
            },
            "ContactItemUpdate": {
                "properties": {
                    "name": {
                        "type": "string",
                        "example": "Contact name",
                        "nullable": true
                    },
                    "address": {
                        "description": "Address of the contact. The scheme depends on the contact type.",
                        "type": "string",
                        "example": "me@example.com",
                        "nullable": true
                    },
                    "default": {
                        "description": "Is this contact the default account contact? Only one contact can be default.",
                        "type": "boolean",
                        "nullable": true
                    },
                    "folderId": {
                        "description": "ID of the folder this contact should be assigned to",
                        "type": "integer",
                        "example": null,
                        "nullable": true
                    },
                    "workingFrom": {
                        "description": "Time HH:ss in contact's time zone; workingFrom and workingTo represent time interval when the contact can be alerted. Do not use for contact groups.",
                        "type": "string",
                        "example": "00:00"
                    },
                    "workingTo": {
                        "description": "Time HH:ss in contact's time zone; workingFrom and workingTo represent time interval when the contact can be alerted. Do not use for contact groups.",
                        "type": "string",
                        "example": "23:59",
                        "nullable": true
                    },
                    "workingDays": {
                        "description": "Days when the contact can be alerted. Do not use for contact groups.",
                        "type": "array",
                        "items": {
                            "type": "integer"
                        },
                        "example": [
                            0,
                            1,
                            2,
                            3,
                            4,
                            5,
                            6
                        ],
                        "nullable": true
                    },
                    "timezone": {
                        "description": "This time zone is used both for date formating in alert messages and for the contact's working hours (workingFrom, workingTo). Set the time zone only if you want another TZ for this particular contact, the time zone of the account is assumed by default. For updating use null to reset TZ, omit completely to keep the current value. Do not use for contact groups.",
                        "type": "string",
                        "example": "America/Los_Angeles",
                        "nullable": true
                    },
                    "members": {
                        "description": "For all contact types but group this parameter must be empty. For contact groups it is required and must contain list of member contact IDs.",
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/ContactGroupMemberCreate"
                        },
                        "nullable": true
                    },
                    "auth": {
                        "description": "Authentication details. Authentication can be added for the action url contact type only.",
                        "oneOf": [
                            {
                                "$ref": "#/components/schemas/ContactAuth"
                            },
                            {
                                "type": "object",
                                "nullable": true
                            }
                        ]
                    },
                    "specification": {
                        "description": "Special flags specific for the contact type. Currently, only action contact type supports specifications.\n               Json changes the content type for the action url to send message as a json instead of standard application/x-www-form-urlencoded.\n               gchat changes both content type and message form to send message to a Google chat webhook.",
                        "type": "string",
                        "enum": [
                            "json",
                            "gchat"
                        ],
                        "example": null,
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "ContactGroupMemberItem": {
                "required": [
                    "contactId",
                    "groupId",
                    "alertAfter"
                ],
                "properties": {
                    "contactId": {
                        "description": "ID of the contact (member of the group)",
                        "type": "integer",
                        "format": "int64",
                        "example": 1
                    },
                    "groupId": {
                        "description": "ID of the group (contact of type group) the contact is member of",
                        "type": "integer",
                        "format": "int64",
                        "example": 1
                    },
                    "alertAfter": {
                        "description": "Send alert after (alertAfter-1) errors. 0 means alert immediately (after 1 error), 1 after 2 errors, etc.",
                        "type": "integer",
                        "enum": [
                            0,
                            1,
                            2,
                            3,
                            4
                        ],
                        "example": 1
                    }
                },
                "type": "object"
            },
            "ContactGroupMemberCreate": {
                "required": [
                    "contactId",
                    "alertAfter"
                ],
                "properties": {
                    "contactId": {
                        "description": "ID of the contact (member of the group)",
                        "type": "integer",
                        "format": "int64",
                        "example": 1
                    },
                    "alertAfter": {
                        "description": "Send alert after (alertAfter-1) errors. 0 means alert immediately (after 1 error), 1 after 2 errors, etc.",
                        "type": "integer",
                        "enum": [
                            0,
                            1,
                            2,
                            3,
                            4
                        ],
                        "example": 1
                    }
                },
                "type": "object"
            },
            "MaintenanceCatalogue": {
                "required": [
                    "folders",
                    "maintenances"
                ],
                "properties": {
                    "folders": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/ResourceGroupItemWithPermission"
                        }
                    },
                    "maintenances": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/MaintenanceItem"
                        }
                    }
                },
                "type": "object"
            },
            "MaintenanceItem": {
                "required": [
                    "id",
                    "name",
                    "timezone",
                    "ruleCount"
                ],
                "properties": {
                    "id": {
                        "type": "integer",
                        "example": 1
                    },
                    "name": {
                        "type": "string",
                        "example": "My Maintenance Window"
                    },
                    "timezone": {
                        "type": "string",
                        "example": "GMT"
                    },
                    "ruleCount": {
                        "type": "integer",
                        "example": 5
                    },
                    "description": {
                        "type": "string",
                        "example": "Maintenance window description"
                    },
                    "persistent": {
                        "type": "boolean"
                    },
                    "windows": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/MaintenanceWindowItem"
                        }
                    },
                    "permission": {
                        "$ref": "#/components/schemas/PermissionItem"
                    },
                    "ownerId": {
                        "type": "integer",
                        "example": 1
                    },
                    "folderId": {
                        "type": "integer",
                        "example": 5,
                        "nullable": true
                    },
                    "monitorIds": {
                        "type": "array",
                        "items": {
                            "type": "integer"
                        },
                        "example": [
                            5,
                            6
                        ]
                    },
                    "immediateForRuleId": {
                        "type": "integer",
                        "example": 3,
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "MaintenanceItemCreate": {
                "properties": {
                    "name": {
                        "type": "string",
                        "example": "My Maintenance Window"
                    },
                    "timezone": {
                        "type": "string",
                        "example": "GMT"
                    },
                    "description": {
                        "type": "string",
                        "example": "Maintenance window description"
                    },
                    "persistent": {
                        "type": "boolean",
                        "example": false
                    },
                    "windows": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/WindowItemCreate"
                        }
                    },
                    "folderId": {
                        "type": "integer",
                        "example": 5,
                        "nullable": true
                    },
                    "monitorIds": {
                        "type": "array",
                        "items": {
                            "type": "integer"
                        },
                        "example": [
                            1,
                            6,
                            8
                        ]
                    }
                },
                "type": "object"
            },
            "MaintenanceItemImmediateCreate": {
                "required": [
                    "duration",
                    "monitorIds"
                ],
                "properties": {
                    "from": {
                        "description": "Start of the maintenance window, current time if empty. Format: ISO 8601 date and time with or without timezone. Current user's timezone is used by default.",
                        "type": "string",
                        "format": "date-time",
                        "example": "2021-12-01 01:00:00+00",
                        "nullable": true
                    },
                    "duration": {
                        "description": "Duration of the immediate maintenance window, format [H][H]H:MM",
                        "type": "string",
                        "example": "1:30"
                    },
                    "monitorIds": {
                        "description": "Ids of monitors this maintenance should be assigned to. You need update permission for these monitors",
                        "type": "array",
                        "items": {
                            "type": "integer"
                        },
                        "example": [
                            1,
                            6,
                            8
                        ]
                    }
                },
                "type": "object"
            },
            "MaintenanceWindowItem": {
                "required": [
                    "type",
                    "status",
                    "from"
                ],
                "properties": {
                    "id": {
                        "type": "integer",
                        "example": 5,
                        "nullable": true
                    },
                    "type": {
                        "type": "string",
                        "enum": [
                            "fixed",
                            "daily",
                            "weekly",
                            "monthly"
                        ]
                    },
                    "status": {
                        "type": "string",
                        "enum": [
                            "active",
                            "waiting",
                            "passed"
                        ]
                    },
                    "from": {
                        "type": "string",
                        "format": "date-time",
                        "example": "2020-02-02T00:00:00"
                    },
                    "to": {
                        "type": "string",
                        "format": "date-time",
                        "example": "2025-05-05T23:59:59"
                    },
                    "effectiveTo": {
                        "type": "string",
                        "format": "date-time",
                        "example": "2025-05-05T23:59:59"
                    },
                    "repeat": {
                        "description": "For repeating time windows means repeat every N (days, weeks, months).",
                        "type": "integer",
                        "example": 1,
                        "nullable": true
                    },
                    "dow": {
                        "description": "For weekly recurring time window: 0 - Monday, 6 - Sunday",
                        "type": "array",
                        "items": {
                            "type": "integer"
                        },
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "WindowItemCreate": {
                "properties": {
                    "type": {
                        "description": "This parameter is always required",
                        "type": "string",
                        "enum": [
                            "fixed",
                            "daily",
                            "weekly",
                            "montly"
                        ]
                    },
                    "from": {
                        "description": "This parameter is always required. The time can either be specified without the time zone or with timezone. In the first case, the maintenance window TZ is used, in the latter case the time zone is respected but translated to the TZ of the maintenance window.",
                        "type": "string",
                        "format": "date-time",
                        "example": "2020-01-01T00:00:00"
                    },
                    "to": {
                        "description": "End time of this window applicability. Required for these types: fixed",
                        "type": "string",
                        "format": "date-time",
                        "example": "2020-12-31T23:59:59"
                    },
                    "repeat": {
                        "description": "For repeating time windows means repeat every N (days, weeks, months). Required for all but fixed type.",
                        "type": "integer",
                        "example": 1,
                        "nullable": true
                    },
                    "endTime": {
                        "description": "The end time for repeatable time windows. This value is in the same TZ as the from field (either explicit or inherited from the maintenance window it belongs to). Required for these types: daily, weekly, monthly.",
                        "type": "string",
                        "example": "00:10",
                        "nullable": true
                    },
                    "dow": {
                        "description": "For weekly recurring time window applicable days: 0 - Monday, 6 - Sunday.",
                        "type": "array",
                        "items": {
                            "type": "integer"
                        },
                        "example": [
                            2,
                            4,
                            6
                        ],
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "MessageItem": {
                "required": [
                    "id",
                    "entered",
                    "type",
                    "status"
                ],
                "properties": {
                    "id": {
                        "type": "integer",
                        "format": "int64",
                        "example": 1
                    },
                    "entered": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "sent": {
                        "type": "string",
                        "format": "date-time",
                        "nullable": true
                    },
                    "monitorId": {
                        "description": "Monitor ID",
                        "type": "integer",
                        "nullable": true
                    },
                    "contactId": {
                        "description": "Contact ID",
                        "type": "integer",
                        "nullable": true
                    },
                    "type": {
                        "description": "Contact type",
                        "type": "string",
                        "enum": [
                            "email",
                            "sms",
                            "phone",
                            "action",
                            "rss"
                        ]
                    },
                    "address": {
                        "description": "Monitor ID",
                        "type": "string"
                    },
                    "status": {
                        "description": "Message delivery status",
                        "type": "string",
                        "enum": [
                            "deleted",
                            "queued",
                            "gateway",
                            "provider",
                            "device",
                            "accepted",
                            "queued-no-fallback",
                            "undeliverable",
                            "suppressed"
                        ]
                    },
                    "eventId": {
                        "description": "Monitor log event uuid",
                        "type": "string",
                        "nullable": true
                    },
                    "message": {
                        "description": "Text of the message",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "MonitorsPage": {
                "description": "This schema is used to return a page from the list of monitors with additional pagination information",
                "properties": {
                    "monitors": {
                        "description": "List of monitors.",
                        "type": "array",
                        "items": {
                            "oneOf": [
                                {
                                    "$ref": "#/components/schemas/Browser"
                                },
                                {
                                    "$ref": "#/components/schemas/Connect"
                                },
                                {
                                    "$ref": "#/components/schemas/Dns"
                                },
                                {
                                    "$ref": "#/components/schemas/Dnsa"
                                },
                                {
                                    "$ref": "#/components/schemas/Dnsns"
                                },
                                {
                                    "$ref": "#/components/schemas/Domain"
                                },
                                {
                                    "$ref": "#/components/schemas/Ftp"
                                },
                                {
                                    "$ref": "#/components/schemas/Ftps"
                                },
                                {
                                    "$ref": "#/components/schemas/Http"
                                },
                                {
                                    "$ref": "#/components/schemas/Https"
                                },
                                {
                                    "$ref": "#/components/schemas/Imap"
                                },
                                {
                                    "$ref": "#/components/schemas/Ldap"
                                },
                                {
                                    "$ref": "#/components/schemas/Ping"
                                },
                                {
                                    "$ref": "#/components/schemas/Plugin"
                                },
                                {
                                    "$ref": "#/components/schemas/Pop3"
                                },
                                {
                                    "$ref": "#/components/schemas/Scp"
                                },
                                {
                                    "$ref": "#/components/schemas/Script"
                                },
                                {
                                    "$ref": "#/components/schemas/Sftp"
                                },
                                {
                                    "$ref": "#/components/schemas/Sip"
                                },
                                {
                                    "$ref": "#/components/schemas/Smtp"
                                },
                                {
                                    "$ref": "#/components/schemas/Telnet"
                                },
                                {
                                    "$ref": "#/components/schemas/Webdriver"
                                }
                            ]
                        }
                    },
                    "numMonitors": {
                        "description": "Number of monitors returned in the monitors array.",
                        "type": "integer"
                    },
                    "numFolders": {
                        "description": "Number of unique folders returned the returned monitors belong to. These folders are also attached in the folders array.",
                        "type": "integer"
                    },
                    "numNotInFolder": {
                        "description": "Number of monitors out of folder in the response",
                        "type": "integer"
                    },
                    "totalMonitors": {
                        "description": "Total number of monitors that would be returned if no limit/offset restriction is applied",
                        "type": "integer"
                    },
                    "totalFolders": {
                        "description": "Total number of folders that would be returned if no limit/offset restriction is applied",
                        "type": "integer"
                    },
                    "totalNotInFolder": {
                        "description": "Total number of monitors out of folder if no limit/offset restriction is applied",
                        "type": "integer"
                    },
                    "folders": {
                        "$ref": "#/components/schemas/FolderItem"
                    }
                },
                "type": "object"
            },
            "OauthClientCredentialsNotFound": {
                "properties": {
                    "status": {
                        "type": "string",
                        "example": "Not Found"
                    },
                    "message": {
                        "type": "string",
                        "example": "Not found"
                    }
                },
                "type": "object"
            },
            "OauthClientCredentialsItem": {
                "properties": {
                    "id": {
                        "type": "integer",
                        "example": 1
                    },
                    "name": {
                        "type": "string",
                        "example": "My Credentials"
                    },
                    "client_id": {
                        "type": "string",
                        "example": "Y0AOiWAlCcUTP9xoi8NERy95Fy0ZQjKyZ6bVcQYs0Aw="
                    },
                    "valid_until": {
                        "type": "string",
                        "example": "2027-01-01T00:00:00+01:00",
                        "nullable": true
                    },
                    "access_token_validity": {
                        "type": "integer",
                        "example": 3600,
                        "nullable": true
                    },
                    "refresh_token_validity": {
                        "type": "integer",
                        "example": 604800,
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "OauthToken": {
                "properties": {
                    "id": {
                        "type": "integer",
                        "example": 1
                    },
                    "clientId": {
                        "description": "Client ID this token is assigned to.",
                        "type": "integer",
                        "example": 10
                    },
                    "expires": {
                        "description": "Date and time when the token expires",
                        "type": "string",
                        "example": "2022-12-26T00:00:00+00"
                    }
                },
                "type": "object"
            },
            "PermissionItem": {
                "required": [
                    "type",
                    "level"
                ],
                "properties": {
                    "type": {
                        "type": "string",
                        "example": "resource-group-contact"
                    },
                    "level": {
                        "type": "string",
                        "example": "create-delete"
                    }
                },
                "type": "object"
            },
            "UserAssign": {
                "required": [
                    "userId"
                ],
                "properties": {
                    "userId": {
                        "type": "integer",
                        "example": 5
                    }
                },
                "type": "object"
            },
            "ResourceGroupItem": {
                "properties": {
                    "id": {
                        "type": "integer",
                        "example": 1
                    },
                    "name": {
                        "type": "string",
                        "example": "Alert contact dir"
                    },
                    "ownerId": {
                        "type": "integer",
                        "example": 1
                    }
                },
                "type": "object"
            },
            "ResourceGroupItemWithPermission": {
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/ResourceGroupItem"
                    },
                    {
                        "properties": {
                            "resourceCount": {
                                "type": "integer",
                                "example": 5
                            },
                            "permission": {
                                "$ref": "#/components/schemas/PermissionItem"
                            }
                        }
                    }
                ]
            },
            "BulkResponseMetadata": {
                "properties": {
                    "success": {
                        "description": "A bulk response containing multiple sub-responses for bulk operations",
                        "type": "integer",
                        "example": 10
                    },
                    "redirect": {
                        "type": "integer",
                        "example": 0
                    },
                    "client_errors": {
                        "type": "integer",
                        "example": 2
                    },
                    "server_errors": {
                        "type": "integer",
                        "example": 0
                    }
                },
                "type": "object"
            },
            "BulkResponse": {
                "properties": {
                    "metadata": {
                        "$ref": "#/components/schemas/BulkResponseMetadata"
                    },
                    "responses": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/BulkResponsePart"
                        }
                    }
                },
                "type": "object"
            },
            "BulkResponsePart": {
                "description": "One part of a multi-part response\n\nWhen performing bulk operations, each item has its own response\nThis class represents response for one item\n\nIt is merged in BulkResponse",
                "required": [
                    "id",
                    "status"
                ],
                "properties": {
                    "id": {
                        "description": "ID of the entity this response is connected to (user ID, folder ID...)",
                        "example": 123456,
                        "oneOf": [
                            {
                                "type": "string"
                            },
                            {
                                "type": "integer"
                            }
                        ]
                    },
                    "status": {
                        "description": "This property is renamed in BulkResponse::getCompleteResponse()",
                        "type": "integer",
                        "example": 200
                    },
                    "resource": {
                        "description": "This property is renamed in BulkResponse::getCompleteResponse()",
                        "type": "object",
                        "example": {
                            "foo": "resource data"
                        }
                    },
                    "message": {
                        "description": "The subresponse HTTP message",
                        "type": "string",
                        "example": "OK",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "FolderItem": {
                "required": [
                    "id",
                    "monitorCount",
                    "name",
                    "isActive",
                    "notifyOn"
                ],
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/FolderRequestItem"
                    },
                    {
                        "properties": {
                            "id": {
                                "type": "integer",
                                "format": "int64",
                                "example": 1
                            },
                            "monitorCount": {
                                "type": "integer",
                                "example": 1
                            },
                            "permission": {
                                "$ref": "#/components/schemas/PermissionItem"
                            },
                            "specificPermission": {
                                "$ref": "#/components/schemas/PermissionItem"
                            },
                            "ownerId": {
                                "type": "integer",
                                "example": 1
                            }
                        }
                    }
                ]
            },
            "FolderRequestItem": {
                "required": [
                    "name",
                    "isActive",
                    "notifyOn"
                ],
                "properties": {
                    "name": {
                        "type": "string",
                        "example": "Folder name"
                    },
                    "isActive": {
                        "type": "boolean"
                    },
                    "notifyOn": {
                        "type": "boolean"
                    }
                },
                "type": "object"
            },
            "Forbidden": {
                "properties": {
                    "status": {
                        "type": "string",
                        "example": "Forbidden"
                    },
                    "message": {
                        "type": "string",
                        "example": "Access to the resource was denied."
                    }
                },
                "type": "object"
            },
            "SettingsItem": {
                "required": [
                    "name",
                    "value"
                ],
                "properties": {
                    "name": {
                        "type": "string",
                        "example": "accessible"
                    },
                    "type": {
                        "type": "string",
                        "default": "bool",
                        "enum": [
                            "bool",
                            "integer",
                            "string",
                            "secret",
                            "integers"
                        ]
                    },
                    "value": {
                        "type": "array",
                        "items": {},
                        "example": "true",
                        "oneOf": [
                            {
                                "type": "string"
                            },
                            {
                                "type": "integer"
                            },
                            {
                                "type": "boolean"
                            },
                            {
                                "type": "array",
                                "items": {
                                    "type": "integer"
                                }
                            }
                        ]
                    }
                },
                "type": "object"
            },
            "StationAgent": {
                "properties": {
                    "type": {
                        "description": "Monitor type",
                        "type": "string",
                        "example": "https"
                    },
                    "agent": {
                        "description": "Agent name",
                        "type": "string",
                        "example": "ccagent"
                    }
                },
                "type": "object"
            },
            "StationAgents": {
                "properties": {
                    "ccagent": {
                        "description": "Number of ccagents",
                        "type": "integer",
                        "example": "10",
                        "nullable": true
                    },
                    "cbot": {
                        "description": "Number of cbot agents",
                        "type": "integer",
                        "example": "10",
                        "nullable": true
                    },
                    "fpm": {
                        "description": "Number of full-page agents",
                        "type": "integer",
                        "example": "2",
                        "nullable": true
                    },
                    "jmeter2": {
                        "description": "Number of jmeter2 agents",
                        "type": "integer",
                        "example": "2",
                        "nullable": true
                    },
                    "jmeter4": {
                        "description": "Number of jmeter4 agents",
                        "type": "integer",
                        "example": "2",
                        "nullable": true
                    },
                    "jmeter5": {
                        "description": "Number of jmeter5 agents",
                        "type": "integer",
                        "example": "2",
                        "nullable": true
                    },
                    "webdriver": {
                        "description": "Number of webdriver agents",
                        "type": "integer",
                        "example": "2",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "StationInstallation": {
                "properties": {
                    "secret": {
                        "description": "A secret used to encode system status and statistics",
                        "type": "string",
                        "example": "6b046d76e74a2182a446add16f2f3dedec512eb05b253bd1bbf0ec311d75ba53"
                    },
                    "token": {
                        "description": "New installation token - installer reads this to finish installation",
                        "type": "string",
                        "example": "abc-de-5e7"
                    },
                    "tunnelId": {
                        "description": "Tunnel client ID (OPMS only).",
                        "type": "string",
                        "example": "cfcadb60-662f-40eb-8458-6c185adc134b",
                        "nullable": true
                    },
                    "installerMetadata": {
                        "description": "Metadata for the installer (json encoded).",
                        "type": "string"
                    },
                    "engine": {
                        "description": "Engine used for orchestration - kubernetes, docker-composer, etc.",
                        "type": "string",
                        "example": "kubernetes"
                    },
                    "agents": {
                        "description": "Configured number of agents. If null, use default values.",
                        "oneOf": [
                            {
                                "$ref": "#/components/schemas/StationAgents"
                            },
                            {
                                "type": "object",
                                "nullable": true
                            }
                        ]
                    }
                },
                "type": "object"
            },
            "StationInstallationReport": {
                "properties": {
                    "success": {
                        "description": "True if the installation finished succesfully",
                        "type": "boolean"
                    },
                    "activate": {
                        "description": "True if the station is production ready and should be activated",
                        "type": "boolean"
                    },
                    "statistics": {
                        "description": "True if system statistics are collected",
                        "type": "boolean"
                    },
                    "osVersion": {
                        "description": "The version of the OS",
                        "type": "string",
                        "example": "CentOS 8"
                    },
                    "version": {
                        "description": "The version of the ASM station installed",
                        "type": "string",
                        "example": "10.4.0"
                    },
                    "message": {
                        "description": "Optional message written to audit log to report some installation info",
                        "type": "string",
                        "nullable": true
                    },
                    "agents": {
                        "oneOf": [
                            {
                                "$ref": "#/components/schemas/StationAgents"
                            },
                            {
                                "type": "object",
                                "nullable": true
                            }
                        ]
                    }
                },
                "type": "object"
            },
            "StationItem": {
                "properties": {
                    "id": {
                        "type": "integer",
                        "example": 1
                    },
                    "alias": {
                        "description": "The unique host name of this monitoring station",
                        "type": "string",
                        "example": "hubud01.example.com"
                    },
                    "locationId": {
                        "description": "The location ID this station belongs to",
                        "type": "integer",
                        "example": "1"
                    },
                    "isPublic": {
                        "description": "True if the monitoring station is public.",
                        "type": "boolean"
                    },
                    "ownerId": {
                        "description": "ID of the monitoring station owner. Public stations have no owners.",
                        "type": "integer",
                        "example": 6,
                        "nullable": true
                    },
                    "locode": {
                        "description": "The short code assigned during installation - deprecated",
                        "type": "string",
                        "example": "hubud01"
                    },
                    "status": {
                        "description": "Status of the monitoring station: 1 - planned, 2 - active, 3 - in maintenance, 4 - blocked, 5 - installation in progress, 6 = broken - installation failed.",
                        "type": "integer",
                        "enum": [
                            1,
                            2,
                            3,
                            4,
                            3,
                            5,
                            6
                        ]
                    },
                    "host": {
                        "description": "The IP address of this monitoring station",
                        "type": "string",
                        "example": "1.2.3.4",
                        "nullable": true
                    },
                    "city": {
                        "type": "string",
                        "example": "Madrid"
                    },
                    "latitude": {
                        "type": "number",
                        "format": "float",
                        "example": 40.400002
                    },
                    "longitude": {
                        "type": "number",
                        "format": "float",
                        "example": -3.683
                    },
                    "weight": {
                        "description": "Weight of the station in the location.",
                        "type": "integer",
                        "example": "1"
                    },
                    "osVersion": {
                        "description": "The version of the OS",
                        "type": "string",
                        "example": "CentOS 8"
                    },
                    "version": {
                        "description": "The version of the ASM station installed",
                        "type": "string",
                        "example": "10.4.0"
                    },
                    "description": {
                        "description": "Custom text description.",
                        "type": "string"
                    },
                    "engine": {
                        "description": "Engine used for orchestration - kubernetes, docker-composer, etc.",
                        "type": "string",
                        "example": "kubernetes"
                    },
                    "useCcagent": {
                        "description": "Use ccagent instead of cbot",
                        "type": "boolean",
                        "example": "false"
                    }
                },
                "type": "object"
            },
            "StationItemCreate": {
                "properties": {
                    "alias": {
                        "description": "The host name of this monitoring station",
                        "type": "string",
                        "example": "hubud01.example.com"
                    },
                    "locationId": {
                        "description": "The location ID this station belongs to",
                        "type": "integer",
                        "example": "1"
                    },
                    "status": {
                        "description": "Status of the monitoring station: 1 - planned, 2 - active, 3 - in maintenance, 4 - blocked.",
                        "type": "integer",
                        "enum": [
                            1,
                            2,
                            3,
                            4,
                            3
                        ]
                    },
                    "host": {
                        "description": "The IP address of this monitoring station",
                        "type": "string",
                        "example": "1.2.3.4",
                        "nullable": true
                    },
                    "city": {
                        "type": "string",
                        "example": "Madrid"
                    },
                    "latitude": {
                        "type": "number",
                        "format": "float",
                        "example": 40.400002
                    },
                    "longitude": {
                        "type": "number",
                        "format": "float",
                        "example": -3.683
                    },
                    "weight": {
                        "description": "Weight of the station in the location.",
                        "type": "integer",
                        "example": "1"
                    },
                    "osVersion": {
                        "description": "The version of the OS",
                        "type": "string",
                        "example": "CentOS 8"
                    },
                    "version": {
                        "description": "The version of the ASM station installed",
                        "type": "string",
                        "example": "10.4.0"
                    },
                    "secret": {
                        "description": "This secret is used to encrypt station debug information (status, config, logs). If not provided, the debug information is not available.",
                        "type": "string"
                    },
                    "description": {
                        "description": "Custom text description.",
                        "type": "string"
                    },
                    "installerMetadata": {
                        "description": "Metadata for the installer (json encoded). Internal use only.",
                        "type": "string",
                        "example": "{'a':1}"
                    },
                    "engine": {
                        "description": "Engine used for orchestration - kubernetes, docker-composer, etc.",
                        "type": "string",
                        "example": "kubernetes"
                    },
                    "useCcagent": {
                        "description": "Use ccagent instead of cbot",
                        "type": "boolean",
                        "example": "false"
                    },
                    "agents": {
                        "oneOf": [
                            {
                                "$ref": "#/components/schemas/StationAgents"
                            },
                            {
                                "type": "object",
                                "nullable": true
                            }
                        ]
                    }
                },
                "type": "object"
            },
            "StationItemDetail": {
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/StationItem"
                    },
                    {
                        "properties": {
                            "tunnelId": {
                                "description": "Tunnel ID.",
                                "type": "string"
                            },
                            "token": {
                                "description": "Installation token - it is generated when monitoring station is created or updated or if you request one station details.",
                                "type": "string",
                                "example": "abc-de-5e7",
                                "nullable": true
                            },
                            "installerMetadata": {
                                "description": "Metadata for the installer (json encoded).",
                                "type": "string"
                            },
                            "agents": {
                                "oneOf": [
                                    {
                                        "$ref": "#/components/schemas/StationAgents"
                                    },
                                    {
                                        "type": "object",
                                        "nullable": true
                                    }
                                ]
                            }
                        }
                    }
                ]
            },
            "StationLatest": {
                "properties": {
                    "version": {
                        "description": "The current version of the station",
                        "type": "string",
                        "example": "2022.11"
                    },
                    "installer": {
                        "description": "The current version of the installer",
                        "type": "string",
                        "example": "2022.8"
                    }
                },
                "type": "object"
            },
            "TimezoneItem": {
                "properties": {
                    "name": {
                        "description": "The name of this timezone",
                        "type": "string",
                        "example": "Asia/Hong_Kong"
                    },
                    "offset": {
                        "description": "[+-]HH:mm offset to UTC",
                        "type": "string",
                        "example": "+08:00"
                    },
                    "hasDst": {
                        "description": "True if the timezone observes/observed DST for the year of the call",
                        "type": "boolean"
                    },
                    "isDst": {
                        "description": "True if the timezone is in DST at the time of the call",
                        "type": "boolean"
                    }
                },
                "type": "object"
            },
            "Pla": {
                "description": "PLA",
                "properties": {
                    "siteId": {
                        "description": "Enterprise site ID used to access support. This value can be configured by administrator only. To enable PLA this value is required.",
                        "type": "string"
                    },
                    "domainName": {
                        "description": "PLA domain name.",
                        "type": "string"
                    },
                    "chargebackId": {
                        "description": "This can be used by customer to identify their internal group or charge area for their internal use.",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "User": {
                "description": "Class User",
                "required": [
                    "id"
                ],
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/UserCreate"
                    },
                    {
                        "properties": {
                            "id": {
                                "type": "integer",
                                "example": 1
                            },
                            "lastseen": {
                                "description": "Date time of last login",
                                "type": "string",
                                "format": "date-time"
                            },
                            "status": {
                                "description": "Status (read only)\n1 ... unconfirmed\n2 ... active\n3 ... blocked\n4 ... unsubscribing\n5 ... on hold",
                                "type": "integer",
                                "example": 2
                            },
                            "roles": {
                                "description": "List of custom roles the user is member of (read only)",
                                "type": "array",
                                "items": {
                                    "$ref": "#/components/schemas/Role"
                                }
                            },
                            "locked": {
                                "description": "Is account locked?",
                                "type": "boolean",
                                "example": false
                            },
                            "canLoginAsParent": {
                                "description": "True/false if user can login as parent account (owner), null if not evaulated",
                                "type": "boolean",
                                "example": null,
                                "nullable": true
                            }
                        }
                    }
                ]
            },
            "UserCreate": {
                "description": "Class UserCreate",
                "required": [
                    "email",
                    "name"
                ],
                "properties": {
                    "email": {
                        "type": "string",
                        "maxLength": 80,
                        "example": "john.doe@example.com"
                    },
                    "name": {
                        "type": "string",
                        "maxLength": 60,
                        "example": "John Doe"
                    },
                    "company": {
                        "type": "string",
                        "maxLength": 60,
                        "example": "My Company Ltd."
                    },
                    "website": {
                        "type": "string",
                        "maxLength": 255,
                        "example": "https://www.example.com"
                    },
                    "address": {
                        "type": "string",
                        "maxLength": 60,
                        "example": "2584 Canis Heights Drive"
                    },
                    "city": {
                        "type": "string",
                        "maxLength": 40,
                        "example": "Los Angeles"
                    },
                    "zip": {
                        "type": "string",
                        "maxLength": 10,
                        "example": "90071"
                    },
                    "state": {
                        "type": "string",
                        "maxLength": 40,
                        "example": "California"
                    },
                    "country": {
                        "description": "ISO 3166-1 alpha-2 country code",
                        "type": "string",
                        "maxLength": 2,
                        "minLength": 2,
                        "example": "us"
                    },
                    "lang": {
                        "type": "string",
                        "example": "en"
                    },
                    "timezone": {
                        "type": "string",
                        "example": "America/Los_Angeles"
                    }
                },
                "type": "object"
            },
            "UserParent": {
                "description": "Class UserParent",
                "properties": {
                    "type": {
                        "type": "string",
                        "enum": [
                            "system",
                            "reseller",
                            "resold",
                            "user",
                            "helpdesk",
                            "subaccount",
                            "ops"
                        ]
                    },
                    "parent": {
                        "description": "New parent user ID or 0 if the account should not have a parent",
                        "type": "integer",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "EnrichedRole": {
                "required": [
                    "name",
                    "users",
                    "permissions"
                ],
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/Role"
                    },
                    {
                        "properties": {
                            "users": {
                                "description": "List of users assigned to this role",
                                "type": "array",
                                "items": {
                                    "$ref": "#/components/schemas/UserAssign"
                                }
                            },
                            "permissions": {
                                "type": "array",
                                "items": {
                                    "$ref": "#/components/schemas/Permission"
                                }
                            }
                        }
                    }
                ]
            },
            "Permission": {
                "description": "Class Permission",
                "required": [
                    "type",
                    "level",
                    "resource"
                ],
                "properties": {
                    "type": {
                        "type": "string",
                        "enum": [
                            "account-contacts",
                            "account-contact-groups",
                            "account-folders",
                            "account-maintenance-windows",
                            "account-maintenance-groups",
                            "account-monitors",
                            "contact",
                            "folder",
                            "maintenance",
                            "login",
                            "resource-group-contact",
                            "resource-group-maintenance",
                            "admin",
                            "user"
                        ]
                    },
                    "level": {
                        "type": "string",
                        "enum": [
                            "create-delete",
                            "update",
                            "view",
                            "view-log",
                            "allow"
                        ]
                    },
                    "resource": {
                        "type": "string",
                        "example": "5"
                    },
                    "description": {
                        "type": "string",
                        "example": "Permission description"
                    }
                },
                "type": "object"
            },
            "Role": {
                "required": [
                    "name"
                ],
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/RoleCreate"
                    },
                    {
                        "properties": {
                            "id": {
                                "description": "Unique role ID",
                                "type": "integer",
                                "example": 995
                            },
                            "name": {
                                "description": "Unique role name. Use role ID instead, this value is deprecated.",
                                "type": "string",
                                "example": "custom_123_995"
                            }
                        }
                    }
                ]
            },
            "RoleCreate": {
                "required": [
                    "description"
                ],
                "properties": {
                    "description": {
                        "type": "string",
                        "example": "My role description"
                    }
                },
                "type": "object"
            },
            "ReportCheckStepAssertion": {
                "description": "Class Assertion",
                "properties": {
                    "name": {
                        "type": "string"
                    },
                    "message": {
                        "type": "string"
                    },
                    "successful": {
                        "type": "boolean"
                    }
                },
                "type": "object"
            },
            "ReportCheck": {
                "description": "Class Check",
                "properties": {
                    "title": {
                        "type": "string",
                        "example": "Name"
                    },
                    "monitor": {
                        "$ref": "#/components/schemas/ReportCheckMonitor"
                    },
                    "opinions": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/ReportCheckOpinion"
                        }
                    },
                    "parameterGroups": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/ReportCheckOpinionParameterGroup"
                        }
                    },
                    "relevantLogs": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/ReportCheckLog"
                        }
                    },
                    "postMortems": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/ReportCheckPostMortem"
                        }
                    }
                },
                "type": "object"
            },
            "ReportCheckLog": {
                "description": "Class Log",
                "properties": {
                    "id": {
                        "type": "string"
                    },
                    "label": {
                        "type": "string"
                    },
                    "outputPresent": {
                        "type": "boolean"
                    },
                    "localStartTime": {
                        "type": "string"
                    },
                    "localStartTimeFull": {
                        "type": "string"
                    },
                    "description": {
                        "type": "string"
                    },
                    "code": {
                        "type": "integer"
                    },
                    "checkpointName": {
                        "type": "string"
                    },
                    "alertCount": {
                        "type": "integer"
                    },
                    "suppressedAlertCount": {
                        "type": "integer"
                    }
                },
                "type": "object"
            },
            "ReportCheckMetric": {
                "description": "Class Metric",
                "properties": {
                    "description": {
                        "type": "string"
                    },
                    "value": {
                        "type": "string"
                    },
                    "unit": {
                        "type": "string"
                    },
                    "accumulatedValue": {
                        "type": "string"
                    },
                    "accumulatedUnit": {
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "ReportCheckMonitor": {
                "description": "Class Monitor",
                "properties": {
                    "id": {
                        "type": "integer",
                        "example": 1
                    },
                    "name": {
                        "type": "string",
                        "example": "Name"
                    },
                    "type": {
                        "type": "string",
                        "example": "webdriver"
                    },
                    "host": {
                        "type": "string",
                        "example": "example.com"
                    },
                    "port": {
                        "type": "integer",
                        "example": "443"
                    },
                    "path": {
                        "type": "string",
                        "example": "/my-page"
                    },
                    "status": {
                        "type": "string",
                        "example": "active"
                    },
                    "checkInterval": {
                        "type": "string",
                        "example": "00:05:00"
                    },
                    "groupName": {
                        "type": "string",
                        "example": "My Folder"
                    }
                },
                "type": "object"
            },
            "ReportCheckOpinion": {
                "description": "Class Opinion",
                "properties": {
                    "errorMessage": {
                        "type": "string"
                    },
                    "errorCode": {
                        "type": "integer"
                    },
                    "checkpointName": {
                        "type": "string"
                    },
                    "startTime": {
                        "type": "string"
                    },
                    "targetIp": {
                        "type": "string"
                    },
                    "metrics": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/ReportCheckMetric"
                        }
                    },
                    "grandTotalTime": {
                        "type": "string"
                    },
                    "grandTotalTimeUnit": {
                        "type": "string"
                    },
                    "steps": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/ReportCheckStep"
                        }
                    },
                    "eventId": {
                        "type": "string"
                    },
                    "parentId": {
                        "type": "string"
                    },
                    "hasHar": {
                        "type": "boolean"
                    }
                },
                "type": "object"
            },
            "ReportCheckOpinionParameter": {
                "description": "Class Parameter",
                "properties": {
                    "name": {
                        "type": "string"
                    },
                    "description": {
                        "type": "string"
                    },
                    "value": {
                        "type": "string"
                    },
                    "unit": {
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "ReportCheckOpinionParameterGroup": {
                "description": "Class ParameterGroup",
                "properties": {
                    "name": {
                        "type": "string"
                    },
                    "parameters": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/ReportCheckOpinionParameter"
                        }
                    }
                },
                "type": "object"
            },
            "ReportCheckPostMortem": {
                "description": "Class PostMortem",
                "properties": {
                    "id": {
                        "type": "string"
                    },
                    "type": {
                        "type": "string",
                        "enum": [
                            "dns",
                            "domain",
                            "trace",
                            "ping"
                        ]
                    },
                    "checkpointName": {
                        "type": "string"
                    },
                    "location": {
                        "type": "string"
                    },
                    "message": {
                        "type": "string"
                    },
                    "totalTime": {
                        "type": "string"
                    },
                    "status": {
                        "type": "string"
                    },
                    "parameterGroups": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/ReportCheckOpinionParameterGroup"
                        }
                    }
                },
                "type": "object"
            },
            "ReportCheckStep": {
                "description": "Class Step",
                "properties": {
                    "step": {
                        "type": "integer"
                    },
                    "transactions": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/ReportCheckStep"
                        }
                    },
                    "startTime": {
                        "type": "string"
                    },
                    "startTimeFull": {
                        "type": "string"
                    },
                    "label": {
                        "type": "string"
                    },
                    "url": {
                        "type": "string"
                    },
                    "httpCode": {
                        "type": "string"
                    },
                    "message": {
                        "type": "string"
                    },
                    "latency": {
                        "type": "string"
                    },
                    "time": {
                        "type": "string"
                    },
                    "downloadSize": {
                        "type": "string"
                    },
                    "assertions": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/ReportCheckStepAssertion"
                        }
                    }
                },
                "type": "object"
            },
            "Location": {
                "description": "Class Location",
                "required": [
                    "id",
                    "name",
                    "parent"
                ],
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/LocationDraft"
                    },
                    {
                        "properties": {
                            "id": {
                                "description": "Unique ID of the location.",
                                "type": "integer",
                                "example": 1
                            },
                            "parent": {
                                "description": "Parent location ID.",
                                "type": "integer",
                                "example": 2,
                                "nullable": true
                            },
                            "country": {
                                "description": "Iso code of the country this location belongs to or null.",
                                "type": "string",
                                "example": "us"
                            },
                            "isPrivate": {
                                "description": "If true, it is a private (on-premise) location. Otherwise it is a public one.",
                                "type": "boolean"
                            },
                            "canCreateLocations": {
                                "description": "Can the user create nested locations to this location?",
                                "type": "boolean"
                            },
                            "canCreateStations": {
                                "description": "Can the user create private monitoring stations in this location?",
                                "type": "boolean"
                            },
                            "region": {
                                "description": "Location region details",
                                "oneOf": [
                                    {
                                        "$ref": "#/components/schemas/Region"
                                    },
                                    {
                                        "type": "object",
                                        "nullable": true
                                    }
                                ]
                            }
                        }
                    }
                ]
            },
            "LocationDraft": {
                "description": "Class LocationDraft",
                "required": [
                    "name",
                    "parent"
                ],
                "properties": {
                    "name": {
                        "description": "Name of the location.",
                        "type": "string",
                        "example": "New York"
                    },
                    "parent": {
                        "description": "Parent location ID or country 2-char iso code.",
                        "type": "string",
                        "example": "5"
                    },
                    "latitude": {
                        "description": "Latitude of the location - position can be used to find the nearest location in scheduler.",
                        "type": "number",
                        "format": "float",
                        "example": 40.73061
                    },
                    "longitude": {
                        "description": "Longitude of the location - position can be used to find the nearest location in scheduler.",
                        "type": "number",
                        "format": "float",
                        "example": -73.935242
                    },
                    "weight": {
                        "description": "Weight is used to prefer or disfavor this group.",
                        "type": "integer",
                        "example": 1
                    }
                },
                "type": "object"
            },
            "Region": {
                "description": "Class Region",
                "properties": {
                    "id": {
                        "description": "ID of the region.",
                        "type": "integer",
                        "example": 1
                    },
                    "name": {
                        "description": "Name of the region.",
                        "type": "string",
                        "example": "us-east",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "AllowDenyTrait": {
                "description": "Add support for certificates to converters",
                "properties": {
                    "browserRestriction": {
                        "type": "string",
                        "default": "everywhere",
                        "enum": [
                            "own",
                            "everywhere",
                            "custom"
                        ]
                    },
                    "browserAllow": {
                        "description": "Comma-separated whitelisted domains. This will be an array in the future",
                        "type": "string"
                    },
                    "browserDeny": {
                        "description": "Comma-separated blacklisted domains. This will be an array in the future",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "UseCertificatesTrait": {
                "properties": {
                    "useClientCert": {
                        "type": "boolean",
                        "default": false
                    },
                    "useCaCert": {
                        "type": "boolean",
                        "default": false
                    },
                    "certificates": {
                        "oneOf": [
                            {
                                "$ref": "#/components/schemas/MonitorCertificates"
                            },
                            {
                                "type": "object",
                                "nullable": true
                            }
                        ]
                    }
                },
                "type": "object"
            },
            "EncryptionTrait": {
                "description": "Encryption-settable monitor",
                "properties": {
                    "cipherList": {
                        "type": "string",
                        "default": "",
                        "enum": [
                            "ALL",
                            "HIGH",
                            "MEDIUM",
                            ""
                        ]
                    },
                    "encryption": {
                        "description": "TODO: \"\" = negotiate? why nullable then? see in initializeEncryption",
                        "type": "string",
                        "default": "",
                        "enum": [
                            "tls",
                            "tlsv1.0",
                            "tlsv1.1",
                            "tlsv1.2",
                            "sslv3",
                            ""
                        ],
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "HostPortTrait": {
                "description": "Add host:port support to the monitor schema - this may seem odd, but there are URL monitors, host:port monitors and script monitors\n\nUse in \\Cm\\Lib\\Monitor\\Schema\\AbstractMonitor and its descendants",
                "properties": {
                    "host": {
                        "type": "string",
                        "example": "example.com"
                    },
                    "port": {
                        "type": "integer",
                        "format": "int32"
                    }
                },
                "type": "object"
            },
            "IpVersionTrait": {
                "description": "Add IP version selection support to the monitor schema\n\nUse in \\Cm\\Lib\\Monitor\\Schema\\AbstractMonitor and its descendants",
                "properties": {
                    "ipVersion": {
                        "type": "integer",
                        "default": 0,
                        "enum": [
                            0,
                            4,
                            6
                        ]
                    }
                },
                "type": "object"
            },
            "LoginTrait": {
                "description": "Add login support to the monitor schema\n\nUse in \\Cm\\Lib\\Monitor\\Schema\\AbstractMonitor and its descendants",
                "properties": {
                    "username": {
                        "type": "string",
                        "example": "myUsername"
                    },
                    "password": {
                        "type": "string",
                        "example": "myPassword"
                    }
                },
                "type": "object"
            },
            "MatchStringTrait": {
                "description": "Add match string/regex support to the monitor schema\n\nUse in \\Cm\\Lib\\Monitor\\Schema\\AbstractMonitor and its descendants",
                "properties": {
                    "matchString": {
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "PostDataTrait": {
                "description": "Add post data support to the monitor schema\n\nUse in \\Cm\\Lib\\Monitor\\Schema\\AbstractMonitor and its descendants",
                "properties": {
                    "binary": {
                        "description": "Enable this option if POST, PUT or PATCH data is in a binary form. This value is disregarded on OPMS before 10.7.",
                        "type": "boolean",
                        "default": false
                    },
                    "data": {
                        "description": "Data sent with the PUT, POST and PATCH requests. Binary data must be base64 encoded.",
                        "type": "string",
                        "format": "byte"
                    }
                },
                "type": "object"
            },
            "ProxyTrait": {
                "description": "Add proxy support to the monitor schema",
                "properties": {
                    "useProxy": {
                        "type": "boolean",
                        "default": false
                    },
                    "proxyProtocol": {
                        "description": "The proxy protocol. Not all monitor types can make use of all proxy protocols. useProxy=true and proxyProtocol=null means 'use system proxy' on OPMS",
                        "type": "string",
                        "enum": [
                            "http",
                            "https",
                            "socks5"
                        ],
                        "nullable": true
                    },
                    "proxyAddress": {
                        "type": "string",
                        "nullable": true
                    },
                    "proxyPort": {
                        "type": "integer",
                        "nullable": true
                    },
                    "proxyUsername": {
                        "type": "string",
                        "nullable": true
                    },
                    "proxyPassword": {
                        "type": "string",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "RequestHeadersTrait": {
                "properties": {
                    "requestHeaders": {
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "TransactionPatternsTrait": {
                "properties": {
                    "transactionPatterns": {
                        "type": "string",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "UrlTrait": {
                "description": "Add host:port support to the monitor schema - this may seem odd, but there are URL monitors, host:port monitors and script monitors\n\nUse in \\Cm\\Lib\\Monitor\\Schema\\AbstractMonitor and its descendants",
                "properties": {
                    "url": {
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "UserAgentTrait": {
                "description": "User-Agent-settable monitor",
                "properties": {
                    "userAgent": {
                        "description": "Free format user agent to be used with requests, default empty string = native for the agent",
                        "type": "string",
                        "default": ""
                    }
                },
                "type": "object"
            },
            "VerifyCertificateTrait": {
                "description": "monitor allowing verify certificate setting",
                "properties": {
                    "verifyCertificate": {
                        "type": "boolean",
                        "default": true
                    }
                },
                "type": "object"
            },
            "Monitor": {
                "description": "Common fields present for all monitors",
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/MonitorCreate"
                    },
                    {
                        "properties": {
                            "id": {
                                "type": "integer",
                                "format": "int64",
                                "example": 1
                            },
                            "status": {
                                "description": "Status of the monitor (read only). The status of the folder is not reflected.",
                                "type": "string",
                                "enum": [
                                    "deleted",
                                    "inactive",
                                    "active",
                                    "unconfirmed",
                                    "locked",
                                    "error"
                                ],
                                "nullable": true
                            },
                            "unhealthy": {
                                "description": "Health status of the monitoring station pool (read only). This flag is true if the number of monitoring stations in insufficient.",
                                "type": "boolean",
                                "nullable": true
                            },
                            "inMaintenance": {
                                "description": "Is monitor currently in maintenance mode? (read only)",
                                "type": "boolean",
                                "nullable": true
                            }
                        }
                    }
                ]
            },
            "MonitorCreate": {
                "description": "Common fields for creating any monitor",
                "required": [
                    "name",
                    "type",
                    "check",
                    "alert",
                    "checkpoint"
                ],
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/MonitorUpdate"
                    },
                    {
                        "properties": {
                            "type": {
                                "description": "The monitor type.",
                                "type": "string",
                                "enum": [
                                    "http",
                                    "https",
                                    "connect",
                                    "dns",
                                    "dnsa",
                                    "dnsns",
                                    "domain",
                                    "ftp",
                                    "ftps",
                                    "imap",
                                    "ldap",
                                    "ping",
                                    "plugin",
                                    "pop3",
                                    "scp",
                                    "sftp",
                                    "sip",
                                    "smtp",
                                    "telnet",
                                    "browser",
                                    "script",
                                    "tls",
                                    "websocket"
                                ]
                            }
                        }
                    }
                ]
            },
            "MonitorUpdate": {
                "description": "Common updatable fields for all monitors",
                "properties": {
                    "name": {
                        "type": "string",
                        "example": "My Monitor Name"
                    },
                    "folderId": {
                        "description": "The folder id where the monitor will be put. 0 means no folder.",
                        "type": "integer",
                        "example": 1
                    },
                    "maintenanceGroupIds": {
                        "type": "array",
                        "items": {
                            "type": "integer"
                        },
                        "example": [
                            1,
                            2,
                            3
                        ]
                    },
                    "tagNames": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "example": [
                            "tag1",
                            "tag2"
                        ]
                    },
                    "transactionTag": {
                        "type": "string",
                        "example": "{agent_name}"
                    },
                    "userNote": {
                        "type": "string",
                        "example": "Note - any user-specified value will be stored"
                    },
                    "timezone": {
                        "description": "This time zone is used for the monitor's run hours (check/periodFrom, check/periodTo and check/days). If empty the time zone of the owner account is used.",
                        "type": "string",
                        "example": "America/Los_Angeles",
                        "nullable": true
                    },
                    "check": {
                        "$ref": "#/components/schemas/MonitorCheck"
                    },
                    "alert": {
                        "$ref": "#/components/schemas/MonitorAlert"
                    },
                    "checkpoint": {
                        "$ref": "#/components/schemas/MonitorCheckpoint"
                    },
                    "noScheduleOnMaintenance": {
                        "description": "Enable this option if monitor should not be scheduled in maintenance. By default, monitor is scheduled but results are flagged and not used for alerting and SLA calculation.",
                        "type": "boolean",
                        "default": false,
                        "nullable": true
                    },
                    "noRescheduleOnFailure": {
                        "description": "Enable this option if a failing monitor should not be rescheduled. By default, the monitoring interval is changed to 5 minutes if a monitor starts failing and the interval is longer than 5 minutes. Once the monitor is OK the original interval is restored.",
                        "type": "boolean",
                        "default": false,
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "MonitorAlert": {
                "description": "Class Alert",
                "properties": {
                    "timeWarn": {
                        "type": "integer",
                        "example": 2500
                    },
                    "timePoor": {
                        "type": "integer",
                        "example": 6000
                    },
                    "timeOut": {
                        "type": "integer",
                        "example": 10
                    },
                    "alertAfter": {
                        "type": "integer",
                        "enum": [
                            -1,
                            0,
                            1,
                            2,
                            3,
                            4
                        ],
                        "example": 1
                    },
                    "dontDoPostMortem": {
                        "description": "Currently has no effect",
                        "type": "boolean",
                        "example": false
                    },
                    "contactId": {
                        "type": "integer",
                        "example": 1,
                        "nullable": true
                    },
                    "notifyWhenUp": {
                        "type": "boolean",
                        "example": true
                    },
                    "quietPeriod": {
                        "type": "string",
                        "enum": [
                            "00:10:00",
                            "00:15:00",
                            "00:20:00",
                            "00:30:00",
                            "01:00:00",
                            "02:00:00",
                            "03:00:00",
                            "06:00:00",
                            "12:00:00",
                            "18:00:00",
                            "24:00:00"
                        ],
                        "nullable": true
                    },
                    "checkThreshold": {
                        "type": "integer",
                        "enum": [
                            1,
                            2,
                            3,
                            4,
                            5
                        ],
                        "example": 1,
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "MonitorCertificates": {
                "description": "Class Certificate",
                "properties": {
                    "ca": {
                        "description": "CA certificate or chain for peer verification, either in PKCS12 or PEM format",
                        "type": "string"
                    },
                    "client": {
                        "description": "Client certificate for authentication, either in PKCS12 or PEM format. Client certificate consists of public (cert) and private (key) parts. Both parts must be included here.",
                        "type": "string"
                    },
                    "clientPassword": {
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "MonitorCheck": {
                "description": "Class Check",
                "properties": {
                    "mode": {
                        "description": "Scheduler modes - 0(sequential), 1(multi), 4(sequential asynchronous), 5(multi asynchronous). If unsure, use 0",
                        "type": "integer",
                        "enum": [
                            0,
                            1,
                            4,
                            5
                        ],
                        "example": 0
                    },
                    "interval": {
                        "type": "string",
                        "example": "00:05:00"
                    },
                    "periodFrom": {
                        "type": "string",
                        "example": "00:00"
                    },
                    "periodTo": {
                        "type": "string",
                        "example": "23:59"
                    },
                    "days": {
                        "type": "array",
                        "items": {
                            "type": "integer"
                        },
                        "example": [
                            0,
                            1,
                            2,
                            3,
                            4,
                            5,
                            6
                        ]
                    }
                },
                "type": "object"
            },
            "MonitorCheckpoint": {
                "description": "Class Checkpoint",
                "properties": {
                    "usePublic": {
                        "type": "boolean",
                        "example": true
                    },
                    "groupIds": {
                        "type": "array",
                        "items": {
                            "type": "integer"
                        },
                        "example": [
                            1,
                            2,
                            3
                        ],
                        "nullable": true
                    },
                    "algorithm": {
                        "type": "string",
                        "enum": [
                            "master",
                            "random",
                            "seq",
                            "sticky"
                        ],
                        "example": "random"
                    },
                    "defaultGroupId": {
                        "type": "integer",
                        "example": 1,
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "FtpCommonTrait": {
                "description": "Common FTP/S monitors' fields",
                "properties": {
                    "path": {
                        "type": "string",
                        "example": "/dir"
                    },
                    "connectionMode": {
                        "type": "integer",
                        "default": 2,
                        "enum": [
                            0,
                            1,
                            2
                        ]
                    }
                },
                "type": "object"
            },
            "HttpCommonTrait": {
                "description": "Common HTTP/S monitors' fields",
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/UrlTrait"
                    },
                    {
                        "$ref": "#/components/schemas/ProxyTrait"
                    },
                    {
                        "$ref": "#/components/schemas/LoginTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MatchStringTrait"
                    },
                    {
                        "$ref": "#/components/schemas/IpVersionTrait"
                    },
                    {
                        "$ref": "#/components/schemas/RequestHeadersTrait"
                    },
                    {
                        "$ref": "#/components/schemas/UserAgentTrait"
                    },
                    {
                        "$ref": "#/components/schemas/PostDataTrait"
                    },
                    {
                        "properties": {
                            "httpMethod": {
                                "description": "HTTP method. If empty, GET (data is empty) or POST (data is not empty) is used. This value is disregarded on OPMS before 10.7.",
                                "type": "string",
                                "default": "GET",
                                "enum": [
                                    "",
                                    "GET",
                                    "HEAD",
                                    "POST",
                                    "PUT",
                                    "PATCH",
                                    "DELETE",
                                    "OPTIONS"
                                ]
                            },
                            "acceptedHttpCodes": {
                                "type": "string"
                            },
                            "avoidCompression": {
                                "type": "boolean",
                                "default": false
                            },
                            "useNtlm": {
                                "type": "boolean",
                                "default": false
                            },
                            "redirectLimit": {
                                "type": "integer",
                                "default": 5,
                                "maximum": 10,
                                "minimum": 0
                            }
                        }
                    }
                ]
            },
            "Browser": {
                "required": [
                    "url",
                    "browserRestriction"
                ],
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/ProxyTrait"
                    },
                    {
                        "$ref": "#/components/schemas/LoginTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MatchStringTrait"
                    },
                    {
                        "$ref": "#/components/schemas/RequestHeadersTrait"
                    },
                    {
                        "$ref": "#/components/schemas/IpVersionTrait"
                    },
                    {
                        "$ref": "#/components/schemas/UserAgentTrait"
                    },
                    {
                        "$ref": "#/components/schemas/VerifyCertificateTrait"
                    },
                    {
                        "$ref": "#/components/schemas/AllowDenyTrait"
                    },
                    {
                        "$ref": "#/components/schemas/TransactionPatternsTrait"
                    },
                    {
                        "$ref": "#/components/schemas/Monitor"
                    },
                    {
                        "properties": {
                            "url": {
                                "type": "string",
                                "example": "https://www.example.com"
                            },
                            "jsErrorReport": {
                                "type": "boolean",
                                "default": false
                            },
                            "elemErrorReport": {
                                "type": "boolean",
                                "default": false
                            },
                            "toggleQuiescence": {
                                "type": "boolean",
                                "default": false
                            },
                            "postVariables": {
                                "type": "string"
                            }
                        }
                    }
                ]
            },
            "BrowserCreate": {
                "required": [
                    "url",
                    "browserRestriction"
                ],
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/ProxyTrait"
                    },
                    {
                        "$ref": "#/components/schemas/LoginTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MatchStringTrait"
                    },
                    {
                        "$ref": "#/components/schemas/RequestHeadersTrait"
                    },
                    {
                        "$ref": "#/components/schemas/IpVersionTrait"
                    },
                    {
                        "$ref": "#/components/schemas/UserAgentTrait"
                    },
                    {
                        "$ref": "#/components/schemas/VerifyCertificateTrait"
                    },
                    {
                        "$ref": "#/components/schemas/AllowDenyTrait"
                    },
                    {
                        "$ref": "#/components/schemas/TransactionPatternsTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MonitorCreate"
                    },
                    {
                        "properties": {
                            "url": {
                                "type": "string",
                                "example": "https://www.example.com"
                            },
                            "jsErrorReport": {
                                "type": "boolean",
                                "default": false
                            },
                            "elemErrorReport": {
                                "type": "boolean",
                                "default": false
                            },
                            "toggleQuiescence": {
                                "type": "boolean",
                                "default": false
                            },
                            "postVariables": {
                                "type": "string"
                            }
                        }
                    }
                ]
            },
            "BrowserUpdate": {
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/ProxyTrait"
                    },
                    {
                        "$ref": "#/components/schemas/LoginTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MatchStringTrait"
                    },
                    {
                        "$ref": "#/components/schemas/RequestHeadersTrait"
                    },
                    {
                        "$ref": "#/components/schemas/IpVersionTrait"
                    },
                    {
                        "$ref": "#/components/schemas/UserAgentTrait"
                    },
                    {
                        "$ref": "#/components/schemas/VerifyCertificateTrait"
                    },
                    {
                        "$ref": "#/components/schemas/AllowDenyTrait"
                    },
                    {
                        "$ref": "#/components/schemas/TransactionPatternsTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MonitorUpdate"
                    },
                    {
                        "properties": {
                            "url": {
                                "type": "string",
                                "example": "https://www.example.com"
                            },
                            "jsErrorReport": {
                                "type": "boolean",
                                "default": false
                            },
                            "elemErrorReport": {
                                "type": "boolean",
                                "default": false
                            },
                            "toggleQuiescence": {
                                "type": "boolean",
                                "default": false
                            },
                            "postVariables": {
                                "type": "string"
                            }
                        }
                    }
                ]
            },
            "Connect": {
                "required": [
                    "host",
                    "port"
                ],
                "allOf": [
                    {
                        "$ref": "#/components/schemas/HostPortTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MatchStringTrait"
                    },
                    {
                        "$ref": "#/components/schemas/Monitor"
                    }
                ]
            },
            "ConnectCreate": {
                "required": [
                    "host",
                    "port"
                ],
                "allOf": [
                    {
                        "$ref": "#/components/schemas/HostPortTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MatchStringTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MonitorCreate"
                    }
                ]
            },
            "ConnectUpdate": {
                "allOf": [
                    {
                        "$ref": "#/components/schemas/HostPortTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MatchStringTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MonitorUpdate"
                    }
                ]
            },
            "Dns": {
                "description": "Class Dns",
                "required": [
                    "domainName",
                    "port"
                ],
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/Monitor"
                    },
                    {
                        "properties": {
                            "domainName": {
                                "type": "string",
                                "example": "example.com"
                            },
                            "port": {
                                "type": "integer",
                                "format": "int32",
                                "default": 53
                            },
                            "recordType": {
                                "type": "string",
                                "default": "A",
                                "enum": [
                                    "A",
                                    "AAAA",
                                    "MX",
                                    "NS",
                                    "CNAME",
                                    "PTR",
                                    "SOA",
                                    "TXT"
                                ]
                            },
                            "expectedResult": {
                                "description": "Comma-separated expected RR values. This will be an array in the future",
                                "type": "string",
                                "example": "1.2.3.4,2.3.4.5"
                            },
                            "retries": {
                                "type": "integer",
                                "default": 2,
                                "enum": [
                                    0,
                                    1,
                                    2,
                                    3
                                ]
                            },
                            "match": {
                                "type": "integer",
                                "default": 0,
                                "enum": [
                                    -1,
                                    0,
                                    1
                                ]
                            },
                            "protocol": {
                                "type": "string",
                                "default": "udp",
                                "enum": [
                                    "tcp",
                                    "udp"
                                ]
                            },
                            "target": {
                                "type": "string",
                                "default": "local"
                            },
                            "respondThreshold": {
                                "type": "integer",
                                "default": 1,
                                "enum": [
                                    1,
                                    2,
                                    3,
                                    4,
                                    5,
                                    6,
                                    7
                                ]
                            },
                            "delimiter": {
                                "type": "string",
                                "default": "",
                                "enum": [
                                    "",
                                    ",",
                                    "|",
                                    ";",
                                    "#|#",
                                    "#;#",
                                    "#ASM_ITEM_DELIMITER#"
                                ]
                            }
                        }
                    }
                ]
            },
            "DnsCreate": {
                "description": "Class Dns",
                "required": [
                    "domainName",
                    "port"
                ],
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/MonitorCreate"
                    },
                    {
                        "properties": {
                            "domainName": {
                                "type": "string",
                                "example": "example.com"
                            },
                            "port": {
                                "type": "integer",
                                "format": "int32",
                                "default": 53
                            },
                            "recordType": {
                                "type": "string",
                                "default": "A",
                                "enum": [
                                    "A",
                                    "AAAA",
                                    "MX",
                                    "NS",
                                    "CNAME",
                                    "PTR",
                                    "SOA",
                                    "TXT"
                                ]
                            },
                            "expectedResult": {
                                "description": "Comma-separated expected RR values. This will be an array in the future",
                                "type": "string",
                                "example": "1.2.3.4,2.3.4.5"
                            },
                            "retries": {
                                "type": "integer",
                                "default": 2,
                                "enum": [
                                    0,
                                    1,
                                    2,
                                    3
                                ]
                            },
                            "match": {
                                "type": "integer",
                                "default": 0,
                                "enum": [
                                    -1,
                                    0,
                                    1
                                ]
                            },
                            "protocol": {
                                "type": "string",
                                "default": "udp",
                                "enum": [
                                    "tcp",
                                    "udp"
                                ]
                            },
                            "target": {
                                "type": "string",
                                "default": "local"
                            },
                            "respondThreshold": {
                                "type": "integer",
                                "default": 1,
                                "enum": [
                                    1,
                                    2,
                                    3,
                                    4,
                                    5,
                                    6,
                                    7
                                ]
                            },
                            "delimiter": {
                                "type": "string",
                                "default": "",
                                "enum": [
                                    "",
                                    ",",
                                    "|",
                                    ";",
                                    "#|#",
                                    "#;#",
                                    "#ASM_ITEM_DELIMITER#"
                                ]
                            }
                        }
                    }
                ]
            },
            "DnsUpdate": {
                "description": "Class Monitor",
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/MonitorUpdate"
                    },
                    {
                        "properties": {
                            "domainName": {
                                "type": "string",
                                "example": "example.com"
                            },
                            "port": {
                                "type": "integer",
                                "format": "int32",
                                "default": 53
                            },
                            "recordType": {
                                "type": "string",
                                "default": "A",
                                "enum": [
                                    "A",
                                    "AAAA",
                                    "MX",
                                    "NS",
                                    "CNAME",
                                    "PTR",
                                    "SOA",
                                    "TXT"
                                ]
                            },
                            "expectedResult": {
                                "description": "Comma-separated expected RR values. This will be an array in the future",
                                "type": "string",
                                "example": "1.2.3.4,2.3.4.5"
                            },
                            "retries": {
                                "type": "integer",
                                "default": 2,
                                "enum": [
                                    0,
                                    1,
                                    2,
                                    3
                                ]
                            },
                            "match": {
                                "type": "integer",
                                "default": 0,
                                "enum": [
                                    -1,
                                    0,
                                    1
                                ]
                            },
                            "protocol": {
                                "type": "string",
                                "default": "udp",
                                "enum": [
                                    "tcp",
                                    "udp"
                                ]
                            },
                            "target": {
                                "type": "string",
                                "default": "local"
                            },
                            "respondThreshold": {
                                "type": "integer",
                                "default": 1,
                                "enum": [
                                    1,
                                    2,
                                    3,
                                    4,
                                    5,
                                    6,
                                    7
                                ]
                            },
                            "delimiter": {
                                "type": "string",
                                "default": "",
                                "enum": [
                                    "",
                                    ",",
                                    "|",
                                    ";",
                                    "#|#",
                                    "#;#",
                                    "#ASM_ITEM_DELIMITER#"
                                ]
                            }
                        }
                    }
                ]
            },
            "Dnsa": {
                "required": [
                    "port",
                    "path",
                    "maxQueries"
                ],
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/HostPortTrait"
                    },
                    {
                        "$ref": "#/components/schemas/Monitor"
                    },
                    {
                        "properties": {
                            "path": {
                                "type": "string",
                                "example": "pop.dmo.com=63.151.147.25"
                            },
                            "maxQueries": {
                                "type": "integer",
                                "format": "int32",
                                "default": 3
                            }
                        }
                    }
                ]
            },
            "DnsaCreate": {
                "required": [
                    "port",
                    "path",
                    "maxQueries"
                ],
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/HostPortTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MonitorCreate"
                    },
                    {
                        "properties": {
                            "path": {
                                "type": "string",
                                "example": "pop.dmo.com=63.151.147.25"
                            },
                            "maxQueries": {
                                "type": "integer",
                                "format": "int32",
                                "default": 3
                            }
                        }
                    }
                ]
            },
            "DnsaUpdate": {
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/HostPortTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MonitorUpdate"
                    },
                    {
                        "properties": {
                            "path": {
                                "type": "string",
                                "example": "pop.dmo.com=63.151.147.25"
                            },
                            "maxQueries": {
                                "type": "integer",
                                "format": "int32",
                                "default": 3
                            }
                        }
                    }
                ]
            },
            "Dnsns": {
                "required": [
                    "port",
                    "path",
                    "maxQueries"
                ],
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/HostPortTrait"
                    },
                    {
                        "$ref": "#/components/schemas/Monitor"
                    },
                    {
                        "properties": {
                            "path": {
                                "type": "string",
                                "example": ""
                            },
                            "maxQueries": {
                                "type": "integer",
                                "format": "int32",
                                "default": 3
                            }
                        }
                    }
                ]
            },
            "DnsnsCreate": {
                "required": [
                    "port",
                    "path",
                    "maxQueries"
                ],
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/HostPortTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MonitorCreate"
                    },
                    {
                        "properties": {
                            "path": {
                                "type": "string",
                                "example": ""
                            },
                            "maxQueries": {
                                "type": "integer",
                                "format": "int32",
                                "default": 3
                            }
                        }
                    }
                ]
            },
            "DnsnsUpdate": {
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/HostPortTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MonitorUpdate"
                    },
                    {
                        "properties": {
                            "path": {
                                "type": "string",
                                "example": ""
                            },
                            "maxQueries": {
                                "type": "integer",
                                "format": "int32",
                                "default": 3
                            }
                        }
                    }
                ]
            },
            "Domain": {
                "description": "Class Domain",
                "required": [
                    "domainName",
                    "port",
                    "retries",
                    "protocol",
                    "target",
                    "respondThreshold"
                ],
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/Monitor"
                    },
                    {
                        "properties": {
                            "domainName": {
                                "type": "string",
                                "example": "example.com"
                            },
                            "port": {
                                "type": "integer",
                                "format": "int32",
                                "default": 53
                            },
                            "retries": {
                                "type": "integer",
                                "default": 2,
                                "enum": [
                                    0,
                                    1,
                                    2,
                                    3
                                ]
                            },
                            "protocol": {
                                "type": "string",
                                "default": "udp",
                                "enum": [
                                    "tcp",
                                    "udp"
                                ]
                            },
                            "target": {
                                "type": "string",
                                "default": "listed"
                            },
                            "respondThreshold": {
                                "type": "integer",
                                "default": 1,
                                "enum": [
                                    1,
                                    2,
                                    3,
                                    4,
                                    5,
                                    6,
                                    7
                                ]
                            },
                            "doZoneTransfer": {
                                "type": "boolean",
                                "default": false
                            }
                        }
                    }
                ]
            },
            "DomainCreate": {
                "description": "Class Domain",
                "required": [
                    "domainName",
                    "port",
                    "retries",
                    "protocol",
                    "target",
                    "respondThreshold"
                ],
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/MonitorCreate"
                    },
                    {
                        "properties": {
                            "domainName": {
                                "type": "string",
                                "example": "example.com"
                            },
                            "port": {
                                "type": "integer",
                                "format": "int32",
                                "default": 53
                            },
                            "retries": {
                                "type": "integer",
                                "default": 2,
                                "enum": [
                                    0,
                                    1,
                                    2,
                                    3
                                ]
                            },
                            "protocol": {
                                "type": "string",
                                "default": "udp",
                                "enum": [
                                    "tcp",
                                    "udp"
                                ]
                            },
                            "target": {
                                "type": "string",
                                "default": "listed"
                            },
                            "respondThreshold": {
                                "type": "integer",
                                "default": 1,
                                "enum": [
                                    1,
                                    2,
                                    3,
                                    4,
                                    5,
                                    6,
                                    7
                                ]
                            },
                            "doZoneTransfer": {
                                "type": "boolean",
                                "default": false
                            }
                        }
                    }
                ]
            },
            "DomainUpdate": {
                "description": "Class Monitor",
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/MonitorUpdate"
                    },
                    {
                        "properties": {
                            "domainName": {
                                "type": "string",
                                "example": "example.com"
                            },
                            "port": {
                                "type": "integer",
                                "format": "int32",
                                "default": 53
                            },
                            "retries": {
                                "type": "integer",
                                "default": 2,
                                "enum": [
                                    0,
                                    1,
                                    2,
                                    3
                                ]
                            },
                            "protocol": {
                                "type": "string",
                                "default": "udp",
                                "enum": [
                                    "tcp",
                                    "udp"
                                ]
                            },
                            "target": {
                                "type": "string",
                                "default": "listed"
                            },
                            "respondThreshold": {
                                "type": "integer",
                                "default": 1,
                                "enum": [
                                    1,
                                    2,
                                    3,
                                    4,
                                    5,
                                    6,
                                    7
                                ]
                            },
                            "doZoneTransfer": {
                                "type": "boolean",
                                "default": false
                            }
                        }
                    }
                ]
            },
            "Ftp": {
                "description": "FTP monitor",
                "required": [
                    "host",
                    "port",
                    "connectionMode"
                ],
                "allOf": [
                    {
                        "$ref": "#/components/schemas/FtpCommonTrait"
                    },
                    {
                        "$ref": "#/components/schemas/HostPortTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MatchStringTrait"
                    },
                    {
                        "$ref": "#/components/schemas/LoginTrait"
                    },
                    {
                        "$ref": "#/components/schemas/IpVersionTrait"
                    },
                    {
                        "$ref": "#/components/schemas/Monitor"
                    }
                ]
            },
            "FtpCreate": {
                "required": [
                    "host",
                    "port",
                    "connectionMode"
                ],
                "allOf": [
                    {
                        "$ref": "#/components/schemas/FtpCommonTrait"
                    },
                    {
                        "$ref": "#/components/schemas/HostPortTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MatchStringTrait"
                    },
                    {
                        "$ref": "#/components/schemas/LoginTrait"
                    },
                    {
                        "$ref": "#/components/schemas/IpVersionTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MonitorCreate"
                    }
                ]
            },
            "FtpUpdate": {
                "allOf": [
                    {
                        "$ref": "#/components/schemas/FtpCommonTrait"
                    },
                    {
                        "$ref": "#/components/schemas/HostPortTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MatchStringTrait"
                    },
                    {
                        "$ref": "#/components/schemas/LoginTrait"
                    },
                    {
                        "$ref": "#/components/schemas/IpVersionTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MonitorUpdate"
                    }
                ]
            },
            "Ftps": {
                "required": [
                    "host",
                    "port",
                    "connectionMode"
                ],
                "allOf": [
                    {
                        "$ref": "#/components/schemas/FtpCommonTrait"
                    },
                    {
                        "$ref": "#/components/schemas/HostPortTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MatchStringTrait"
                    },
                    {
                        "$ref": "#/components/schemas/LoginTrait"
                    },
                    {
                        "$ref": "#/components/schemas/IpVersionTrait"
                    },
                    {
                        "$ref": "#/components/schemas/Monitor"
                    }
                ]
            },
            "FtpsCreate": {
                "required": [
                    "host",
                    "port",
                    "connectionMode"
                ],
                "allOf": [
                    {
                        "$ref": "#/components/schemas/FtpCommonTrait"
                    },
                    {
                        "$ref": "#/components/schemas/HostPortTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MatchStringTrait"
                    },
                    {
                        "$ref": "#/components/schemas/LoginTrait"
                    },
                    {
                        "$ref": "#/components/schemas/IpVersionTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MonitorCreate"
                    }
                ]
            },
            "FtpsUpdate": {
                "allOf": [
                    {
                        "$ref": "#/components/schemas/FtpCommonTrait"
                    },
                    {
                        "$ref": "#/components/schemas/HostPortTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MatchStringTrait"
                    },
                    {
                        "$ref": "#/components/schemas/LoginTrait"
                    },
                    {
                        "$ref": "#/components/schemas/IpVersionTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MonitorUpdate"
                    }
                ]
            },
            "Http": {
                "description": "The definition of HTTP monitor type",
                "required": [
                    "url"
                ],
                "allOf": [
                    {
                        "$ref": "#/components/schemas/HttpCommonTrait"
                    },
                    {
                        "$ref": "#/components/schemas/Monitor"
                    }
                ]
            },
            "HttpCreate": {
                "required": [
                    "url"
                ],
                "allOf": [
                    {
                        "$ref": "#/components/schemas/HttpCommonTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MonitorCreate"
                    }
                ]
            },
            "HttpUpdate": {
                "allOf": [
                    {
                        "$ref": "#/components/schemas/HttpCommonTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MonitorUpdate"
                    }
                ]
            },
            "Https": {
                "required": [
                    "url"
                ],
                "allOf": [
                    {
                        "$ref": "#/components/schemas/HttpCommonTrait"
                    },
                    {
                        "$ref": "#/components/schemas/UseCertificatesTrait"
                    },
                    {
                        "$ref": "#/components/schemas/EncryptionTrait"
                    },
                    {
                        "$ref": "#/components/schemas/VerifyCertificateTrait"
                    },
                    {
                        "$ref": "#/components/schemas/Http"
                    }
                ]
            },
            "HttpsCreate": {
                "required": [
                    "url"
                ],
                "allOf": [
                    {
                        "$ref": "#/components/schemas/HttpCommonTrait"
                    },
                    {
                        "$ref": "#/components/schemas/UseCertificatesTrait"
                    },
                    {
                        "$ref": "#/components/schemas/EncryptionTrait"
                    },
                    {
                        "$ref": "#/components/schemas/VerifyCertificateTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MonitorCreate"
                    }
                ]
            },
            "HttpsUpdate": {
                "allOf": [
                    {
                        "$ref": "#/components/schemas/HttpCommonTrait"
                    },
                    {
                        "$ref": "#/components/schemas/UseCertificatesTrait"
                    },
                    {
                        "$ref": "#/components/schemas/EncryptionTrait"
                    },
                    {
                        "$ref": "#/components/schemas/VerifyCertificateTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MonitorUpdate"
                    }
                ]
            },
            "Imap": {
                "required": [
                    "host",
                    "port"
                ],
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/HostPortTrait"
                    },
                    {
                        "$ref": "#/components/schemas/LoginTrait"
                    },
                    {
                        "$ref": "#/components/schemas/VerifyCertificateTrait"
                    },
                    {
                        "$ref": "#/components/schemas/Monitor"
                    },
                    {
                        "properties": {
                            "path": {
                                "type": "string",
                                "example": "/"
                            },
                            "sslEncryption": {
                                "type": "boolean",
                                "default": false
                            }
                        }
                    }
                ]
            },
            "ImapCreate": {
                "required": [
                    "host",
                    "port"
                ],
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/HostPortTrait"
                    },
                    {
                        "$ref": "#/components/schemas/LoginTrait"
                    },
                    {
                        "$ref": "#/components/schemas/VerifyCertificateTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MonitorCreate"
                    },
                    {
                        "properties": {
                            "path": {
                                "type": "string",
                                "example": "/"
                            },
                            "sslEncryption": {
                                "type": "boolean",
                                "default": false
                            }
                        }
                    }
                ]
            },
            "ImapUpdate": {
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/HostPortTrait"
                    },
                    {
                        "$ref": "#/components/schemas/LoginTrait"
                    },
                    {
                        "$ref": "#/components/schemas/VerifyCertificateTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MonitorUpdate"
                    },
                    {
                        "properties": {
                            "path": {
                                "type": "string",
                                "example": "/"
                            },
                            "sslEncryption": {
                                "type": "boolean",
                                "default": false
                            }
                        }
                    }
                ]
            },
            "Ldap": {
                "required": [
                    "host",
                    "port"
                ],
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/HostPortTrait"
                    },
                    {
                        "$ref": "#/components/schemas/LoginTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MatchStringTrait"
                    },
                    {
                        "$ref": "#/components/schemas/IpVersionTrait"
                    },
                    {
                        "$ref": "#/components/schemas/VerifyCertificateTrait"
                    },
                    {
                        "$ref": "#/components/schemas/Monitor"
                    },
                    {
                        "properties": {
                            "path": {
                                "description": "The search base and filter. Spaces in the filter must be replaced with %20",
                                "type": "string",
                                "example": "searchbase??sub?filter"
                            },
                            "sslEncryption": {
                                "type": "boolean",
                                "default": false
                            }
                        }
                    }
                ]
            },
            "LdapCreate": {
                "required": [
                    "host",
                    "port"
                ],
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/HostPortTrait"
                    },
                    {
                        "$ref": "#/components/schemas/LoginTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MatchStringTrait"
                    },
                    {
                        "$ref": "#/components/schemas/IpVersionTrait"
                    },
                    {
                        "$ref": "#/components/schemas/VerifyCertificateTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MonitorCreate"
                    },
                    {
                        "properties": {
                            "path": {
                                "description": "The search base and filter. Spaces in the filter must be replaced with %20",
                                "type": "string",
                                "example": "searchbase??sub?filter"
                            },
                            "sslEncryption": {
                                "type": "boolean",
                                "default": false
                            }
                        }
                    }
                ]
            },
            "LdapUpdate": {
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/HostPortTrait"
                    },
                    {
                        "$ref": "#/components/schemas/LoginTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MatchStringTrait"
                    },
                    {
                        "$ref": "#/components/schemas/IpVersionTrait"
                    },
                    {
                        "$ref": "#/components/schemas/VerifyCertificateTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MonitorUpdate"
                    },
                    {
                        "properties": {
                            "path": {
                                "description": "The search base and filter. Spaces in the filter must be replaced with %20",
                                "type": "string",
                                "example": "searchbase??sub?filter"
                            },
                            "sslEncryption": {
                                "type": "boolean",
                                "default": false
                            }
                        }
                    }
                ]
            },
            "Ping": {
                "required": [
                    "host",
                    "packetLossThreshold"
                ],
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/IpVersionTrait"
                    },
                    {
                        "$ref": "#/components/schemas/Monitor"
                    },
                    {
                        "properties": {
                            "host": {
                                "type": "string",
                                "example": "example.com"
                            },
                            "packetLossThreshold": {
                                "description": "Packet loss in % (1-100)",
                                "type": "integer",
                                "default": 100,
                                "maximum": 100,
                                "minimum": 1
                            }
                        }
                    }
                ]
            },
            "PingCreate": {
                "required": [
                    "host",
                    "packetLossThreshold"
                ],
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/IpVersionTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MonitorCreate"
                    },
                    {
                        "properties": {
                            "host": {
                                "type": "string",
                                "example": "example.com"
                            },
                            "packetLossThreshold": {
                                "description": "Packet loss in % (1-100)",
                                "type": "integer",
                                "default": 100,
                                "maximum": 100,
                                "minimum": 1
                            }
                        }
                    }
                ]
            },
            "PingUpdate": {
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/IpVersionTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MonitorUpdate"
                    },
                    {
                        "properties": {
                            "host": {
                                "type": "string",
                                "example": "example.com"
                            },
                            "packetLossThreshold": {
                                "description": "Packet loss in % (1-100)",
                                "type": "integer",
                                "default": 100,
                                "maximum": 100,
                                "minimum": 1
                            }
                        }
                    }
                ]
            },
            "Plugin": {
                "required": [
                    "url"
                ],
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/UrlTrait"
                    },
                    {
                        "$ref": "#/components/schemas/LoginTrait"
                    },
                    {
                        "$ref": "#/components/schemas/Monitor"
                    },
                    {
                        "properties": {
                            "parameters": {
                                "type": "string"
                            }
                        }
                    }
                ]
            },
            "PluginCreate": {
                "required": [
                    "url"
                ],
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/UrlTrait"
                    },
                    {
                        "$ref": "#/components/schemas/LoginTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MonitorCreate"
                    },
                    {
                        "properties": {
                            "parameters": {
                                "type": "string"
                            }
                        }
                    }
                ]
            },
            "PluginUpdate": {
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/UrlTrait"
                    },
                    {
                        "$ref": "#/components/schemas/LoginTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MonitorUpdate"
                    },
                    {
                        "properties": {
                            "parameters": {
                                "type": "string"
                            }
                        }
                    }
                ]
            },
            "Pop3": {
                "required": [
                    "host",
                    "port"
                ],
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/HostPortTrait"
                    },
                    {
                        "$ref": "#/components/schemas/LoginTrait"
                    },
                    {
                        "$ref": "#/components/schemas/VerifyCertificateTrait"
                    },
                    {
                        "$ref": "#/components/schemas/Monitor"
                    },
                    {
                        "properties": {
                            "sslEncryption": {
                                "type": "boolean",
                                "default": false
                            }
                        }
                    }
                ]
            },
            "Pop3Create": {
                "required": [
                    "host",
                    "port"
                ],
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/HostPortTrait"
                    },
                    {
                        "$ref": "#/components/schemas/LoginTrait"
                    },
                    {
                        "$ref": "#/components/schemas/VerifyCertificateTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MonitorCreate"
                    },
                    {
                        "properties": {
                            "sslEncryption": {
                                "type": "boolean",
                                "default": false
                            }
                        }
                    }
                ]
            },
            "Pop3Update": {
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/HostPortTrait"
                    },
                    {
                        "$ref": "#/components/schemas/LoginTrait"
                    },
                    {
                        "$ref": "#/components/schemas/VerifyCertificateTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MonitorUpdate"
                    },
                    {
                        "properties": {
                            "sslEncryption": {
                                "type": "boolean",
                                "default": false
                            }
                        }
                    }
                ]
            },
            "Scp": {
                "required": [
                    "host",
                    "port"
                ],
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/HostPortTrait"
                    },
                    {
                        "$ref": "#/components/schemas/LoginTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MatchStringTrait"
                    },
                    {
                        "$ref": "#/components/schemas/IpVersionTrait"
                    },
                    {
                        "$ref": "#/components/schemas/Monitor"
                    },
                    {
                        "properties": {
                            "path": {
                                "type": "string",
                                "example": "/"
                            }
                        }
                    }
                ]
            },
            "ScpCreate": {
                "required": [
                    "host",
                    "port"
                ],
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/HostPortTrait"
                    },
                    {
                        "$ref": "#/components/schemas/LoginTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MatchStringTrait"
                    },
                    {
                        "$ref": "#/components/schemas/IpVersionTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MonitorCreate"
                    },
                    {
                        "properties": {
                            "path": {
                                "type": "string",
                                "example": "/"
                            }
                        }
                    }
                ]
            },
            "ScpUpdate": {
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/HostPortTrait"
                    },
                    {
                        "$ref": "#/components/schemas/LoginTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MatchStringTrait"
                    },
                    {
                        "$ref": "#/components/schemas/IpVersionTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MonitorUpdate"
                    },
                    {
                        "properties": {
                            "path": {
                                "type": "string",
                                "example": "/"
                            }
                        }
                    }
                ]
            },
            "Script": {
                "required": [
                    "host",
                    "port"
                ],
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/UseCertificatesTrait"
                    },
                    {
                        "$ref": "#/components/schemas/ProxyTrait"
                    },
                    {
                        "$ref": "#/components/schemas/LoginTrait"
                    },
                    {
                        "$ref": "#/components/schemas/Monitor"
                    },
                    {
                        "properties": {
                            "host": {
                                "type": "string",
                                "default": ""
                            },
                            "port": {
                                "type": "integer",
                                "format": "int32",
                                "default": 80
                            },
                            "path": {
                                "type": "string"
                            },
                            "encryption": {
                                "type": "string",
                                "enum": [
                                    "tls",
                                    "tlsv1.0",
                                    "tlsv1.1",
                                    "tlsv1.2",
                                    "sslv3"
                                ]
                            },
                            "assertOnly": {
                                "type": "boolean"
                            },
                            "responseContent": {
                                "type": "boolean"
                            },
                            "scriptFile": {
                                "$ref": "#/components/schemas/MonitorScript"
                            }
                        }
                    }
                ]
            },
            "ScriptCreate": {
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/UseCertificatesTrait"
                    },
                    {
                        "$ref": "#/components/schemas/ProxyTrait"
                    },
                    {
                        "$ref": "#/components/schemas/LoginTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MonitorCreate"
                    },
                    {
                        "properties": {
                            "host": {
                                "type": "string",
                                "default": ""
                            },
                            "port": {
                                "type": "integer",
                                "format": "int32",
                                "default": 80
                            },
                            "path": {
                                "type": "string"
                            },
                            "encryption": {
                                "type": "string",
                                "enum": [
                                    "tls",
                                    "tlsv1.0",
                                    "tlsv1.1",
                                    "tlsv1.2",
                                    "sslv3"
                                ]
                            },
                            "assertOnly": {
                                "type": "boolean"
                            },
                            "responseContent": {
                                "type": "boolean"
                            },
                            "scriptFile": {
                                "oneOf": [
                                    {
                                        "$ref": "#/components/schemas/MonitorScriptCreate"
                                    },
                                    {
                                        "type": "object",
                                        "nullable": true
                                    }
                                ]
                            }
                        }
                    }
                ]
            },
            "ScriptUpdate": {
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/UseCertificatesTrait"
                    },
                    {
                        "$ref": "#/components/schemas/ProxyTrait"
                    },
                    {
                        "$ref": "#/components/schemas/LoginTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MonitorUpdate"
                    },
                    {
                        "properties": {
                            "host": {
                                "type": "string",
                                "default": ""
                            },
                            "port": {
                                "type": "integer",
                                "format": "int32",
                                "default": 80
                            },
                            "path": {
                                "type": "string"
                            },
                            "encryption": {
                                "type": "string",
                                "enum": [
                                    "tls",
                                    "tlsv1.0",
                                    "tlsv1.1",
                                    "tlsv1.2",
                                    "sslv3"
                                ]
                            },
                            "assertOnly": {
                                "type": "boolean"
                            },
                            "responseContent": {
                                "type": "boolean"
                            },
                            "scriptFile": {
                                "oneOf": [
                                    {
                                        "$ref": "#/components/schemas/MonitorScriptCreate"
                                    },
                                    {
                                        "type": "object",
                                        "nullable": true
                                    }
                                ]
                            }
                        }
                    }
                ]
            },
            "Sftp": {
                "required": [
                    "host",
                    "port"
                ],
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/HostPortTrait"
                    },
                    {
                        "$ref": "#/components/schemas/LoginTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MatchStringTrait"
                    },
                    {
                        "$ref": "#/components/schemas/IpVersionTrait"
                    },
                    {
                        "$ref": "#/components/schemas/Monitor"
                    },
                    {
                        "properties": {
                            "path": {
                                "type": "string",
                                "example": "/dir"
                            }
                        }
                    }
                ]
            },
            "SftpCreate": {
                "required": [
                    "host",
                    "port"
                ],
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/HostPortTrait"
                    },
                    {
                        "$ref": "#/components/schemas/LoginTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MatchStringTrait"
                    },
                    {
                        "$ref": "#/components/schemas/IpVersionTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MonitorCreate"
                    },
                    {
                        "properties": {
                            "path": {
                                "type": "string",
                                "example": "/dir"
                            }
                        }
                    }
                ]
            },
            "SftpUpdate": {
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/HostPortTrait"
                    },
                    {
                        "$ref": "#/components/schemas/LoginTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MatchStringTrait"
                    },
                    {
                        "$ref": "#/components/schemas/IpVersionTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MonitorUpdate"
                    },
                    {
                        "properties": {
                            "path": {
                                "type": "string",
                                "example": "/dir"
                            }
                        }
                    }
                ]
            },
            "Sip": {
                "required": [
                    "host",
                    "port"
                ],
                "allOf": [
                    {
                        "$ref": "#/components/schemas/HostPortTrait"
                    },
                    {
                        "$ref": "#/components/schemas/Monitor"
                    }
                ]
            },
            "SipCreate": {
                "required": [
                    "host",
                    "port"
                ],
                "allOf": [
                    {
                        "$ref": "#/components/schemas/HostPortTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MonitorCreate"
                    }
                ]
            },
            "SipUpdate": {
                "allOf": [
                    {
                        "$ref": "#/components/schemas/HostPortTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MonitorUpdate"
                    }
                ]
            },
            "Smtp": {
                "required": [
                    "host",
                    "port"
                ],
                "allOf": [
                    {
                        "$ref": "#/components/schemas/HostPortTrait"
                    },
                    {
                        "$ref": "#/components/schemas/Monitor"
                    }
                ]
            },
            "SmtpCreate": {
                "required": [
                    "host",
                    "port"
                ],
                "allOf": [
                    {
                        "$ref": "#/components/schemas/HostPortTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MonitorCreate"
                    }
                ]
            },
            "SmtpUpdate": {
                "allOf": [
                    {
                        "$ref": "#/components/schemas/HostPortTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MonitorUpdate"
                    }
                ]
            },
            "Telnet": {
                "required": [
                    "host",
                    "port"
                ],
                "allOf": [
                    {
                        "$ref": "#/components/schemas/HostPortTrait"
                    },
                    {
                        "$ref": "#/components/schemas/Monitor"
                    }
                ]
            },
            "TelnetCreate": {
                "required": [
                    "host",
                    "port"
                ],
                "allOf": [
                    {
                        "$ref": "#/components/schemas/HostPortTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MonitorCreate"
                    }
                ]
            },
            "TelnetUpdate": {
                "allOf": [
                    {
                        "$ref": "#/components/schemas/HostPortTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MonitorUpdate"
                    }
                ]
            },
            "Tls": {
                "description": "TLS monitor for server certificate monitoring",
                "required": [
                    "host",
                    "port"
                ],
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/HostPortTrait"
                    },
                    {
                        "$ref": "#/components/schemas/UseCertificatesTrait"
                    },
                    {
                        "$ref": "#/components/schemas/ProxyTrait"
                    },
                    {
                        "$ref": "#/components/schemas/IpVersionTrait"
                    },
                    {
                        "$ref": "#/components/schemas/EncryptionTrait"
                    },
                    {
                        "$ref": "#/components/schemas/Monitor"
                    },
                    {
                        "properties": {
                            "expirationShift": {
                                "type": "integer",
                                "default": "21"
                            }
                        }
                    }
                ]
            },
            "TlsCreate": {
                "required": [
                    "host",
                    "port"
                ],
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/HostPortTrait"
                    },
                    {
                        "$ref": "#/components/schemas/UseCertificatesTrait"
                    },
                    {
                        "$ref": "#/components/schemas/ProxyTrait"
                    },
                    {
                        "$ref": "#/components/schemas/IpVersionTrait"
                    },
                    {
                        "$ref": "#/components/schemas/EncryptionTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MonitorCreate"
                    },
                    {
                        "properties": {
                            "expirationShift": {
                                "type": "integer",
                                "default": "21"
                            }
                        }
                    }
                ]
            },
            "TlsUpdate": {
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/HostPortTrait"
                    },
                    {
                        "$ref": "#/components/schemas/UseCertificatesTrait"
                    },
                    {
                        "$ref": "#/components/schemas/ProxyTrait"
                    },
                    {
                        "$ref": "#/components/schemas/IpVersionTrait"
                    },
                    {
                        "$ref": "#/components/schemas/EncryptionTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MonitorUpdate"
                    },
                    {
                        "properties": {
                            "expirationShift": {
                                "type": "integer",
                                "default": "21"
                            }
                        }
                    }
                ]
            },
            "Webdriver": {
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/ProxyTrait"
                    },
                    {
                        "$ref": "#/components/schemas/UseCertificatesTrait"
                    },
                    {
                        "$ref": "#/components/schemas/LoginTrait"
                    },
                    {
                        "$ref": "#/components/schemas/UserAgentTrait"
                    },
                    {
                        "$ref": "#/components/schemas/VerifyCertificateTrait"
                    },
                    {
                        "$ref": "#/components/schemas/AllowDenyTrait"
                    },
                    {
                        "$ref": "#/components/schemas/TransactionPatternsTrait"
                    },
                    {
                        "$ref": "#/components/schemas/Monitor"
                    },
                    {
                        "properties": {
                            "host": {
                                "type": "string",
                                "example": "example.com"
                            },
                            "elemErrorReport": {
                                "type": "boolean",
                                "default": false
                            },
                            "toggleQuiescence": {
                                "type": "boolean",
                                "default": false
                            },
                            "browserAgent": {
                                "description": "Enable this option if monitor is monitoring page leveraging additionaly the browser agent and webdriver is expected to wait for the browser agent to send the metrics before executing the next step. Do not enable it unless you know what you are doing. If browser is NOT present and this value is enabled, monitor will timeout on the first step waiting for browser agent confirmation.",
                                "type": "boolean",
                                "default": false,
                                "nullable": true
                            },
                            "proxyExcludeHosts": {
                                "type": "string"
                            },
                            "remapHosts": {
                                "description": "Comma-separated, colon-separated domain pairs. This will be an array in the future",
                                "type": "string",
                                "example": "example.com:example.org,example1.com:example1.org"
                            },
                            "blockHtml5Media": {
                                "type": "boolean",
                                "default": false
                            },
                            "browser": {
                                "type": "string"
                            },
                            "authenticationType": {
                                "type": "string"
                            },
                            "scriptFile": {
                                "$ref": "#/components/schemas/MonitorScript"
                            }
                        }
                    }
                ]
            },
            "WebdriverCreate": {
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/ProxyTrait"
                    },
                    {
                        "$ref": "#/components/schemas/UseCertificatesTrait"
                    },
                    {
                        "$ref": "#/components/schemas/LoginTrait"
                    },
                    {
                        "$ref": "#/components/schemas/UserAgentTrait"
                    },
                    {
                        "$ref": "#/components/schemas/VerifyCertificateTrait"
                    },
                    {
                        "$ref": "#/components/schemas/AllowDenyTrait"
                    },
                    {
                        "$ref": "#/components/schemas/TransactionPatternsTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MonitorCreate"
                    },
                    {
                        "properties": {
                            "host": {
                                "type": "string",
                                "example": "example.com"
                            },
                            "elemErrorReport": {
                                "type": "boolean",
                                "default": false
                            },
                            "toggleQuiescence": {
                                "type": "boolean",
                                "default": false
                            },
                            "browserAgent": {
                                "description": "Enable this option if monitor is monitoring page leveraging additionaly the browser agent and webdriver is expected to wait for the browser agent to send the metrics before executing the next step. Do not enable it unless you know what you are doing. If browser is NOT present and this value is enabled, monitor will timeout on the first step waiting for browser agent confirmation.",
                                "type": "boolean",
                                "default": false,
                                "nullable": true
                            },
                            "proxyExcludeHosts": {
                                "type": "string"
                            },
                            "remapHosts": {
                                "description": "Comma-separated, colon-separated domain pairs. This will be an array in the future",
                                "type": "string",
                                "example": "example.com:example.org,example1.com:example1.org"
                            },
                            "blockHtml5Media": {
                                "type": "boolean",
                                "default": false
                            },
                            "browser": {
                                "type": "string"
                            },
                            "authenticationType": {
                                "type": "string"
                            },
                            "scriptFile": {
                                "oneOf": [
                                    {
                                        "$ref": "#/components/schemas/MonitorScriptCreate"
                                    },
                                    {
                                        "type": "object",
                                        "nullable": true
                                    }
                                ]
                            }
                        }
                    }
                ]
            },
            "WebdriverUpdate": {
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/ProxyTrait"
                    },
                    {
                        "$ref": "#/components/schemas/UseCertificatesTrait"
                    },
                    {
                        "$ref": "#/components/schemas/LoginTrait"
                    },
                    {
                        "$ref": "#/components/schemas/UserAgentTrait"
                    },
                    {
                        "$ref": "#/components/schemas/VerifyCertificateTrait"
                    },
                    {
                        "$ref": "#/components/schemas/AllowDenyTrait"
                    },
                    {
                        "$ref": "#/components/schemas/TransactionPatternsTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MonitorUpdate"
                    },
                    {
                        "properties": {
                            "host": {
                                "type": "string",
                                "example": "example.com"
                            },
                            "elemErrorReport": {
                                "type": "boolean",
                                "default": false
                            },
                            "toggleQuiescence": {
                                "type": "boolean",
                                "default": false
                            },
                            "browserAgent": {
                                "description": "Enable this option if monitor is monitoring page leveraging additionaly the browser agent and webdriver is expected to wait for the browser agent to send the metrics before executing the next step. Do not enable it unless you know what you are doing. If browser is NOT present and this value is enabled, monitor will timeout on the first step waiting for browser agent confirmation.",
                                "type": "boolean",
                                "default": false,
                                "nullable": true
                            },
                            "proxyExcludeHosts": {
                                "type": "string"
                            },
                            "remapHosts": {
                                "description": "Comma-separated, colon-separated domain pairs. This will be an array in the future",
                                "type": "string",
                                "example": "example.com:example.org,example1.com:example1.org"
                            },
                            "blockHtml5Media": {
                                "type": "boolean",
                                "default": false
                            },
                            "browser": {
                                "type": "string"
                            },
                            "authenticationType": {
                                "type": "string"
                            },
                            "scriptFile": {
                                "oneOf": [
                                    {
                                        "$ref": "#/components/schemas/MonitorScriptCreate"
                                    },
                                    {
                                        "type": "object",
                                        "nullable": true
                                    }
                                ]
                            }
                        }
                    }
                ]
            },
            "Websocket": {
                "required": [
                    "url"
                ],
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/UrlTrait"
                    },
                    {
                        "$ref": "#/components/schemas/ProxyTrait"
                    },
                    {
                        "$ref": "#/components/schemas/UseCertificatesTrait"
                    },
                    {
                        "$ref": "#/components/schemas/VerifyCertificateTrait"
                    },
                    {
                        "$ref": "#/components/schemas/LoginTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MatchStringTrait"
                    },
                    {
                        "$ref": "#/components/schemas/IpVersionTrait"
                    },
                    {
                        "$ref": "#/components/schemas/PostDataTrait"
                    },
                    {
                        "$ref": "#/components/schemas/RequestHeadersTrait"
                    },
                    {
                        "$ref": "#/components/schemas/UserAgentTrait"
                    },
                    {
                        "$ref": "#/components/schemas/Monitor"
                    },
                    {
                        "properties": {
                            "healthCheck": {
                                "type": "boolean",
                                "default": false
                            },
                            "idleDelay": {
                                "type": "integer",
                                "default": 0
                            }
                        }
                    }
                ]
            },
            "WebsocketCreate": {
                "required": [
                    "url"
                ],
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/UrlTrait"
                    },
                    {
                        "$ref": "#/components/schemas/ProxyTrait"
                    },
                    {
                        "$ref": "#/components/schemas/UseCertificatesTrait"
                    },
                    {
                        "$ref": "#/components/schemas/VerifyCertificateTrait"
                    },
                    {
                        "$ref": "#/components/schemas/LoginTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MatchStringTrait"
                    },
                    {
                        "$ref": "#/components/schemas/IpVersionTrait"
                    },
                    {
                        "$ref": "#/components/schemas/PostDataTrait"
                    },
                    {
                        "$ref": "#/components/schemas/RequestHeadersTrait"
                    },
                    {
                        "$ref": "#/components/schemas/UserAgentTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MonitorCreate"
                    },
                    {
                        "properties": {
                            "healthCheck": {
                                "type": "boolean",
                                "default": false
                            },
                            "idleDelay": {
                                "type": "integer",
                                "default": 0
                            }
                        }
                    }
                ]
            },
            "WebsocketUpdate": {
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/UrlTrait"
                    },
                    {
                        "$ref": "#/components/schemas/ProxyTrait"
                    },
                    {
                        "$ref": "#/components/schemas/UseCertificatesTrait"
                    },
                    {
                        "$ref": "#/components/schemas/VerifyCertificateTrait"
                    },
                    {
                        "$ref": "#/components/schemas/LoginTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MatchStringTrait"
                    },
                    {
                        "$ref": "#/components/schemas/IpVersionTrait"
                    },
                    {
                        "$ref": "#/components/schemas/PostDataTrait"
                    },
                    {
                        "$ref": "#/components/schemas/RequestHeadersTrait"
                    },
                    {
                        "$ref": "#/components/schemas/UserAgentTrait"
                    },
                    {
                        "$ref": "#/components/schemas/MonitorUpdate"
                    },
                    {
                        "properties": {
                            "healthCheck": {
                                "type": "boolean",
                                "default": false
                            },
                            "idleDelay": {
                                "type": "integer",
                                "default": 0
                            }
                        }
                    }
                ]
            },
            "MonitorFrame": {
                "description": "Class MonitorFrame\nThis schema is used in the APIv3 to get list of monitors when the performance matters.\nTo retrieve full list of monitor properties lots of per-monitor queries must be executed which is time consuming (e.g. maintenance status).\nThis schema contains only parameters that needs no extra queries and/or lengthy calculations.\nThese parameters should be sufficient to get list of monitors for charts, selection dropboxes etc.",
                "properties": {
                    "id": {
                        "type": "integer",
                        "format": "int64",
                        "example": 1
                    },
                    "type": {
                        "description": "The monitor type.",
                        "type": "string",
                        "enum": [
                            "http",
                            "https",
                            "connect",
                            "dns",
                            "dnsa",
                            "dnsns",
                            "domain",
                            "ftp",
                            "ftps",
                            "imap",
                            "ldap",
                            "ping",
                            "plugin",
                            "pop3",
                            "scp",
                            "sftp",
                            "sip",
                            "smtp",
                            "telnet",
                            "browser",
                            "script"
                        ]
                    },
                    "name": {
                        "type": "string",
                        "example": "My Monitor Name"
                    },
                    "folderId": {
                        "type": "integer",
                        "example": 1
                    },
                    "status": {
                        "description": "Status of the monitor (read only). The status of the folder is not reflected.",
                        "type": "string",
                        "enum": [
                            "deleted",
                            "inactive",
                            "active",
                            "unconfirmed",
                            "locked",
                            "error"
                        ],
                        "nullable": true
                    },
                    "unhealthy": {
                        "description": "Health status of the monitoring station pool (read only). This flag is true if the number of monitoring stations in insufficient.",
                        "type": "boolean",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "MonitorScript": {
                "description": "Class ScriptFile",
                "type": "object",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/MonitorScriptCreate"
                    },
                    {
                        "properties": {
                            "scriptId": {
                                "description": "ID of the script",
                                "type": "integer",
                                "format": "int64",
                                "example": 1
                            },
                            "content": {
                                "type": "string",
                                "example": "The script file content. The full script is only returned when fetching one individual monitor.",
                                "nullable": true
                            }
                        }
                    }
                ]
            },
            "MonitorScriptCreate": {
                "description": "Class ScriptFileCreate",
                "properties": {
                    "scriptId": {
                        "description": "If you want to reuse a previously uploaded script, send this ID but not the new script content. This feature is deprecated, will be removed in the future releases without notice.",
                        "type": "integer",
                        "format": "int64",
                        "example": 1,
                        "nullable": true
                    },
                    "contentArchive": {
                        "type": "string",
                        "example": "The original script file content. Use this field when creating or updating a monitor",
                        "nullable": true
                    },
                    "parameters": {
                        "type": "string",
                        "example": "",
                        "nullable": true
                    },
                    "stages": {
                        "type": "string",
                        "example": "",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "MonitorTag": {
                "properties": {
                    "id": {
                        "type": "integer",
                        "format": "int",
                        "example": 1
                    },
                    "name": {
                        "type": "string",
                        "example": "abc"
                    }
                },
                "type": "object"
            },
            "EventAsset": {
                "properties": {
                    "url": {
                        "type": "string",
                        "example": "https://www.example.com"
                    },
                    "type": {
                        "type": "string",
                        "enum": [
                            "jtl",
                            "har",
                            "http",
                            "image",
                            "video",
                            "log",
                            "console_log"
                        ]
                    }
                },
                "type": "object"
            },
            "CompactCheckResult": {
                "description": "A compact schema for the check result",
                "properties": {
                    "id": {
                        "type": "string"
                    },
                    "monitorId": {
                        "type": "integer"
                    },
                    "startTime": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "result": {
                        "type": "integer"
                    },
                    "maintenance": {
                        "type": "integer"
                    },
                    "performance": {
                        "type": "string",
                        "example": "good",
                        "nullable": true
                    },
                    "isConfirmedError": {
                        "type": "boolean"
                    }
                },
                "type": "object"
            },
            "LogEvent": {
                "properties": {
                    "id": {
                        "type": "string",
                        "example": "1"
                    },
                    "monitor": {
                        "$ref": "#/components/schemas/StatisticResource"
                    },
                    "location": {
                        "$ref": "#/components/schemas/StatisticResource"
                    },
                    "folder": {
                        "$ref": "#/components/schemas/StatisticResource"
                    },
                    "start": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "duration": {
                        "type": "integer"
                    },
                    "interval": {
                        "type": "integer"
                    },
                    "monitor_type": {
                        "type": "string",
                        "example": "http"
                    },
                    "result": {
                        "$ref": "#/components/schemas/EventResult"
                    },
                    "metrics": {
                        "$ref": "#/components/schemas/LogEventMetrics"
                    },
                    "assets": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/EventAsset"
                        },
                        "nullable": true
                    },
                    "probeMetrics": {
                        "oneOf": [
                            {
                                "$ref": "#/components/schemas/ProbeMetrics"
                            },
                            {
                                "type": "object",
                                "nullable": true
                            }
                        ]
                    }
                },
                "type": "object"
            },
            "LogEventMetrics": {
                "properties": {
                    "rtime": {
                        "description": "Resolve time (ms)",
                        "type": "integer",
                        "example": 103
                    },
                    "ctime": {
                        "description": "Connect time (ms)",
                        "type": "integer",
                        "example": 5
                    },
                    "ptime": {
                        "description": "First byte time (ms)",
                        "type": "integer",
                        "example": 406
                    },
                    "dtime": {
                        "description": "Download time (ms)",
                        "type": "integer",
                        "example": 330
                    },
                    "utime": {
                        "description": "User interaction time (ms)",
                        "type": "integer",
                        "example": 739
                    },
                    "dsize": {
                        "description": "Download size (bytes)",
                        "type": "integer",
                        "example": 1439
                    },
                    "multi_probes_all": {
                        "description": "Number of multi-check probes performed, including internal errors",
                        "type": "integer",
                        "example": 5
                    },
                    "multi_probes": {
                        "description": "Number of multi-check probes performed, excluding internal errors",
                        "type": "integer",
                        "example": 1
                    },
                    "multi_probes_failed": {
                        "description": "Number of multi-check probes failed, excluding internal errors",
                        "type": "integer",
                        "example": 2
                    }
                },
                "type": "object"
            },
            "MetricResource": {
                "properties": {
                    "probes": {
                        "type": "integer",
                        "example": 10
                    },
                    "probe_ok": {
                        "type": "integer",
                        "example": 10
                    },
                    "probe_errors": {
                        "type": "integer",
                        "example": 0
                    },
                    "checks": {
                        "type": "integer",
                        "example": 10
                    },
                    "check_errors": {
                        "type": "integer",
                        "example": 0
                    },
                    "checks_maint": {
                        "type": "integer",
                        "example": 0
                    },
                    "maint_errors": {
                        "type": "integer",
                        "example": 0
                    },
                    "rtime": {
                        "type": "integer",
                        "example": 4
                    },
                    "ctime": {
                        "type": "integer",
                        "example": 162
                    },
                    "ptime": {
                        "type": "integer",
                        "example": 306
                    },
                    "utime": {
                        "type": "integer",
                        "example": 2
                    },
                    "dtime": {
                        "type": "integer",
                        "example": 307
                    },
                    "rtime_ok": {
                        "type": "integer",
                        "example": 4
                    },
                    "ctime_ok": {
                        "type": "integer",
                        "example": 162
                    },
                    "ptime_ok": {
                        "type": "integer",
                        "example": 306
                    },
                    "utime_ok": {
                        "type": "integer",
                        "example": 2
                    },
                    "dtime_ok": {
                        "type": "integer",
                        "example": 307
                    },
                    "dsize": {
                        "type": "integer",
                        "example": 546
                    },
                    "dev_rtime": {
                        "type": "number",
                        "format": "float",
                        "example": 0
                    },
                    "dev_ctime": {
                        "type": "number",
                        "format": "float",
                        "example": 173.14052096490872
                    },
                    "dev_ptime": {
                        "type": "number",
                        "format": "float",
                        "example": 48.96978660357841
                    },
                    "dev_utime": {
                        "type": "number",
                        "format": "float",
                        "example": 0
                    },
                    "dev_dtime": {
                        "type": "number",
                        "format": "float",
                        "example": 45.98086558558903
                    },
                    "dev_dsize": {
                        "type": "number",
                        "format": "float",
                        "example": 114
                    },
                    "xtime": {
                        "type": "integer",
                        "example": 1
                    },
                    "xtime_ok": {
                        "type": "integer",
                        "example": 1
                    },
                    "xspeed": {
                        "type": "integer",
                        "example": 546000
                    },
                    "upstatus": {
                        "type": "integer",
                        "example": 0
                    },
                    "perfstatus": {
                        "type": "integer",
                        "example": 0
                    },
                    "score": {
                        "type": "number",
                        "format": "float",
                        "example": 99
                    },
                    "spi_score": {
                        "type": "number",
                        "format": "float",
                        "example": 469
                    },
                    "spi_penalty": {
                        "type": "number",
                        "format": "float",
                        "example": 0
                    },
                    "uptime": {
                        "type": "number",
                        "format": "float",
                        "example": 100
                    },
                    "downtime": {
                        "type": "number",
                        "format": "float",
                        "example": 0
                    },
                    "ttime": {
                        "type": "integer",
                        "example": 473
                    },
                    "ttime_ok": {
                        "type": "integer",
                        "example": 473
                    },
                    "dspeed": {
                        "type": "integer",
                        "example": 1776
                    },
                    "slawarn": {
                        "type": "number",
                        "format": "float",
                        "example": 100
                    },
                    "slapoor": {
                        "type": "number",
                        "format": "float",
                        "example": 100
                    },
                    "apdex": {
                        "type": "number",
                        "format": "float",
                        "example": 1
                    }
                },
                "type": "object"
            },
            "ProbeMetrics": {
                "properties": {
                    "id": {
                        "type": "string",
                        "example": "8b8d61bc-8a03-11ee-b9d1-0242ac120002"
                    },
                    "startTime": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "duration": {
                        "type": "integer"
                    },
                    "failed": {
                        "type": "boolean",
                        "nullable": true
                    },
                    "statusCode": {
                        "type": "integer",
                        "example": "0",
                        "nullable": true
                    },
                    "statusString": {
                        "type": "string",
                        "example": "OK",
                        "nullable": true
                    },
                    "domain": {
                        "type": "string",
                        "example": "example.com",
                        "nullable": true
                    },
                    "performance": {
                        "type": "string",
                        "enum": [
                            "good",
                            "poor",
                            "bad"
                        ],
                        "nullable": true
                    },
                    "metrics": {
                        "$ref": "#/components/schemas/StageMetrics"
                    },
                    "stages": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/Stage"
                        }
                    }
                },
                "type": "object"
            },
            "EventResult": {
                "properties": {
                    "code": {
                        "type": "integer",
                        "example": 5
                    },
                    "description": {
                        "type": "string",
                        "example": "Result description"
                    },
                    "type": {
                        "type": "string",
                        "enum": [
                            "ok",
                            "unconfirmed_error",
                            "confirmed_error",
                            "maintenance",
                            "unscheduled"
                        ]
                    },
                    "performance": {
                        "description": "For successful checks this value is calculated based on total time and monitor thresholds",
                        "type": "string",
                        "enum": [
                            "good",
                            "poor",
                            "bad"
                        ]
                    }
                },
                "type": "object"
            },
            "Stage": {
                "properties": {
                    "name": {
                        "type": "string",
                        "example": "Stage 1"
                    },
                    "startTime": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "duration": {
                        "type": "integer"
                    },
                    "failed": {
                        "type": "boolean",
                        "nullable": true
                    },
                    "statusCode": {
                        "type": "integer",
                        "example": "0",
                        "nullable": true
                    },
                    "statusString": {
                        "type": "string",
                        "example": "OK",
                        "nullable": true
                    },
                    "CorID": {
                        "type": "string",
                        "example": "120039D47F000101253C1256C16E901A,1:1,1,0,,,AgAAALpIQgAAAAFGAAAAAQAAABFqYXZhLnV0aWwuSGFzaE1hcAAAAAJIQgAAAAJGAAAAAgAAABBqYXZhLmxhbmcuU3RyaW5nAApUeG5UcmFjZUlkSEIAAAADRQAAAAIAITEyMDAzOUQ4N0YwMDAxMDEyNTNDMTI1NjQwQTJDNDJCMEhCAAAABEUAAAACABNDYWxsZXIgQ29tcG9uZW50IElESEIAAAAFRQAAAAIAEDNBNzVDQjY2QjQyRjAwMDE=",
                        "nullable": true
                    },
                    "metrics": {
                        "$ref": "#/components/schemas/StageMetrics"
                    },
                    "transactions": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/Transaction"
                        }
                    }
                },
                "type": "object"
            },
            "StageMetrics": {
                "properties": {
                    "blocked": {
                        "description": "Time spent in HTTP client's queue before starting the request (ms)",
                        "type": "integer",
                        "nullable": true
                    },
                    "tls": {
                        "description": "Time spent on the TLS handshake (ms)",
                        "type": "integer",
                        "nullable": true
                    },
                    "dns": {
                        "description": "Time spent on resolution of the IP address from the URI (ms)",
                        "type": "integer",
                        "nullable": true
                    },
                    "connect": {
                        "description": "Time spent on establishing connection to the monitored service (ms)",
                        "type": "integer",
                        "nullable": true
                    },
                    "upload": {
                        "description": "Time spent on sending request (ms)",
                        "type": "integer",
                        "nullable": true
                    },
                    "firstByte": {
                        "description": "Time since upload was completed until the server starts sending response (ms)",
                        "type": "integer",
                        "nullable": true
                    },
                    "download": {
                        "description": "Time spent on receiving response (ms)",
                        "type": "integer",
                        "nullable": true
                    },
                    "uploadSize": {
                        "description": "Size of request, including headers (bytes)",
                        "type": "integer",
                        "nullable": true
                    },
                    "downloadSize": {
                        "description": "Size of response, including headers (bytes)",
                        "type": "integer",
                        "nullable": true
                    },
                    "uploadHeadersSize": {
                        "description": "Size of request headers (bytes)",
                        "type": "integer",
                        "nullable": true
                    },
                    "downloadHeadersSize": {
                        "description": "Size of response headers (bytes)",
                        "type": "integer",
                        "nullable": true
                    },
                    "onContentLoad": {
                        "description": "Time since start of the stage until the onContentLoad event (ms)",
                        "type": "integer",
                        "nullable": true
                    },
                    "onLoad": {
                        "description": "Time since start of the stage until the onLoad event (ms)",
                        "type": "integer",
                        "nullable": true
                    },
                    "requestCount": {
                        "description": "Number of transactions in this stage",
                        "type": "integer",
                        "nullable": true
                    },
                    "failedCount": {
                        "description": "Number of failed transactions",
                        "type": "integer",
                        "nullable": true
                    },
                    "totalTime": {
                        "description": "Time spent executing transactions (ms)",
                        "type": "integer",
                        "nullable": true
                    },
                    "redirectCount": {
                        "description": "Number of HTTP redirects",
                        "type": "integer",
                        "nullable": true
                    },
                    "redirectTime": {
                        "description": "Total time spent on HTTP redirects",
                        "type": "integer",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "StatisticItem": {
                "required": [
                    "timestamp",
                    "locations",
                    "monitors"
                ],
                "properties": {
                    "timestamp": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "monitors": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/StatisticResource"
                        }
                    },
                    "locations": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/StatisticResource"
                        }
                    },
                    "metrics": {
                        "$ref": "#/components/schemas/MetricResource"
                    }
                },
                "type": "object"
            },
            "StatisticResource": {
                "required": [
                    "id",
                    "name"
                ],
                "properties": {
                    "id": {
                        "type": "integer",
                        "example": 1
                    },
                    "name": {
                        "type": "string",
                        "example": "Monitor Name"
                    }
                },
                "type": "object"
            },
            "Transaction": {
                "properties": {
                    "uri": {
                        "description": "URI of the monitored service",
                        "type": "string",
                        "example": "https://localhost/"
                    },
                    "serverIp": {
                        "description": "IP address of the monitored service",
                        "type": "string",
                        "example": "127.0.0.1"
                    },
                    "startTime": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "duration": {
                        "type": "integer"
                    },
                    "failed": {
                        "type": "boolean",
                        "nullable": true
                    },
                    "statusCode": {
                        "type": "integer",
                        "example": "0",
                        "nullable": true
                    },
                    "statusString": {
                        "type": "string",
                        "example": "OK",
                        "nullable": true
                    },
                    "metrics": {
                        "$ref": "#/components/schemas/TransactionMetrics"
                    }
                },
                "type": "object"
            },
            "TransactionMetrics": {
                "properties": {
                    "blocked": {
                        "description": "Time spent in HTTP client's queue before starting the request (ms)",
                        "type": "integer",
                        "nullable": true
                    },
                    "tls": {
                        "description": "Time spent on the TLS handshake (ms)",
                        "type": "integer",
                        "nullable": true
                    },
                    "dns": {
                        "description": "Time spent on resolution of the IP address from the URI (ms)",
                        "type": "integer",
                        "nullable": true
                    },
                    "connect": {
                        "description": "Time spent on establishing connection to the monitored service (ms)",
                        "type": "integer",
                        "nullable": true
                    },
                    "upload": {
                        "description": "Time spent on sending request (ms)",
                        "type": "integer",
                        "nullable": true
                    },
                    "firstByte": {
                        "description": "Time since upload was completed until the server starts sending response (ms)",
                        "type": "integer",
                        "nullable": true
                    },
                    "download": {
                        "description": "Time spent on receiving response (ms)",
                        "type": "integer",
                        "nullable": true
                    },
                    "uploadSize": {
                        "description": "Size of request, including headers (bytes)",
                        "type": "integer",
                        "nullable": true
                    },
                    "downloadSize": {
                        "description": "Size of response, including headers (bytes)",
                        "type": "integer",
                        "nullable": true
                    },
                    "uploadHeadersSize": {
                        "description": "Size of request headers (bytes)",
                        "type": "integer",
                        "nullable": true
                    },
                    "downloadHeadersSize": {
                        "description": "Size of response headers (bytes)",
                        "type": "integer",
                        "nullable": true
                    }
                },
                "type": "object"
            }
        },
        "responses": {
            "BulkResponseMultiStatus": {
                "description": "Multiple results. If the results in the bulk response have a mix of different HTTP codes, the final HTTP code will be 207 Multi-status. In that case check the results carefully one by one.",
                "content": {
                    "application/json": {
                        "schema": {
                            "properties": {
                                "status": {
                                    "type": "string",
                                    "example": "Multi-status"
                                },
                                "message": {
                                    "type": "string",
                                    "example": "Bulk response"
                                },
                                "data": {
                                    "$ref": "#/components/schemas/BulkResponse"
                                }
                            },
                            "type": "object"
                        }
                    }
                }
            }
        },
        "securitySchemes": {
            "basicAuth": {
                "type": "http",
                "description": "API HTTP basic authorization",
                "scheme": "basic"
            },
            "apiToken": {
                "type": "apiKey",
                "description": "An api key generated in asm",
                "name": "X-Asm-Auth",
                "in": "header"
            },
            "accessToken": {
                "type": "http",
                "description": "Access token generated from OAuth2",
                "scheme": "bearer"
            },
            "onBehalf": {
                "type": "apiKey",
                "description": "ID of the user to run request on-behalf of",
                "name": "X-Asm-On-Behalf",
                "in": "header"
            },
            "oauth2": {
                "type": "oauth2",
                "flows": {
                    "clientCredentials": {
                        "tokenUrl": "/v3/oauth2/token",
                        "refreshUrl": "/v3/oauth2/token",
                        "scopes": {}
                    }
                }
            }
        }
    },
    "security": [
        {
            "apiToken": []
        },
        {
            "accessToken": []
        },
        {
            "basicAuth": []
        },
        {
            "onBehalf": []
        },
        {
            "oauth2": []
        }
    ]
}