{
  "openapi": "3.1.0",
  "info": {
    "title": "Kolja Pitz — Portfolio API",
    "description": "Machine-readable endpoints for AI agents and integrations. Read endpoints return Schema.org JSON-LD. Write endpoints accept JSON. Optional Bearer token auth for partner access.\n\n**Versioning policy:** The API is versioned via the optional `Api-Version` request header (current: `2`). Omitting the header always targets the current version. Breaking changes bump the version; the previous version keeps working for at least 6 months and signals retirement with `Deprecation` and `Sunset` response headers (RFC 8594) before removal. Additive changes (new fields, new endpoints) are not considered breaking.\n\n**Errors:** All error responses share one JSON shape (see the `Error` schema): `{ \"error\": { \"code\", \"message\", \"status\" } }` with a machine-readable code and a human-readable message.\n\n**Idempotency:** `POST /api/contact` supports the `Idempotency-Key` header (responses cached 24h).",
    "version": "2.2.0",
    "contact": {
      "name": "Kolja Pitz",
      "email": "kp@plateaucandy.de",
      "url": "https://koljapitz.de/contact"
    }
  },
  "servers": [
    {
      "url": "https://koljapitz.de",
      "description": "Production"
    }
  ],
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "description": "Optional API key for partner access. Anonymous access is allowed for all public endpoints. Request a key at kp@plateaucandy.de."
      }
    },
    "parameters": {
      "idempotencyKey": {
        "name": "Idempotency-Key",
        "in": "header",
        "required": false,
        "description": "UUID to prevent duplicate write operations. Cached responses returned for 24h.",
        "schema": {
          "type": "string",
          "format": "uuid"
        }
      },
      "apiVersion": {
        "name": "Api-Version",
        "in": "header",
        "required": false,
        "description": "API version selector. Current: \"2\". Omit for the latest version. Deprecated versions answer with Deprecation/Sunset headers (RFC 8594).",
        "schema": {
          "type": "string",
          "enum": [
            "2"
          ],
          "default": "2"
        }
      }
    },
    "schemas": {
      "Error": {
        "type": "object",
        "description": "Uniform error envelope returned by every endpoint on 4xx/5xx.",
        "required": [
          "error"
        ],
        "properties": {
          "error": {
            "type": "object",
            "required": [
              "code",
              "message",
              "status"
            ],
            "properties": {
              "code": {
                "type": "string",
                "description": "Machine-readable error code, e.g. MISSING_QUERY, VALIDATION_ERROR, NOT_FOUND"
              },
              "message": {
                "type": "string",
                "description": "Human-readable explanation with resolution hint"
              },
              "status": {
                "type": "integer",
                "description": "HTTP status code, mirrored in the body"
              }
            }
          }
        }
      },
      "JsonLdItemList": {
        "type": "object",
        "description": "Schema.org ItemList as JSON-LD.",
        "required": [
          "@context",
          "@type",
          "itemListElement"
        ],
        "properties": {
          "@context": {
            "type": "string",
            "const": "https://schema.org"
          },
          "@type": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "numberOfItems": {
            "type": "integer"
          },
          "itemListElement": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          }
        }
      },
      "Directory": {
        "type": "object",
        "description": "API directory: endpoints, discovery files, markdown surfaces, contact.",
        "required": [
          "name",
          "endpoints"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "endpoints": {
            "type": "object",
            "additionalProperties": true
          },
          "discovery": {
            "type": "object",
            "additionalProperties": true
          },
          "markdown": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "contact": {
            "type": "object",
            "additionalProperties": true
          }
        }
      },
      "SearchResults": {
        "type": "object",
        "description": "Schema.org SearchResultsPage with score-ranked items.",
        "required": [
          "@context",
          "@type",
          "query",
          "totalResults",
          "itemListElement"
        ],
        "properties": {
          "@context": {
            "type": "string",
            "const": "https://schema.org"
          },
          "@type": {
            "type": "string",
            "const": "SearchResultsPage"
          },
          "query": {
            "type": "string"
          },
          "totalResults": {
            "type": "integer"
          },
          "itemListElement": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "@type": {
                  "type": "string"
                },
                "position": {
                  "type": "integer"
                },
                "name": {
                  "type": "string"
                },
                "url": {
                  "type": "string"
                },
                "description": {
                  "type": "string"
                },
                "score": {
                  "type": "number"
                },
                "contentType": {
                  "type": "string"
                }
              }
            }
          }
        }
      },
      "NegotiationManifest": {
        "type": "object",
        "description": "Static capability manifest for agent discovery.",
        "properties": {
          "endpoint": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "capabilities": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          },
          "problemTypes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "schema": {
            "type": "object",
            "additionalProperties": true
          }
        },
        "additionalProperties": true
      },
      "NegotiationResult": {
        "type": "object",
        "description": "Match result for a capability negotiation request.",
        "properties": {
          "match": {
            "type": "boolean"
          },
          "confidence": {
            "type": "number",
            "minimum": 0,
            "maximum": 1
          },
          "matchedCapabilities": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "nextSteps": {
            "type": "object",
            "additionalProperties": true
          },
          "notes": {
            "type": "string"
          }
        },
        "additionalProperties": true
      },
      "ContactDocs": {
        "type": "object",
        "description": "Self-describing documentation for the contact endpoint.",
        "properties": {
          "endpoint": {
            "type": "string"
          },
          "method": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "schema": {
            "type": "object",
            "additionalProperties": true
          },
          "authentication": {
            "type": "object",
            "additionalProperties": true
          },
          "idempotency": {
            "type": "object",
            "additionalProperties": true
          }
        },
        "additionalProperties": true
      },
      "ContactAccepted": {
        "type": "object",
        "description": "Confirmation that the inquiry was received.",
        "properties": {
          "status": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "reference": {
            "type": "string"
          }
        },
        "additionalProperties": true
      },
      "Schedule": {
        "type": "object",
        "description": "Schema.org Schedule snapshot with day-by-day availability.",
        "properties": {
          "@context": {
            "type": "string"
          },
          "@type": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "booking": {
            "type": "object",
            "additionalProperties": true
          },
          "days": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          }
        },
        "additionalProperties": true
      },
      "SubscriptionDocs": {
        "type": "object",
        "description": "Webhook endpoint documentation with available events.",
        "properties": {
          "endpoint": {
            "type": "string"
          },
          "events": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "schema": {
            "type": "object",
            "additionalProperties": true
          }
        },
        "additionalProperties": true
      },
      "SubscriptionCreated": {
        "type": "object",
        "properties": {
          "subscriptionId": {
            "type": "string"
          },
          "events": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "status": {
            "type": "string"
          }
        },
        "additionalProperties": true
      },
      "WorkflowDocs": {
        "type": "object",
        "description": "Self-describing workflow documentation (steps, inputs, outcomes).",
        "properties": {
          "workflow": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "steps": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          }
        },
        "additionalProperties": true
      },
      "DiscoveryProfile": {
        "type": "object",
        "description": "Aggregated profile: identity, services, capabilities, availability, entry points in one response.",
        "properties": {
          "profile": {
            "type": "object",
            "additionalProperties": true
          },
          "services": {
            "type": "object",
            "additionalProperties": true
          },
          "capabilities": {
            "type": "object",
            "additionalProperties": true
          },
          "actions": {
            "type": "object",
            "additionalProperties": true
          }
        },
        "additionalProperties": true
      },
      "OpenApiSpec": {
        "type": "object",
        "description": "OpenAPI 3.1 document (this specification).",
        "additionalProperties": true
      }
    }
  },
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "paths": {
    "/api/directory.json": {
      "get": {
        "operationId": "getDirectory",
        "summary": "API directory — lists all endpoints, discovery files, and contact info",
        "tags": [
          "Discovery"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/apiVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "API directory object",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Directory"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/services.json": {
      "get": {
        "operationId": "getServices",
        "summary": "Schema.org OfferCatalog of all services (bilingual DE/EN)",
        "tags": [
          "Content"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/apiVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "OfferCatalog JSON-LD",
            "content": {
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonLdItemList"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/work.json": {
      "get": {
        "operationId": "getWork",
        "summary": "Schema.org ItemList of all portfolio case studies",
        "tags": [
          "Content"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/apiVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "ItemList of CreativeWork entries",
            "content": {
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonLdItemList"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/capabilities.json": {
      "get": {
        "operationId": "getCapabilities",
        "summary": "Capability graph — areas, technologies, industries, mapped cases",
        "tags": [
          "Content"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/apiVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "ItemList of DefinedTerm entries",
            "content": {
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonLdItemList"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/problem-types.json": {
      "get": {
        "operationId": "getProblemTypes",
        "summary": "Problem types mapped to capabilities and relevant cases",
        "tags": [
          "Content"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/apiVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "ItemList of DefinedTerm entries",
            "content": {
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonLdItemList"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/availability.json": {
      "get": {
        "operationId": "getAvailability",
        "summary": "Cal.com slot snapshot (next 14 days) with booking options",
        "tags": [
          "Booking"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/apiVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Schedule JSON-LD with day-by-day slots",
            "content": {
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/Schedule"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/thinking.json": {
      "get": {
        "operationId": "getThinking",
        "summary": "Articles, essays, and field notes (when published)",
        "tags": [
          "Content"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/apiVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "ItemList of Article entries",
            "content": {
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonLdItemList"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/search": {
      "get": {
        "operationId": "search",
        "summary": "Search across work, services, capabilities, and problem types",
        "tags": [
          "Search"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/apiVersion"
          },
          {
            "name": "q",
            "in": "query",
            "required": true,
            "description": "Search query string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "type",
            "in": "query",
            "required": false,
            "description": "Filter by content type: work, services, capabilities, problem-types",
            "schema": {
              "type": "string",
              "enum": [
                "work",
                "services",
                "capabilities",
                "problem-types"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Max results (default 20, max 50). Results are a single ranked page; there is no cursor — narrow the query instead of paging.",
            "schema": {
              "type": "integer",
              "default": 20,
              "maximum": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Search results with score-ranked items",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResults"
                }
              }
            }
          },
          "400": {
            "description": "Missing query parameter (code MISSING_QUERY)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/negotiate": {
      "get": {
        "operationId": "getNegotiationManifest",
        "summary": "Returns full capability manifest for static agent discovery",
        "tags": [
          "Negotiation"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/apiVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Capability manifest with all skills, problem types, and negotiation schema",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NegotiationManifest"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "negotiateCapability",
        "summary": "Agent-to-agent capability negotiation — check if this agent can handle a request",
        "tags": [
          "Negotiation"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/apiVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "query": {
                    "type": "string",
                    "description": "Natural language description of what you need"
                  },
                  "requiredCapabilities": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Capability names or keywords"
                  },
                  "problemType": {
                    "type": "string",
                    "description": "Type of problem to solve"
                  },
                  "budget": {
                    "type": "string",
                    "description": "Budget range (optional context)"
                  },
                  "timeline": {
                    "type": "string",
                    "description": "Timeline constraints (optional)"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Negotiation result with match confidence, capabilities, and next steps",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NegotiationResult"
                }
              }
            }
          },
          "400": {
            "description": "Malformed request body",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/contact": {
      "get": {
        "operationId": "getContactSchema",
        "summary": "Returns usage documentation and schema for the contact endpoint",
        "tags": [
          "Contact"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/apiVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Endpoint documentation with schema and example",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactDocs"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "submitContact",
        "summary": "Submit a contact inquiry",
        "tags": [
          "Contact"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/apiVersion"
          },
          {
            "$ref": "#/components/parameters/idempotencyKey"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "name",
                  "email",
                  "message"
                ],
                "properties": {
                  "name": {
                    "type": "string",
                    "minLength": 2
                  },
                  "email": {
                    "type": "string",
                    "format": "email"
                  },
                  "message": {
                    "type": "string",
                    "minLength": 10
                  },
                  "topic": {
                    "type": "string",
                    "enum": [
                      "general",
                      "ai-strategy",
                      "design",
                      "collaboration",
                      "talk"
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Inquiry received",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactAccepted"
                }
              }
            }
          },
          "422": {
            "description": "Validation error (code VALIDATION_ERROR, message lists the failing fields)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/workflows/discovery": {
      "get": {
        "operationId": "getDiscoveryProfile",
        "summary": "Aggregated discovery workflow — full profile, services, capabilities, and actions in one request",
        "tags": [
          "Workflows"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/apiVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Aggregated profile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DiscoveryProfile"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/workflows/booking": {
      "get": {
        "operationId": "getBookingWorkflowDocs",
        "summary": "Booking workflow documentation — steps from availability check to confirmed slot",
        "tags": [
          "Workflows"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/apiVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Workflow documentation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkflowDocs"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "runBookingWorkflow",
        "summary": "Orchestrated booking flow (availability check, slot selection, booking link)",
        "tags": [
          "Workflows"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/apiVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true,
                "description": "See GET /api/workflows/booking for the current step schema."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Workflow step result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Malformed request body",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/subscriptions": {
      "get": {
        "operationId": "getSubscriptionDocs",
        "summary": "Returns webhook/subscription endpoint documentation and available events",
        "tags": [
          "Webhooks"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/apiVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Subscription documentation with events and schema",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SubscriptionDocs"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "createSubscription",
        "summary": "Register a callback URL for event notifications (webhooks)",
        "tags": [
          "Webhooks"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/apiVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "callbackUrl",
                  "events"
                ],
                "properties": {
                  "callbackUrl": {
                    "type": "string",
                    "format": "uri",
                    "description": "HTTPS URL to receive webhooks"
                  },
                  "events": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "case.published",
                        "availability.changed",
                        "service.updated",
                        "capability.added",
                        "profile.updated"
                      ]
                    }
                  },
                  "agent": {
                    "type": "string",
                    "description": "Agent name for tracking"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Subscription created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SubscriptionCreated"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "deleteSubscription",
        "summary": "Unsubscribe from event notifications",
        "tags": [
          "Webhooks"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/apiVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "subscriptionId"
                ],
                "properties": {
                  "subscriptionId": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Unsubscribed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    }
                  },
                  "additionalProperties": true
                }
              }
            }
          },
          "404": {
            "description": "Subscription not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/openapi.json": {
      "get": {
        "operationId": "getOpenApiSpec",
        "summary": "This OpenAPI specification",
        "tags": [
          "Discovery"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/apiVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "OpenAPI 3.1 specification",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenApiSpec"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    }
  },
  "externalDocs": {
    "description": "Agent Documentation",
    "url": "https://koljapitz.de/agent"
  }
}