{
  "openapi": "3.1.0",
  "info": {
    "title": "BlueStatus API",
    "version": "1.0.0",
    "description": "Team-scoped status pages and monitoring. Session writes require X-CSRF-Token. Bearer keys use explicit read/write/admin scopes. Dates are UTC; send maintenance dates as ISO-8601 with timezone. Email verification is currently disabled by operator configuration; verified_at remains null until actual verification."
  },
  "servers": [
    {
      "url": "https://bluestatus.galler-edv.eu/api/v1"
    }
  ],
  "security": [
    {
      "bearerAuth": []
    },
    {
      "sessionCookie": []
    }
  ],
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer"
      },
      "sessionCookie": {
        "type": "apiKey",
        "in": "cookie",
        "name": "bs_session"
      }
    },
    "schemas": {
      "Error": {
        "type": "object",
        "properties": {
          "error": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string"
              },
              "message": {
                "type": "string"
              }
            }
          }
        }
      },
      "Localized": {
        "type": "object",
        "properties": {
          "de": {
            "type": "string"
          },
          "en": {
            "type": "string"
          }
        },
        "required": [
          "de",
          "en"
        ]
      },
      "MonitorInput": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 100
          },
          "type": {
            "enum": [
              "http",
              "tcp",
              "dns",
              "tls",
              "heartbeat"
            ]
          },
          "target": {
            "type": "string"
          },
          "interval_seconds": {
            "type": "integer",
            "minimum": 60,
            "maximum": 86400,
            "default": 60
          },
          "timeout_seconds": {
            "type": "integer",
            "minimum": 1,
            "maximum": 30,
            "default": 10
          },
          "failure_threshold": {
            "type": "integer",
            "minimum": 1,
            "maximum": 10,
            "default": 3
          },
          "sla_target": {
            "type": "number",
            "minimum": 0,
            "maximum": 100,
            "default": 99.9
          },
          "enabled": {
            "type": "boolean"
          },
          "config": {
            "type": "object",
            "properties": {
              "method": {
                "enum": [
                  "GET",
                  "HEAD"
                ]
              },
              "expected_status": {
                "type": "integer",
                "default": 200
              },
              "contains": {
                "type": "string"
              },
              "json_path": {
                "type": "string",
                "description": "Dotted path, including array indexes"
              },
              "json_value": {
                "type": "string"
              },
              "headers": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "writeOnly": true
              },
              "record_type": {
                "enum": [
                  "A",
                  "AAAA",
                  "MX",
                  "TXT",
                  "CNAME",
                  "NS"
                ]
              },
              "expected": {
                "type": "string"
              },
              "days_before": {
                "type": "integer"
              },
              "grace_seconds": {
                "type": "integer"
              }
            }
          }
        },
        "required": [
          "name",
          "type",
          "target"
        ]
      },
      "PageInput": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "slug": {
            "type": "string",
            "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
          },
          "visibility": {
            "enum": [
              "public",
              "private"
            ]
          },
          "revision": {
            "type": "integer",
            "description": "Required when editing. Stale revisions return 409."
          },
          "draft": {
            "type": "object",
            "properties": {
              "title": {
                "$ref": "#/components/schemas/Localized"
              },
              "description": {
                "$ref": "#/components/schemas/Localized"
              },
              "color": {
                "type": "string",
                "pattern": "^#[a-fA-F0-9]{6}$"
              },
              "theme": {
                "enum": [
                  "light",
                  "dark",
                  "system"
                ]
              },
              "hide_brand": {
                "type": "boolean"
              },
              "logo": {
                "type": "string"
              },
              "favicon": {
                "type": "string"
              },
              "blocks": {
                "type": "array",
                "maxItems": 30,
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string"
                    },
                    "type": {
                      "enum": [
                        "header",
                        "components",
                        "uptime",
                        "metrics",
                        "incidents",
                        "maintenance",
                        "text",
                        "footer"
                      ]
                    },
                    "title": {
                      "$ref": "#/components/schemas/Localized"
                    },
                    "text": {
                      "$ref": "#/components/schemas/Localized"
                    },
                    "monitor_ids": {
                      "type": "array",
                      "items": {
                        "type": "string",
                        "format": "uuid"
                      }
                    }
                  },
                  "required": [
                    "id",
                    "type"
                  ]
                }
              }
            }
          }
        },
        "required": [
          "name",
          "slug"
        ]
      },
      "IncidentInput": {
        "type": "object",
        "properties": {
          "title": {
            "$ref": "#/components/schemas/Localized"
          },
          "message": {
            "$ref": "#/components/schemas/Localized"
          },
          "monitor_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "severity": {
            "enum": [
              "minor",
              "major",
              "critical"
            ]
          },
          "published": {
            "type": "boolean"
          }
        },
        "required": [
          "title",
          "monitor_ids"
        ]
      }
    }
  },
  "paths": {
    "/auth/register": {
      "post": {
        "summary": "register account",
        "operationId": "post_auth_register",
        "tags": [
          "auth"
        ],
        "description": "Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "security": [],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "email": {
                    "type": "string",
                    "format": "email"
                  },
                  "password": {
                    "type": "string",
                    "minLength": 12
                  },
                  "locale": {
                    "enum": [
                      "de",
                      "en"
                    ]
                  }
                }
              }
            }
          }
        }
      }
    },
    "/auth/login": {
      "post": {
        "summary": "login account",
        "operationId": "post_auth_login",
        "tags": [
          "auth"
        ],
        "description": "Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "security": [],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "email": {
                    "type": "string"
                  },
                  "password": {
                    "type": "string"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/auth/forgot": {
      "post": {
        "summary": "forgot account",
        "operationId": "post_auth_forgot",
        "tags": [
          "auth"
        ],
        "description": "Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "security": [],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "email": {
                    "type": "string"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/auth/reset": {
      "post": {
        "summary": "reset account",
        "operationId": "post_auth_reset",
        "tags": [
          "auth"
        ],
        "description": "Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "security": [],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "token": {
                    "type": "string"
                  },
                  "password": {
                    "type": "string",
                    "minLength": 12
                  }
                }
              }
            }
          }
        }
      }
    },
    "/auth/mfa/verify": {
      "post": {
        "summary": "mfa/verify account",
        "operationId": "post_auth_mfa_verify",
        "tags": [
          "auth"
        ],
        "description": "Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "security": [],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "code": {
                    "type": "string"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/auth/logout": {
      "post": {
        "summary": "logout account",
        "operationId": "post_auth_logout",
        "tags": [
          "auth"
        ],
        "description": "Required scope: read. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {}
              }
            }
          }
        }
      }
    },
    "/auth/resend": {
      "post": {
        "summary": "resend account",
        "operationId": "post_auth_resend",
        "tags": [
          "auth"
        ],
        "description": "Required scope: read. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {}
              }
            }
          }
        }
      }
    },
    "/auth/mfa/setup": {
      "post": {
        "summary": "mfa/setup account",
        "operationId": "post_auth_mfa_setup",
        "tags": [
          "auth"
        ],
        "description": "Required scope: read. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {}
              }
            }
          }
        }
      }
    },
    "/auth/mfa/enable": {
      "post": {
        "summary": "Enable TOTP and return one-time recovery codes",
        "operationId": "post_auth_mfa_enable",
        "tags": [
          "auth"
        ],
        "description": "Required scope: read. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "code": {
                    "type": "string"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/me": {
      "get": {
        "summary": "Get me",
        "operationId": "get_me",
        "tags": [
          "me"
        ],
        "description": "Required scope: read. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": []
      }
    },
    "/overview": {
      "get": {
        "summary": "Get overview",
        "operationId": "get_overview",
        "tags": [
          "overview"
        ],
        "description": "Required scope: read. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": []
      }
    },
    "/team": {
      "get": {
        "summary": "Get team",
        "operationId": "get_team",
        "tags": [
          "team"
        ],
        "description": "Required scope: read. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": []
      },
      "patch": {
        "summary": "Update workspace and 2FA policy",
        "operationId": "patch_team",
        "tags": [
          "team"
        ],
        "description": "Required scope: admin. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "require_2fa": {
                    "type": "boolean"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/keys": {
      "get": {
        "summary": "Get keys",
        "operationId": "get_keys",
        "tags": [
          "keys"
        ],
        "description": "Required scope: read. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": []
      },
      "post": {
        "summary": "Create API key; token returned once",
        "operationId": "post_keys",
        "tags": [
          "keys"
        ],
        "description": "Required scope: admin. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "scopes": {
                    "type": "array",
                    "items": {
                      "enum": [
                        "read",
                        "write",
                        "admin"
                      ]
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/channels": {
      "get": {
        "summary": "Get channels",
        "operationId": "get_channels",
        "tags": [
          "channels"
        ],
        "description": "Required scope: read. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": []
      },
      "post": {
        "summary": "Create channel; webhook secret returned once",
        "operationId": "post_channels",
        "tags": [
          "channels"
        ],
        "description": "Required scope: admin. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "type": {
                    "enum": [
                      "email",
                      "webhook"
                    ]
                  },
                  "destination": {
                    "type": "string"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/deliveries": {
      "get": {
        "summary": "Get deliveries",
        "operationId": "get_deliveries",
        "tags": [
          "deliveries"
        ],
        "description": "Required scope: read. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": []
      }
    },
    "/operator/teams": {
      "get": {
        "summary": "Get operator/teams",
        "operationId": "get_operator_teams",
        "tags": [
          "operator"
        ],
        "description": "Required scope: read. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": []
      }
    },
    "/operator/health": {
      "get": {
        "summary": "Get operator/health",
        "operationId": "get_operator_health",
        "tags": [
          "operator"
        ],
        "description": "Required scope: read. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": []
      }
    },
    "/account": {
      "patch": {
        "summary": "Update profile",
        "operationId": "patch_account",
        "tags": [
          "account"
        ],
        "description": "Required scope: read. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "locale": {
                    "enum": [
                      "de",
                      "en"
                    ]
                  }
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete account and solely owned teams",
        "operationId": "delete_account",
        "tags": [
          "account"
        ],
        "description": "Required scope: read. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "password": {
                    "type": "string"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/teams/switch": {
      "post": {
        "summary": "Switch session team",
        "operationId": "post_teams_switch",
        "tags": [
          "teams"
        ],
        "description": "Required scope: read. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "team_id": {
                    "type": "string"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/monitors": {
      "get": {
        "summary": "List monitors",
        "operationId": "get_monitors",
        "tags": [
          "monitors"
        ],
        "description": "Required scope: read. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [
          {
            "in": "query",
            "name": "page",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          },
          {
            "in": "query",
            "name": "per_page",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 20
            }
          }
        ]
      },
      "post": {
        "summary": "Create monitors",
        "operationId": "post_monitors",
        "tags": [
          "monitors"
        ],
        "description": "Required scope: write. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MonitorInput"
              }
            }
          }
        }
      }
    },
    "/pages": {
      "get": {
        "summary": "List pages",
        "operationId": "get_pages",
        "tags": [
          "pages"
        ],
        "description": "Required scope: read. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [
          {
            "in": "query",
            "name": "page",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          },
          {
            "in": "query",
            "name": "per_page",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 20
            }
          }
        ]
      },
      "post": {
        "summary": "Create pages",
        "operationId": "post_pages",
        "tags": [
          "pages"
        ],
        "description": "Required scope: write. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PageInput"
              }
            }
          }
        }
      }
    },
    "/incidents": {
      "get": {
        "summary": "List incidents",
        "operationId": "get_incidents",
        "tags": [
          "incidents"
        ],
        "description": "Required scope: read. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [
          {
            "in": "query",
            "name": "page",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          },
          {
            "in": "query",
            "name": "per_page",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 20
            }
          }
        ]
      },
      "post": {
        "summary": "Create incidents",
        "operationId": "post_incidents",
        "tags": [
          "incidents"
        ],
        "description": "Required scope: write. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IncidentInput"
              }
            }
          }
        }
      }
    },
    "/maintenances": {
      "get": {
        "summary": "List maintenances",
        "operationId": "get_maintenances",
        "tags": [
          "maintenances"
        ],
        "description": "Required scope: read. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [
          {
            "in": "query",
            "name": "page",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          },
          {
            "in": "query",
            "name": "per_page",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 20
            }
          }
        ]
      },
      "post": {
        "summary": "Create maintenances",
        "operationId": "post_maintenances",
        "tags": [
          "maintenances"
        ],
        "description": "Required scope: write. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "title": {
                    "$ref": "#/components/schemas/Localized"
                  },
                  "monitor_ids": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "starts_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "ends_at": {
                    "type": "string",
                    "format": "date-time"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/monitors/{id}": {
      "get": {
        "summary": "Get monitors",
        "operationId": "get_monitors_id",
        "tags": [
          "monitors"
        ],
        "description": "Required scope: read. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "patch": {
        "summary": "Update monitors",
        "operationId": "patch_monitors_id",
        "tags": [
          "monitors"
        ],
        "description": "Required scope: write. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MonitorInput"
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete monitors",
        "operationId": "delete_monitors_id",
        "tags": [
          "monitors"
        ],
        "description": "Required scope: write. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/pages/{id}": {
      "get": {
        "summary": "Get pages",
        "operationId": "get_pages_id",
        "tags": [
          "pages"
        ],
        "description": "Required scope: read. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "patch": {
        "summary": "Update pages",
        "operationId": "patch_pages_id",
        "tags": [
          "pages"
        ],
        "description": "Required scope: write. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PageInput"
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete pages",
        "operationId": "delete_pages_id",
        "tags": [
          "pages"
        ],
        "description": "Required scope: admin. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/monitors/{id}/logs": {
      "get": {
        "summary": "Check result logs",
        "operationId": "get_monitors_id_logs",
        "tags": [
          "monitors"
        ],
        "description": "Required scope: read. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          },
          {
            "in": "query",
            "name": "per_page",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 20
            }
          },
          {
            "in": "query",
            "name": "state",
            "schema": {
              "enum": [
                "up",
                "down",
                "unknown"
              ]
            }
          }
        ]
      }
    },
    "/monitors/{id}/metrics": {
      "get": {
        "summary": "Seven-day metrics and 90-day history",
        "operationId": "get_monitors_id_metrics",
        "tags": [
          "monitors"
        ],
        "description": "Required scope: read. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/monitors/{id}/heartbeat": {
      "post": {
        "summary": "Rotate heartbeat secret",
        "operationId": "post_monitors_id_heartbeat",
        "tags": [
          "monitors"
        ],
        "description": "Required scope: write. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {}
              }
            }
          }
        }
      }
    },
    "/heartbeat/{token}": {
      "get": {
        "summary": "Record heartbeat",
        "operationId": "get_heartbeat_token",
        "tags": [
          "heartbeat"
        ],
        "description": "Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "security": [],
        "parameters": [
          {
            "in": "path",
            "name": "token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "post": {
        "summary": "Record heartbeat",
        "operationId": "post_heartbeat_token",
        "tags": [
          "heartbeat"
        ],
        "description": "Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "security": [],
        "parameters": [
          {
            "in": "path",
            "name": "token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/pages/render-preview": {
      "post": {
        "summary": "Render unsaved draft with public template without saving",
        "operationId": "post_pages_render_preview",
        "tags": [
          "pages"
        ],
        "description": "Required scope: write. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "slug": {
                    "type": "string"
                  },
                  "draft": {
                    "type": "object",
                    "properties": {
                      "title": {
                        "$ref": "#/components/schemas/Localized"
                      },
                      "description": {
                        "$ref": "#/components/schemas/Localized"
                      },
                      "color": {
                        "type": "string",
                        "pattern": "^#[a-fA-F0-9]{6}$"
                      },
                      "theme": {
                        "enum": [
                          "light",
                          "dark",
                          "system"
                        ]
                      },
                      "hide_brand": {
                        "type": "boolean"
                      },
                      "logo": {
                        "type": "string"
                      },
                      "favicon": {
                        "type": "string"
                      },
                      "blocks": {
                        "type": "array",
                        "maxItems": 30,
                        "items": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string"
                            },
                            "type": {
                              "enum": [
                                "header",
                                "components",
                                "uptime",
                                "metrics",
                                "incidents",
                                "maintenance",
                                "text",
                                "footer"
                              ]
                            },
                            "title": {
                              "$ref": "#/components/schemas/Localized"
                            },
                            "text": {
                              "$ref": "#/components/schemas/Localized"
                            },
                            "monitor_ids": {
                              "type": "array",
                              "items": {
                                "type": "string",
                                "format": "uuid"
                              }
                            }
                          },
                          "required": [
                            "id",
                            "type"
                          ]
                        }
                      }
                    }
                  },
                  "locale": {
                    "enum": [
                      "de",
                      "en"
                    ]
                  }
                }
              }
            }
          }
        }
      }
    },
    "/pages/{id}/publish": {
      "post": {
        "summary": "Atomically publish saved draft",
        "operationId": "post_pages_id_publish",
        "tags": [
          "pages"
        ],
        "description": "Required scope: write. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {}
              }
            }
          }
        }
      }
    },
    "/pages/{id}/preview": {
      "get": {
        "summary": "Preview draft with live data",
        "operationId": "get_pages_id_preview",
        "tags": [
          "pages"
        ],
        "description": "Required scope: read. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/pages/{id}/domains": {
      "get": {
        "summary": "Get page domains",
        "operationId": "get_pages_id_domains",
        "tags": [
          "pages"
        ],
        "description": "Required scope: read. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "post": {
        "summary": "Add custom domain and return DNS instructions",
        "operationId": "post_pages_id_domains",
        "tags": [
          "pages"
        ],
        "description": "Required scope: admin. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "hostname": {
                    "type": "string"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/pages/{id}/readers": {
      "get": {
        "summary": "Get page readers",
        "operationId": "get_pages_id_readers",
        "tags": [
          "pages"
        ],
        "description": "Required scope: read. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/pages/{id}/analytics": {
      "get": {
        "summary": "Get page analytics",
        "operationId": "get_pages_id_analytics",
        "tags": [
          "pages"
        ],
        "description": "Required scope: read. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/domains/{id}/verify": {
      "post": {
        "summary": "Verify TXT ownership",
        "operationId": "post_domains_id_verify",
        "tags": [
          "domains"
        ],
        "description": "Required scope: admin. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {}
              }
            }
          }
        }
      }
    },
    "/domains/{id}": {
      "delete": {
        "summary": "Remove domain",
        "operationId": "delete_domains_id",
        "tags": [
          "domains"
        ],
        "description": "Required scope: admin. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/pages/{id}/readers/{user_id}": {
      "delete": {
        "summary": "Revoke page reader",
        "operationId": "delete_pages_id_readers_user_id",
        "tags": [
          "pages"
        ],
        "description": "Required scope: admin. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "user_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/public/{slug}": {
      "get": {
        "summary": "Published snapshot; private pages require invited account",
        "operationId": "get_public_slug",
        "tags": [
          "public"
        ],
        "description": "Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "security": [],
        "parameters": [
          {
            "in": "path",
            "name": "slug",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/public/{slug}/subscribe": {
      "post": {
        "summary": "Request double opt-in subscription; 503 without SMTP",
        "operationId": "post_public_slug_subscribe",
        "tags": [
          "public"
        ],
        "description": "Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "security": [],
        "parameters": [
          {
            "in": "path",
            "name": "slug",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "email": {
                    "type": "string"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/incidents/{id}": {
      "get": {
        "summary": "Get incident and updates",
        "operationId": "get_incidents_id",
        "tags": [
          "incidents"
        ],
        "description": "Required scope: read. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/incidents/{id}/updates": {
      "post": {
        "summary": "Publish incident update",
        "operationId": "post_incidents_id_updates",
        "tags": [
          "incidents"
        ],
        "description": "Required scope: write. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "state": {
                    "enum": [
                      "investigating",
                      "identified",
                      "monitoring",
                      "resolved"
                    ]
                  },
                  "message": {
                    "$ref": "#/components/schemas/Localized"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/maintenances/{id}": {
      "delete": {
        "summary": "Remove maintenance",
        "operationId": "delete_maintenances_id",
        "tags": [
          "maintenances"
        ],
        "description": "Required scope: write. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/team/invitations": {
      "post": {
        "summary": "Invite member or page reader; returns manual link without SMTP",
        "operationId": "post_team_invitations",
        "tags": [
          "team"
        ],
        "description": "Required scope: admin. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "email": {
                    "type": "string"
                  },
                  "role": {
                    "enum": [
                      "admin",
                      "editor",
                      "viewer",
                      "reader"
                    ]
                  },
                  "page_id": {
                    "type": "string"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/team/invitations/{id}": {
      "delete": {
        "summary": "Revoke invitation",
        "operationId": "delete_team_invitations_id",
        "tags": [
          "team"
        ],
        "description": "Required scope: admin. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/team/members/{id}": {
      "patch": {
        "summary": "Update or remove member",
        "operationId": "patch_team_members_id",
        "tags": [
          "team"
        ],
        "description": "Required scope: admin. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "role": {
                    "enum": [
                      "admin",
                      "editor",
                      "viewer",
                      "remove"
                    ]
                  }
                }
              }
            }
          }
        }
      }
    },
    "/invitations/accept": {
      "post": {
        "summary": "Accept invitation as matching account",
        "operationId": "post_invitations_accept",
        "tags": [
          "invitations"
        ],
        "description": "Required scope: read. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "token": {
                    "type": "string"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/keys/{id}": {
      "delete": {
        "summary": "Revoke API key",
        "operationId": "delete_keys_id",
        "tags": [
          "keys"
        ],
        "description": "Required scope: admin. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/channels/{id}": {
      "delete": {
        "summary": "Delete channel",
        "operationId": "delete_channels_id",
        "tags": [
          "channels"
        ],
        "description": "Required scope: admin. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/deliveries/{id}/retry": {
      "post": {
        "summary": "Explicitly retry failed delivery",
        "operationId": "post_deliveries_id_retry",
        "tags": [
          "deliveries"
        ],
        "description": "Required scope: admin. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {}
              }
            }
          }
        }
      }
    },
    "/audit": {
      "get": {
        "summary": "Audit history",
        "operationId": "get_audit",
        "tags": [
          "audit"
        ],
        "description": "Required scope: admin. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [
          {
            "in": "query",
            "name": "page",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          },
          {
            "in": "query",
            "name": "per_page",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 20
            }
          }
        ]
      }
    },
    "/export": {
      "get": {
        "summary": "Export team data excluding secrets",
        "operationId": "get_export",
        "tags": [
          "export"
        ],
        "description": "Required scope: admin. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": []
      }
    },
    "/reports": {
      "get": {
        "summary": "Monthly SLA report",
        "operationId": "get_reports",
        "tags": [
          "reports"
        ],
        "description": "Required scope: read. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [
          {
            "in": "query",
            "name": "month",
            "schema": {
              "type": "string",
              "pattern": "^\\d{4}-\\d{2}$"
            }
          }
        ]
      }
    },
    "/operator/teams/{id}": {
      "patch": {
        "summary": "Set quotas and suspension; operator session + 2FA required",
        "operationId": "patch_operator_teams_id",
        "tags": [
          "operator"
        ],
        "description": "Required scope: admin. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "member_limit": {
                    "type": "integer"
                  },
                  "monitor_limit": {
                    "type": "integer"
                  },
                  "page_limit": {
                    "type": "integer"
                  },
                  "suspended": {
                    "type": "boolean"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/uploads": {
      "post": {
        "summary": "Upload re-encoded branding image, maximum 2 MB",
        "operationId": "post_uploads",
        "tags": [
          "uploads"
        ],
        "description": "Required scope: write. Responses use {data: ...}; errors use {error: {code, message}}.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {}
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient access"
          },
          "422": {
            "description": "Validation error"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "required": [
                  "file"
                ],
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}
