{
  "openapi": "3.1.0",
  "info": {
    "title": "Kovira Public API",
    "version": "1.0.0",
    "summary": "Authenticated customer integration API.",
    "description": "The public Kovira API at https://api.kovira.app/v1. Customer REST requires a tenant-bound, scoped Bearer API key on every operation, including discovery and health. Create a key in Workspace Settings > API Keys. Requests and responses use snake_case fields, UUID resource identifiers and RFC 3339 UTC timestamps. Successful REST responses use data, with meta.next_cursor, meta.has_more and meta.total_count for cursor pages. Errors use error.code and error.message. List limits default to 25 and are capped at 100; keys are rate limited to 60 requests per minute. Respect Retry-After. Send application/json for writes (1 MiB maximum), Idempotency-Key for retriable creates, and If-Match from a fresh GET for updates. The reference at https://api.kovira.app/docs includes schemas, examples and an interactive request builder. SCIM follows RFC 7644 and uses its own bearer credential and protocol envelopes. Provider callbacks require provider signatures. Calendar feed URLs carry a secret capability token.",
    "contact": {
      "name": "Kovira API Support",
      "url": "https://kovira.app/contact"
    },
    "license": {
      "name": "Proprietary",
      "url": "https://kovira.app/terms"
    }
  },
  "servers": [
    {
      "url": "https://api.kovira.app/v1",
      "description": "Production"
    }
  ],
  "externalDocs": {
    "description": "Public API handbook and interactive reference",
    "url": "https://api.kovira.app/docs"
  },
  "security": [
    {
      "publicApiKey": []
    }
  ],
  "tags": [
    {
      "name": "Discovery",
      "description": "Version and documentation discovery."
    },
    {
      "name": "Platform",
      "description": "Authenticated API liveness."
    },
    {
      "name": "Incidents",
      "description": "Incident records and lifecycle transitions."
    },
    {
      "name": "Configuration items",
      "description": "Configuration management database records."
    },
    {
      "name": "Layer 2",
      "description": "Observed Layer 2 network inventory and anomalies."
    },
    {
      "name": "SCIM 2.0",
      "description": "RFC 7644 identity discovery and provisioning."
    },
    {
      "name": "Integrations",
      "description": "Provider-authenticated inbound callbacks."
    },
    {
      "name": "Calendar",
      "description": "High-entropy token-authenticated iCalendar feeds."
    }
  ],
  "paths": {
    "/": {
      "get": {
        "tags": [
          "Discovery"
        ],
        "operationId": "discoverApi",
        "summary": "Discover the v1 API",
        "security": [
          {
            "publicApiKey": []
          }
        ],
        "responses": {
          "200": {
            "description": "API version and canonical documentation links.",
            "headers": {
              "Kovira-API-Version": {
                "$ref": "#/components/headers/ApiVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DiscoveryEnvelope"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/Unavailable"
          }
        },
        "x-visibility": "public",
        "parameters": [
          {
            "$ref": "#/components/parameters/RequestId"
          }
        ]
      }
    },
    "/platform/health": {
      "get": {
        "tags": [
          "Platform"
        ],
        "operationId": "getPlatformHealth",
        "summary": "Check API liveness",
        "security": [
          {
            "publicApiKey": []
          }
        ],
        "responses": {
          "200": {
            "description": "The public API process is accepting requests.",
            "headers": {
              "Kovira-API-Version": {
                "$ref": "#/components/headers/ApiVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HealthEnvelope"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/Unavailable"
          }
        },
        "x-visibility": "public",
        "parameters": [
          {
            "$ref": "#/components/parameters/RequestId"
          }
        ]
      }
    },
    "/incidents": {
      "get": {
        "tags": [
          "Incidents"
        ],
        "operationId": "listIncidents",
        "summary": "List incidents",
        "description": "Ordered by `(created_at, id)` descending. Search matches literal title/name text; customer_id and assignee_id accept UUID or null for unassigned. updated_after is exclusive. Preserve filters while following cursors.",
        "parameters": [
          {
            "$ref": "#/components/parameters/Limit100"
          },
          {
            "$ref": "#/components/parameters/Cursor"
          },
          {
            "in": "query",
            "name": "status",
            "schema": {
              "$ref": "#/components/schemas/IncidentStatus"
            }
          },
          {
            "in": "query",
            "name": "priority",
            "schema": {
              "type": "string",
              "enum": [
                "p1",
                "p2",
                "p3",
                "p4"
              ]
            }
          },
          {
            "in": "query",
            "name": "search",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            }
          },
          {
            "in": "query",
            "name": "updated_after",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "in": "query",
            "name": "customer_id",
            "schema": {
              "oneOf": [
                {
                  "type": "string",
                  "format": "uuid"
                },
                {
                  "type": "string",
                  "const": "null"
                }
              ]
            }
          },
          {
            "in": "query",
            "name": "assignee_id",
            "schema": {
              "oneOf": [
                {
                  "type": "string",
                  "format": "uuid"
                },
                {
                  "type": "string",
                  "const": "null"
                }
              ]
            }
          },
          {
            "$ref": "#/components/parameters/RequestId"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/IncidentList"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/Unavailable"
          }
        },
        "x-visibility": "public",
        "x-required-scopes": [
          "incidents:read"
        ]
      },
      "post": {
        "tags": [
          "Incidents"
        ],
        "operationId": "createIncident",
        "summary": "Create an incident",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IncidentCreate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Incident created.",
            "headers": {
              "Kovira-API-Version": {
                "$ref": "#/components/headers/ApiVersion"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IncidentMutationEnvelope"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "415": {
            "$ref": "#/components/responses/UnsupportedMediaType"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/Unavailable"
          }
        },
        "parameters": [
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          },
          {
            "$ref": "#/components/parameters/RequestId"
          }
        ],
        "x-visibility": "public",
        "x-required-scopes": [
          "incidents:write"
        ]
      }
    },
    "/incidents/{id}": {
      "parameters": [
        {
          "$ref": "#/components/parameters/ResourceId"
        }
      ],
      "get": {
        "tags": [
          "Incidents"
        ],
        "operationId": "getIncident",
        "summary": "Get an incident",
        "responses": {
          "200": {
            "description": "Incident found.",
            "headers": {
              "Kovira-API-Version": {
                "$ref": "#/components/headers/ApiVersion"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Incident"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/Unavailable"
          }
        },
        "x-visibility": "public",
        "x-required-scopes": [
          "incidents:read"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/RequestId"
          }
        ]
      },
      "patch": {
        "tags": [
          "Incidents"
        ],
        "operationId": "updateIncident",
        "summary": "Update incident fields",
        "description": "Lifecycle status changes use `/incidents/{id}/transitions`.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IncidentUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Incident updated.",
            "headers": {
              "Kovira-API-Version": {
                "$ref": "#/components/headers/ApiVersion"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IncidentMutationEnvelope"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "412": {
            "$ref": "#/components/responses/PreconditionFailed"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "415": {
            "$ref": "#/components/responses/UnsupportedMediaType"
          },
          "428": {
            "$ref": "#/components/responses/PreconditionRequired"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/Unavailable"
          }
        },
        "parameters": [
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          },
          {
            "$ref": "#/components/parameters/IfMatch"
          },
          {
            "$ref": "#/components/parameters/RequestId"
          }
        ],
        "x-visibility": "public",
        "x-required-scopes": [
          "incidents:write"
        ]
      }
    },
    "/incidents/{id}/transitions": {
      "parameters": [
        {
          "$ref": "#/components/parameters/ResourceId"
        }
      ],
      "post": {
        "tags": [
          "Incidents"
        ],
        "operationId": "transitionIncident",
        "summary": "Transition an incident",
        "description": "Applies the server-enforced incident lifecycle state machine.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IncidentTransition"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Transition applied, or the requested state was already current.",
            "headers": {
              "Kovira-API-Version": {
                "$ref": "#/components/headers/ApiVersion"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IncidentMutationEnvelope"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "412": {
            "$ref": "#/components/responses/PreconditionFailed"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "415": {
            "$ref": "#/components/responses/UnsupportedMediaType"
          },
          "428": {
            "$ref": "#/components/responses/PreconditionRequired"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/Unavailable"
          }
        },
        "parameters": [
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          },
          {
            "$ref": "#/components/parameters/IfMatch"
          },
          {
            "$ref": "#/components/parameters/RequestId"
          }
        ],
        "x-visibility": "public",
        "x-required-scopes": [
          "incidents:write"
        ]
      }
    },
    "/cis": {
      "get": {
        "tags": [
          "Configuration items"
        ],
        "operationId": "listConfigurationItems",
        "summary": "List configuration items",
        "description": "Ordered by `(created_at, id)` descending across the CMDB projection. Search matches literal title/name text; customer_id and assignee_id accept UUID or null for unassigned. updated_after is exclusive. Preserve filters while following cursors.",
        "parameters": [
          {
            "$ref": "#/components/parameters/Limit100"
          },
          {
            "$ref": "#/components/parameters/Cursor"
          },
          {
            "in": "query",
            "name": "type",
            "schema": {
              "$ref": "#/components/schemas/CIType"
            }
          },
          {
            "in": "query",
            "name": "status",
            "schema": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_]{0,63}$"
            }
          },
          {
            "in": "query",
            "name": "search",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            }
          },
          {
            "in": "query",
            "name": "updated_after",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "in": "query",
            "name": "customer_id",
            "schema": {
              "oneOf": [
                {
                  "type": "string",
                  "format": "uuid"
                },
                {
                  "type": "string",
                  "const": "null"
                }
              ]
            }
          },
          {
            "$ref": "#/components/parameters/RequestId"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/CIList"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/Unavailable"
          }
        },
        "x-visibility": "public",
        "x-required-scopes": [
          "cis:read"
        ]
      },
      "post": {
        "tags": [
          "Configuration items"
        ],
        "operationId": "createConfigurationItem",
        "summary": "Create a configuration item",
        "description": "Integration-managed, secret-bearing, and view-backed CI types are read-only.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CICreate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "CI created.",
            "headers": {
              "Kovira-API-Version": {
                "$ref": "#/components/headers/ApiVersion"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CIMutationEnvelope"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "415": {
            "$ref": "#/components/responses/UnsupportedMediaType"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/Unavailable"
          }
        },
        "parameters": [
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          },
          {
            "$ref": "#/components/parameters/RequestId"
          }
        ],
        "x-visibility": "public",
        "x-required-scopes": [
          "cis:write"
        ]
      }
    },
    "/cis/{id}": {
      "parameters": [
        {
          "$ref": "#/components/parameters/ResourceId"
        }
      ],
      "get": {
        "tags": [
          "Configuration items"
        ],
        "operationId": "getConfigurationItem",
        "summary": "Get a configuration item",
        "responses": {
          "200": {
            "description": "CI found. Type-specific safe fields may also be present.",
            "headers": {
              "Kovira-API-Version": {
                "$ref": "#/components/headers/ApiVersion"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CI"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/Unavailable"
          }
        },
        "x-visibility": "public",
        "x-required-scopes": [
          "cis:read"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/RequestId"
          }
        ]
      },
      "patch": {
        "tags": [
          "Configuration items"
        ],
        "operationId": "updateConfigurationItem",
        "summary": "Update a configuration item",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CIUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "CI updated.",
            "headers": {
              "Kovira-API-Version": {
                "$ref": "#/components/headers/ApiVersion"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CIMutationEnvelope"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "412": {
            "$ref": "#/components/responses/PreconditionFailed"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "415": {
            "$ref": "#/components/responses/UnsupportedMediaType"
          },
          "428": {
            "$ref": "#/components/responses/PreconditionRequired"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/Unavailable"
          }
        },
        "parameters": [
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          },
          {
            "$ref": "#/components/parameters/IfMatch"
          },
          {
            "$ref": "#/components/parameters/RequestId"
          }
        ],
        "x-visibility": "public",
        "x-required-scopes": [
          "cis:write"
        ]
      }
    },
    "/l2/transceivers": {
      "get": {
        "tags": [
          "Layer 2"
        ],
        "operationId": "listTransceivers",
        "summary": "List transceivers and latest lane 0 diagnostics",
        "parameters": [
          {
            "$ref": "#/components/parameters/Limit100"
          },
          {
            "$ref": "#/components/parameters/Cursor"
          },
          {
            "in": "query",
            "name": "form_factor",
            "schema": {
              "type": "string",
              "maxLength": 40
            }
          },
          {
            "in": "query",
            "name": "device_ci_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "$ref": "#/components/parameters/RequestId"
          }
        ],
        "responses": {
          "200": {
            "description": "Cursor-paginated transceivers.",
            "headers": {
              "Kovira-API-Version": {
                "$ref": "#/components/headers/ApiVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/PageEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/Transceiver"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/Unavailable"
          }
        },
        "x-visibility": "public",
        "x-required-scopes": [
          "l2:read"
        ]
      }
    },
    "/l2/anomalies": {
      "get": {
        "tags": [
          "Layer 2"
        ],
        "operationId": "listNetworkAnomalies",
        "summary": "List detected network anomalies",
        "parameters": [
          {
            "$ref": "#/components/parameters/Limit100"
          },
          {
            "$ref": "#/components/parameters/Cursor"
          },
          {
            "in": "query",
            "name": "status",
            "schema": {
              "type": "string",
              "enum": [
                "open",
                "all"
              ],
              "default": "open"
            }
          },
          {
            "in": "query",
            "name": "severity",
            "schema": {
              "type": "string",
              "enum": [
                "critical",
                "warning",
                "info"
              ]
            }
          },
          {
            "in": "query",
            "name": "anomaly_type",
            "schema": {
              "$ref": "#/components/schemas/NetworkAnomalyType"
            }
          },
          {
            "in": "query",
            "name": "ci_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "$ref": "#/components/parameters/RequestId"
          }
        ],
        "responses": {
          "200": {
            "description": "Cursor-paginated anomalies.",
            "headers": {
              "Kovira-API-Version": {
                "$ref": "#/components/headers/ApiVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/PageEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/NetworkAnomaly"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/Unavailable"
          }
        },
        "x-visibility": "public",
        "x-required-scopes": [
          "l2:read"
        ]
      }
    },
    "/l2/cdp": {
      "get": {
        "tags": [
          "Layer 2"
        ],
        "operationId": "listCdpNeighbours",
        "summary": "List CDP neighbour observations",
        "parameters": [
          {
            "$ref": "#/components/parameters/Limit100"
          },
          {
            "$ref": "#/components/parameters/Cursor"
          },
          {
            "in": "query",
            "name": "local_switch_ci_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "in": "query",
            "name": "neighbor_device_id",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          },
          {
            "$ref": "#/components/parameters/RequestId"
          }
        ],
        "responses": {
          "200": {
            "description": "Cursor-paginated CDP observations.",
            "headers": {
              "Kovira-API-Version": {
                "$ref": "#/components/headers/ApiVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/PageEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/CdpNeighbour"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/Unavailable"
          }
        },
        "x-visibility": "public",
        "x-required-scopes": [
          "l2:read"
        ]
      }
    },
    "/problems": {
      "get": {
        "tags": [
          "Problems"
        ],
        "operationId": "listProblems",
        "summary": "List problems",
        "description": "Requires `problems:read`. Lists are ordered by (created_at, id) descending. Search matches literal title/name text; customer_id and assignee_id accept UUID or null for unassigned. updated_after is exclusive. Preserve filters while following cursors.",
        "parameters": [
          {
            "$ref": "#/components/parameters/Limit100"
          },
          {
            "$ref": "#/components/parameters/Cursor"
          },
          {
            "in": "query",
            "name": "status",
            "schema": {
              "type": "string",
              "enum": [
                "analyzing",
                "workaround_identified",
                "root_cause_identified",
                "resolved",
                "closed"
              ]
            }
          },
          {
            "in": "query",
            "name": "search",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            }
          },
          {
            "in": "query",
            "name": "updated_after",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "in": "query",
            "name": "customer_id",
            "schema": {
              "oneOf": [
                {
                  "type": "string",
                  "format": "uuid"
                },
                {
                  "type": "string",
                  "const": "null"
                }
              ]
            }
          },
          {
            "in": "query",
            "name": "assignee_id",
            "schema": {
              "oneOf": [
                {
                  "type": "string",
                  "format": "uuid"
                },
                {
                  "type": "string",
                  "const": "null"
                }
              ]
            }
          },
          {
            "$ref": "#/components/parameters/RequestId"
          }
        ],
        "responses": {
          "200": {
            "description": "Resource response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "meta"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Problem"
                      }
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  }
                }
              }
            },
            "headers": {}
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/Unavailable"
          }
        },
        "x-visibility": "public",
        "x-required-scopes": [
          "problems:read"
        ]
      },
      "post": {
        "tags": [
          "Problems"
        ],
        "operationId": "post__problems",
        "summary": "Create a problem",
        "description": "Requires problems:write and an active workspace license.",
        "parameters": [
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          },
          {
            "$ref": "#/components/parameters/RequestId"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProblemCreate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created.",
            "headers": {
              "Kovira-API-Version": {
                "$ref": "#/components/headers/ApiVersion"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Location": {
                "description": "Canonical resource URL.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Problem"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "415": {
            "$ref": "#/components/responses/UnsupportedMediaType"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/Unavailable"
          }
        },
        "x-visibility": "public",
        "x-required-scopes": [
          "problems:write"
        ]
      }
    },
    "/problems/{id}": {
      "get": {
        "tags": [
          "Problems"
        ],
        "operationId": "getProblem",
        "summary": "Get a problem",
        "description": "Requires `problems:read`. Lists are ordered by (created_at, id) descending.",
        "parameters": [
          {
            "$ref": "#/components/parameters/ResourceId"
          },
          {
            "$ref": "#/components/parameters/RequestId"
          }
        ],
        "responses": {
          "200": {
            "description": "Resource response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Problem"
                    }
                  }
                }
              }
            },
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/Unavailable"
          }
        },
        "x-visibility": "public",
        "x-required-scopes": [
          "problems:read"
        ]
      },
      "patch": {
        "tags": [
          "Problems"
        ],
        "operationId": "patch__problems_id_",
        "summary": "Update a problem",
        "description": "Requires problems:write and an active workspace license.",
        "parameters": [
          {
            "$ref": "#/components/parameters/ResourceId"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          },
          {
            "$ref": "#/components/parameters/IfMatch"
          },
          {
            "$ref": "#/components/parameters/RequestId"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProblemUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Resource response.",
            "headers": {
              "Kovira-API-Version": {
                "$ref": "#/components/headers/ApiVersion"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Problem"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "412": {
            "$ref": "#/components/responses/PreconditionFailed"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "415": {
            "$ref": "#/components/responses/UnsupportedMediaType"
          },
          "428": {
            "$ref": "#/components/responses/PreconditionRequired"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/Unavailable"
          }
        },
        "x-visibility": "public",
        "x-required-scopes": [
          "problems:write"
        ]
      }
    },
    "/changes": {
      "get": {
        "tags": [
          "Changes"
        ],
        "operationId": "listChanges",
        "summary": "List changes",
        "description": "Requires `changes:read`. Lists are ordered by (created_at, id) descending. Search matches literal title/name text; customer_id and assignee_id accept UUID or null for unassigned. updated_after is exclusive. Preserve filters while following cursors.",
        "parameters": [
          {
            "$ref": "#/components/parameters/Limit100"
          },
          {
            "$ref": "#/components/parameters/Cursor"
          },
          {
            "in": "query",
            "name": "status",
            "schema": {
              "type": "string",
              "enum": [
                "draft",
                "submitted",
                "approved",
                "scheduled",
                "implementing",
                "review",
                "closed",
                "cancelled"
              ]
            }
          },
          {
            "in": "query",
            "name": "search",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            }
          },
          {
            "in": "query",
            "name": "updated_after",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "in": "query",
            "name": "customer_id",
            "schema": {
              "oneOf": [
                {
                  "type": "string",
                  "format": "uuid"
                },
                {
                  "type": "string",
                  "const": "null"
                }
              ]
            }
          },
          {
            "in": "query",
            "name": "assignee_id",
            "schema": {
              "oneOf": [
                {
                  "type": "string",
                  "format": "uuid"
                },
                {
                  "type": "string",
                  "const": "null"
                }
              ]
            }
          },
          {
            "$ref": "#/components/parameters/RequestId"
          }
        ],
        "responses": {
          "200": {
            "description": "Resource response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "meta"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Change"
                      }
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  }
                }
              }
            },
            "headers": {}
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/Unavailable"
          }
        },
        "x-visibility": "public",
        "x-required-scopes": [
          "changes:read"
        ]
      },
      "post": {
        "tags": [
          "Changes"
        ],
        "operationId": "post__changes",
        "summary": "Create a change",
        "description": "Requires changes:write and an active workspace license. Submitted change content is immutable.",
        "parameters": [
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          },
          {
            "$ref": "#/components/parameters/RequestId"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChangeCreate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created.",
            "headers": {
              "Kovira-API-Version": {
                "$ref": "#/components/headers/ApiVersion"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Location": {
                "description": "Canonical resource URL.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Change"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "415": {
            "$ref": "#/components/responses/UnsupportedMediaType"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/Unavailable"
          }
        },
        "x-visibility": "public",
        "x-required-scopes": [
          "changes:write"
        ]
      }
    },
    "/changes/{id}": {
      "get": {
        "tags": [
          "Changes"
        ],
        "operationId": "getChange",
        "summary": "Get a change",
        "description": "Requires `changes:read`. Lists are ordered by (created_at, id) descending.",
        "parameters": [
          {
            "$ref": "#/components/parameters/ResourceId"
          },
          {
            "$ref": "#/components/parameters/RequestId"
          }
        ],
        "responses": {
          "200": {
            "description": "Resource response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Change"
                    }
                  }
                }
              }
            },
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/Unavailable"
          }
        },
        "x-visibility": "public",
        "x-required-scopes": [
          "changes:read"
        ]
      },
      "patch": {
        "tags": [
          "Changes"
        ],
        "operationId": "patch__changes_id_",
        "summary": "Update a change",
        "description": "Requires changes:write and an active workspace license. Submitted change content is immutable.",
        "parameters": [
          {
            "$ref": "#/components/parameters/ResourceId"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          },
          {
            "$ref": "#/components/parameters/IfMatch"
          },
          {
            "$ref": "#/components/parameters/RequestId"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChangeUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Resource response.",
            "headers": {
              "Kovira-API-Version": {
                "$ref": "#/components/headers/ApiVersion"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Change"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "412": {
            "$ref": "#/components/responses/PreconditionFailed"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "415": {
            "$ref": "#/components/responses/UnsupportedMediaType"
          },
          "428": {
            "$ref": "#/components/responses/PreconditionRequired"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/Unavailable"
          }
        },
        "x-visibility": "public",
        "x-required-scopes": [
          "changes:write"
        ]
      }
    },
    "/requests": {
      "get": {
        "tags": [
          "ServiceRequests"
        ],
        "operationId": "listServiceRequests",
        "summary": "List service requests",
        "description": "Requires `requests:read`. Lists are ordered by (created_at, id) descending. Search matches literal title/name text; customer_id and assignee_id accept UUID or null for unassigned. updated_after is exclusive. Preserve filters while following cursors.",
        "parameters": [
          {
            "$ref": "#/components/parameters/Limit100"
          },
          {
            "$ref": "#/components/parameters/Cursor"
          },
          {
            "in": "query",
            "name": "status",
            "schema": {
              "type": "string",
              "enum": [
                "submitted",
                "pending_approval",
                "approved",
                "in_progress",
                "completed",
                "rejected",
                "cancelled",
                "new",
                "in_fulfillment",
                "closed"
              ]
            }
          },
          {
            "in": "query",
            "name": "search",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            }
          },
          {
            "in": "query",
            "name": "updated_after",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "in": "query",
            "name": "customer_id",
            "schema": {
              "oneOf": [
                {
                  "type": "string",
                  "format": "uuid"
                },
                {
                  "type": "string",
                  "const": "null"
                }
              ]
            }
          },
          {
            "in": "query",
            "name": "assignee_id",
            "schema": {
              "oneOf": [
                {
                  "type": "string",
                  "format": "uuid"
                },
                {
                  "type": "string",
                  "const": "null"
                }
              ]
            }
          },
          {
            "$ref": "#/components/parameters/RequestId"
          }
        ],
        "responses": {
          "200": {
            "description": "Resource response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "meta"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ServiceRequest"
                      }
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  }
                }
              }
            },
            "headers": {}
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/Unavailable"
          }
        },
        "x-visibility": "public",
        "x-required-scopes": [
          "requests:read"
        ]
      },
      "post": {
        "tags": [
          "Requests"
        ],
        "operationId": "post__requests",
        "summary": "Create a service request",
        "description": "Requires requests:write and an active workspace license. Request content under approval is immutable.",
        "parameters": [
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          },
          {
            "$ref": "#/components/parameters/RequestId"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RequestCreate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created.",
            "headers": {
              "Kovira-API-Version": {
                "$ref": "#/components/headers/ApiVersion"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Location": {
                "description": "Canonical resource URL.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ServiceRequest"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "415": {
            "$ref": "#/components/responses/UnsupportedMediaType"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/Unavailable"
          }
        },
        "x-visibility": "public",
        "x-required-scopes": [
          "requests:write"
        ]
      }
    },
    "/requests/{id}": {
      "get": {
        "tags": [
          "ServiceRequests"
        ],
        "operationId": "getServiceRequest",
        "summary": "Get a service request",
        "description": "Requires `requests:read`. Lists are ordered by (created_at, id) descending.",
        "parameters": [
          {
            "$ref": "#/components/parameters/ResourceId"
          },
          {
            "$ref": "#/components/parameters/RequestId"
          }
        ],
        "responses": {
          "200": {
            "description": "Resource response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ServiceRequest"
                    }
                  }
                }
              }
            },
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/Unavailable"
          }
        },
        "x-visibility": "public",
        "x-required-scopes": [
          "requests:read"
        ]
      },
      "patch": {
        "tags": [
          "Requests"
        ],
        "operationId": "patch__requests_id_",
        "summary": "Update a service request",
        "description": "Requires requests:write and an active workspace license. Request content under approval is immutable.",
        "parameters": [
          {
            "$ref": "#/components/parameters/ResourceId"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          },
          {
            "$ref": "#/components/parameters/IfMatch"
          },
          {
            "$ref": "#/components/parameters/RequestId"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RequestUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Resource response.",
            "headers": {
              "Kovira-API-Version": {
                "$ref": "#/components/headers/ApiVersion"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ServiceRequest"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "412": {
            "$ref": "#/components/responses/PreconditionFailed"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "415": {
            "$ref": "#/components/responses/UnsupportedMediaType"
          },
          "428": {
            "$ref": "#/components/responses/PreconditionRequired"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/Unavailable"
          }
        },
        "x-visibility": "public",
        "x-required-scopes": [
          "requests:write"
        ]
      }
    },
    "/customers": {
      "get": {
        "tags": [
          "Customers"
        ],
        "operationId": "listCustomers",
        "summary": "List customers",
        "description": "Requires `customers:read`. Lists are ordered by (created_at, id) descending. Archived customers are omitted by default; provide status=archived to include them. Search matches literal title/name text; customer_id and assignee_id accept UUID or null for unassigned. updated_after is exclusive. Preserve filters while following cursors.",
        "parameters": [
          {
            "$ref": "#/components/parameters/Limit100"
          },
          {
            "$ref": "#/components/parameters/Cursor"
          },
          {
            "in": "query",
            "name": "status",
            "schema": {
              "type": "string",
              "enum": [
                "active",
                "inactive",
                "archived"
              ]
            }
          },
          {
            "in": "query",
            "name": "search",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            }
          },
          {
            "in": "query",
            "name": "updated_after",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "$ref": "#/components/parameters/RequestId"
          }
        ],
        "responses": {
          "200": {
            "description": "Resource response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "meta"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Customer"
                      }
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  }
                }
              }
            },
            "headers": {}
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/Unavailable"
          }
        },
        "x-visibility": "public",
        "x-required-scopes": [
          "customers:read"
        ]
      },
      "post": {
        "tags": [
          "Customers"
        ],
        "operationId": "post__customers",
        "summary": "Create a customer",
        "description": "Requires customers:write and an active workspace license.",
        "parameters": [
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          },
          {
            "$ref": "#/components/parameters/RequestId"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerCreate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created.",
            "headers": {
              "Kovira-API-Version": {
                "$ref": "#/components/headers/ApiVersion"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Location": {
                "description": "Canonical resource URL.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Customer"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "415": {
            "$ref": "#/components/responses/UnsupportedMediaType"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/Unavailable"
          }
        },
        "x-visibility": "public",
        "x-required-scopes": [
          "customers:write"
        ]
      }
    },
    "/customers/{id}": {
      "get": {
        "tags": [
          "Customers"
        ],
        "operationId": "getCustomer",
        "summary": "Get a customer",
        "description": "Requires `customers:read`. Lists are ordered by (created_at, id) descending.",
        "parameters": [
          {
            "$ref": "#/components/parameters/ResourceId"
          },
          {
            "$ref": "#/components/parameters/RequestId"
          }
        ],
        "responses": {
          "200": {
            "description": "Resource response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Customer"
                    }
                  }
                }
              }
            },
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/Unavailable"
          }
        },
        "x-visibility": "public",
        "x-required-scopes": [
          "customers:read"
        ]
      },
      "patch": {
        "tags": [
          "Customers"
        ],
        "operationId": "patch__customers_id_",
        "summary": "Update a customer",
        "description": "Requires customers:write and an active workspace license.",
        "parameters": [
          {
            "$ref": "#/components/parameters/ResourceId"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          },
          {
            "$ref": "#/components/parameters/IfMatch"
          },
          {
            "$ref": "#/components/parameters/RequestId"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Resource response.",
            "headers": {
              "Kovira-API-Version": {
                "$ref": "#/components/headers/ApiVersion"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Customer"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "412": {
            "$ref": "#/components/responses/PreconditionFailed"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "415": {
            "$ref": "#/components/responses/UnsupportedMediaType"
          },
          "428": {
            "$ref": "#/components/responses/PreconditionRequired"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/Unavailable"
          }
        },
        "x-visibility": "public",
        "x-required-scopes": [
          "customers:write"
        ]
      }
    },
    "/audit-entries": {
      "get": {
        "tags": [
          "Audit entries"
        ],
        "operationId": "listAuditEntrys",
        "summary": "List audit entries",
        "description": "Requires `audit:read`. Lists are ordered by (created_at, id) descending.",
        "parameters": [
          {
            "$ref": "#/components/parameters/Limit100"
          },
          {
            "$ref": "#/components/parameters/Cursor"
          },
          {
            "in": "query",
            "name": "action",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 100
            }
          },
          {
            "$ref": "#/components/parameters/RequestId"
          }
        ],
        "responses": {
          "200": {
            "description": "Resource response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "meta"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/AuditEntry"
                      }
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/Unavailable"
          }
        },
        "x-visibility": "public",
        "x-required-scopes": [
          "audit:read"
        ]
      }
    },
    "/incidents/{id}/comments": {
      "get": {
        "tags": [
          "Incidents"
        ],
        "operationId": "get__incidents_id_comments",
        "summary": "List incident comments",
        "description": "Requires incidents:read and an active workspace license. Private notes require the key issuer to have the corresponding update permission. Otherwise lists omit private notes and details return 404.",
        "parameters": [
          {
            "$ref": "#/components/parameters/ResourceId"
          },
          {
            "$ref": "#/components/parameters/Limit100"
          },
          {
            "$ref": "#/components/parameters/Cursor"
          },
          {
            "in": "query",
            "name": "is_private",
            "schema": {
              "type": "string",
              "enum": [
                "true",
                "false"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/RequestId"
          }
        ],
        "responses": {
          "200": {
            "description": "Resource response.",
            "headers": {
              "Kovira-API-Version": {
                "$ref": "#/components/headers/ApiVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "meta"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/IncidentComment"
                      }
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/Unavailable"
          }
        },
        "x-visibility": "public",
        "x-required-scopes": [
          "incidents:read"
        ]
      },
      "post": {
        "tags": [
          "Incidents"
        ],
        "operationId": "post__incidents_id_comments",
        "summary": "Create an incident comment",
        "description": "Requires incidents:write and an active workspace license. HTML is sanitized. Private notes require the key issuer to have the corresponding update permission.",
        "parameters": [
          {
            "$ref": "#/components/parameters/ResourceId"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          },
          {
            "$ref": "#/components/parameters/RequestId"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CommentCreate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created.",
            "headers": {
              "Kovira-API-Version": {
                "$ref": "#/components/headers/ApiVersion"
              },
              "Location": {
                "description": "Canonical resource URL.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/IncidentComment"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "415": {
            "$ref": "#/components/responses/UnsupportedMediaType"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/Unavailable"
          }
        },
        "x-visibility": "public",
        "x-required-scopes": [
          "incidents:write"
        ]
      }
    },
    "/scim/v2/ServiceProviderConfig": {
      "get": {
        "tags": [
          "SCIM 2.0"
        ],
        "operationId": "getScimServiceProviderConfig",
        "summary": "Get supported SCIM capabilities",
        "security": [
          {
            "scimBearer": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/ScimDocument"
          },
          "4XX": {
            "$ref": "#/components/responses/ScimError"
          },
          "5XX": {
            "$ref": "#/components/responses/ScimError"
          }
        },
        "x-visibility": "public"
      }
    },
    "/scim/v2/ResourceTypes": {
      "get": {
        "tags": [
          "SCIM 2.0"
        ],
        "operationId": "listScimResourceTypes",
        "summary": "List supported SCIM resource types",
        "security": [
          {
            "scimBearer": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/ScimDocument"
          },
          "4XX": {
            "$ref": "#/components/responses/ScimError"
          },
          "5XX": {
            "$ref": "#/components/responses/ScimError"
          }
        },
        "x-visibility": "public"
      }
    },
    "/scim/v2/Schemas": {
      "get": {
        "tags": [
          "SCIM 2.0"
        ],
        "operationId": "listScimSchemas",
        "summary": "List supported SCIM schemas",
        "security": [
          {
            "scimBearer": []
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/ScimDocument"
          },
          "4XX": {
            "$ref": "#/components/responses/ScimError"
          },
          "5XX": {
            "$ref": "#/components/responses/ScimError"
          }
        },
        "x-visibility": "public"
      }
    },
    "/scim/v2/Users": {
      "get": {
        "tags": [
          "SCIM 2.0"
        ],
        "operationId": "listScimUsers",
        "summary": "List or filter provisioned users",
        "security": [
          {
            "scimBearer": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/ScimFilter"
          },
          {
            "$ref": "#/components/parameters/ScimStartIndex"
          },
          {
            "$ref": "#/components/parameters/ScimCount"
          }
        ],
        "responses": {
          "200": {
            "description": "RFC 7644 ListResponse containing users.",
            "content": {
              "application/scim+json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/ScimListResponse"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "Resources": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/ScimUser"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/ScimError"
          },
          "5XX": {
            "$ref": "#/components/responses/ScimError"
          }
        },
        "x-visibility": "public"
      },
      "post": {
        "tags": [
          "SCIM 2.0"
        ],
        "operationId": "createScimUser",
        "summary": "Provision or link a user",
        "security": [
          {
            "scimBearer": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/scim+json": {
              "schema": {
                "$ref": "#/components/schemas/ScimUserWrite"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ScimUserWrite"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "User provisioned.",
            "content": {
              "application/scim+json": {
                "schema": {
                  "$ref": "#/components/schemas/ScimUser"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/ScimError"
          },
          "5XX": {
            "$ref": "#/components/responses/ScimError"
          }
        },
        "x-visibility": "public"
      }
    },
    "/scim/v2/Users/{id}": {
      "parameters": [
        {
          "$ref": "#/components/parameters/ResourceId"
        }
      ],
      "get": {
        "tags": [
          "SCIM 2.0"
        ],
        "operationId": "getScimUser",
        "summary": "Get a provisioned user",
        "security": [
          {
            "scimBearer": []
          }
        ],
        "responses": {
          "200": {
            "description": "User resource.",
            "content": {
              "application/scim+json": {
                "schema": {
                  "$ref": "#/components/schemas/ScimUser"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/ScimError"
          },
          "5XX": {
            "$ref": "#/components/responses/ScimError"
          }
        },
        "x-visibility": "public"
      },
      "put": {
        "tags": [
          "SCIM 2.0"
        ],
        "operationId": "replaceScimUser",
        "summary": "Replace a provisioned user",
        "security": [
          {
            "scimBearer": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/scim+json": {
              "schema": {
                "$ref": "#/components/schemas/ScimUserWrite"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated user.",
            "content": {
              "application/scim+json": {
                "schema": {
                  "$ref": "#/components/schemas/ScimUser"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/ScimError"
          },
          "5XX": {
            "$ref": "#/components/responses/ScimError"
          }
        },
        "x-visibility": "public"
      },
      "patch": {
        "tags": [
          "SCIM 2.0"
        ],
        "operationId": "patchScimUser",
        "summary": "Apply SCIM PatchOp operations to a user",
        "security": [
          {
            "scimBearer": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/scim+json": {
              "schema": {
                "$ref": "#/components/schemas/ScimPatchRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated user.",
            "content": {
              "application/scim+json": {
                "schema": {
                  "$ref": "#/components/schemas/ScimUser"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/ScimError"
          },
          "5XX": {
            "$ref": "#/components/responses/ScimError"
          }
        },
        "x-visibility": "public"
      },
      "delete": {
        "tags": [
          "SCIM 2.0"
        ],
        "operationId": "deactivateScimUser",
        "summary": "Deactivate a provisioned user",
        "security": [
          {
            "scimBearer": []
          }
        ],
        "responses": {
          "204": {
            "description": "User deactivated."
          },
          "4XX": {
            "$ref": "#/components/responses/ScimError"
          },
          "5XX": {
            "$ref": "#/components/responses/ScimError"
          }
        },
        "x-visibility": "public"
      }
    },
    "/scim/v2/Groups": {
      "get": {
        "tags": [
          "SCIM 2.0"
        ],
        "operationId": "listScimGroups",
        "summary": "List or filter provisioned groups",
        "security": [
          {
            "scimBearer": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/ScimFilter"
          },
          {
            "$ref": "#/components/parameters/ScimStartIndex"
          },
          {
            "$ref": "#/components/parameters/ScimCount"
          }
        ],
        "responses": {
          "200": {
            "description": "RFC 7644 ListResponse containing groups.",
            "content": {
              "application/scim+json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/ScimListResponse"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "Resources": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/ScimGroup"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/ScimError"
          },
          "5XX": {
            "$ref": "#/components/responses/ScimError"
          }
        },
        "x-visibility": "public"
      },
      "post": {
        "tags": [
          "SCIM 2.0"
        ],
        "operationId": "createScimGroup",
        "summary": "Provision a group",
        "security": [
          {
            "scimBearer": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/scim+json": {
              "schema": {
                "$ref": "#/components/schemas/ScimGroupWrite"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ScimGroupWrite"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Group provisioned.",
            "content": {
              "application/scim+json": {
                "schema": {
                  "$ref": "#/components/schemas/ScimGroup"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/ScimError"
          },
          "5XX": {
            "$ref": "#/components/responses/ScimError"
          }
        },
        "x-visibility": "public"
      }
    },
    "/scim/v2/Groups/{id}": {
      "parameters": [
        {
          "$ref": "#/components/parameters/ResourceId"
        }
      ],
      "get": {
        "tags": [
          "SCIM 2.0"
        ],
        "operationId": "getScimGroup",
        "summary": "Get a provisioned group",
        "security": [
          {
            "scimBearer": []
          }
        ],
        "responses": {
          "200": {
            "description": "Group resource.",
            "content": {
              "application/scim+json": {
                "schema": {
                  "$ref": "#/components/schemas/ScimGroup"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/ScimError"
          },
          "5XX": {
            "$ref": "#/components/responses/ScimError"
          }
        },
        "x-visibility": "public"
      },
      "put": {
        "tags": [
          "SCIM 2.0"
        ],
        "operationId": "replaceScimGroup",
        "summary": "Replace a group and optionally its membership",
        "security": [
          {
            "scimBearer": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/scim+json": {
              "schema": {
                "$ref": "#/components/schemas/ScimGroupWrite"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated group.",
            "content": {
              "application/scim+json": {
                "schema": {
                  "$ref": "#/components/schemas/ScimGroup"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/ScimError"
          },
          "5XX": {
            "$ref": "#/components/responses/ScimError"
          }
        },
        "x-visibility": "public"
      },
      "patch": {
        "tags": [
          "SCIM 2.0"
        ],
        "operationId": "patchScimGroup",
        "summary": "Apply SCIM PatchOp operations to a group",
        "security": [
          {
            "scimBearer": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/scim+json": {
              "schema": {
                "$ref": "#/components/schemas/ScimPatchRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated group.",
            "content": {
              "application/scim+json": {
                "schema": {
                  "$ref": "#/components/schemas/ScimGroup"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/ScimError"
          },
          "5XX": {
            "$ref": "#/components/responses/ScimError"
          }
        },
        "x-visibility": "public"
      },
      "delete": {
        "tags": [
          "SCIM 2.0"
        ],
        "operationId": "deleteScimGroup",
        "summary": "Remove a provisioned group",
        "security": [
          {
            "scimBearer": []
          }
        ],
        "responses": {
          "204": {
            "description": "Group removed."
          },
          "4XX": {
            "$ref": "#/components/responses/ScimError"
          },
          "5XX": {
            "$ref": "#/components/responses/ScimError"
          }
        },
        "x-visibility": "public"
      }
    },
    "/integrations/stripe/webhook": {
      "post": {
        "tags": [
          "Integrations"
        ],
        "operationId": "receiveStripeWebhook",
        "summary": "Receive a Stripe webhook delivery",
        "description": "The raw request body is verified before JSON processing. Duplicate Stripe event IDs are acknowledged without replaying side effects.",
        "security": [
          {
            "stripeSignature": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProviderJsonDocument"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Event received or already processed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StripeWebhookAck"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/ProviderError"
          },
          "413": {
            "$ref": "#/components/responses/ProviderError"
          },
          "429": {
            "$ref": "#/components/responses/ProviderError"
          },
          "500": {
            "$ref": "#/components/responses/ProviderError"
          }
        },
        "x-visibility": "public"
      }
    },
    "/integrations/slack/commands": {
      "parameters": [
        {
          "$ref": "#/components/parameters/SlackRequestTimestamp"
        }
      ],
      "post": {
        "tags": [
          "Integrations"
        ],
        "operationId": "receiveSlackCommand",
        "summary": "Receive a Slack slash command",
        "description": "Slack requires application-level failures to be represented by an ephemeral 200 response after signature verification.",
        "security": [
          {
            "slackSignature": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/SlackCommandRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Slack Block Kit or ephemeral command response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProviderJsonDocument"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/ProviderError"
          },
          "401": {
            "$ref": "#/components/responses/ProviderError"
          },
          "413": {
            "$ref": "#/components/responses/ProviderError"
          },
          "429": {
            "$ref": "#/components/responses/ProviderError"
          },
          "500": {
            "$ref": "#/components/responses/ProviderError"
          }
        },
        "x-visibility": "public"
      }
    },
    "/integrations/slack/interactions": {
      "parameters": [
        {
          "$ref": "#/components/parameters/SlackRequestTimestamp"
        }
      ],
      "post": {
        "tags": [
          "Integrations"
        ],
        "operationId": "receiveSlackInteraction",
        "summary": "Receive a Slack Block Kit interaction",
        "security": [
          {
            "slackSignature": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "payload"
                ],
                "properties": {
                  "payload": {
                    "type": "string",
                    "description": "JSON-encoded Slack interaction payload."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Interaction accepted.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProviderJsonDocument"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/ProviderError"
          },
          "401": {
            "$ref": "#/components/responses/ProviderError"
          },
          "413": {
            "$ref": "#/components/responses/ProviderError"
          },
          "429": {
            "$ref": "#/components/responses/ProviderError"
          },
          "500": {
            "$ref": "#/components/responses/ProviderError"
          }
        },
        "x-visibility": "public"
      }
    },
    "/integrations/teams/activities": {
      "post": {
        "tags": [
          "Integrations"
        ],
        "operationId": "receiveTeamsActivity",
        "summary": "Receive a Microsoft Bot Framework activity",
        "description": "The bearer JWT signature, issuer, and audience are verified against Microsoft's published keys before the body is processed.",
        "security": [
          {
            "teamsBearer": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TeamsActivity"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Bot Framework activity response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProviderJsonDocument"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/ProviderError"
          },
          "401": {
            "$ref": "#/components/responses/ProviderError"
          },
          "413": {
            "$ref": "#/components/responses/ProviderError"
          },
          "429": {
            "$ref": "#/components/responses/ProviderError"
          },
          "500": {
            "$ref": "#/components/responses/ProviderError"
          }
        },
        "x-visibility": "public"
      }
    },
    "/calendar/feeds/{token}": {
      "get": {
        "tags": [
          "Calendar"
        ],
        "operationId": "getCalendarFeed",
        "summary": "Retrieve an iCalendar subscription feed",
        "description": "The 256-bit token in the path is the credential. Keep the complete URL out of logs, analytics, screenshots, and support messages.",
        "security": [],
        "parameters": [
          {
            "$ref": "#/components/parameters/CalendarFeedToken"
          }
        ],
        "responses": {
          "200": {
            "description": "iCalendar feed. A transient data error yields a valid empty calendar so subscribed clients keep polling.",
            "headers": {
              "Content-Disposition": {
                "description": "Suggested `.ics` filename.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "text/calendar": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Token is invalid, expired, revoked, or unknown. The response intentionally does not distinguish these states.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string",
                  "const": "Not found"
                }
              }
            }
          },
          "429": {
            "description": "Per-IP feed polling limit exceeded."
          }
        },
        "x-visibility": "public"
      }
    },
    "/problems/{id}/transitions": {
      "post": {
        "tags": [
          "Problems"
        ],
        "operationId": "post__problems_id_transitions",
        "summary": "Transition a problem",
        "description": "Requires problems:write and an active workspace license.",
        "parameters": [
          {
            "$ref": "#/components/parameters/ResourceId"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          },
          {
            "$ref": "#/components/parameters/IfMatch"
          },
          {
            "$ref": "#/components/parameters/RequestId"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProblemTransition"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Resource response.",
            "headers": {
              "Kovira-API-Version": {
                "$ref": "#/components/headers/ApiVersion"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Problem"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "412": {
            "$ref": "#/components/responses/PreconditionFailed"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "415": {
            "$ref": "#/components/responses/UnsupportedMediaType"
          },
          "428": {
            "$ref": "#/components/responses/PreconditionRequired"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/Unavailable"
          }
        },
        "x-visibility": "public",
        "x-required-scopes": [
          "problems:write"
        ]
      }
    },
    "/changes/{id}/transitions": {
      "post": {
        "tags": [
          "Changes"
        ],
        "operationId": "post__changes_id_transitions",
        "summary": "Transition a change",
        "description": "Requires changes:write and an active workspace license. Submitted change content is immutable.",
        "parameters": [
          {
            "$ref": "#/components/parameters/ResourceId"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          },
          {
            "$ref": "#/components/parameters/IfMatch"
          },
          {
            "$ref": "#/components/parameters/RequestId"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChangeTransition"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Resource response.",
            "headers": {
              "Kovira-API-Version": {
                "$ref": "#/components/headers/ApiVersion"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Change"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "412": {
            "$ref": "#/components/responses/PreconditionFailed"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "415": {
            "$ref": "#/components/responses/UnsupportedMediaType"
          },
          "428": {
            "$ref": "#/components/responses/PreconditionRequired"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/Unavailable"
          }
        },
        "x-visibility": "public",
        "x-required-scopes": [
          "changes:write"
        ]
      }
    },
    "/requests/{id}/transitions": {
      "post": {
        "tags": [
          "Requests"
        ],
        "operationId": "post__requests_id_transitions",
        "summary": "Transition a service request",
        "description": "Requires requests:write and an active workspace license. Request content under approval is immutable.",
        "parameters": [
          {
            "$ref": "#/components/parameters/ResourceId"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          },
          {
            "$ref": "#/components/parameters/IfMatch"
          },
          {
            "$ref": "#/components/parameters/RequestId"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RequestTransition"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Resource response.",
            "headers": {
              "Kovira-API-Version": {
                "$ref": "#/components/headers/ApiVersion"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ServiceRequest"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "412": {
            "$ref": "#/components/responses/PreconditionFailed"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "415": {
            "$ref": "#/components/responses/UnsupportedMediaType"
          },
          "428": {
            "$ref": "#/components/responses/PreconditionRequired"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/Unavailable"
          }
        },
        "x-visibility": "public",
        "x-required-scopes": [
          "requests:write"
        ]
      }
    },
    "/incidents/{id}/comments/{commentId}": {
      "get": {
        "tags": [
          "Incidents"
        ],
        "operationId": "get__incidents_id_comments_commentId_",
        "summary": "Get an incident comment",
        "description": "Requires incidents:read and an active workspace license.",
        "parameters": [
          {
            "$ref": "#/components/parameters/ResourceId"
          },
          {
            "$ref": "#/components/parameters/CommentId"
          },
          {
            "$ref": "#/components/parameters/RequestId"
          }
        ],
        "responses": {
          "200": {
            "description": "Resource response.",
            "headers": {
              "Kovira-API-Version": {
                "$ref": "#/components/headers/ApiVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/IncidentComment"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/Unavailable"
          }
        },
        "x-visibility": "public",
        "x-required-scopes": [
          "incidents:read"
        ]
      }
    },
    "/problems/{id}/comments": {
      "get": {
        "tags": [
          "Problems"
        ],
        "operationId": "get__problems_id_comments",
        "summary": "List problem comments",
        "description": "Requires problems:read and an active workspace license. Private notes require the key issuer to have the corresponding update permission. Otherwise lists omit private notes and details return 404.",
        "parameters": [
          {
            "$ref": "#/components/parameters/ResourceId"
          },
          {
            "$ref": "#/components/parameters/Limit100"
          },
          {
            "$ref": "#/components/parameters/Cursor"
          },
          {
            "in": "query",
            "name": "is_private",
            "schema": {
              "type": "string",
              "enum": [
                "true",
                "false"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/RequestId"
          }
        ],
        "responses": {
          "200": {
            "description": "Resource response.",
            "headers": {
              "Kovira-API-Version": {
                "$ref": "#/components/headers/ApiVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "meta"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ProblemComment"
                      }
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/Unavailable"
          }
        },
        "x-visibility": "public",
        "x-required-scopes": [
          "problems:read"
        ]
      },
      "post": {
        "tags": [
          "Problems"
        ],
        "operationId": "post__problems_id_comments",
        "summary": "Create a problem comment",
        "description": "Requires problems:write and an active workspace license. HTML is sanitized. Private notes require the key issuer to have the corresponding update permission.",
        "parameters": [
          {
            "$ref": "#/components/parameters/ResourceId"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          },
          {
            "$ref": "#/components/parameters/RequestId"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CommentCreate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created.",
            "headers": {
              "Kovira-API-Version": {
                "$ref": "#/components/headers/ApiVersion"
              },
              "Location": {
                "description": "Canonical resource URL.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ProblemComment"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "415": {
            "$ref": "#/components/responses/UnsupportedMediaType"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/Unavailable"
          }
        },
        "x-visibility": "public",
        "x-required-scopes": [
          "problems:write"
        ]
      }
    },
    "/problems/{id}/comments/{commentId}": {
      "get": {
        "tags": [
          "Problems"
        ],
        "operationId": "get__problems_id_comments_commentId_",
        "summary": "Get a problem comment",
        "description": "Requires problems:read and an active workspace license.",
        "parameters": [
          {
            "$ref": "#/components/parameters/ResourceId"
          },
          {
            "$ref": "#/components/parameters/CommentId"
          },
          {
            "$ref": "#/components/parameters/RequestId"
          }
        ],
        "responses": {
          "200": {
            "description": "Resource response.",
            "headers": {
              "Kovira-API-Version": {
                "$ref": "#/components/headers/ApiVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ProblemComment"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/Unavailable"
          }
        },
        "x-visibility": "public",
        "x-required-scopes": [
          "problems:read"
        ]
      }
    },
    "/requests/{id}/comments": {
      "get": {
        "tags": [
          "Requests"
        ],
        "operationId": "get__requests_id_comments",
        "summary": "List service request comments",
        "description": "Requires requests:read and an active workspace license. Private notes require the key issuer to have the corresponding update permission. Otherwise lists omit private notes and details return 404.",
        "parameters": [
          {
            "$ref": "#/components/parameters/ResourceId"
          },
          {
            "$ref": "#/components/parameters/Limit100"
          },
          {
            "$ref": "#/components/parameters/Cursor"
          },
          {
            "in": "query",
            "name": "is_private",
            "schema": {
              "type": "string",
              "enum": [
                "true",
                "false"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/RequestId"
          }
        ],
        "responses": {
          "200": {
            "description": "Resource response.",
            "headers": {
              "Kovira-API-Version": {
                "$ref": "#/components/headers/ApiVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "meta"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/RequestComment"
                      }
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/Unavailable"
          }
        },
        "x-visibility": "public",
        "x-required-scopes": [
          "requests:read"
        ]
      },
      "post": {
        "tags": [
          "Requests"
        ],
        "operationId": "post__requests_id_comments",
        "summary": "Create a service request comment",
        "description": "Requires requests:write and an active workspace license. HTML is sanitized. Private notes require the key issuer to have the corresponding update permission.",
        "parameters": [
          {
            "$ref": "#/components/parameters/ResourceId"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          },
          {
            "$ref": "#/components/parameters/RequestId"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CommentCreate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created.",
            "headers": {
              "Kovira-API-Version": {
                "$ref": "#/components/headers/ApiVersion"
              },
              "Location": {
                "description": "Canonical resource URL.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/RequestComment"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "415": {
            "$ref": "#/components/responses/UnsupportedMediaType"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/Unavailable"
          }
        },
        "x-visibility": "public",
        "x-required-scopes": [
          "requests:write"
        ]
      }
    },
    "/requests/{id}/comments/{commentId}": {
      "get": {
        "tags": [
          "Requests"
        ],
        "operationId": "get__requests_id_comments_commentId_",
        "summary": "Get a service request comment",
        "description": "Requires requests:read and an active workspace license.",
        "parameters": [
          {
            "$ref": "#/components/parameters/ResourceId"
          },
          {
            "$ref": "#/components/parameters/CommentId"
          },
          {
            "$ref": "#/components/parameters/RequestId"
          }
        ],
        "responses": {
          "200": {
            "description": "Resource response.",
            "headers": {
              "Kovira-API-Version": {
                "$ref": "#/components/headers/ApiVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/RequestComment"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/Unavailable"
          }
        },
        "x-visibility": "public",
        "x-required-scopes": [
          "requests:read"
        ]
      }
    },
    "/request-types": {
      "get": {
        "tags": [
          "Request types"
        ],
        "operationId": "get__request_types",
        "summary": "List service request types",
        "description": "Requires requests:read and an active workspace license. Only enabled, tenant-bound catalog definitions are exposed. Field collections contain at most 50 fields. Creation separately enforces catalog entitlements.",
        "parameters": [
          {
            "$ref": "#/components/parameters/Limit100"
          },
          {
            "$ref": "#/components/parameters/Cursor"
          },
          {
            "$ref": "#/components/parameters/RequestId"
          }
        ],
        "responses": {
          "200": {
            "description": "Resource response.",
            "headers": {
              "Kovira-API-Version": {
                "$ref": "#/components/headers/ApiVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "meta"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/RequestType"
                      }
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/Unavailable"
          }
        },
        "x-visibility": "public",
        "x-required-scopes": [
          "requests:read"
        ]
      }
    },
    "/request-types/{id}": {
      "get": {
        "tags": [
          "Request types"
        ],
        "operationId": "get__request_types_id_",
        "summary": "Get a service request type",
        "description": "Requires requests:read and an active workspace license. Only enabled, tenant-bound catalog definitions are exposed. Field collections contain at most 50 fields. Creation separately enforces catalog entitlements.",
        "parameters": [
          {
            "$ref": "#/components/parameters/ResourceId"
          },
          {
            "$ref": "#/components/parameters/RequestId"
          }
        ],
        "responses": {
          "200": {
            "description": "Resource response.",
            "headers": {
              "Kovira-API-Version": {
                "$ref": "#/components/headers/ApiVersion"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/RequestType"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/Unavailable"
          }
        },
        "x-visibility": "public",
        "x-required-scopes": [
          "requests:read"
        ]
      }
    },
    "/request-types/{id}/fields": {
      "get": {
        "tags": [
          "Request types"
        ],
        "operationId": "get__request_types_id_fields",
        "summary": "List service request fields",
        "description": "Requires requests:read and an active workspace license. Only enabled, tenant-bound catalog definitions are exposed. Field collections contain at most 50 fields. Creation separately enforces catalog entitlements.",
        "parameters": [
          {
            "$ref": "#/components/parameters/ResourceId"
          },
          {
            "$ref": "#/components/parameters/RequestId"
          }
        ],
        "responses": {
          "200": {
            "description": "Resource response.",
            "headers": {
              "Kovira-API-Version": {
                "$ref": "#/components/headers/ApiVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/RequestField"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/Unavailable"
          }
        },
        "x-visibility": "public",
        "x-required-scopes": [
          "requests:read"
        ]
      }
    }
  },
  "components": {
    "securitySchemes": {
      "publicApiKey": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "kvr_live_*",
        "description": "Tenant-bound public API key from Workspace Settings > API Keys."
      },
      "scimBearer": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "Kovira SCIM token",
        "description": "Dedicated, tenant-bound provisioning token issued in Workspace Settings > SCIM."
      },
      "stripeSignature": {
        "type": "apiKey",
        "in": "header",
        "name": "Stripe-Signature",
        "description": "Stripe's signature over the unmodified request body."
      },
      "slackSignature": {
        "type": "apiKey",
        "in": "header",
        "name": "X-Slack-Signature",
        "description": "Slack v0 HMAC signature over the timestamp and unmodified form body."
      },
      "teamsBearer": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "Microsoft Bot Framework JWT",
        "description": "Microsoft-issued Bot Framework JWT with verified signature, issuer, and Kovira bot audience."
      }
    },
    "headers": {
      "ApiVersion": {
        "description": "Major contract version that produced this response.",
        "schema": {
          "type": "string",
          "const": "1"
        }
      },
      "RateLimitLimit": {
        "description": "Requests allowed in the current window.",
        "schema": {
          "type": "integer",
          "example": 60
        }
      },
      "RateLimitRemaining": {
        "description": "Requests remaining in the current window.",
        "schema": {
          "type": "integer",
          "minimum": 0
        }
      },
      "RateLimitReset": {
        "description": "Seconds until the current window resets.",
        "schema": {
          "type": "integer",
          "minimum": 1
        }
      },
      "RequestId": {
        "description": "UUID correlation identifier echoed from the request or generated by Kovira.",
        "schema": {
          "type": "string",
          "format": "uuid"
        }
      },
      "ETag": {
        "description": "Strong resource revision. Send this exact value in If-Match for PATCH and lifecycle transitions.",
        "schema": {
          "type": "string"
        }
      }
    },
    "parameters": {
      "IdempotencyKey": {
        "in": "header",
        "name": "Idempotency-Key",
        "required": false,
        "description": "Unique retry key scoped to the API key, method, path, canonical JSON input and If-Match. Replays retain status, body, Location and ETag for 24 hours. Different input or If-Match, concurrent work or uncertain outcomes return 409. Authentication and licensing are rechecked before every replay.",
        "schema": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200,
          "pattern": "^[A-Za-z0-9._:-]+$"
        }
      },
      "ResourceId": {
        "in": "path",
        "name": "id",
        "required": true,
        "schema": {
          "type": "string",
          "format": "uuid"
        }
      },
      "Cursor": {
        "in": "query",
        "name": "cursor",
        "description": "Opaque cursor returned in `meta.next_cursor`. Do not construct or decode it.",
        "schema": {
          "type": "string",
          "maxLength": 512
        }
      },
      "Limit100": {
        "in": "query",
        "name": "limit",
        "schema": {
          "type": "integer",
          "minimum": 1,
          "maximum": 100,
          "default": 25
        }
      },
      "ScimFilter": {
        "in": "query",
        "name": "filter",
        "description": "Restricted RFC 7644 equality filter. User fields are `userName`, `emails.value`, `externalId`, and `active`; group fields are `displayName` and `externalId`.",
        "schema": {
          "type": "string",
          "maxLength": 512
        }
      },
      "ScimStartIndex": {
        "in": "query",
        "name": "startIndex",
        "description": "RFC 7644 one-based result index.",
        "schema": {
          "type": "integer",
          "minimum": 1,
          "default": 1
        }
      },
      "ScimCount": {
        "in": "query",
        "name": "count",
        "schema": {
          "type": "integer",
          "minimum": 0,
          "maximum": 200,
          "default": 100
        }
      },
      "SlackRequestTimestamp": {
        "in": "header",
        "name": "X-Slack-Request-Timestamp",
        "required": true,
        "description": "Unix seconds used in the Slack v0 signature and checked against a five-minute replay window.",
        "schema": {
          "type": "integer",
          "format": "int64"
        }
      },
      "CalendarFeedToken": {
        "in": "path",
        "name": "token",
        "required": true,
        "description": "256-bit random bearer credential encoded as 64 lowercase hexadecimal characters.",
        "schema": {
          "type": "string",
          "pattern": "^[a-f0-9]{64}$"
        }
      },
      "IfMatch": {
        "in": "header",
        "name": "If-Match",
        "required": true,
        "description": "Exact strong ETag from the latest GET or mutation response. Wildcards, weak tags and lists are rejected. Missing: 428; stale or a concurrent write: 412. Reuse the original value when retrying with the same Idempotency-Key.",
        "schema": {
          "type": "string",
          "pattern": "^\"[a-f0-9]{64}\"$"
        }
      },
      "CommentId": {
        "in": "path",
        "name": "commentId",
        "required": true,
        "schema": {
          "type": "string",
          "format": "uuid"
        }
      },
      "RequestId": {
        "in": "header",
        "name": "X-Request-ID",
        "required": false,
        "description": "Optional UUID for request correlation. A valid ID is echoed; otherwise the API generates one.",
        "schema": {
          "type": "string",
          "format": "uuid"
        }
      }
    },
    "requestBodies": {},
    "schemas": {
      "ScimMeta": {
        "type": "object",
        "properties": {
          "resourceType": {
            "type": "string"
          },
          "created": {
            "type": "string",
            "format": "date-time"
          },
          "lastModified": {
            "type": "string",
            "format": "date-time"
          },
          "location": {
            "type": "string",
            "format": "uri"
          }
        }
      },
      "ScimEmail": {
        "type": "object",
        "required": [
          "value"
        ],
        "properties": {
          "value": {
            "type": "string",
            "format": "email"
          },
          "type": {
            "type": "string",
            "default": "work"
          },
          "primary": {
            "type": "boolean"
          }
        }
      },
      "ScimMember": {
        "type": "object",
        "required": [
          "value"
        ],
        "properties": {
          "value": {
            "type": "string",
            "format": "uuid"
          },
          "display": {
            "type": "string"
          },
          "$ref": {
            "type": "string",
            "format": "uri-reference"
          }
        }
      },
      "ScimUserWrite": {
        "type": "object",
        "required": [
          "userName"
        ],
        "properties": {
          "schemas": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "userName": {
            "type": "string",
            "minLength": 1,
            "maxLength": 320
          },
          "displayName": {
            "type": "string",
            "maxLength": 200
          },
          "name": {
            "type": "object",
            "properties": {
              "givenName": {
                "type": "string"
              },
              "familyName": {
                "type": "string"
              },
              "formatted": {
                "type": "string"
              }
            }
          },
          "emails": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ScimEmail"
            }
          },
          "externalId": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 256
          },
          "active": {
            "type": "boolean",
            "default": true
          },
          "title": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 200
          }
        }
      },
      "ScimUser": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ScimUserWrite"
          },
          {
            "type": "object",
            "required": [
              "id",
              "schemas",
              "meta"
            ],
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "readOnly": true
              },
              "schemas": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "readOnly": true
              },
              "meta": {
                "$ref": "#/components/schemas/ScimMeta"
              }
            }
          }
        ]
      },
      "ScimGroupWrite": {
        "type": "object",
        "required": [
          "displayName"
        ],
        "properties": {
          "schemas": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "displayName": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100
          },
          "externalId": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 256
          },
          "members": {
            "type": "array",
            "maxItems": 500,
            "items": {
              "$ref": "#/components/schemas/ScimMember"
            }
          }
        }
      },
      "ScimGroup": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ScimGroupWrite"
          },
          {
            "type": "object",
            "required": [
              "id",
              "schemas",
              "meta"
            ],
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "readOnly": true
              },
              "schemas": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "readOnly": true
              },
              "meta": {
                "$ref": "#/components/schemas/ScimMeta"
              }
            }
          }
        ]
      },
      "ScimListResponse": {
        "type": "object",
        "required": [
          "schemas",
          "totalResults",
          "startIndex",
          "itemsPerPage",
          "Resources"
        ],
        "properties": {
          "schemas": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "totalResults": {
            "type": "integer",
            "minimum": 0
          },
          "startIndex": {
            "type": "integer",
            "minimum": 1
          },
          "itemsPerPage": {
            "type": "integer",
            "minimum": 0
          },
          "Resources": {
            "type": "array",
            "items": {}
          }
        }
      },
      "ScimPatchRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "schemas",
          "Operations"
        ],
        "properties": {
          "schemas": {
            "type": "array",
            "contains": {
              "const": "urn:ietf:params:scim:api:messages:2.0:PatchOp"
            }
          },
          "Operations": {
            "type": "array",
            "minItems": 1,
            "maxItems": 100,
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "op"
              ],
              "properties": {
                "op": {
                  "type": "string",
                  "enum": [
                    "add",
                    "replace",
                    "remove"
                  ]
                },
                "path": {
                  "type": "string"
                },
                "value": {}
              }
            }
          }
        }
      },
      "ScimErrorBody": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "schemas",
          "status",
          "detail"
        ],
        "properties": {
          "schemas": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "status": {
            "type": "string",
            "pattern": "^[45]\\d\\d$"
          },
          "scimType": {
            "type": "string"
          },
          "detail": {
            "type": "string"
          }
        }
      },
      "ProviderJsonDocument": {
        "type": "object",
        "additionalProperties": true
      },
      "StripeWebhookAck": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "received"
        ],
        "properties": {
          "received": {
            "type": "boolean",
            "const": true
          },
          "duplicate": {
            "type": "boolean"
          }
        }
      },
      "SlackCommandRequest": {
        "type": "object",
        "additionalProperties": true,
        "required": [
          "team_id",
          "user_id",
          "command"
        ],
        "properties": {
          "team_id": {
            "type": "string"
          },
          "user_id": {
            "type": "string"
          },
          "command": {
            "type": "string",
            "const": "/kovira"
          },
          "text": {
            "type": "string"
          },
          "response_url": {
            "type": "string",
            "format": "uri",
            "writeOnly": true
          },
          "trigger_id": {
            "type": "string"
          }
        }
      },
      "TeamsActivity": {
        "type": "object",
        "additionalProperties": true,
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "message",
              "invoke"
            ]
          },
          "id": {
            "type": "string"
          },
          "text": {
            "type": "string"
          },
          "serviceUrl": {
            "type": "string",
            "format": "uri"
          },
          "conversation": {
            "type": "object",
            "additionalProperties": true
          },
          "channelData": {
            "type": "object",
            "additionalProperties": true
          },
          "from": {
            "type": "object",
            "additionalProperties": true
          },
          "recipient": {
            "type": "object",
            "additionalProperties": true
          },
          "value": {
            "type": "object",
            "additionalProperties": true
          }
        }
      },
      "HealthEnvelope": {
        "type": "object",
        "required": [
          "data"
        ],
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "status",
              "service",
              "version",
              "checked_at"
            ],
            "properties": {
              "status": {
                "type": "string",
                "const": "ok"
              },
              "service": {
                "type": "string",
                "const": "kovira-public-api"
              },
              "version": {
                "type": "string",
                "const": "1"
              },
              "checked_at": {
                "type": "string",
                "format": "date-time"
              }
            }
          }
        }
      },
      "DiscoveryEnvelope": {
        "type": "object",
        "required": [
          "data"
        ],
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "object",
            "required": [
              "name",
              "version",
              "status",
              "base_url",
              "groups",
              "authentication",
              "documentation",
              "openapi"
            ],
            "properties": {
              "name": {
                "type": "string",
                "const": "Kovira Public API"
              },
              "version": {
                "type": "string",
                "const": "1"
              },
              "status": {
                "type": "string",
                "const": "available"
              },
              "base_url": {
                "type": "string",
                "format": "uri"
              },
              "groups": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "authentication": {
                "type": "object",
                "required": [
                  "customer_api",
                  "scim",
                  "integrations",
                  "calendar"
                ],
                "additionalProperties": false,
                "properties": {
                  "customer_api": {
                    "type": "string"
                  },
                  "scim": {
                    "type": "string"
                  },
                  "integrations": {
                    "type": "string"
                  },
                  "calendar": {
                    "type": "string"
                  }
                }
              },
              "documentation": {
                "type": "string",
                "format": "uri"
              },
              "openapi": {
                "type": "string",
                "format": "uri"
              }
            }
          }
        }
      },
      "Pagination": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "next_cursor",
          "has_more",
          "total_count"
        ],
        "properties": {
          "next_cursor": {
            "type": [
              "string",
              "null"
            ],
            "description": "Opaque next-page cursor; null at the end."
          },
          "has_more": {
            "type": "boolean"
          },
          "total_count": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "description": "Filtered total before pagination. CI totals may be estimated; observation endpoints return null."
          }
        }
      },
      "PageEnvelope": {
        "type": "object",
        "required": [
          "data",
          "meta"
        ],
        "properties": {
          "data": {
            "type": "array",
            "items": {}
          },
          "meta": {
            "$ref": "#/components/schemas/Pagination"
          }
        }
      },
      "Error": {
        "type": "object",
        "required": [
          "error"
        ],
        "properties": {
          "error": {
            "type": "object",
            "required": [
              "code",
              "message"
            ],
            "properties": {
              "code": {
                "type": "string",
                "example": "validation_failed"
              },
              "message": {
                "type": "string"
              },
              "details": {
                "type": "array",
                "maxItems": 20,
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "path",
                    "code"
                  ],
                  "properties": {
                    "path": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      },
      "Problem": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
          },
          "number": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "analyzing",
              "workaround_identified",
              "root_cause_identified",
              "resolved",
              "closed"
            ]
          },
          "priority": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "is_known_error": {
            "type": "boolean"
          },
          "analysis_summary": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "root_cause": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "workaround": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "resolution": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "resolution_summary": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "assignment_group_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              },
              {
                "type": "null"
              }
            ]
          },
          "resolved_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              {
                "type": "null"
              }
            ]
          },
          "closed_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              {
                "type": "null"
              }
            ]
          },
          "assignee_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              },
              {
                "type": "null"
              }
            ]
          },
          "customer_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "created_at",
          "updated_at",
          "number",
          "title",
          "description",
          "status",
          "priority",
          "is_known_error",
          "analysis_summary",
          "root_cause",
          "workaround",
          "resolution",
          "resolution_summary",
          "assignment_group_id",
          "resolved_at",
          "closed_at",
          "assignee_id",
          "customer_id"
        ],
        "additionalProperties": false
      },
      "Change": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
          },
          "number": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "submitted",
              "approved",
              "scheduled",
              "implementing",
              "review",
              "closed",
              "cancelled"
            ]
          },
          "change_type": {
            "type": "string",
            "enum": [
              "standard",
              "normal",
              "emergency"
            ]
          },
          "risk_level": {
            "type": "string",
            "enum": [
              "high",
              "medium",
              "low"
            ]
          },
          "reason_for_change": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "impact_assessment": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "risk_assessment": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "emergency_justification": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "implementation_plan": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "rollback_plan": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "test_plan": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "review_outcome": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "successful",
                  "partially_successful",
                  "failed",
                  "rolled_back"
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "review_notes": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "approval_revision": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "maximum": 9007199254740991
          },
          "standard_model_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              },
              {
                "type": "null"
              }
            ]
          },
          "schedule_start": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              {
                "type": "null"
              }
            ]
          },
          "schedule_end": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              {
                "type": "null"
              }
            ]
          },
          "requires_cab_review": {
            "type": "boolean"
          },
          "assignee_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              },
              {
                "type": "null"
              }
            ]
          },
          "assignment_group_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              },
              {
                "type": "null"
              }
            ]
          },
          "created_by": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          },
          "closed_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              {
                "type": "null"
              }
            ]
          },
          "customer_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "created_at",
          "updated_at",
          "number",
          "title",
          "description",
          "status",
          "change_type",
          "risk_level",
          "reason_for_change",
          "impact_assessment",
          "risk_assessment",
          "emergency_justification",
          "implementation_plan",
          "rollback_plan",
          "test_plan",
          "review_outcome",
          "review_notes",
          "approval_revision",
          "standard_model_id",
          "schedule_start",
          "schedule_end",
          "requires_cab_review",
          "assignee_id",
          "assignment_group_id",
          "created_by",
          "closed_at",
          "customer_id"
        ],
        "additionalProperties": false,
        "description": "A change includes its risk and impact assessment, current authorization revision, implementation procedure, and post-implementation review."
      },
      "ServiceRequest": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
          },
          "number": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "title": {
            "type": "string"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "form_data": {
            "type": "object",
            "propertyNames": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_]{0,99}$"
            },
            "additionalProperties": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 10000
                },
                {
                  "type": "number"
                },
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "request_type_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              },
              {
                "type": "null"
              }
            ]
          },
          "priority": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "approval_status": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "requires_approval": {
            "type": "boolean"
          },
          "approval_revision": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "maximum": 9007199254740991
          },
          "approval_chain_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              },
              {
                "type": "null"
              }
            ]
          },
          "fulfilment_notes": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "assignment_group_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              },
              {
                "type": "null"
              }
            ]
          },
          "due_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              {
                "type": "null"
              }
            ]
          },
          "completed_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              {
                "type": "null"
              }
            ]
          },
          "closed_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              {
                "type": "null"
              }
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "submitted",
              "pending_approval",
              "approved",
              "in_progress",
              "completed",
              "rejected",
              "cancelled"
            ]
          },
          "requester_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              },
              {
                "type": "null"
              }
            ]
          },
          "assignee_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              },
              {
                "type": "null"
              }
            ]
          },
          "customer_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "created_at",
          "updated_at",
          "number",
          "title",
          "description",
          "form_data",
          "request_type_id",
          "priority",
          "approval_status",
          "requires_approval",
          "approval_revision",
          "approval_chain_id",
          "fulfilment_notes",
          "assignment_group_id",
          "due_at",
          "completed_at",
          "closed_at",
          "status",
          "requester_id",
          "assignee_id",
          "customer_id"
        ],
        "additionalProperties": false
      },
      "Customer": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
          },
          "name": {
            "type": "string"
          },
          "code": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "inactive",
              "archived"
            ]
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "industry": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "website": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "created_at",
          "updated_at",
          "name",
          "code",
          "status",
          "description",
          "industry",
          "website"
        ],
        "additionalProperties": false
      },
      "AuditEntry": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          },
          "actor_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              },
              {
                "type": "null"
              }
            ]
          },
          "action": {
            "type": "string"
          },
          "target_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "target_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "status": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "ip_address": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
          }
        },
        "required": [
          "id",
          "actor_id",
          "action",
          "target_type",
          "target_id",
          "status",
          "ip_address",
          "created_at"
        ],
        "additionalProperties": false
      },
      "IncidentComment": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          },
          "incident_id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          },
          "body": {
            "type": "string"
          },
          "is_private": {
            "type": "boolean"
          },
          "created_by": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              },
              {
                "type": "null"
              }
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
          }
        },
        "required": [
          "id",
          "incident_id",
          "body",
          "is_private",
          "created_by",
          "created_at"
        ],
        "additionalProperties": false
      },
      "IncidentStatus": {
        "type": "string",
        "enum": [
          "new",
          "assigned",
          "in_progress",
          "resolved",
          "closed"
        ]
      },
      "Incident": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
          },
          "number": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "new",
              "assigned",
              "in_progress",
              "resolved",
              "closed"
            ]
          },
          "priority": {
            "type": "string",
            "enum": [
              "p1",
              "p2",
              "p3",
              "p4"
            ]
          },
          "impact": {
            "type": "string",
            "enum": [
              "high",
              "medium",
              "low"
            ]
          },
          "urgency": {
            "type": "string",
            "enum": [
              "high",
              "medium",
              "low"
            ]
          },
          "category": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "outage",
                  "performance",
                  "access",
                  "security",
                  "data",
                  "other"
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "source": {
            "type": "string",
            "enum": [
              "user_reported",
              "monitoring",
              "internal",
              "vendor"
            ]
          },
          "assignee_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              },
              {
                "type": "null"
              }
            ]
          },
          "customer_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              },
              {
                "type": "null"
              }
            ]
          },
          "resolved_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              {
                "type": "null"
              }
            ]
          },
          "closed_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              {
                "type": "null"
              }
            ]
          },
          "resolution_summary": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "resolution_details": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "resolution_code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "closure_code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "closure_notes": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "reopen_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "last_reopened_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              {
                "type": "null"
              }
            ]
          },
          "last_reopen_reason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "assignment_group_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              },
              {
                "type": "null"
              }
            ]
          },
          "resolved_by": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              },
              {
                "type": "null"
              }
            ]
          },
          "first_response_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              {
                "type": "null"
              }
            ]
          },
          "first_response_by": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              },
              {
                "type": "null"
              }
            ]
          },
          "is_major": {
            "type": "boolean"
          },
          "major_review_required": {
            "type": "boolean"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "id",
          "created_at",
          "updated_at",
          "number",
          "title",
          "description",
          "status",
          "priority",
          "impact",
          "urgency",
          "category",
          "source",
          "assignee_id",
          "customer_id",
          "resolved_at",
          "closed_at",
          "resolution_summary",
          "resolution_details",
          "resolution_code",
          "closure_code",
          "closure_notes",
          "reopen_count",
          "last_reopened_at",
          "last_reopen_reason",
          "assignment_group_id",
          "resolved_by",
          "first_response_at",
          "first_response_by",
          "is_major",
          "major_review_required",
          "tags"
        ],
        "additionalProperties": false
      },
      "IncidentCreate": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "title"
        ],
        "properties": {
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255
          },
          "description": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 10000
          },
          "impact": {
            "type": "string",
            "enum": [
              "high",
              "medium",
              "low"
            ],
            "default": "medium"
          },
          "urgency": {
            "type": "string",
            "enum": [
              "high",
              "medium",
              "low"
            ],
            "default": "medium"
          },
          "category": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "outage",
              "performance",
              "access",
              "security",
              "data",
              "other",
              null
            ]
          },
          "source": {
            "type": "string",
            "enum": [
              "user_reported",
              "monitoring",
              "internal",
              "vendor"
            ],
            "default": "user_reported"
          },
          "assignee_id": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          },
          "is_major": {
            "type": "boolean",
            "default": false
          },
          "tags": {
            "type": "array",
            "maxItems": 20,
            "items": {
              "type": "string",
              "maxLength": 50,
              "minLength": 1
            }
          },
          "customer_id": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "Customer in the authenticated tenant; null means the host workspace."
          }
        }
      },
      "IncidentUpdate": {
        "type": "object",
        "additionalProperties": false,
        "minProperties": 1,
        "properties": {
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255
          },
          "description": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 10000
          },
          "impact": {
            "type": "string",
            "enum": [
              "high",
              "medium",
              "low"
            ]
          },
          "urgency": {
            "type": "string",
            "enum": [
              "high",
              "medium",
              "low"
            ]
          },
          "category": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "outage",
              "performance",
              "access",
              "security",
              "data",
              "other",
              null
            ]
          },
          "source": {
            "type": "string",
            "enum": [
              "user_reported",
              "monitoring",
              "internal",
              "vendor"
            ]
          },
          "assignee_id": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          },
          "resolution_summary": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 10000
          },
          "resolution_details": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 10000
          },
          "is_major": {
            "type": "boolean"
          },
          "tags": {
            "type": "array",
            "maxItems": 20,
            "items": {
              "type": "string",
              "maxLength": 50,
              "minLength": 1
            }
          }
        }
      },
      "IncidentTransition": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "new",
              "assigned",
              "in_progress",
              "resolved",
              "closed"
            ]
          },
          "record_response": {
            "type": "boolean"
          },
          "resolution_summary": {
            "type": "string",
            "minLength": 1,
            "maxLength": 10000
          },
          "resolution_details": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 10000
              },
              {
                "type": "null"
              }
            ]
          },
          "resolution_code": {
            "type": "string",
            "enum": [
              "permanent_fix",
              "workaround",
              "configuration_change",
              "restart_recovery",
              "hardware_replacement",
              "vendor_patch",
              "user_education",
              "no_fault_found",
              "duplicate",
              "not_an_incident"
            ]
          },
          "closure_code": {
            "type": "string",
            "enum": [
              "resolved",
              "resolved_with_workaround",
              "cancelled",
              "merged",
              "out_of_scope",
              "auto_resolved"
            ]
          },
          "closure_notes": {
            "type": "string",
            "minLength": 1,
            "maxLength": 10000
          },
          "postmortem_document_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              },
              {
                "type": "null"
              }
            ]
          },
          "reopen_reason": {
            "type": "string",
            "minLength": 1,
            "maxLength": 10000
          },
          "expected_row_version": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          }
        },
        "required": [
          "status"
        ],
        "additionalProperties": false
      },
      "IncidentMutationEnvelope": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/Incident"
          }
        }
      },
      "CIStatus": {
        "type": "string",
        "enum": [
          "active",
          "inactive",
          "archived",
          "maintenance"
        ]
      },
      "CIType": {
        "type": "string",
        "enum": [
          "device",
          "network",
          "service",
          "rack",
          "domain",
          "document",
          "vendor",
          "location",
          "contract",
          "person",
          "group",
          "incident",
          "change",
          "password",
          "api",
          "license",
          "software",
          "wan",
          "sla",
          "entra_id",
          "intune",
          "saas_app",
          "business_service",
          "quote"
        ]
      },
      "WritableCIType": {
        "type": "string",
        "enum": [
          "device",
          "network",
          "service",
          "rack",
          "domain",
          "document",
          "vendor",
          "location",
          "contract",
          "person",
          "group",
          "api",
          "license",
          "software",
          "wan",
          "sla",
          "saas_app",
          "business_service"
        ]
      },
      "CI": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
          },
          "type": {
            "type": "string",
            "enum": [
              "device",
              "network",
              "service",
              "rack",
              "domain",
              "document",
              "vendor",
              "location",
              "contract",
              "person",
              "group",
              "incident",
              "change",
              "password",
              "api",
              "license",
              "software",
              "wan",
              "sla",
              "entra_id",
              "intune",
              "saas_app",
              "business_service",
              "quote"
            ]
          },
          "name": {
            "type": "string"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "status": {
            "type": "string",
            "minLength": 1,
            "maxLength": 64
          },
          "customer_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "created_at",
          "updated_at",
          "type",
          "name",
          "description",
          "status",
          "customer_id"
        ],
        "additionalProperties": false
      },
      "CICreate": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "name"
        ],
        "properties": {
          "type": {
            "$ref": "#/components/schemas/WritableCIType"
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255
          },
          "description": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 2000
          },
          "status": {
            "$ref": "#/components/schemas/CIStatus"
          },
          "customer_id": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          }
        }
      },
      "CIUpdate": {
        "type": "object",
        "additionalProperties": false,
        "minProperties": 1,
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255
          },
          "description": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 2000
          },
          "status": {
            "$ref": "#/components/schemas/CIStatus"
          },
          "customer_id": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          }
        }
      },
      "CIMutationEnvelope": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CI"
          }
        }
      },
      "Transceiver": {
        "type": "object",
        "required": [
          "id",
          "device_ci_id",
          "port_name",
          "form_factor",
          "vendor_name",
          "serial_number",
          "media_type",
          "observed_at"
        ],
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "device_ci_id": {
            "type": "string",
            "format": "uuid"
          },
          "port_name": {
            "type": "string"
          },
          "form_factor": {
            "type": "string"
          },
          "vendor_name": {
            "type": "string"
          },
          "vendor_part": {
            "type": [
              "string",
              "null"
            ]
          },
          "serial_number": {
            "type": "string"
          },
          "media_type": {
            "type": "string"
          },
          "wavelength_nm": {
            "type": [
              "integer",
              "null"
            ]
          },
          "reach_meters": {
            "type": [
              "integer",
              "null"
            ]
          },
          "is_vendor_compatible": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "observed_at": {
            "type": "string",
            "format": "date-time"
          },
          "ddm_lane": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "maximum": 7
          },
          "ddm_temperature_c": {
            "type": [
              "number",
              "null"
            ]
          },
          "ddm_voltage_v": {
            "type": [
              "number",
              "null"
            ]
          },
          "ddm_tx_bias_ma": {
            "type": [
              "number",
              "null"
            ]
          },
          "ddm_tx_power_dbm": {
            "type": [
              "number",
              "null"
            ]
          },
          "ddm_rx_power_dbm": {
            "type": [
              "number",
              "null"
            ]
          },
          "ddm_alarm_flags": {
            "type": [
              "integer",
              "null"
            ]
          },
          "ddm_observed_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          }
        }
      },
      "NetworkAnomaly": {
        "type": "object",
        "required": [
          "id",
          "anomaly_type",
          "severity",
          "title",
          "fingerprint",
          "first_seen_at",
          "last_seen_at",
          "acknowledged"
        ],
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "anomaly_type": {
            "$ref": "#/components/schemas/NetworkAnomalyType"
          },
          "severity": {
            "type": "string",
            "enum": [
              "critical",
              "warning",
              "info"
            ]
          },
          "ci_id": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          },
          "title": {
            "type": "string"
          },
          "detail": {
            "type": [
              "object",
              "array",
              "string",
              "number",
              "boolean",
              "null"
            ]
          },
          "fingerprint": {
            "type": "string"
          },
          "first_seen_at": {
            "type": "string",
            "format": "date-time"
          },
          "last_seen_at": {
            "type": "string",
            "format": "date-time"
          },
          "resolved_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "acknowledged": {
            "type": "boolean"
          }
        }
      },
      "NetworkAnomalyType": {
        "type": "string",
        "enum": [
          "duplicate_mac_nontrunk",
          "stp_root_flap",
          "port_flap",
          "asymmetric_path",
          "vlan_leak",
          "mac_move",
          "ecmp_confusion",
          "mtu_mismatch",
          "duplex_mismatch",
          "rogue_dhcp",
          "native_vlan_mismatch",
          "broadcast_storm",
          "oversubscribed_uplink",
          "unreachable_peer",
          "cfm_mep_loc",
          "synce_quality_degraded",
          "prp_wrong_lan_burst",
          "hsr_loss_burst",
          "profinet_name_conflict",
          "eth_oam_link_fault",
          "lldp_cdp_neighbor_divergence",
          "vrrp_split_brain",
          "hsrp_split_brain",
          "bfd_session_down",
          "transceiver_low_rx_power",
          "transceiver_high_temp",
          "transceiver_alarm"
        ]
      },
      "CdpNeighbour": {
        "type": "object",
        "required": [
          "id",
          "local_switch_ci_id",
          "local_port_name",
          "neighbor_device_id",
          "observed_at",
          "last_seen_at"
        ],
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "local_switch_ci_id": {
            "type": "string",
            "format": "uuid"
          },
          "local_port_name": {
            "type": "string"
          },
          "neighbor_device_id": {
            "type": "string"
          },
          "neighbor_port_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "capabilities": {
            "type": [
              "array",
              "object",
              "string",
              "null"
            ]
          },
          "software_version": {
            "type": [
              "string",
              "null"
            ]
          },
          "platform": {
            "type": [
              "string",
              "null"
            ]
          },
          "native_vlan": {
            "type": [
              "integer",
              "null"
            ]
          },
          "duplex": {
            "type": [
              "string",
              "null"
            ]
          },
          "management_address": {
            "type": [
              "string",
              "null"
            ]
          },
          "observed_at": {
            "type": "string",
            "format": "date-time"
          },
          "last_seen_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "ProblemComment": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          },
          "body": {
            "type": "string"
          },
          "is_private": {
            "type": "boolean"
          },
          "created_by": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              },
              {
                "type": "null"
              }
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
          },
          "problem_id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          }
        },
        "required": [
          "id",
          "body",
          "is_private",
          "created_by",
          "created_at",
          "problem_id"
        ],
        "additionalProperties": false
      },
      "RequestComment": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          },
          "body": {
            "type": "string"
          },
          "is_private": {
            "type": "boolean"
          },
          "created_by": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              },
              {
                "type": "null"
              }
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
          },
          "request_id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          }
        },
        "required": [
          "id",
          "body",
          "is_private",
          "created_by",
          "created_at",
          "request_id"
        ],
        "additionalProperties": false
      },
      "RequestField": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          },
          "field_key": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "field_type": {
            "type": "string",
            "enum": [
              "text",
              "textarea",
              "select",
              "number",
              "date",
              "user",
              "ci",
              "boolean"
            ]
          },
          "is_required": {
            "type": "boolean"
          },
          "options": {
            "maxItems": 50,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "value": {
                  "type": "string"
                },
                "label": {
                  "type": "string"
                }
              },
              "required": [
                "value",
                "label"
              ],
              "additionalProperties": false
            }
          },
          "help_text": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "sort_order": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991
          }
        },
        "required": [
          "id",
          "field_key",
          "label",
          "field_type",
          "is_required",
          "options",
          "help_text",
          "sort_order"
        ],
        "additionalProperties": false
      },
      "RequestType": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "category": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "requires_approval": {
            "type": "boolean"
          },
          "sla_minutes": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991
              },
              {
                "type": "null"
              }
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
          }
        },
        "required": [
          "id",
          "name",
          "description",
          "category",
          "requires_approval",
          "sla_minutes",
          "created_at",
          "updated_at"
        ],
        "additionalProperties": false
      },
      "ChangeCreate": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255
          },
          "description": {
            "default": null,
            "anyOf": [
              {
                "type": "string",
                "maxLength": 10000
              },
              {
                "type": "null"
              }
            ]
          },
          "change_type": {
            "default": "normal",
            "type": "string",
            "enum": [
              "standard",
              "normal",
              "emergency"
            ]
          },
          "risk_level": {
            "default": "medium",
            "type": "string",
            "enum": [
              "high",
              "medium",
              "low"
            ]
          },
          "implementation_plan": {
            "default": null,
            "anyOf": [
              {
                "type": "string",
                "maxLength": 10000
              },
              {
                "type": "null"
              }
            ]
          },
          "rollback_plan": {
            "default": null,
            "anyOf": [
              {
                "type": "string",
                "maxLength": 10000
              },
              {
                "type": "null"
              }
            ]
          },
          "test_plan": {
            "default": null,
            "anyOf": [
              {
                "type": "string",
                "maxLength": 10000
              },
              {
                "type": "null"
              }
            ]
          },
          "schedule_start": {
            "default": null,
            "anyOf": [
              {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
              },
              {
                "type": "null"
              }
            ]
          },
          "schedule_end": {
            "default": null,
            "anyOf": [
              {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
              },
              {
                "type": "null"
              }
            ]
          },
          "requires_cab_review": {
            "default": false,
            "type": "boolean"
          },
          "reason_for_change": {
            "default": null,
            "anyOf": [
              {
                "type": "string",
                "maxLength": 10000
              },
              {
                "type": "null"
              }
            ]
          },
          "impact_assessment": {
            "default": null,
            "anyOf": [
              {
                "type": "string",
                "maxLength": 10000
              },
              {
                "type": "null"
              }
            ]
          },
          "risk_assessment": {
            "default": null,
            "anyOf": [
              {
                "type": "string",
                "maxLength": 10000
              },
              {
                "type": "null"
              }
            ]
          },
          "emergency_justification": {
            "default": null,
            "anyOf": [
              {
                "type": "string",
                "maxLength": 10000
              },
              {
                "type": "null"
              }
            ]
          },
          "standard_model_id": {
            "default": null,
            "anyOf": [
              {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              },
              {
                "type": "null"
              }
            ]
          },
          "customer_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "title"
        ],
        "additionalProperties": false,
        "description": "Creates a draft. Standard changes require an active authorized model in the same customer workspace; its procedure is copied into the draft."
      },
      "CustomerCreate": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255
          },
          "code": {
            "type": "string",
            "minLength": 1,
            "maxLength": 50,
            "pattern": "^[A-Za-z0-9_-]+$"
          },
          "description": {
            "default": null,
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2000
              },
              {
                "type": "null"
              }
            ]
          },
          "industry": {
            "default": null,
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ]
          },
          "website": {
            "default": null,
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 2000
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "name",
          "code"
        ],
        "additionalProperties": false
      },
      "ProblemCreate": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255
          },
          "description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 10000
              },
              {
                "type": "null"
              }
            ]
          },
          "priority": {
            "default": "medium",
            "type": "string",
            "enum": [
              "low",
              "medium",
              "high",
              "critical"
            ]
          },
          "customer_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              },
              {
                "type": "null"
              }
            ]
          },
          "assignee_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              },
              {
                "type": "null"
              }
            ]
          },
          "assignment_group_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "title"
        ],
        "additionalProperties": false
      },
      "RequestCreate": {
        "type": "object",
        "properties": {
          "request_type_id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          },
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255
          },
          "description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 10000
              },
              {
                "type": "null"
              }
            ]
          },
          "priority": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "p1",
                  "p2",
                  "p3",
                  "p4"
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "customer_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              },
              {
                "type": "null"
              }
            ]
          },
          "form_data": {
            "default": {},
            "type": "object",
            "propertyNames": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_]{0,99}$"
            },
            "additionalProperties": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 10000
                },
                {
                  "type": "number"
                },
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ]
            }
          }
        },
        "required": [
          "request_type_id",
          "title"
        ],
        "additionalProperties": false
      },
      "ChangeTransition": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "submitted",
              "approved",
              "scheduled",
              "implementing",
              "review",
              "closed",
              "cancelled"
            ]
          }
        },
        "required": [
          "status"
        ],
        "additionalProperties": false,
        "description": "Submission requires reason, impact and risk assessments, implementation, recovery and verification plans, plus justification for emergencies. Valid standard-model submissions are automatically authorized. Scheduling and implementation require a complete window, owner or team, current authorization and blackout checks. Closure requires an outcome and review notes. Each stage also checks the issuer permission."
      },
      "ProblemTransition": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "analyzing",
              "workaround_identified",
              "root_cause_identified",
              "resolved",
              "closed"
            ]
          },
          "resolution": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 10000
              },
              {
                "type": "null"
              }
            ]
          },
          "resolution_summary": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2000
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "status"
        ],
        "additionalProperties": false
      },
      "RequestTransition": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "submitted",
              "pending_approval",
              "approved",
              "in_progress",
              "completed",
              "rejected",
              "cancelled"
            ]
          },
          "fulfilment_notes": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 10000
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "status"
        ],
        "additionalProperties": false
      },
      "ChangeUpdate": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255
          },
          "description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 10000
              },
              {
                "type": "null"
              }
            ]
          },
          "change_type": {
            "type": "string",
            "enum": [
              "standard",
              "normal",
              "emergency"
            ]
          },
          "risk_level": {
            "type": "string",
            "enum": [
              "high",
              "medium",
              "low"
            ]
          },
          "implementation_plan": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 10000
              },
              {
                "type": "null"
              }
            ]
          },
          "rollback_plan": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 10000
              },
              {
                "type": "null"
              }
            ]
          },
          "test_plan": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 10000
              },
              {
                "type": "null"
              }
            ]
          },
          "schedule_start": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
              },
              {
                "type": "null"
              }
            ]
          },
          "schedule_end": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
              },
              {
                "type": "null"
              }
            ]
          },
          "requires_cab_review": {
            "type": "boolean"
          },
          "reason_for_change": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 10000
              },
              {
                "type": "null"
              }
            ]
          },
          "impact_assessment": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 10000
              },
              {
                "type": "null"
              }
            ]
          },
          "risk_assessment": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 10000
              },
              {
                "type": "null"
              }
            ]
          },
          "emergency_justification": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 10000
              },
              {
                "type": "null"
              }
            ]
          },
          "standard_model_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              },
              {
                "type": "null"
              }
            ]
          },
          "review_outcome": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "successful",
                  "partially_successful",
                  "failed",
                  "rolled_back"
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "review_notes": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 10000
              },
              {
                "type": "null"
              }
            ]
          },
          "assignee_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              },
              {
                "type": "null"
              }
            ]
          },
          "assignment_group_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "description": "Planning fields can be edited in draft or submitted. A material submitted-plan edit returns the change to draft and invalidates prior authorization. Review evidence can be edited only during review and requires close_change permission."
      },
      "CustomerUpdate": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255
          },
          "code": {
            "type": "string",
            "minLength": 1,
            "maxLength": 50,
            "pattern": "^[A-Za-z0-9_-]+$"
          },
          "description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2000
              },
              {
                "type": "null"
              }
            ]
          },
          "industry": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ]
          },
          "website": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 2000
              },
              {
                "type": "null"
              }
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "inactive",
              "archived"
            ]
          }
        },
        "additionalProperties": false
      },
      "ProblemUpdate": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255
          },
          "description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 10000
              },
              {
                "type": "null"
              }
            ]
          },
          "priority": {
            "type": "string",
            "enum": [
              "low",
              "medium",
              "high",
              "critical"
            ]
          },
          "analysis_summary": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 10000
              },
              {
                "type": "null"
              }
            ]
          },
          "root_cause": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 10000
              },
              {
                "type": "null"
              }
            ]
          },
          "workaround": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 10000
              },
              {
                "type": "null"
              }
            ]
          },
          "resolution": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 10000
              },
              {
                "type": "null"
              }
            ]
          },
          "resolution_summary": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2000
              },
              {
                "type": "null"
              }
            ]
          },
          "customer_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              },
              {
                "type": "null"
              }
            ]
          },
          "assignee_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              },
              {
                "type": "null"
              }
            ]
          },
          "assignment_group_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false
      },
      "RequestUpdate": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255
          },
          "description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 10000
              },
              {
                "type": "null"
              }
            ]
          },
          "priority": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "p1",
                  "p2",
                  "p3",
                  "p4"
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "form_data": {
            "type": "object",
            "propertyNames": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_]{0,99}$"
            },
            "additionalProperties": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 10000
                },
                {
                  "type": "number"
                },
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "assignee_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              },
              {
                "type": "null"
              }
            ]
          },
          "assignment_group_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false
      },
      "CommentCreate": {
        "type": "object",
        "properties": {
          "body": {
            "type": "string",
            "minLength": 1,
            "maxLength": 50000
          },
          "is_private": {
            "default": false,
            "type": "boolean"
          }
        },
        "required": [
          "body"
        ],
        "additionalProperties": false
      }
    },
    "responses": {
      "ScimDocument": {
        "description": "SCIM discovery document.",
        "content": {
          "application/scim+json": {
            "schema": {
              "oneOf": [
                {
                  "type": "object",
                  "additionalProperties": true
                },
                {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "additionalProperties": true
                  }
                }
              ]
            }
          }
        }
      },
      "ScimError": {
        "description": "RFC 7644 error response.",
        "content": {
          "application/scim+json": {
            "schema": {
              "$ref": "#/components/schemas/ScimErrorBody"
            }
          }
        }
      },
      "ProviderError": {
        "description": "Provider request rejected or callback processing failed.",
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "additionalProperties": true,
              "properties": {
                "error": {
                  "type": [
                    "string",
                    "object"
                  ]
                }
              }
            }
          },
          "text/plain": {
            "schema": {
              "type": "string"
            }
          }
        }
      },
      "IncidentList": {
        "description": "Cursor-paginated incidents.",
        "headers": {
          "Kovira-API-Version": {
            "$ref": "#/components/headers/ApiVersion"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/PageEnvelope"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Incident"
                      }
                    }
                  }
                }
              ]
            }
          }
        }
      },
      "CIList": {
        "description": "Cursor-paginated CIs.",
        "headers": {
          "Kovira-API-Version": {
            "$ref": "#/components/headers/ApiVersion"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/PageEnvelope"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/CI"
                      }
                    }
                  }
                }
              ]
            }
          }
        }
      },
      "BadRequest": {
        "description": "Invalid path, query, cursor, JSON, or request fields.",
        "headers": {
          "Kovira-API-Version": {
            "$ref": "#/components/headers/ApiVersion"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "Unauthorized": {
        "description": "Missing, malformed, expired, or revoked public API key.",
        "headers": {
          "Kovira-API-Version": {
            "$ref": "#/components/headers/ApiVersion"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "Forbidden": {
        "description": "Insufficient scope or permissions, unavailable tenant, or missing/inactive/expired workspace license (license_required).",
        "headers": {
          "Kovira-API-Version": {
            "$ref": "#/components/headers/ApiVersion"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "NotFound": {
        "description": "Resource not found in the authenticated workspace.",
        "headers": {
          "Kovira-API-Version": {
            "$ref": "#/components/headers/ApiVersion"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "Conflict": {
        "description": "State transition or resource mutability conflict.",
        "headers": {
          "Kovira-API-Version": {
            "$ref": "#/components/headers/ApiVersion"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "PayloadTooLarge": {
        "description": "Request body exceeds 1 MiB.",
        "headers": {
          "Kovira-API-Version": {
            "$ref": "#/components/headers/ApiVersion"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "RateLimited": {
        "description": "Rate limit exceeded.",
        "headers": {
          "Kovira-API-Version": {
            "$ref": "#/components/headers/ApiVersion"
          },
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          },
          "Retry-After": {
            "description": "Seconds before retrying.",
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "InternalError": {
        "description": "Unexpected server error.",
        "headers": {
          "Kovira-API-Version": {
            "$ref": "#/components/headers/ApiVersion"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "Unavailable": {
        "description": "A required safety dependency is temporarily unavailable.",
        "headers": {
          "Kovira-API-Version": {
            "$ref": "#/components/headers/ApiVersion"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "UnsupportedMediaType": {
        "description": "Use application/json encoded as UTF-8 without compression.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "MethodNotAllowed": {
        "description": "The path exists but does not accept this method.",
        "headers": {
          "Allow": {
            "description": "Methods accepted by this path.",
            "schema": {
              "type": "string"
            }
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "PreconditionFailed": {
        "description": "Resource changed; fetch the current resource before retrying with a new idempotency key.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "PreconditionRequired": {
        "description": "If-Match is required for this mutation.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      }
    }
  }
}
