{"openapi": "3.1.0", "info": {"title": "Termin in meiner Nähe API", "version": "1.0.0", "description": "Betriebe mit Online-Terminbuchung in der Nähe finden. Nur lesend, ohne Schlüssel. Versionierung über den Pfad (/api/v1). Innerhalb von v1 kommen nur Felder hinzu. Abkündigung mit mindestens sechs Monaten Vorlauf über /docs, /llms.txt und die Header Deprecation/Sunset.", "x-deprecation-policy": "https://termin-in-meiner-naehe.de/docs"}, "servers": [{"url": "https://termin-in-meiner-naehe.de"}], "paths": {"/api/v1/online-buchbar": {"get": {"operationId": "findBookableNear", "summary": "Betriebe mit Online-Terminbuchung in der Nähe", "parameters": [{"name": "kategorie", "in": "query", "required": true, "schema": {"type": "string", "enum": ["friseur", "kosmetikstudio", "nagelstudio", "laserhaarentfernung", "tattoo", "fitnessstudio", "yoga-studio", "pilates", "tierklinik", "autowerkstatt", "reifenwechsel", "autohaus", "kfz-gutachter", "fahrradwerkstatt", "steuerberater", "versicherungsmakler", "immobilienmakler", "nachhilfe", "kuechenstudio", "handyreparatur"]}}, {"name": "ort", "in": "query", "required": true, "schema": {"type": "string"}, "description": "PLZ oder Ortsname"}, {"name": "umkreis_km", "in": "query", "schema": {"type": "number", "minimum": 1, "maximum": 50, "default": 25}}, {"name": "limit", "in": "query", "schema": {"type": "integer", "minimum": 1, "maximum": 20, "default": 10}}], "responses": {"200": {"description": "Treffer", "content": {"application/json": {"schema": {"type": "object", "properties": {"anzahl": {"type": "integer"}, "treffer": {"type": "array", "items": {"type": "object", "properties": {"id": {"type": "string"}, "name": {"type": "string"}, "adresse": {"type": "string"}, "entfernung_km": {"type": "number"}, "telefon": {"type": "string"}, "website": {"type": "string"}, "profil": {"type": "string", "format": "uri"}, "buchung": {"type": "object", "properties": {"url": {"type": "string", "format": "uri"}, "art": {"type": "string", "enum": ["plattform", "eigene_seite"]}, "anbieter": {"type": "string"}}}}}}}}}}}, "400": {"description": "Fehler (RFC 9457)", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problem"}}}}, "404": {"description": "Fehler (RFC 9457)", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problem"}}}}, "429": {"description": "Fehler (RFC 9457)", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problem"}}}}, "503": {"description": "Fehler (RFC 9457)", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problem"}}}}}}}, "/api/v1/kategorien": {"get": {"operationId": "listCategories", "summary": "Unterstützte Kategorien", "responses": {"200": {"description": "Liste", "content": {"application/json": {"schema": {"type": "object", "properties": {"kategorien": {"type": "array", "items": {"type": "object", "properties": {"slug": {"type": "string"}, "bezeichnung": {"type": "string"}, "plural": {"type": "string"}}}}, "hinweis": {"type": "string"}}}}}}, "429": {"description": "Fehler (RFC 9457)", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problem"}}}}}}}}, "components": {"schemas": {"Problem": {"type": "object", "properties": {"type": {"type": "string"}, "title": {"type": "string"}, "status": {"type": "integer"}, "code": {"type": "string"}, "detail": {"type": "string"}, "instance": {"type": "string"}}}}}}