{"openapi":"3.1.0","info":{"title":"CoworkingView API","version":"1.0.0","description":"Read API for the CoworkingView catalogue plus the lead write path. Within a major version this contract is APPEND-ONLY: fields are added, never removed or retyped, because clients include mobile builds that cannot be recalled. A breaking change means /v2, with /v1 kept alive for at least two app releases. No API key: every endpoint is public, which the root `security: []` states explicitly. The catalogue data is published under CC BY 4.0: every catalogue and market response carries `meta.citation` — the licence, the canonical public page for that data and a one-line attribution (`meta.citation.text`) to reproduce wherever the data is reused. The two POST /v1/leads/* operations are NOT reads: each one creates a real enquiry that is sent to the CoworkingView team and forwarded to space operators."},"security":[],"servers":[{"url":"https://api.coworkingview.com","description":"Production"}],"paths":{"/v1/config":{"get":{"operationId":"config","summary":"Remote config, feature flags and the minimum supported build.","description":"Remote configuration for official clients: feature flags and the minimum supported app build. Third-party agents can ignore this; catalogue reads do not depend on it. No API key.","tags":["config"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"data":{"type":"object","properties":{"minSupportedBuild":{"type":"integer","minimum":0,"maximum":9007199254740991},"recommendedBuild":{"type":"integer","minimum":0,"maximum":9007199254740991},"flags":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"boolean"}},"message":{"type":"object","properties":{"title":{"type":"string"},"body":{"type":"string"},"severity":{"type":"string","enum":["info","warning","critical"]}},"required":["title","body","severity"],"additionalProperties":false}},"required":["minSupportedBuild","flags"],"additionalProperties":false},"meta":{"type":"object","properties":{"contractVersion":{"type":"string"},"pagination":{"type":"object","properties":{"page":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"pageSize":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"pageCount":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["page","pageSize","total","pageCount"],"additionalProperties":false},"truncated":{"type":"boolean"},"seed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"citation":{"type":"object","properties":{"source":{"type":"string","const":"CoworkingView"},"title":{"type":"string"},"url":{"type":"string","format":"uri"},"accessed":{"type":"string","description":"ISO date (YYYY-MM-DD, UTC) the data was served."},"license":{"type":"string","const":"CC BY 4.0"},"licenseUrl":{"type":"string","const":"https://creativecommons.org/licenses/by/4.0/"},"text":{"type":"string","description":"One-line human attribution, ready to paste: \"Source: CoworkingView — {title}, {url}. CC BY 4.0.\" (localized by the request locale)."}},"required":["source","title","url","accessed","license","licenseUrl","text"],"additionalProperties":false,"description":"How to credit this data (CC BY 4.0 requires attribution). Copy `text`, or build your own from `title` + `url`."}},"required":["contractVersion"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false},"examples":{"illustrative":{"summary":"Illustrative values, not live data","value":{"data":{"minSupportedBuild":1,"flags":{"mapClustering":true}},"meta":{"contractVersion":"1.0.0"}}}}}}},"400":{"description":"VALIDATION_FAILED","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false},"example":{"type":"https://coworkingview.com/problems/validation-failed","title":"Validation failed","status":400,"code":"VALIDATION_FAILED","errors":[{"path":"locale","message":"Invalid option: expected one of \"en\"|\"de\"|\"es\""}]}}}},"429":{"description":"RATE_LIMITED","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}}}},"502":{"description":"UPSTREAM_UNAVAILABLE","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}}}}},"x-cache":{"maxAge":60,"staleWhileRevalidate":60}}},"/v1/leads/contact":{"post":{"operationId":"contact","summary":"Send a real general enquiry to the CoworkingView team.","description":"WRITE — creates a real lead: the message is sent to the CoworkingView team, and a person will reply to the email given. Call it only when the user has explicitly asked to contact CoworkingView and has provided their own contact details; never to test the API. General contact enquiry (not tied to a specific space). Requires a Turnstile challenge token in production. Prefer inquiry when the user has already picked a listing. Safe to retry: send an `Idempotency-Key` header and a retried request with the SAME key and body replays the original response instead of creating a second lead; the same key with a DIFFERENT body returns 422 IDEMPOTENCY_KEY_CONFLICT. Omitting the header leaves behaviour unchanged.","tags":["leads"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Optional client-chosen key that makes a retry safe. The same key with the same body replays the first response (header `Idempotency-Replayed: true`) instead of creating a second enquiry; the same key with a different body is rejected with 422 IDEMPOTENCY_KEY_CONFLICT. A 5xx is not stored, so it can be retried under the same key.","schema":{"type":"string","maxLength":200}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"email":{"type":"string","maxLength":200,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"phone":{"type":"string","maxLength":40},"company":{"type":"string","maxLength":160},"message":{"type":"string","maxLength":4000},"locale":{"type":"string","enum":["en","de","es"]},"attribution":{"type":"object","properties":{"firstTouch":{"type":"string","maxLength":200},"lastTouch":{"type":"string","maxLength":200},"source":{"type":"string","enum":["web","app"]},"campaign":{"type":"string","maxLength":120},"viewedProperties":{"maxItems":50,"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-z0-9-]+$"}}},"required":["source"]},"challengeToken":{"type":"string","maxLength":4000},"website":{"type":"string","maxLength":0},"subject":{"type":"string","maxLength":200}},"required":["name","email","locale"]},"example":{"name":"Jane Doe","email":"jane@example.com","subject":"Listing our space","message":"We run a coworking space in Leipzig and would like to be listed.","locale":"en","challengeToken":"<turnstile-token>"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"data":{"type":"object","properties":{"received":{"type":"boolean","const":true},"reference":{"type":"string"}},"required":["received","reference"],"additionalProperties":false},"meta":{"type":"object","properties":{"contractVersion":{"type":"string"},"pagination":{"type":"object","properties":{"page":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"pageSize":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"pageCount":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["page","pageSize","total","pageCount"],"additionalProperties":false},"truncated":{"type":"boolean"},"seed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"citation":{"type":"object","properties":{"source":{"type":"string","const":"CoworkingView"},"title":{"type":"string"},"url":{"type":"string","format":"uri"},"accessed":{"type":"string","description":"ISO date (YYYY-MM-DD, UTC) the data was served."},"license":{"type":"string","const":"CC BY 4.0"},"licenseUrl":{"type":"string","const":"https://creativecommons.org/licenses/by/4.0/"},"text":{"type":"string","description":"One-line human attribution, ready to paste: \"Source: CoworkingView — {title}, {url}. CC BY 4.0.\" (localized by the request locale)."}},"required":["source","title","url","accessed","license","licenseUrl","text"],"additionalProperties":false,"description":"How to credit this data (CC BY 4.0 requires attribution). Copy `text`, or build your own from `title` + `url`."}},"required":["contractVersion"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false},"examples":{"illustrative":{"summary":"Illustrative values, not live data","value":{"data":{"received":true,"reference":"7c1e4d90-5b2a-4f61-8a3d-2e9b0c6f4a21"},"meta":{"contractVersion":"1.0.0"}}}}}}},"400":{"description":"VALIDATION_FAILED","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false},"example":{"type":"https://coworkingview.com/problems/validation-failed","title":"Validation failed","status":400,"code":"VALIDATION_FAILED","errors":[{"path":"locale","message":"Invalid option: expected one of \"en\"|\"de\"|\"es\""}]}}}},"403":{"description":"CHALLENGE_FAILED","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}}}},"422":{"description":"IDEMPOTENCY_KEY_CONFLICT","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}}}},"429":{"description":"RATE_LIMITED","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}}}},"502":{"description":"UPSTREAM_UNAVAILABLE","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}}}}}}},"/v1/facets":{"get":{"operationId":"facets","summary":"Filter options with contextual counts, driving the filter sheet.","description":"Facet values and counts for the current filter context (cities, zones, amenities, workspace types, operators). Use this to discover valid filter values before listing. No API key.","tags":["facets"],"parameters":[{"name":"locale","in":"query","required":true,"schema":{"type":"string","enum":["en","de","es"]},"example":"en"},{"name":"country","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-z0-9-]+$"}},{"name":"city","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-z0-9-]+$"},"example":"berlin"},{"name":"zone","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-z0-9-]+$"}},{"name":"operator","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-z0-9-]+$"}},{"name":"pricingOptionType","in":"query","required":false,"schema":{"type":"string","enum":["private_office","exclusive_bereich","fix_desk","flex_desk","day_pass","meeting_room","virtual_office","event_space","membership"]}},{"name":"currency","in":"query","required":false,"schema":{"type":"string","enum":["EUR","GBP","USD","CHF","VES","AED"]}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"data":{"type":"object","properties":{"facets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","enum":["country","city","zone","operator","pricingOptionType","amenities"]},"label":{"type":"string"},"values":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-z0-9_-]+$"},"label":{"type":"string"},"count":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["value","label","count"],"additionalProperties":false}}},"required":["key","label","values"],"additionalProperties":false}},"priceRange":{"type":"object","properties":{"min":{"type":"object","properties":{"amount":{"type":"number","minimum":0},"currency":{"type":"string","enum":["EUR","GBP","USD","CHF","VES","AED"]}},"required":["amount","currency"],"additionalProperties":false},"max":{"type":"object","properties":{"amount":{"type":"number","minimum":0},"currency":{"type":"string","enum":["EUR","GBP","USD","CHF","VES","AED"]}},"required":["amount","currency"],"additionalProperties":false}},"required":["min","max"],"additionalProperties":false},"capacityRange":{"type":"object","properties":{"min":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"max":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["min","max"],"additionalProperties":false}},"required":["facets"],"additionalProperties":false},"meta":{"type":"object","properties":{"contractVersion":{"type":"string"},"pagination":{"type":"object","properties":{"page":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"pageSize":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"pageCount":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["page","pageSize","total","pageCount"],"additionalProperties":false},"truncated":{"type":"boolean"},"seed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"citation":{"type":"object","properties":{"source":{"type":"string","const":"CoworkingView"},"title":{"type":"string"},"url":{"type":"string","format":"uri"},"accessed":{"type":"string","description":"ISO date (YYYY-MM-DD, UTC) the data was served."},"license":{"type":"string","const":"CC BY 4.0"},"licenseUrl":{"type":"string","const":"https://creativecommons.org/licenses/by/4.0/"},"text":{"type":"string","description":"One-line human attribution, ready to paste: \"Source: CoworkingView — {title}, {url}. CC BY 4.0.\" (localized by the request locale)."}},"required":["source","title","url","accessed","license","licenseUrl","text"],"additionalProperties":false,"description":"How to credit this data (CC BY 4.0 requires attribution). Copy `text`, or build your own from `title` + `url`."}},"required":["contractVersion"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false},"examples":{"illustrative":{"summary":"Illustrative values, not live data","value":{"data":{"facets":[{"key":"zone","label":"Neighbourhood","values":[{"value":"mitte","label":"Mitte","count":14},{"value":"kreuzberg","label":"Kreuzberg","count":9}]},{"key":"pricingOptionType","label":"Workspace type","values":[{"value":"private_office","label":"Private office","count":21},{"value":"flex_desk","label":"Flex desk","count":18}]}],"priceRange":{"min":{"amount":150,"currency":"EUR"},"max":{"amount":2400,"currency":"EUR"}},"capacityRange":{"min":1,"max":60}},"meta":{"contractVersion":"1.0.0"}}}}}}},"400":{"description":"VALIDATION_FAILED","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false},"example":{"type":"https://coworkingview.com/problems/validation-failed","title":"Validation failed","status":400,"code":"VALIDATION_FAILED","errors":[{"path":"locale","message":"Invalid option: expected one of \"en\"|\"de\"|\"es\""}]}}}},"429":{"description":"RATE_LIMITED","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}}}},"502":{"description":"UPSTREAM_UNAVAILABLE","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}}}}},"x-cache":{"maxAge":600,"staleWhileRevalidate":3600}}},"/v1/geo/bootstrap":{"get":{"operationId":"geoBootstrap","summary":"Countries, cities and zones index. Small and long-lived.","description":"The full geography index: countries, cities and zones with slugs. Call once and cache; it changes rarely. Use the slugs as filter values on listProperties. No API key.","tags":["geo"],"parameters":[{"name":"locale","in":"query","required":true,"schema":{"type":"string","enum":["en","de","es"]},"example":"en"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"data":{"type":"object","properties":{"countries":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-z0-9-]+$"},"name":{"type":"string"},"code":{"type":"string","minLength":2,"maxLength":2},"propertyCount":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["slug","name","code","propertyCount"],"additionalProperties":false}},"cities":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-z0-9-]+$"},"name":{"type":"string"},"countryCode":{"type":"string","minLength":2,"maxLength":2},"propertyCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"center":{"type":"object","properties":{"lat":{"type":"number"},"lng":{"type":"number"}},"required":["lat","lng"],"additionalProperties":false},"icon":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"width":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"height":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"alt":{"type":"string"},"thumbHash":{"type":"string"}},"required":["url","width","height","alt"],"additionalProperties":false},"zones":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-z0-9-]+$"},"name":{"type":"string"},"propertyCount":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["slug","name","propertyCount"],"additionalProperties":false}}},"required":["slug","name","countryCode","propertyCount","center","zones"],"additionalProperties":false}},"currencies":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","enum":["EUR","GBP","USD","CHF","VES","AED"]}}},"required":["countries","cities","currencies"],"additionalProperties":false},"meta":{"type":"object","properties":{"contractVersion":{"type":"string"},"pagination":{"type":"object","properties":{"page":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"pageSize":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"pageCount":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["page","pageSize","total","pageCount"],"additionalProperties":false},"truncated":{"type":"boolean"},"seed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"citation":{"type":"object","properties":{"source":{"type":"string","const":"CoworkingView"},"title":{"type":"string"},"url":{"type":"string","format":"uri"},"accessed":{"type":"string","description":"ISO date (YYYY-MM-DD, UTC) the data was served."},"license":{"type":"string","const":"CC BY 4.0"},"licenseUrl":{"type":"string","const":"https://creativecommons.org/licenses/by/4.0/"},"text":{"type":"string","description":"One-line human attribution, ready to paste: \"Source: CoworkingView — {title}, {url}. CC BY 4.0.\" (localized by the request locale)."}},"required":["source","title","url","accessed","license","licenseUrl","text"],"additionalProperties":false,"description":"How to credit this data (CC BY 4.0 requires attribution). Copy `text`, or build your own from `title` + `url`."}},"required":["contractVersion"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false},"examples":{"illustrative":{"summary":"Illustrative values, not live data","value":{"data":{"countries":[{"slug":"germany","name":"Germany","code":"DE","propertyCount":40}],"cities":[{"slug":"berlin","name":"Berlin","countryCode":"DE","propertyCount":32,"center":{"lat":52.52,"lng":13.405},"zones":[{"slug":"mitte","name":"Mitte","propertyCount":14}]}],"currencies":{"DE":"EUR"}},"meta":{"contractVersion":"1.0.0"}}}}}}},"400":{"description":"VALIDATION_FAILED","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false},"example":{"type":"https://coworkingview.com/problems/validation-failed","title":"Validation failed","status":400,"code":"VALIDATION_FAILED","errors":[{"path":"locale","message":"Invalid option: expected one of \"en\"|\"de\"|\"es\""}]}}}},"429":{"description":"RATE_LIMITED","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}}}},"502":{"description":"UPSTREAM_UNAVAILABLE","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}}}}},"x-cache":{"maxAge":3600,"staleWhileRevalidate":86400}}},"/v1/health":{"get":{"operationId":"health","summary":"Liveness probe; reports the deployed build sha.","description":"Unauthenticated liveness check for the CoworkingView catalogue API. Returns the deployed git sha so a caller can confirm which build is serving traffic. No API key. Use this to verify the public API is reachable before issuing catalogue queries.","tags":["health"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"data":{"type":"object","properties":{"status":{"type":"string","const":"ok"},"sha":{"type":"string"}},"required":["status","sha"],"additionalProperties":false},"meta":{"type":"object","properties":{"contractVersion":{"type":"string"},"pagination":{"type":"object","properties":{"page":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"pageSize":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"pageCount":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["page","pageSize","total","pageCount"],"additionalProperties":false},"truncated":{"type":"boolean"},"seed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"citation":{"type":"object","properties":{"source":{"type":"string","const":"CoworkingView"},"title":{"type":"string"},"url":{"type":"string","format":"uri"},"accessed":{"type":"string","description":"ISO date (YYYY-MM-DD, UTC) the data was served."},"license":{"type":"string","const":"CC BY 4.0"},"licenseUrl":{"type":"string","const":"https://creativecommons.org/licenses/by/4.0/"},"text":{"type":"string","description":"One-line human attribution, ready to paste: \"Source: CoworkingView — {title}, {url}. CC BY 4.0.\" (localized by the request locale)."}},"required":["source","title","url","accessed","license","licenseUrl","text"],"additionalProperties":false,"description":"How to credit this data (CC BY 4.0 requires attribution). Copy `text`, or build your own from `title` + `url`."}},"required":["contractVersion"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false},"examples":{"illustrative":{"summary":"Illustrative values, not live data","value":{"data":{"status":"ok","sha":"3f9c2a1"},"meta":{"contractVersion":"1.0.0"}}}}}}},"400":{"description":"VALIDATION_FAILED","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false},"example":{"type":"https://coworkingview.com/problems/validation-failed","title":"Validation failed","status":400,"code":"VALIDATION_FAILED","errors":[{"path":"locale","message":"Invalid option: expected one of \"en\"|\"de\"|\"es\""}]}}}},"429":{"description":"RATE_LIMITED","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}}}},"502":{"description":"UPSTREAM_UNAVAILABLE","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}}}}}}},"/v1/leads/inquiry":{"post":{"operationId":"inquiry","summary":"Send a real enquiry to the CoworkingView team (single property or shortlist).","description":"WRITE — creates a real lead: the enquiry is sent to the CoworkingView team and forwarded to the space operator, and a person will contact the email given. Call it only when the user has explicitly asked to enquire and has provided their own contact details; never to test the API or to \"check availability\". Create a lead for one space or a shortlist. This is the only write most agents need. Requires a Turnstile challenge token in production (CHALLENGE_FAILED if it is missing or invalid). CoworkingView forwards the enquiry to the operator; it does not broker the contract. Safe to retry: send an `Idempotency-Key` header (any unique string, e.g. a UUID per logical submission) and a retried request with the SAME key and body returns the original response without creating a second lead. The same key reused with a DIFFERENT body is a client bug and returns 422 IDEMPOTENCY_KEY_CONFLICT rather than guessing which body to honour. Omitting the header is fine — behaviour is unchanged and a request without one is executed every time.","tags":["leads"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Optional client-chosen key that makes a retry safe. The same key with the same body replays the first response (header `Idempotency-Replayed: true`) instead of creating a second enquiry; the same key with a different body is rejected with 422 IDEMPOTENCY_KEY_CONFLICT. A 5xx is not stored, so it can be retried under the same key.","schema":{"type":"string","maxLength":200}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"email":{"type":"string","maxLength":200,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"phone":{"type":"string","maxLength":40},"company":{"type":"string","maxLength":160},"message":{"type":"string","maxLength":4000},"locale":{"type":"string","enum":["en","de","es"]},"attribution":{"type":"object","properties":{"firstTouch":{"type":"string","maxLength":200},"lastTouch":{"type":"string","maxLength":200},"source":{"type":"string","enum":["web","app"]},"campaign":{"type":"string","maxLength":120},"viewedProperties":{"maxItems":50,"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-z0-9-]+$"}}},"required":["source"]},"challengeToken":{"type":"string","maxLength":4000},"website":{"type":"string","maxLength":0},"properties":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-z0-9-]+$"}},"desks":{"type":"integer","exclusiveMinimum":0,"maximum":1000},"moveInDate":{"type":"string","format":"date","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])))$"},"duration":{"type":"string","enum":["hours","days","weeks","months","years"]}},"required":["name","email","locale","properties"]},"example":{"name":"Jane Doe","email":"jane@example.com","company":"Example GmbH","message":"Looking for a private office for 6 people from January.","locale":"en","properties":["example-coworking-mitte"],"desks":6,"moveInDate":"2027-01-01","duration":"months","challengeToken":"<turnstile-token>"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"data":{"type":"object","properties":{"received":{"type":"boolean","const":true},"reference":{"type":"string"}},"required":["received","reference"],"additionalProperties":false},"meta":{"type":"object","properties":{"contractVersion":{"type":"string"},"pagination":{"type":"object","properties":{"page":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"pageSize":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"pageCount":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["page","pageSize","total","pageCount"],"additionalProperties":false},"truncated":{"type":"boolean"},"seed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"citation":{"type":"object","properties":{"source":{"type":"string","const":"CoworkingView"},"title":{"type":"string"},"url":{"type":"string","format":"uri"},"accessed":{"type":"string","description":"ISO date (YYYY-MM-DD, UTC) the data was served."},"license":{"type":"string","const":"CC BY 4.0"},"licenseUrl":{"type":"string","const":"https://creativecommons.org/licenses/by/4.0/"},"text":{"type":"string","description":"One-line human attribution, ready to paste: \"Source: CoworkingView — {title}, {url}. CC BY 4.0.\" (localized by the request locale)."}},"required":["source","title","url","accessed","license","licenseUrl","text"],"additionalProperties":false,"description":"How to credit this data (CC BY 4.0 requires attribution). Copy `text`, or build your own from `title` + `url`."}},"required":["contractVersion"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false},"examples":{"illustrative":{"summary":"Illustrative values, not live data","value":{"data":{"received":true,"reference":"0b8f6a52-2a3e-4c4e-9f0e-6f1d2b7c9e10"},"meta":{"contractVersion":"1.0.0"}}}}}}},"400":{"description":"VALIDATION_FAILED","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false},"example":{"type":"https://coworkingview.com/problems/validation-failed","title":"Validation failed","status":400,"code":"VALIDATION_FAILED","errors":[{"path":"locale","message":"Invalid option: expected one of \"en\"|\"de\"|\"es\""}]}}}},"403":{"description":"CHALLENGE_FAILED","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}}}},"422":{"description":"IDEMPOTENCY_KEY_CONFLICT","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}}}},"429":{"description":"RATE_LIMITED","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}}}},"502":{"description":"UPSTREAM_UNAVAILABLE","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}}}}}}},"/v1/properties":{"get":{"operationId":"listProperties","summary":"Paginated listing cards for the Explore sheet.","description":"List coworking spaces and private offices as compact cards. Filter by locale (required), city, zone, workspace type, amenities, operator, capacity and price. Paginated. Prices are the operator-published figures in each space's own currency. No API key.","tags":["properties"],"parameters":[{"name":"locale","in":"query","required":true,"schema":{"type":"string","enum":["en","de","es"]},"example":"en"},{"name":"page","in":"query","required":false,"schema":{"default":1,"type":"integer","exclusiveMinimum":0,"maximum":500}},{"name":"pageSize","in":"query","required":false,"schema":{"default":20,"type":"integer","exclusiveMinimum":0,"maximum":50},"example":2},{"name":"seed","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":2147483647},"description":"Seed for sortBy=random. Required to paginate a random list: reuse the seed returned in meta.seed on every following page, or results repeat and skip."},{"name":"country","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-z0-9-]+$"}},{"name":"city","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-z0-9-]+$"},"example":"berlin"},{"name":"zone","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-z0-9-]+$"}},{"name":"operator","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-z0-9-]+$"}},{"name":"pricingOptionType","in":"query","required":false,"schema":{"type":"string","enum":["private_office","exclusive_bereich","fix_desk","flex_desk","day_pass","meeting_room","virtual_office","event_space","membership"]},"example":"private_office"},{"name":"amenities","in":"query","required":false,"schema":{"type":"string"},"description":"Comma-separated amenity slugs, e.g. wifi,coffee,parking (max 20)"},{"name":"minCapacity","in":"query","required":false,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"example":4},{"name":"minPrice","in":"query","required":false,"schema":{"type":"number","minimum":0}},{"name":"maxPrice","in":"query","required":false,"schema":{"type":"number","minimum":0}},{"name":"currency","in":"query","required":false,"schema":{"type":"string","enum":["EUR","GBP","USD","CHF","VES","AED"]}},{"name":"sortBy","in":"query","required":false,"schema":{"default":"random","type":"string","enum":["random","date-desc","date-asc","distance","price-asc","rating-desc"]}},{"name":"lat","in":"query","required":false,"schema":{"type":"number","minimum":-90,"maximum":90}},{"name":"lng","in":"query","required":false,"schema":{"type":"number","minimum":-180,"maximum":180}},{"name":"radiusMeters","in":"query","required":false,"schema":{"type":"number","exclusiveMinimum":0,"maximum":200000}},{"name":"bbox","in":"query","required":false,"schema":{"type":"string"},"description":"Viewport as \"west,south,east,north\" in WGS84 degrees, e.g. 13.2,52.4,13.6,52.6"},{"name":"address","in":"query","required":false,"schema":{"type":"string","minLength":3,"maxLength":120},"description":"Street address, e.g. \"Domstraße 17\" or \"Calle Velázquez 34\". Narrows to listings AT that address (house number inside the listing's number or range) and on the same street; the ones at the address come first, each group in sortBy order. Not geocoded: to search AROUND an address, pass lat/lng + radiusMeters."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-z0-9-]+$"},"title":{"type":"string"},"countryCode":{"type":"string","minLength":2,"maxLength":2},"city":{"type":"object","properties":{"slug":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-z0-9-]+$"},"name":{"type":"string"}},"required":["slug","name"],"additionalProperties":false},"zone":{"type":"object","properties":{"slug":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-z0-9-]+$"},"name":{"type":"string"}},"required":["slug","name"],"additionalProperties":false},"operator":{"type":"object","properties":{"slug":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-z0-9-]+$"},"name":{"type":"string"},"logo":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"width":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"height":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"alt":{"type":"string"},"thumbHash":{"type":"string"}},"required":["url","width","height","alt"],"additionalProperties":false}},"required":["slug","name"],"additionalProperties":false},"coordinates":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lng":{"type":"number","minimum":-180,"maximum":180}},"required":["lat","lng"],"additionalProperties":false},"fromPrice":{"type":"object","properties":{"amount":{"type":"number","minimum":0},"currency":{"type":"string","enum":["EUR","GBP","USD","CHF","VES","AED"]}},"required":["amount","currency"],"additionalProperties":false},"fromBillingPeriod":{"type":"string","enum":["month","day","hour","week","year","once"]},"rating":{"type":"object","properties":{"score":{"type":"number","minimum":0,"maximum":5},"count":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["score","count"],"additionalProperties":false},"featured":{"type":"boolean"},"updatedAt":{"description":"When the underlying CMS record was last updated. Use as a price-freshness signal; absent for rows with no tracked update time.","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)))$"},"excerpt":{"type":"string"},"images":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"width":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"height":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"alt":{"type":"string"},"thumbHash":{"type":"string"}},"required":["url","width","height","alt"],"additionalProperties":false}},"amenities":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-z0-9_-]+$"}},"capacity":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"capacity_status":{"type":"string","enum":["confirmed","possible_undeclared"]},"marketPosition":{"type":"object","properties":{"verdict":{"type":"string","enum":["below","around","above"]},"median":{"type":"object","properties":{"amount":{"type":"number","minimum":0},"currency":{"type":"string","enum":["EUR","GBP","USD","CHF","VES","AED"]}},"required":["amount","currency"],"additionalProperties":false},"sampleSize":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["verdict","median","sampleSize"],"additionalProperties":false},"distanceMeters":{"type":"number","minimum":0}},"required":["slug","title","featured","images","amenities"],"additionalProperties":false}},"meta":{"type":"object","properties":{"contractVersion":{"type":"string"},"pagination":{"type":"object","properties":{"page":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"pageSize":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"pageCount":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["page","pageSize","total","pageCount"],"additionalProperties":false},"truncated":{"type":"boolean"},"seed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"citation":{"type":"object","properties":{"source":{"type":"string","const":"CoworkingView"},"title":{"type":"string"},"url":{"type":"string","format":"uri"},"accessed":{"type":"string","description":"ISO date (YYYY-MM-DD, UTC) the data was served."},"license":{"type":"string","const":"CC BY 4.0"},"licenseUrl":{"type":"string","const":"https://creativecommons.org/licenses/by/4.0/"},"text":{"type":"string","description":"One-line human attribution, ready to paste: \"Source: CoworkingView — {title}, {url}. CC BY 4.0.\" (localized by the request locale)."}},"required":["source","title","url","accessed","license","licenseUrl","text"],"additionalProperties":false,"description":"How to credit this data (CC BY 4.0 requires attribution). Copy `text`, or build your own from `title` + `url`."}},"required":["contractVersion","pagination"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false},"examples":{"illustrative":{"summary":"Illustrative values, not live data","value":{"data":[{"slug":"example-coworking-mitte","title":"Example Coworking Mitte","countryCode":"DE","city":{"slug":"berlin","name":"Berlin"},"zone":{"slug":"mitte","name":"Mitte"},"operator":{"slug":"example-operator","name":"Example Operator"},"coordinates":{"lat":52.5251,"lng":13.4019},"fromPrice":{"amount":290,"currency":"EUR"},"fromBillingPeriod":"month","rating":{"score":4.6,"count":128},"featured":false,"updatedAt":"2026-09-28T10:15:00Z","excerpt":"Bright private offices two minutes from the U-Bahn, with meeting rooms on every floor.","images":[{"url":"https://coworkingview.com/og-image.png","width":1200,"height":630,"alt":"Open-plan coworking floor with desks by the window"}],"amenities":["wifi","coffee","meeting_rooms","access_24_7"],"capacity":12,"capacity_status":"confirmed","marketPosition":{"verdict":"around","median":{"amount":310,"currency":"EUR"},"sampleSize":24}}],"meta":{"contractVersion":"1.0.0","pagination":{"page":1,"pageSize":2,"total":1,"pageCount":1},"seed":482913,"citation":{"source":"CoworkingView","title":"Coworking spaces in Berlin","url":"https://coworkingview.com/en/coworking/berlin","accessed":"2026-10-01","license":"CC BY 4.0","licenseUrl":"https://creativecommons.org/licenses/by/4.0/","text":"Source: CoworkingView — Coworking spaces in Berlin, https://coworkingview.com/en/coworking/berlin. CC BY 4.0."}}}}}}}},"400":{"description":"VALIDATION_FAILED","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false},"example":{"type":"https://coworkingview.com/problems/validation-failed","title":"Validation failed","status":400,"code":"VALIDATION_FAILED","errors":[{"path":"locale","message":"Invalid option: expected one of \"en\"|\"de\"|\"es\""}]}}}},"429":{"description":"RATE_LIMITED","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}}}},"502":{"description":"UPSTREAM_UNAVAILABLE","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}}}}},"x-cache":{"maxAge":300,"staleWhileRevalidate":3600}}},"/v1/properties/map":{"get":{"operationId":"mapProperties","summary":"Lightweight projection of the whole matching set, for map markers.","description":"Same filters as listProperties, but returns a lightweight lat/lng projection of every matching space for map pins. Prefer this when you only need coordinates and a title. No API key.","tags":["properties"],"parameters":[{"name":"locale","in":"query","required":true,"schema":{"type":"string","enum":["en","de","es"]},"example":"en"},{"name":"page","in":"query","required":false,"schema":{"default":1,"type":"integer","exclusiveMinimum":0,"maximum":500}},{"name":"pageSize","in":"query","required":false,"schema":{"default":20,"type":"integer","exclusiveMinimum":0,"maximum":50}},{"name":"seed","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":2147483647},"description":"Seed for sortBy=random. Required to paginate a random list: reuse the seed returned in meta.seed on every following page, or results repeat and skip."},{"name":"country","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-z0-9-]+$"}},{"name":"city","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-z0-9-]+$"}},{"name":"zone","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-z0-9-]+$"}},{"name":"operator","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-z0-9-]+$"}},{"name":"pricingOptionType","in":"query","required":false,"schema":{"type":"string","enum":["private_office","exclusive_bereich","fix_desk","flex_desk","day_pass","meeting_room","virtual_office","event_space","membership"]}},{"name":"amenities","in":"query","required":false,"schema":{"type":"string"},"description":"Comma-separated amenity slugs, e.g. wifi,coffee,parking (max 20)"},{"name":"minCapacity","in":"query","required":false,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"name":"minPrice","in":"query","required":false,"schema":{"type":"number","minimum":0}},{"name":"maxPrice","in":"query","required":false,"schema":{"type":"number","minimum":0}},{"name":"currency","in":"query","required":false,"schema":{"type":"string","enum":["EUR","GBP","USD","CHF","VES","AED"]}},{"name":"sortBy","in":"query","required":false,"schema":{"default":"random","type":"string","enum":["random","date-desc","date-asc","distance","price-asc","rating-desc"]}},{"name":"lat","in":"query","required":false,"schema":{"type":"number","minimum":-90,"maximum":90}},{"name":"lng","in":"query","required":false,"schema":{"type":"number","minimum":-180,"maximum":180}},{"name":"radiusMeters","in":"query","required":false,"schema":{"type":"number","exclusiveMinimum":0,"maximum":200000}},{"name":"bbox","in":"query","required":false,"schema":{"type":"string"},"description":"Viewport as \"west,south,east,north\" in WGS84 degrees, e.g. 13.2,52.4,13.6,52.6","example":"13.2,52.4,13.6,52.6"},{"name":"address","in":"query","required":false,"schema":{"type":"string","minLength":3,"maxLength":120},"description":"Street address, e.g. \"Domstraße 17\" or \"Calle Velázquez 34\". Narrows to listings AT that address (house number inside the listing's number or range) and on the same street; the ones at the address come first, each group in sortBy order. Not geocoded: to search AROUND an address, pass lat/lng + radiusMeters."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-z0-9-]+$"},"title":{"type":"string"},"coordinates":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lng":{"type":"number","minimum":-180,"maximum":180}},"required":["lat","lng"],"additionalProperties":false},"fromPrice":{"type":"object","properties":{"amount":{"type":"number","minimum":0},"currency":{"type":"string","enum":["EUR","GBP","USD","CHF","VES","AED"]}},"required":["amount","currency"],"additionalProperties":false},"fromBillingPeriod":{"type":"string","enum":["month","day","hour","week","year","once"]},"featured":{"type":"boolean"},"image":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"width":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"height":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"alt":{"type":"string"},"thumbHash":{"type":"string"}},"required":["url","width","height","alt"],"additionalProperties":false}},"required":["slug","title","coordinates","featured"],"additionalProperties":false}},"meta":{"type":"object","properties":{"contractVersion":{"type":"string"},"pagination":{"type":"object","properties":{"page":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"pageSize":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"pageCount":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["page","pageSize","total","pageCount"],"additionalProperties":false},"truncated":{"type":"boolean"},"seed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"citation":{"type":"object","properties":{"source":{"type":"string","const":"CoworkingView"},"title":{"type":"string"},"url":{"type":"string","format":"uri"},"accessed":{"type":"string","description":"ISO date (YYYY-MM-DD, UTC) the data was served."},"license":{"type":"string","const":"CC BY 4.0"},"licenseUrl":{"type":"string","const":"https://creativecommons.org/licenses/by/4.0/"},"text":{"type":"string","description":"One-line human attribution, ready to paste: \"Source: CoworkingView — {title}, {url}. CC BY 4.0.\" (localized by the request locale)."}},"required":["source","title","url","accessed","license","licenseUrl","text"],"additionalProperties":false,"description":"How to credit this data (CC BY 4.0 requires attribution). Copy `text`, or build your own from `title` + `url`."}},"required":["contractVersion","pagination"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false},"examples":{"illustrative":{"summary":"Illustrative values, not live data","value":{"data":[{"slug":"example-coworking-mitte","title":"Example Coworking Mitte","coordinates":{"lat":52.5251,"lng":13.4019},"fromPrice":{"amount":290,"currency":"EUR"},"fromBillingPeriod":"month","featured":false,"image":{"url":"https://coworkingview.com/og-image.png","width":1200,"height":630,"alt":"Open-plan coworking floor with desks by the window"}}],"meta":{"contractVersion":"1.0.0","pagination":{"page":1,"pageSize":1,"total":1,"pageCount":1},"truncated":false}}}}}}},"400":{"description":"VALIDATION_FAILED","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false},"example":{"type":"https://coworkingview.com/problems/validation-failed","title":"Validation failed","status":400,"code":"VALIDATION_FAILED","errors":[{"path":"locale","message":"Invalid option: expected one of \"en\"|\"de\"|\"es\""}]}}}},"429":{"description":"RATE_LIMITED","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}}}},"502":{"description":"UPSTREAM_UNAVAILABLE","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}}}}},"x-cache":{"maxAge":300,"staleWhileRevalidate":3600}}},"/v1/market/rates":{"get":{"operationId":"marketRates","summary":"Aggregated pricing per city (median/min/max by option type), snapshot only — see the reserved-namespace note in market.ts for the planned time-series counterpart.","description":"Current market rates for a city: median, min and max published prices by workspace type. This is a snapshot, not a time series. sampleSize counts price points, not spaces. No API key.","tags":["market"],"parameters":[{"name":"locale","in":"query","required":true,"schema":{"type":"string","enum":["en","de","es"]},"example":"en"},{"name":"city","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-z0-9-]+$"},"example":"berlin"},{"name":"country","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-z0-9-]+$"}},{"name":"currency","in":"query","required":false,"schema":{"type":"string","enum":["EUR","GBP","USD","CHF","VES","AED"]}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"data":{"type":"object","properties":{"cities":{"type":"array","items":{"type":"object","properties":{"city":{"type":"object","properties":{"slug":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-z0-9-]+$"},"name":{"type":"string"}},"required":["slug","name"],"additionalProperties":false},"countryCode":{"type":"string","minLength":2,"maxLength":2},"currency":{"type":"string","enum":["EUR","GBP","USD","CHF","VES","AED"]},"byType":{"type":"array","items":{"type":"object","properties":{"optionType":{"type":"string","enum":["private_office","exclusive_bereich","fix_desk","flex_desk","day_pass","meeting_room","virtual_office","event_space","membership"]},"median":{"type":"object","properties":{"amount":{"type":"number","minimum":0},"currency":{"type":"string","enum":["EUR","GBP","USD","CHF","VES","AED"]}},"required":["amount","currency"],"additionalProperties":false},"min":{"type":"object","properties":{"amount":{"type":"number","minimum":0},"currency":{"type":"string","enum":["EUR","GBP","USD","CHF","VES","AED"]}},"required":["amount","currency"],"additionalProperties":false},"max":{"type":"object","properties":{"amount":{"type":"number","minimum":0},"currency":{"type":"string","enum":["EUR","GBP","USD","CHF","VES","AED"]}},"required":["amount","currency"],"additionalProperties":false},"sampleSize":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"How many priced properties of this optionType the aggregate is computed from. Low values mean low confidence — do not present as \"the market rate\" without surfacing this number."}},"required":["optionType","median","min","max","sampleSize"],"additionalProperties":false}},"dayPass":{"type":"object","properties":{"median":{"type":"object","properties":{"amount":{"type":"number","minimum":0},"currency":{"type":"string","enum":["EUR","GBP","USD","CHF","VES","AED"]}},"required":["amount","currency"],"additionalProperties":false},"sampleSize":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Sample size backing this median. See the top-level note on presenting aggregates."}},"required":["median","sampleSize"],"additionalProperties":false},"meetingRoom":{"type":"object","properties":{"median":{"type":"object","properties":{"amount":{"type":"number","minimum":0},"currency":{"type":"string","enum":["EUR","GBP","USD","CHF","VES","AED"]}},"required":["amount","currency"],"additionalProperties":false},"sampleSize":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Sample size backing this median. See the top-level note on presenting aggregates."}},"required":["median","sampleSize"],"additionalProperties":false},"sampleSize":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Total priced properties in this city backing the aggregate, across all option types."}},"required":["city","currency","byType","sampleSize"],"additionalProperties":false}},"totalProperties":{"type":"integer","minimum":0,"maximum":9007199254740991},"totalPricePoints":{"type":"integer","minimum":0,"maximum":9007199254740991},"asOf":{"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":["cities","totalProperties","totalPricePoints","asOf"],"additionalProperties":false},"meta":{"type":"object","properties":{"contractVersion":{"type":"string"},"pagination":{"type":"object","properties":{"page":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"pageSize":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"pageCount":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["page","pageSize","total","pageCount"],"additionalProperties":false},"truncated":{"type":"boolean"},"seed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"citation":{"type":"object","properties":{"source":{"type":"string","const":"CoworkingView"},"title":{"type":"string"},"url":{"type":"string","format":"uri"},"accessed":{"type":"string","description":"ISO date (YYYY-MM-DD, UTC) the data was served."},"license":{"type":"string","const":"CC BY 4.0"},"licenseUrl":{"type":"string","const":"https://creativecommons.org/licenses/by/4.0/"},"text":{"type":"string","description":"One-line human attribution, ready to paste: \"Source: CoworkingView — {title}, {url}. CC BY 4.0.\" (localized by the request locale)."}},"required":["source","title","url","accessed","license","licenseUrl","text"],"additionalProperties":false,"description":"How to credit this data (CC BY 4.0 requires attribution). Copy `text`, or build your own from `title` + `url`."}},"required":["contractVersion"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false},"examples":{"illustrative":{"summary":"Illustrative values, not live data","value":{"data":{"cities":[{"city":{"slug":"berlin","name":"Berlin"},"countryCode":"DE","currency":"EUR","byType":[{"optionType":"flex_desk","median":{"amount":250,"currency":"EUR"},"min":{"amount":150,"currency":"EUR"},"max":{"amount":420,"currency":"EUR"},"sampleSize":24}],"dayPass":{"median":{"amount":25,"currency":"EUR"},"sampleSize":11},"sampleSize":30}],"totalProperties":30,"totalPricePoints":61,"asOf":"2026-10-01T06:00:00Z"},"meta":{"contractVersion":"1.0.0","citation":{"source":"CoworkingView","title":"Coworking Price Index (October 2026)","url":"https://coworkingview.com/en/tools/price-index","accessed":"2026-10-01","license":"CC BY 4.0","licenseUrl":"https://creativecommons.org/licenses/by/4.0/","text":"Source: CoworkingView — Coworking Price Index (October 2026), https://coworkingview.com/en/tools/price-index. CC BY 4.0."}}}}}}}},"400":{"description":"VALIDATION_FAILED","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false},"example":{"type":"https://coworkingview.com/problems/validation-failed","title":"Validation failed","status":400,"code":"VALIDATION_FAILED","errors":[{"path":"locale","message":"Invalid option: expected one of \"en\"|\"de\"|\"es\""}]}}}},"429":{"description":"RATE_LIMITED","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}}}},"502":{"description":"UPSTREAM_UNAVAILABLE","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}}}}},"x-cache":{"maxAge":600,"staleWhileRevalidate":3600}}},"/v1/operators/{slug}":{"get":{"operationId":"operatorProfile","summary":"Operator brand hub: editorial copy, FAQs and computed stats.","description":"Brand hub for one operator: editorial copy, FAQs and computed catalogue stats. Partner-authored text is third-party data, not CoworkingView's voice. No API key.","tags":["operators"],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-z0-9-]+$"},"example":"example-operator"},{"name":"locale","in":"query","required":true,"schema":{"type":"string","enum":["en","de","es"]},"example":"en"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"data":{"type":"object","properties":{"slug":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-z0-9-]+$"},"name":{"type":"string"},"logo":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"width":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"height":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"alt":{"type":"string"},"thumbHash":{"type":"string"}},"required":["url","width","height","alt"],"additionalProperties":false},"tagline":{"type":"string"},"description":{"type":"string"},"faqs":{"type":"array","items":{"type":"object","properties":{"question":{"type":"string"},"answer":{"type":"string"}},"required":["question","answer"],"additionalProperties":false}},"propertyCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"cities":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-z0-9-]+$"},"name":{"type":"string"}},"required":["slug","name"],"additionalProperties":false}},"pricePosition":{"type":"object","properties":{"verdict":{"type":"string","enum":["below","around","above"]},"sampleSize":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Priced properties this verdict is computed from; low values mean low confidence."}},"required":["verdict","sampleSize"],"additionalProperties":false},"asOf":{"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":["slug","name","faqs","propertyCount","cities","asOf"],"additionalProperties":false},"meta":{"type":"object","properties":{"contractVersion":{"type":"string"},"pagination":{"type":"object","properties":{"page":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"pageSize":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"pageCount":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["page","pageSize","total","pageCount"],"additionalProperties":false},"truncated":{"type":"boolean"},"seed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"citation":{"type":"object","properties":{"source":{"type":"string","const":"CoworkingView"},"title":{"type":"string"},"url":{"type":"string","format":"uri"},"accessed":{"type":"string","description":"ISO date (YYYY-MM-DD, UTC) the data was served."},"license":{"type":"string","const":"CC BY 4.0"},"licenseUrl":{"type":"string","const":"https://creativecommons.org/licenses/by/4.0/"},"text":{"type":"string","description":"One-line human attribution, ready to paste: \"Source: CoworkingView — {title}, {url}. CC BY 4.0.\" (localized by the request locale)."}},"required":["source","title","url","accessed","license","licenseUrl","text"],"additionalProperties":false,"description":"How to credit this data (CC BY 4.0 requires attribution). Copy `text`, or build your own from `title` + `url`."}},"required":["contractVersion"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false},"examples":{"illustrative":{"summary":"Illustrative values, not live data","value":{"data":{"slug":"example-operator","name":"Example Operator","tagline":"Flexible offices in central Berlin.","description":"Example Operator runs coworking buildings with private offices and flexible desks.","faqs":[{"question":"Can I book a day pass?","answer":"Yes, at every location listed here."}],"propertyCount":3,"cities":[{"slug":"berlin","name":"Berlin"}],"pricePosition":{"verdict":"around","sampleSize":3},"asOf":"2026-10-01T06:00:00Z"},"meta":{"contractVersion":"1.0.0","citation":{"source":"CoworkingView","title":"Example Operator coworking locations","url":"https://coworkingview.com/en/brands/example-operator","accessed":"2026-10-01","license":"CC BY 4.0","licenseUrl":"https://creativecommons.org/licenses/by/4.0/","text":"Source: CoworkingView — Example Operator coworking locations, https://coworkingview.com/en/brands/example-operator. CC BY 4.0."}}}}}}}},"400":{"description":"VALIDATION_FAILED","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false},"example":{"type":"https://coworkingview.com/problems/validation-failed","title":"Validation failed","status":400,"code":"VALIDATION_FAILED","errors":[{"path":"locale","message":"Invalid option: expected one of \"en\"|\"de\"|\"es\""}]}}}},"404":{"description":"NOT_FOUND","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}}}},"429":{"description":"RATE_LIMITED","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}}}},"502":{"description":"UPSTREAM_UNAVAILABLE","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}}}}},"x-cache":{"maxAge":600,"staleWhileRevalidate":3600}}},"/v1/places/{kind}/{slug}":{"get":{"operationId":"placeProfile","summary":"Country/city/zone hub: editorial copy, FAQs and computed stats.","description":"Editorial hub for a country, city or zone (`kind` + `slug` from geoBootstrap). Includes copy, FAQs and computed stats for that place. No API key.","tags":["places"],"parameters":[{"name":"kind","in":"path","required":true,"schema":{"type":"string","enum":["country","city","zone"]},"example":"zone"},{"name":"slug","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-z0-9-]+$"},"example":"mitte"},{"name":"locale","in":"query","required":true,"schema":{"type":"string","enum":["en","de","es"]},"example":"en"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"data":{"type":"object","properties":{"kind":{"type":"string","enum":["country","city","zone"]},"slug":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-z0-9-]+$"},"name":{"type":"string"},"intro":{"type":"string"},"shortDescription":{"type":"string"},"faqs":{"type":"array","items":{"type":"object","properties":{"question":{"type":"string"},"answer":{"type":"string"}},"required":["question","answer"],"additionalProperties":false}},"propertyCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"priceRange":{"type":"object","properties":{"min":{"type":"object","properties":{"amount":{"type":"number","minimum":0},"currency":{"type":"string","enum":["EUR","GBP","USD","CHF","VES","AED"]}},"required":["amount","currency"],"additionalProperties":false},"max":{"type":"object","properties":{"amount":{"type":"number","minimum":0},"currency":{"type":"string","enum":["EUR","GBP","USD","CHF","VES","AED"]}},"required":["amount","currency"],"additionalProperties":false}},"required":["min","max"],"additionalProperties":false},"center":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lng":{"type":"number","minimum":-180,"maximum":180}},"required":["lat","lng"],"additionalProperties":false},"parent":{"type":"object","properties":{"slug":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-z0-9-]+$"},"name":{"type":"string"}},"required":["slug","name"],"additionalProperties":false},"asOf":{"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":["kind","slug","name","faqs","propertyCount","asOf"],"additionalProperties":false},"meta":{"type":"object","properties":{"contractVersion":{"type":"string"},"pagination":{"type":"object","properties":{"page":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"pageSize":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"pageCount":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["page","pageSize","total","pageCount"],"additionalProperties":false},"truncated":{"type":"boolean"},"seed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"citation":{"type":"object","properties":{"source":{"type":"string","const":"CoworkingView"},"title":{"type":"string"},"url":{"type":"string","format":"uri"},"accessed":{"type":"string","description":"ISO date (YYYY-MM-DD, UTC) the data was served."},"license":{"type":"string","const":"CC BY 4.0"},"licenseUrl":{"type":"string","const":"https://creativecommons.org/licenses/by/4.0/"},"text":{"type":"string","description":"One-line human attribution, ready to paste: \"Source: CoworkingView — {title}, {url}. CC BY 4.0.\" (localized by the request locale)."}},"required":["source","title","url","accessed","license","licenseUrl","text"],"additionalProperties":false,"description":"How to credit this data (CC BY 4.0 requires attribution). Copy `text`, or build your own from `title` + `url`."}},"required":["contractVersion"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false},"examples":{"illustrative":{"summary":"Illustrative values, not live data","value":{"data":{"kind":"zone","slug":"mitte","name":"Mitte","shortDescription":"Berlin's central district, with the densest choice of flexible offices in the city.","faqs":[{"question":"Is Mitte well connected?","answer":"Yes — S-Bahn, U-Bahn and tram lines meet at several hubs."}],"propertyCount":14,"priceRange":{"min":{"amount":180,"currency":"EUR"},"max":{"amount":2400,"currency":"EUR"}},"center":{"lat":52.52,"lng":13.4},"parent":{"slug":"berlin","name":"Berlin"},"asOf":"2026-10-01T06:00:00Z"},"meta":{"contractVersion":"1.0.0","citation":{"source":"CoworkingView","title":"Coworking spaces in Mitte","url":"https://coworkingview.com/en/coworking/berlin/mitte","accessed":"2026-10-01","license":"CC BY 4.0","licenseUrl":"https://creativecommons.org/licenses/by/4.0/","text":"Source: CoworkingView — Coworking spaces in Mitte, https://coworkingview.com/en/coworking/berlin/mitte. CC BY 4.0."}}}}}}}},"400":{"description":"VALIDATION_FAILED","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false},"example":{"type":"https://coworkingview.com/problems/validation-failed","title":"Validation failed","status":400,"code":"VALIDATION_FAILED","errors":[{"path":"locale","message":"Invalid option: expected one of \"en\"|\"de\"|\"es\""}]}}}},"404":{"description":"NOT_FOUND","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}}}},"429":{"description":"RATE_LIMITED","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}}}},"502":{"description":"UPSTREAM_UNAVAILABLE","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}}}}},"x-cache":{"maxAge":600,"staleWhileRevalidate":3600}}},"/v1/properties/{slug}":{"get":{"operationId":"propertyDetail","summary":"Full property detail.","description":"Full detail for one space: address, published prices by workspace type, amenities, capacity and operator. `slug` is the catalogue slug from listProperties or searchSuggest. Returns 404 when the slug does not exist. No API key.","tags":["properties"],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-z0-9-]+$"},"example":"example-coworking-mitte"},{"name":"locale","in":"query","required":true,"schema":{"type":"string","enum":["en","de","es"]},"example":"en"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"data":{"type":"object","properties":{"slug":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-z0-9-]+$"},"title":{"type":"string"},"countryCode":{"type":"string","minLength":2,"maxLength":2},"city":{"type":"object","properties":{"slug":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-z0-9-]+$"},"name":{"type":"string"}},"required":["slug","name"],"additionalProperties":false},"zone":{"type":"object","properties":{"slug":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-z0-9-]+$"},"name":{"type":"string"}},"required":["slug","name"],"additionalProperties":false},"operator":{"type":"object","properties":{"slug":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-z0-9-]+$"},"name":{"type":"string"},"logo":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"width":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"height":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"alt":{"type":"string"},"thumbHash":{"type":"string"}},"required":["url","width","height","alt"],"additionalProperties":false}},"required":["slug","name"],"additionalProperties":false},"coordinates":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lng":{"type":"number","minimum":-180,"maximum":180}},"required":["lat","lng"],"additionalProperties":false},"fromPrice":{"type":"object","properties":{"amount":{"type":"number","minimum":0},"currency":{"type":"string","enum":["EUR","GBP","USD","CHF","VES","AED"]}},"required":["amount","currency"],"additionalProperties":false},"fromBillingPeriod":{"type":"string","enum":["month","day","hour","week","year","once"]},"rating":{"type":"object","properties":{"score":{"type":"number","minimum":0,"maximum":5},"count":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["score","count"],"additionalProperties":false},"featured":{"type":"boolean"},"updatedAt":{"description":"When the underlying CMS record was last updated. Use as a price-freshness signal; absent for rows with no tracked update time.","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)))$"},"description":{"type":"string"},"address":{"type":"string"},"images":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"width":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"height":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"alt":{"type":"string"},"thumbHash":{"type":"string"}},"required":["url","width","height","alt"],"additionalProperties":false}},"amenities":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-z0-9_-]+$"}},"capacity":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"capacity_status":{"type":"string","enum":["confirmed","possible_undeclared"]},"pricingOptions":{"type":"array","items":{"type":"object","properties":{"optionType":{"type":"string","enum":["private_office","exclusive_bereich","fix_desk","flex_desk","day_pass","meeting_room","virtual_office","event_space","membership"]},"title":{"type":"string"},"price":{"type":"object","properties":{"amount":{"type":"number","minimum":0},"currency":{"type":"string","enum":["EUR","GBP","USD","CHF","VES","AED"]}},"required":["amount","currency"],"additionalProperties":false},"priceOnRequest":{"type":"boolean"},"billingPeriod":{"type":"string","enum":["month","day","hour","week","year","once"]},"minCapacity":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"maxCapacity":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["optionType","title","priceOnRequest","billingPeriod"],"additionalProperties":false}},"marketPosition":{"type":"object","properties":{"verdict":{"type":"string","enum":["below","around","above"]},"median":{"type":"object","properties":{"amount":{"type":"number","minimum":0},"currency":{"type":"string","enum":["EUR","GBP","USD","CHF","VES","AED"]}},"required":["amount","currency"],"additionalProperties":false},"sampleSize":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["verdict","median","sampleSize"],"additionalProperties":false},"webUrl":{"type":"string","format":"uri"}},"required":["slug","title","featured","description","address","images","amenities","pricingOptions","webUrl"],"additionalProperties":false},"meta":{"type":"object","properties":{"contractVersion":{"type":"string"},"pagination":{"type":"object","properties":{"page":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"pageSize":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"pageCount":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["page","pageSize","total","pageCount"],"additionalProperties":false},"truncated":{"type":"boolean"},"seed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"citation":{"type":"object","properties":{"source":{"type":"string","const":"CoworkingView"},"title":{"type":"string"},"url":{"type":"string","format":"uri"},"accessed":{"type":"string","description":"ISO date (YYYY-MM-DD, UTC) the data was served."},"license":{"type":"string","const":"CC BY 4.0"},"licenseUrl":{"type":"string","const":"https://creativecommons.org/licenses/by/4.0/"},"text":{"type":"string","description":"One-line human attribution, ready to paste: \"Source: CoworkingView — {title}, {url}. CC BY 4.0.\" (localized by the request locale)."}},"required":["source","title","url","accessed","license","licenseUrl","text"],"additionalProperties":false,"description":"How to credit this data (CC BY 4.0 requires attribution). Copy `text`, or build your own from `title` + `url`."}},"required":["contractVersion"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false},"examples":{"illustrative":{"summary":"Illustrative values, not live data","value":{"data":{"slug":"example-coworking-mitte","title":"Example Coworking Mitte","countryCode":"DE","city":{"slug":"berlin","name":"Berlin"},"zone":{"slug":"mitte","name":"Mitte"},"operator":{"slug":"example-operator","name":"Example Operator"},"coordinates":{"lat":52.5251,"lng":13.4019},"fromPrice":{"amount":290,"currency":"EUR"},"fromBillingPeriod":"month","rating":{"score":4.6,"count":128},"featured":false,"updatedAt":"2026-09-28T10:15:00Z","description":"A four-floor coworking building in Mitte with private offices for 2–12 people, fixed and flexible desks, and bookable meeting rooms.","address":"Example Straße 1, 10115 Berlin","images":[{"url":"https://coworkingview.com/og-image.png","width":1200,"height":630,"alt":"Open-plan coworking floor with desks by the window"}],"amenities":["wifi","coffee","meeting_rooms","access_24_7"],"capacity":12,"capacity_status":"confirmed","pricingOptions":[{"optionType":"flex_desk","title":"Flex desk","price":{"amount":290,"currency":"EUR"},"priceOnRequest":false,"billingPeriod":"month"},{"optionType":"private_office","title":"Private office (4 people)","priceOnRequest":true,"billingPeriod":"month","minCapacity":4,"maxCapacity":4}],"webUrl":"https://coworkingview.com/en/workspace/example-coworking-mitte"},"meta":{"contractVersion":"1.0.0","citation":{"source":"CoworkingView","title":"Example Coworking Mitte","url":"https://coworkingview.com/en/workspace/example-coworking-mitte","accessed":"2026-10-01","license":"CC BY 4.0","licenseUrl":"https://creativecommons.org/licenses/by/4.0/","text":"Source: CoworkingView — Example Coworking Mitte, https://coworkingview.com/en/workspace/example-coworking-mitte. CC BY 4.0."}}}}}}}},"400":{"description":"VALIDATION_FAILED","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false},"example":{"type":"https://coworkingview.com/problems/validation-failed","title":"Validation failed","status":400,"code":"VALIDATION_FAILED","errors":[{"path":"locale","message":"Invalid option: expected one of \"en\"|\"de\"|\"es\""}]}}}},"404":{"description":"NOT_FOUND","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}}}},"429":{"description":"RATE_LIMITED","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}}}},"502":{"description":"UPSTREAM_UNAVAILABLE","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}}}}},"x-cache":{"maxAge":300,"staleWhileRevalidate":3600}}},"/v1/rankings":{"get":{"operationId":"rankings","summary":"\"Best of {city}\" ranking; score is relative within the city only, never comparable across cities.","description":"Best-of ranking for one city. The score is an ordering key within that city only — never compare scores across cities or print the number as a rating. No API key.","tags":["rankings"],"parameters":[{"name":"locale","in":"query","required":true,"schema":{"type":"string","enum":["en","de","es"]},"example":"en"},{"name":"city","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-z0-9-]+$"},"example":"berlin"},{"name":"limit","in":"query","required":false,"schema":{"default":10,"type":"integer","exclusiveMinimum":0,"maximum":25},"example":3}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"data":{"type":"object","properties":{"city":{"type":"object","properties":{"slug":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-z0-9-]+$"},"name":{"type":"string"}},"required":["slug","name"],"additionalProperties":false},"currency":{"type":"string","enum":["EUR","GBP","USD","CHF","VES","AED"]},"sampleSize":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"How many properties in this city were eligible for ranking."},"hasReviewData":{"type":"boolean","description":"False when no third-party ratings were available for this city; ranked[].rating will be absent for every entry in that case."},"ranked":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-z0-9-]+$"},"title":{"type":"string"},"score":{"type":"number","description":"Composite ranking score, relative to other properties in THIS city only (see RankingSchema.city). Not comparable across cities — a score of 80 in Berlin and 80 in Madrid do not mean the same thing."},"entryPrice":{"type":"object","properties":{"amount":{"type":"number","minimum":0},"currency":{"type":"string","enum":["EUR","GBP","USD","CHF","VES","AED"]}},"required":["amount","currency"],"additionalProperties":false},"rating":{"type":"object","properties":{"score":{"type":"number","minimum":0,"maximum":5},"count":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["score","count"],"additionalProperties":false},"amenityCount":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["slug","title","score","amenityCount"],"additionalProperties":false}},"asOf":{"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":["city","currency","sampleSize","hasReviewData","ranked","asOf"],"additionalProperties":false},"meta":{"type":"object","properties":{"contractVersion":{"type":"string"},"pagination":{"type":"object","properties":{"page":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"pageSize":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"pageCount":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["page","pageSize","total","pageCount"],"additionalProperties":false},"truncated":{"type":"boolean"},"seed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"citation":{"type":"object","properties":{"source":{"type":"string","const":"CoworkingView"},"title":{"type":"string"},"url":{"type":"string","format":"uri"},"accessed":{"type":"string","description":"ISO date (YYYY-MM-DD, UTC) the data was served."},"license":{"type":"string","const":"CC BY 4.0"},"licenseUrl":{"type":"string","const":"https://creativecommons.org/licenses/by/4.0/"},"text":{"type":"string","description":"One-line human attribution, ready to paste: \"Source: CoworkingView — {title}, {url}. CC BY 4.0.\" (localized by the request locale)."}},"required":["source","title","url","accessed","license","licenseUrl","text"],"additionalProperties":false,"description":"How to credit this data (CC BY 4.0 requires attribution). Copy `text`, or build your own from `title` + `url`."}},"required":["contractVersion"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false},"examples":{"illustrative":{"summary":"Illustrative values, not live data","value":{"data":{"city":{"slug":"berlin","name":"Berlin"},"currency":"EUR","sampleSize":32,"hasReviewData":true,"ranked":[{"slug":"example-coworking-mitte","title":"Example Coworking Mitte","score":3,"entryPrice":{"amount":290,"currency":"EUR"},"rating":{"score":4.6,"count":128},"amenityCount":14}],"asOf":"2026-10-01T06:00:00Z"},"meta":{"contractVersion":"1.0.0","citation":{"source":"CoworkingView","title":"Coworking spaces in Berlin","url":"https://coworkingview.com/en/coworking/berlin","accessed":"2026-10-01","license":"CC BY 4.0","licenseUrl":"https://creativecommons.org/licenses/by/4.0/","text":"Source: CoworkingView — Coworking spaces in Berlin, https://coworkingview.com/en/coworking/berlin. CC BY 4.0."}}}}}}}},"400":{"description":"VALIDATION_FAILED","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false},"example":{"type":"https://coworkingview.com/problems/validation-failed","title":"Validation failed","status":400,"code":"VALIDATION_FAILED","errors":[{"path":"locale","message":"Invalid option: expected one of \"en\"|\"de\"|\"es\""}]}}}},"429":{"description":"RATE_LIMITED","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}}}},"502":{"description":"UPSTREAM_UNAVAILABLE","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}}}}},"x-cache":{"maxAge":600,"staleWhileRevalidate":3600}}},"/v1/search/suggest":{"get":{"operationId":"searchSuggest","summary":"City, zone, operator and property autocomplete.","description":"Autocomplete across cities, zones, operators and individual spaces. Pass a short query string; results include the type and the slug to follow up with listProperties or propertyDetail. No API key.","tags":["search"],"parameters":[{"name":"locale","in":"query","required":true,"schema":{"type":"string","enum":["en","de","es"]},"example":"en"},{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":100},"example":"mitte"},{"name":"limit","in":"query","required":false,"schema":{"default":8,"type":"integer","exclusiveMinimum":0,"maximum":20},"example":5}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["country","city","zone","operator","property"]},"slug":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-z0-9-]+$"},"label":{"type":"string"},"sublabel":{"type":"string"},"center":{"type":"object","properties":{"lat":{"type":"number"},"lng":{"type":"number"}},"required":["lat","lng"],"additionalProperties":false},"propertyCount":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["kind","slug","label"],"additionalProperties":false}},"meta":{"type":"object","properties":{"contractVersion":{"type":"string"},"pagination":{"type":"object","properties":{"page":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"pageSize":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"pageCount":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["page","pageSize","total","pageCount"],"additionalProperties":false},"truncated":{"type":"boolean"},"seed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"citation":{"type":"object","properties":{"source":{"type":"string","const":"CoworkingView"},"title":{"type":"string"},"url":{"type":"string","format":"uri"},"accessed":{"type":"string","description":"ISO date (YYYY-MM-DD, UTC) the data was served."},"license":{"type":"string","const":"CC BY 4.0"},"licenseUrl":{"type":"string","const":"https://creativecommons.org/licenses/by/4.0/"},"text":{"type":"string","description":"One-line human attribution, ready to paste: \"Source: CoworkingView — {title}, {url}. CC BY 4.0.\" (localized by the request locale)."}},"required":["source","title","url","accessed","license","licenseUrl","text"],"additionalProperties":false,"description":"How to credit this data (CC BY 4.0 requires attribution). Copy `text`, or build your own from `title` + `url`."}},"required":["contractVersion","pagination"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false},"examples":{"illustrative":{"summary":"Illustrative values, not live data","value":{"data":[{"kind":"zone","slug":"mitte","label":"Mitte","sublabel":"Berlin","center":{"lat":52.52,"lng":13.4},"propertyCount":14},{"kind":"property","slug":"example-coworking-mitte","label":"Example Coworking Mitte","sublabel":"Mitte, Berlin"}],"meta":{"contractVersion":"1.0.0","pagination":{"page":1,"pageSize":5,"total":2,"pageCount":1}}}}}}}},"400":{"description":"VALIDATION_FAILED","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false},"example":{"type":"https://coworkingview.com/problems/validation-failed","title":"Validation failed","status":400,"code":"VALIDATION_FAILED","errors":[{"path":"locale","message":"Invalid option: expected one of \"en\"|\"de\"|\"es\""}]}}}},"429":{"description":"RATE_LIMITED","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}}}},"502":{"description":"UPSTREAM_UNAVAILABLE","content":{"application/problem+json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}}}}},"x-cache":{"maxAge":300,"staleWhileRevalidate":3600}}}},"components":{"schemas":{"ProblemDetails":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["VALIDATION_FAILED","NOT_FOUND","RATE_LIMITED","CHALLENGE_FAILED","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR","CLIENT_TOO_OLD","IDEMPOTENCY_KEY_CONFLICT"]},"errors":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"traceId":{"type":"string"}},"required":["type","title","status","code"],"additionalProperties":false}}}}