{"openapi":"3.1.0","info":{"title":"ActivityPlaces API","version":"1.1.0","description":"Kid-friendly and grown-up things to do near you, rated from chill to extreme. Free to use and built on OpenStreetMap. Place data © OpenStreetMap contributors (Open Database License (ODbL) 1.0). Adrenaline level, audience and ages are editorial guidance by activity type, not venue policy."},"servers":[{"url":"https://www.activityplaces.com"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"}},"schemas":{"PlaceSummary":{"type":"object","properties":{"id":{"type":"integer"},"slug":{"type":"string"},"name":{"type":"string"},"url":{"type":"string","description":"Canonical page to link to."},"category":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"group":{"type":"string"}},"required":["id","label","group"],"additionalProperties":false},"audience":{"type":"string","enum":["kids","family","adults"]},"adrenaline":{"type":"object","properties":{"level":{"type":"integer","minimum":1,"maximum":5},"label":{"type":"string"}},"required":["level","label"],"additionalProperties":false},"ages":{"type":"object","properties":{"min":{"type":"integer","minimum":0,"maximum":21,"description":"Typical youngest age for this kind of activity; 0 means any age. Guidance, not venue policy."},"max":{"type":["integer","null"],"description":"Only when the place itself states an upper age."}},"required":["min","max"],"additionalProperties":false},"setting":{"type":"string","enum":["indoor","outdoor","both"]},"location":{"type":"object","properties":{"lat":{"type":"number"},"lng":{"type":"number"},"city":{"type":["string","null"]},"state":{"type":["string","null"]}},"required":["lat","lng","city","state"],"additionalProperties":false},"distance_km":{"type":"number","description":"Present when the search had a location."},"video_count":{"type":"integer","minimum":0}},"required":["id","slug","name","url","category","audience","adrenaline","ages","setting","location","video_count"],"additionalProperties":false},"Place":{"type":"object","properties":{"id":{"type":"integer"},"slug":{"type":"string"},"name":{"type":"string"},"url":{"type":"string","description":"Canonical page to link to."},"category":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"group":{"type":"string"}},"required":["id","label","group"],"additionalProperties":false},"audience":{"type":"string","enum":["kids","family","adults"]},"adrenaline":{"type":"object","properties":{"level":{"type":"integer","minimum":1,"maximum":5},"label":{"type":"string"}},"required":["level","label"],"additionalProperties":false},"ages":{"type":"object","properties":{"min":{"type":"integer","minimum":0,"maximum":21,"description":"Typical youngest age for this kind of activity; 0 means any age. Guidance, not venue policy."},"max":{"type":["integer","null"],"description":"Only when the place itself states an upper age."}},"required":["min","max"],"additionalProperties":false},"setting":{"type":"string","enum":["indoor","outdoor","both"]},"location":{"type":"object","properties":{"lat":{"type":"number"},"lng":{"type":"number"},"address":{"type":["string","null"]},"city":{"type":["string","null"]},"county":{"type":["string","null"]},"state":{"type":["string","null"]},"postcode":{"type":["string","null"]},"country":{"type":"string"}},"required":["lat","lng","address","city","county","state","postcode","country"],"additionalProperties":false},"distance_km":{"type":"number","description":"Present when the search had a location."},"video_count":{"type":"integer","minimum":0},"description":{"type":["string","null"]},"website":{"type":["string","null"]},"phone":{"type":["string","null"]},"opening_hours":{"type":["string","null"],"description":"OpenStreetMap opening_hours syntax."},"fee":{"type":["string","null"],"enum":["yes","no",null]},"wheelchair":{"type":["string","null"],"enum":["yes","limited","no",null]},"wikidata":{"type":["string","null"]},"wikipedia":{"type":["string","null"]},"videos":{"type":"array","items":{"type":"object","properties":{"provider":{"type":"string","enum":["youtube","vimeo","r2"]},"url":{"type":"string"},"title":{"type":["string","null"]},"credit":{"type":["string","null"]}},"required":["provider","url","title","credit"],"additionalProperties":false}},"source":{"type":"object","properties":{"name":{"type":"string"},"ref":{"type":["string","null"]},"url":{"type":["string","null"]},"checked_at":{"type":["string","null"]}},"required":["name","ref","url","checked_at"],"additionalProperties":false},"updated_at":{"type":"string"}},"required":["id","slug","name","url","category","audience","adrenaline","ages","setting","location","video_count","description","website","phone","opening_hours","fee","wheelchair","wikidata","wikipedia","videos","source","updated_at"],"additionalProperties":false},"Category":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"label":{"type":"string"},"plural":{"type":"string"},"group":{"type":"string"},"audience":{"type":"string","enum":["kids","family","adults"]},"adrenaline":{"type":"integer","minimum":1,"maximum":5},"min_age":{"type":"integer","minimum":0,"maximum":21},"setting":{"type":"string","enum":["indoor","outdoor","both"]}},"required":["id","slug","label","plural","group","audience","adrenaline","min_age","setting"],"additionalProperties":false},"Region":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"country":{"type":"string"},"state":{"type":"string"},"center":{"type":"object","properties":{"lat":{"type":"number"},"lng":{"type":"number"}},"required":["lat","lng"],"additionalProperties":false},"bbox":{"type":"object","properties":{"south":{"type":"number"},"west":{"type":"number"},"north":{"type":"number"},"east":{"type":"number"}},"required":["south","west","north","east"],"additionalProperties":false},"url":{"type":"string"},"place_count":{"type":"integer","minimum":0},"refreshed_at":{"type":["string","null"]}},"required":["id","slug","name","country","state","center","bbox","url","place_count","refreshed_at"],"additionalProperties":false},"Error":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false},"PlaceList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PlaceSummary"}},"meta":{"type":"object","properties":{"count":{"type":"integer"},"sort":{"type":"string","enum":["distance","score"]},"region":{"type":"string"},"center":{"type":"object","properties":{"lat":{"type":"number"},"lng":{"type":"number"},"label":{"type":"string"}},"required":["lat","lng","label"],"additionalProperties":false},"radius_km":{"type":"number"},"notes":{"type":"array","items":{"type":"string"}},"attribution":{"type":"string"},"attribution_url":{"type":"string"},"license":{"type":"string"},"license_url":{"type":"string"},"ratings":{"type":"string"}},"required":["count","sort","region","attribution","attribution_url","license","license_url","ratings"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false},"PlaceDetail":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Place"},"meta":{"type":"object","properties":{"attribution":{"type":"string"},"attribution_url":{"type":"string"},"license":{"type":"string"},"license_url":{"type":"string"},"ratings":{"type":"string"}},"required":["attribution","attribution_url","license","license_url","ratings"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false},"CategoryList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Category"}},"meta":{"type":"object","properties":{"groups":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"icon":{"type":"string"}},"required":["id","label","icon"],"additionalProperties":false}},"adrenaline_scale":{"type":"array","items":{"type":"object","properties":{"level":{"type":"integer"},"label":{"type":"string"},"blurb":{"type":"string"}},"required":["level","label","blurb"],"additionalProperties":false}},"ratings":{"type":"string"}},"required":["groups","adrenaline_scale","ratings"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false},"RegionList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Region"}},"meta":{"type":"object","properties":{"attribution":{"type":"string"},"attribution_url":{"type":"string"},"license":{"type":"string"},"license_url":{"type":"string"},"ratings":{"type":"string"}},"required":["attribution","attribution_url","license","license_url","ratings"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false}}},"paths":{"/api/v1/places":{"get":{"operationId":"searchPlaces","summary":"Search activity places by location, audience, age, adrenaline level and type.","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string"},"description":"Free text, e.g. \"go karts\" or a place name."},{"name":"near","in":"query","required":false,"schema":{"type":"string"},"description":"Town or city to search around, e.g. \"Reston\"."},{"name":"lat","in":"query","required":false,"schema":{"type":"number","minimum":-90,"maximum":90},"description":"Latitude (use with lng)."},{"name":"lng","in":"query","required":false,"schema":{"type":"number","minimum":-180,"maximum":180},"description":"Longitude (use with lat)."},{"name":"radius_km","in":"query","required":false,"schema":{"type":"number","minimum":1,"maximum":100},"description":"Radius, default 25."},{"name":"region","in":"query","required":false,"schema":{"type":"string","enum":["us-dc","us-md","us-va-nova"]},"description":"Region id."},{"name":"category","in":"query","required":false,"schema":{"type":"string"},"description":"Comma-separated category ids from /api/v1/categories."},{"name":"group","in":"query","required":false,"schema":{"type":"string","enum":["thrills","play","games","water","outdoors","active","animals","culture","shows","drinks"]},"description":"Category group."},{"name":"audience","in":"query","required":false,"schema":{"type":"string","enum":["kids","adults","adults_only"]},"description":"Who it should suit."},{"name":"age","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":120},"description":"Age of the youngest person going; keeps places whose typical age range includes it."},{"name":"adrenaline_min","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":5},"description":"1 chill to 5 extreme."},{"name":"adrenaline_max","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":5},"description":"1 chill to 5 extreme."},{"name":"setting","in":"query","required":false,"schema":{"type":"string","enum":["indoor","outdoor"]},"description":"Indoor or outdoor."},{"name":"has_video","in":"query","required":false,"schema":{"type":"boolean"},"description":"Only places with a video."},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["distance","score"]},"description":"distance needs a location."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50},"description":"Default 20."},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":2000},"description":"For paging."}],"responses":{"200":{"description":"Matching places.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlaceList"}}}},"400":{"description":"A parameter is not valid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit reached; see the Retry-After header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/places/{id}":{"get":{"operationId":"getPlace","summary":"Full details for one place.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Numeric id or slug."}],"responses":{"200":{"description":"The place.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlaceDetail"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No such place.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit reached; see the Retry-After header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/categories":{"get":{"operationId":"listCategories","summary":"Activity types, groups and the adrenaline scale.","responses":{"200":{"description":"Categories.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoryList"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit reached; see the Retry-After header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/regions":{"get":{"operationId":"listRegions","summary":"Covered regions with place counts and freshness.","responses":{"200":{"description":"Regions.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegionList"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit reached; see the Retry-After header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}