{"openapi": "3.0.3", "info": {"title": "move to germany, lol — aggregation API", "version": "1.0.0", "description": "Distance-sorted essentials search across 80+ German business directories."}, "servers": [{"url": "https://movetogermany.lol"}], "paths": {"/api/categories": {"get": {"operationId": "listCategories", "summary": "All categories of the network", "responses": {"200": {"description": "Category catalog"}}}}, "/api/search": {"get": {"operationId": "searchCategory", "summary": "Closest providers of one category around a PLZ", "parameters": [{"name": "cat", "in": "query", "required": true, "schema": {"type": "string"}}, {"name": "plz", "in": "query", "required": true, "schema": {"type": "string", "pattern": "^[0-9]{5}$"}}, {"name": "limit", "in": "query", "schema": {"type": "integer", "maximum": 20}}], "responses": {"200": {"description": "Distance-sorted providers"}, "400": {"description": "Missing parameters"}}}}, "/api/jobs": {"get": {"operationId": "searchJobs", "summary": "Job openings around a PLZ (official Bundesagentur fuer Arbeit data)", "parameters": [{"name": "plz", "in": "query", "required": true, "schema": {"type": "string", "pattern": "^[0-9]{5}$"}}, {"name": "what", "in": "query", "schema": {"type": "string", "description": "free-text job query, e.g. 'python developer'"}}, {"name": "limit", "in": "query", "schema": {"type": "integer", "maximum": 20}}, {"name": "radius", "in": "query", "schema": {"type": "integer", "maximum": 200, "description": "km, default 25"}}], "responses": {"200": {"description": "Job openings with salary ranges and official detail links"}, "400": {"description": "Missing parameters"}, "502": {"description": "Upstream API unavailable"}}}}, "/api/booking": {"get": {"operationId": "searchBookable", "summary": "Unified booking lookup: online-bookable providers across categories/platforms", "parameters": [{"name": "plz", "in": "query", "required": true, "schema": {"type": "string", "pattern": "^[0-9]{5}$"}}, {"name": "category", "in": "query", "schema": {"type": "string"}}, {"name": "limit", "in": "query", "schema": {"type": "integer", "maximum": 10}}], "responses": {"200": {"description": "Bookable providers with normalized platform + deep link"}, "400": {"description": "Missing parameters"}}}}, "/api/paperwork": {"get": {"operationId": "getPaperwork", "summary": "German paperwork starter pack with official links", "responses": {"200": {"description": "Ordered checklist"}}}}, "/api/essentials": {"get": {"operationId": "searchEssentials", "summary": "Many categories in parallel around a PLZ", "parameters": [{"name": "plz", "in": "query", "required": true, "schema": {"type": "string", "pattern": "^[0-9]{5}$"}}, {"name": "cats", "in": "query", "schema": {"type": "string", "description": "comma-separated slugs"}}, {"name": "limit", "in": "query", "schema": {"type": "integer", "maximum": 5}}], "responses": {"200": {"description": "Per-category distance-sorted providers"}, "400": {"description": "Missing parameters"}}}}}}