{"openapi":"3.1.0","info":{"title":"Padelvinder API","version":"1.0.0","summary":"Read-only directory of padel and pickleball in the Netherlands.","description":"Public facts from Padelvinder. Records marked needs_review are omitted. Empty fields are unknown, not zero. The API does not create bookings or accounts. Dutch pages also offer text/markdown via Accept or a .md URL."},"servers":[{"url":"https://padelvinder.nl"}],"tags":[{"name":"locations"},{"name":"cities"}],"paths":{"/api/locations/":{"get":{"operationId":"listLocations","tags":["locations"],"summary":"List public locations","parameters":[{"name":"city","in":"query","schema":{"type":"string"},"description":"City name or slug, for example amsterdam."},{"name":"province","in":"query","schema":{"type":"string"},"description":"Province name or slug. Friesland uses slug friesland."},{"name":"sport","in":"query","schema":{"type":"string","enum":["padel","pickleball"]}}],"responses":{"200":{"description":"Matching locations","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocationList"}}}},"400":{"description":"Unknown sport or province"}}}},"/api/locations/{slug}/":{"get":{"operationId":"getLocation","tags":["locations"],"summary":"One public location","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Location","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Location"}}}},"404":{"description":"Unknown or hidden location"}}}},"/api/cities/":{"get":{"operationId":"listCities","tags":["cities"],"summary":"Cities with padel or pickleball locations","responses":{"200":{"description":"Cities","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CityList"}}}}}}}},"components":{"schemas":{"LocationList":{"type":"object","required":["total","locations"],"properties":{"total":{"type":"integer"},"filters":{"type":"object"},"locations":{"type":"array","items":{"$ref":"#/components/schemas/Location"}}}},"Location":{"type":"object","required":["id","name","city","province","sports","path"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"sports":{"type":"array","items":{"type":"string","enum":["padel","pickleball"]}},"city":{"type":"string"},"province":{"type":"string"},"street":{"type":["string","null"]},"postcode":{"type":["string","null"]},"lat":{"type":["number","null"]},"lon":{"type":["number","null"]},"total_courts":{"type":["integer","null"]},"opening_hours":{"type":["string","null"]},"website":{"type":["string","null"]},"phone":{"type":["string","null"]},"sources":{"type":"array","items":{"type":"string"}},"last_checked":{"type":["string","null"]},"path":{"type":"string"},"markdown":{"type":"string"}}},"CityList":{"type":"object","required":["total","cities"],"properties":{"total":{"type":"integer"},"cities":{"type":"array","items":{"$ref":"#/components/schemas/City"}}}},"City":{"type":"object","required":["city","slug","province","sport","locations","path"],"properties":{"city":{"type":"string"},"slug":{"type":"string"},"province":{"type":"string"},"sport":{"type":"string"},"locations":{"type":"integer"},"path":{"type":"string"},"markdown":{"type":"string"}}}}}}