{"openapi":"3.1.0","info":{"title":"TravelTime Data API","version":"0.1.0"},"paths":{"/v1/boundaries":{"get":{"tags":["boundaries"],"summary":"A list of boundaries","description":"Boundaries matching a name (best first), holding a point (largest first),\ninside a boundary, or in a country (by id); type= narrows any of them.","operationId":"get_boundaries_v1_boundaries_get","security":[{"ApplicationId":[],"ApiKey":[]}],"parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":1,"maxLength":200},{"type":"null"}],"description":"Search by name.","title":"Q"},"description":"Search by name."},{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The country to list or to search with q=.","title":"Country"},"description":"The country to list or to search with q=."},{"name":"at","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"lat,lng: every boundary holding this point.","title":"At"},"description":"lat,lng: every boundary holding this point."},{"name":"parent","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"A boundary id: the boundaries inside it.","title":"Parent"},"description":"A boundary id: the boundaries inside it."},{"name":"type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Only this type; type=country alone: countries.","title":"Type"},"description":"Only this type; type=country alone: countries."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","description":"Rows per page, up to 10,000.","default":100,"title":"Limit"},"description":"Rows per page, up to 10,000."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"next_cursor from the previous page.","title":"Cursor"},"description":"next_cursor from the previous page."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Boundaries V1 Boundaries Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Rate limit exceeded (120 requests/minute per application)"}}}},"/v1/boundaries/{id}":{"get":{"tags":["boundaries"],"summary":"One boundary","description":"One boundary with its official name, bbox and codes; include=cells adds its\nres-9 hexagons. /boundaries/gb is the country.","operationId":"get_boundary_v1_boundaries__id__get","security":[{"ApplicationId":[],"ApiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","title":"Id"}},{"name":"include","in":"query","required":false,"schema":{"anyOf":[{"const":"cells","type":"string"},{"type":"null"}],"title":"Include"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Boundary V1 Boundaries  Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Rate limit exceeded (120 requests/minute per application)"}}}},"/v1/boundaries/cells":{"get":{"tags":["boundaries"],"summary":"The boundaries each hexagon is in","description":"Per hexagon, in the order sent: every boundary it sits in, smallest first,\nthen National Parks and Landscapes.","operationId":"get_boundary_cells_v1_boundaries_cells_get","security":[{"ApplicationId":[],"ApiKey":[]}],"parameters":[{"name":"cells","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Res-9 H3 cells: comma-separated in a query, a JSON array in a body.","title":"Cells"},"description":"Res-9 H3 cells: comma-separated in a query, a JSON array in a body."},{"name":"resolution","in":"query","required":false,"schema":{"type":"integer","description":"9 only: a coarser hexagon can span two areas.","default":9,"title":"Resolution"},"description":"9 only: a coarser hexagon can span two areas."},{"name":"format","in":"query","required":false,"schema":{"enum":["json","geojson"],"type":"string","description":"geojson: a FeatureCollection.","default":"json","title":"Format"},"description":"geojson: a FeatureCollection."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","description":"Rows per page, up to 10,000.","default":100,"title":"Limit"},"description":"Rows per page, up to 10,000."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"next_cursor from the previous page.","title":"Cursor"},"description":"next_cursor from the previous page."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Boundary Cells V1 Boundaries Cells Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Rate limit exceeded (120 requests/minute per application)"}}},"post":{"tags":["boundaries"],"summary":"The boundaries each hexagon is in (long lists)","description":"``GET /v1/boundaries/cells`` with its fields in a JSON body.","operationId":"post_boundary_cells_v1_boundaries_cells_post","security":[{"ApplicationId":[],"ApiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BoundaryCellsQuery"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Post Boundary Cells V1 Boundaries Cells Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Rate limit exceeded (120 requests/minute per application)"}}}},"/v1/catalog":{"get":{"tags":["catalog"],"summary":"Data catalog","description":"One document describing every advertised country this app can answer for: its tier, the layers its deployed data carries with each live source and its record count, any registered source not yet deployed, and the publisher facts behind each referenced source. `tier` and `layers` are read from the live indexes; a country carries `verified: false` and its registry entry instead when its read failed, or on an app serving from local bundles rather than the indexes.\n\nBuilt when each server process starts and rebuilt in the background within five minutes of a data deploy changing any index (or of a failed country read). Callers get the cached copy. Until a build can be cached — at startup, or while OpenSearch is unreachable — a caller waits for a build instead, sharing one already running. Sets a weak ETag over `generated_at`.","operationId":"get_catalog_endpoint_v1_catalog_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CatalogResponse"}}}},"429":{"description":"Rate limit exceeded (120 requests/minute per application)"}},"security":[{"ApplicationId":[],"ApiKey":[]}]}},"/v1/catalog/{country}":{"get":{"tags":["catalog"],"summary":"What the API has in one country","description":"Every dataset, its fields and units, whether it is live, how many records it has and\nwhen it was updated; the country's boundary types, transit modes and operators; every\nfield a custom-score check can read.","operationId":"get_catalog_v1_catalog__country__get","security":[{"ApplicationId":[],"ApiKey":[]}],"parameters":[{"name":"country","in":"path","required":true,"schema":{"type":"string","title":"Country"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Catalog V1 Catalog  Country  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Rate limit exceeded (120 requests/minute per application)"}}}},"/v1/categories":{"get":{"tags":["categories"],"summary":"Category taxonomy","description":"Returns the complete three-level category taxonomy (group, category, detail) with the live POI count for each entry in the specified country. Use this to populate category pickers in your UI without hard-coding the list — the taxonomy can evolve between rebuilds, and deprecated entries quietly drop to zero rather than disappearing.\n\nEach group carries an array of categories; each category carries an array of detail entries. Every node includes its canonical id, human label, and count. Counts are leaf-level and sum upward — a POI carrying three leaves contributes 3 to its group's total, so group counts run higher than `/v1/stats` `by_category_group`, which counts each POI once per distinct group. Ids from any level are accepted by the `category` filter on POI list endpoints.\n\nA token expands to every detail id beneath it, and ids that exist at two levels (`cafe` is a category *and* one of its own detail entries) resolve to the broader one — prefix a token with `detail:` to pin it to the detail level.","operationId":"list_categories_endpoint_v1_categories_get","security":[{"ApplicationId":[],"ApiKey":[]}],"parameters":[{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"ISO 3166-1 alpha-2 country code. The dataset is sharded per country; queries never span borders silently. Omit to resolve from the request geography (lat/lng, centre, bbox, first cell); explicit code wins. 400 if the code isn't in our country registry; a registered code this deployment doesn't serve reaches the query layer and surfaces as a 503 (check GET /v1/countries); 422 country_unresolved / country_required when nothing resolves. Omitted only: a malformed cells/geohashes value, or a lat/lng pair sent with only one half, is a 400 invalid_geography naming the parameter at fault here (the missing half for an incomplete pair — never the half that parsed fine) before the route's own validator for that same parameter ever runs; the same value sent alongside an explicit country reaches that validator instead and may 400 with a different code (e.g. invalid_cell_id for cells, anchor_required for an incomplete pair). A malformed bbox — query string or JSON body list; wrong count, non-numeric, or non-finite — is always a 400 invalid_bbox instead, with or without an explicit country.","examples":["GB"],"title":"Country"},"description":"ISO 3166-1 alpha-2 country code. The dataset is sharded per country; queries never span borders silently. Omit to resolve from the request geography (lat/lng, centre, bbox, first cell); explicit code wins. 400 if the code isn't in our country registry; a registered code this deployment doesn't serve reaches the query layer and surfaces as a 503 (check GET /v1/countries); 422 country_unresolved / country_required when nothing resolves. Omitted only: a malformed cells/geohashes value, or a lat/lng pair sent with only one half, is a 400 invalid_geography naming the parameter at fault here (the missing half for an incomplete pair — never the half that parsed fine) before the route's own validator for that same parameter ever runs; the same value sent alongside an explicit country reaches that validator instead and may 400 with a different code (e.g. invalid_cell_id for cells, anchor_required for an incomplete pair). A malformed bbox — query string or JSON body list; wrong count, non-numeric, or non-finite — is always a 400 invalid_bbox instead, with or without an explicit country."}],"responses":{"200":{"description":"Taxonomy tree with counts. Cache-Control: 1h fresh, 24h SWR.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Categories Endpoint V1 Categories Get"}}}},"400":{"description":"Unknown or unsupported country code."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Rate limit exceeded (120 requests/minute per application)"}}}},"/v1/categories/{group}":{"get":{"tags":["categories"],"summary":"One category group","description":"Returns a single category group (e.g. `food_and_drink`, `education`) and its categories → detail subtree, with live counts. Useful when you only need a subset of the taxonomy and want to avoid the full response.\n\nReturns 404 if the group name is unknown.","operationId":"get_category_group_endpoint_v1_categories__group__get","security":[{"ApplicationId":[],"ApiKey":[]}],"parameters":[{"name":"group","in":"path","required":true,"schema":{"type":"string","title":"Group"}},{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"ISO 3166-1 alpha-2 country code. The dataset is sharded per country; queries never span borders silently. Omit to resolve from the request geography (lat/lng, centre, bbox, first cell); explicit code wins. 400 if the code isn't in our country registry; a registered code this deployment doesn't serve reaches the query layer and surfaces as a 503 (check GET /v1/countries); 422 country_unresolved / country_required when nothing resolves. Omitted only: a malformed cells/geohashes value, or a lat/lng pair sent with only one half, is a 400 invalid_geography naming the parameter at fault here (the missing half for an incomplete pair — never the half that parsed fine) before the route's own validator for that same parameter ever runs; the same value sent alongside an explicit country reaches that validator instead and may 400 with a different code (e.g. invalid_cell_id for cells, anchor_required for an incomplete pair). A malformed bbox — query string or JSON body list; wrong count, non-numeric, or non-finite — is always a 400 invalid_bbox instead, with or without an explicit country.","examples":["GB"],"title":"Country"},"description":"ISO 3166-1 alpha-2 country code. The dataset is sharded per country; queries never span borders silently. Omit to resolve from the request geography (lat/lng, centre, bbox, first cell); explicit code wins. 400 if the code isn't in our country registry; a registered code this deployment doesn't serve reaches the query layer and surfaces as a 503 (check GET /v1/countries); 422 country_unresolved / country_required when nothing resolves. Omitted only: a malformed cells/geohashes value, or a lat/lng pair sent with only one half, is a 400 invalid_geography naming the parameter at fault here (the missing half for an incomplete pair — never the half that parsed fine) before the route's own validator for that same parameter ever runs; the same value sent alongside an explicit country reaches that validator instead and may 400 with a different code (e.g. invalid_cell_id for cells, anchor_required for an incomplete pair). A malformed bbox — query string or JSON body list; wrong count, non-numeric, or non-finite — is always a 400 invalid_bbox instead, with or without an explicit country."}],"responses":{"200":{"description":"Group + its categories. Cache-Control: 1h fresh, 24h SWR.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Category Group Endpoint V1 Categories  Group  Get"}}}},"400":{"description":"Unknown or unsupported country code."},"404":{"description":"Unknown category group name."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Rate limit exceeded (120 requests/minute per application)"}}}},"/v1/custom-scores":{"post":{"tags":["custom-scores"],"summary":"Your rules applied to a list of homes","description":"Every check's value and whether it was met, ``musts_met`` and, when any check has a\nweight, ``score {points, out_of, share}``, per home, in the order sent.","operationId":"post_custom_scores_v1_custom_scores_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HomesBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Post Custom Scores V1 Custom Scores Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Rate limit exceeded (120 requests/minute per application)"}},"security":[{"ApplicationId":[],"ApiKey":[]}]}},"/v1/custom-scores/cells":{"post":{"tags":["custom-scores"],"summary":"Hexagons that pass your rules","description":"Hexagons where every must holds, most points first, ties broken by h3: the top\n10,000 at most. With at= or cells=, every hexagon sent, in the order sent, musts met or\nnot. ``matched`` counts the hexagons passing every must; ``returned`` the rows in all.","operationId":"post_custom_score_cells_v1_custom_scores_cells_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CellsBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Post Custom Score Cells V1 Custom Scores Cells Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Rate limit exceeded (120 requests/minute per application)"}},"security":[{"ApplicationId":[],"ApiKey":[]}]}},"/v1/demographics/cells":{"get":{"tags":["demographics"],"summary":"Who lives in each hexagon, per boundary, or in total","description":"People (WorldPop) and a census block (residents, households, age, renting, cars,\nincome) per hexagon, or in total with group_by=all.","operationId":"get_demographics_cells_v1_demographics_cells_get","security":[{"ApplicationId":[],"ApiKey":[]}],"parameters":[{"name":"near","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"lat,lng centre of a circle; needs radius_m.","title":"Near"},"description":"lat,lng centre of a circle; needs radius_m."},{"name":"radius_m","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Radius around near, up to 50,000 m.","title":"Radius M"},"description":"Radius around near, up to 50,000 m."},{"name":"bbox","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"south,west,north,east, latitude first.","title":"Bbox"},"description":"south,west,north,east, latitude first."},{"name":"cells","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Res-9 H3 cells, comma-separated.","title":"Cells"},"description":"Res-9 H3 cells, comma-separated."},{"name":"at","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"lat,lng: the one hexagon holding this point.","title":"At"},"description":"lat,lng: the one hexagon holding this point."},{"name":"group_by","in":"query","required":false,"schema":{"type":"string","description":"cell: a row per hexagon; all: one total row, whose cells at resolution 9 may be compacted (resolutions 0–9 mixed, up to 200,000 res-9 hexagons); a boundary type (borough, ward…): a row per boundary the hexagons fall in.","default":"cell","title":"Group By"},"description":"cell: a row per hexagon; all: one total row, whose cells at resolution 9 may be compacted (resolutions 0–9 mixed, up to 200,000 res-9 hexagons); a boundary type (borough, ward…): a row per boundary the hexagons fall in."},{"name":"format","in":"query","required":false,"schema":{"enum":["json","geojson"],"type":"string","description":"geojson: a FeatureCollection.","default":"json","title":"Format"},"description":"geojson: a FeatureCollection."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","description":"Rows per page, up to 10,000.","default":100,"title":"Limit"},"description":"Rows per page, up to 10,000."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"next_cursor from the previous page.","title":"Cursor"},"description":"next_cursor from the previous page."},{"name":"min_population","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"description":"Only hexagons with at least this many people.","title":"Min Population"},"description":"Only hexagons with at least this many people."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Demographics Cells V1 Demographics Cells Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Rate limit exceeded (120 requests/minute per application)"}}},"post":{"tags":["demographics"],"summary":"Who lives in each hexagon (long cell lists)","description":"``GET /v1/demographics/cells`` with its fields in a JSON body.","operationId":"post_demographics_cells_v1_demographics_cells_post","security":[{"ApplicationId":[],"ApiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemographicsQuery"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Post Demographics Cells V1 Demographics Cells Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Rate limit exceeded (120 requests/minute per application)"}}}},"/v1/neighbourhood/cells":{"get":{"tags":["neighbourhood"],"summary":"What each hexagon is like, per boundary, or in total","description":"Noise, air quality, flood, crime, deprivation and broadband per hexagon, or in total\nwith group_by=all. Deprivation is the share of people per decile, per nation.","operationId":"get_neighbourhood_cells_v1_neighbourhood_cells_get","security":[{"ApplicationId":[],"ApiKey":[]}],"parameters":[{"name":"near","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"lat,lng centre of a circle; needs radius_m.","title":"Near"},"description":"lat,lng centre of a circle; needs radius_m."},{"name":"radius_m","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Radius around near, up to 50,000 m.","title":"Radius M"},"description":"Radius around near, up to 50,000 m."},{"name":"bbox","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"south,west,north,east, latitude first.","title":"Bbox"},"description":"south,west,north,east, latitude first."},{"name":"cells","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Res-9 H3 cells, comma-separated.","title":"Cells"},"description":"Res-9 H3 cells, comma-separated."},{"name":"at","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"lat,lng: the one hexagon holding this point.","title":"At"},"description":"lat,lng: the one hexagon holding this point."},{"name":"group_by","in":"query","required":false,"schema":{"type":"string","description":"cell: a row per hexagon; all: one total row, whose cells at resolution 9 may be compacted (resolutions 0–9 mixed, up to 200,000 res-9 hexagons); a boundary type (borough, ward…): a row per boundary the hexagons fall in.","default":"cell","title":"Group By"},"description":"cell: a row per hexagon; all: one total row, whose cells at resolution 9 may be compacted (resolutions 0–9 mixed, up to 200,000 res-9 hexagons); a boundary type (borough, ward…): a row per boundary the hexagons fall in."},{"name":"format","in":"query","required":false,"schema":{"enum":["json","geojson"],"type":"string","description":"geojson: a FeatureCollection.","default":"json","title":"Format"},"description":"geojson: a FeatureCollection."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","description":"Rows per page, up to 10,000.","default":100,"title":"Limit"},"description":"Rows per page, up to 10,000."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"next_cursor from the previous page.","title":"Cursor"},"description":"next_cursor from the previous page."},{"name":"layer","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Only these blocks, comma-separated: noise, air_quality, flood, crime, deprivation, broadband.","title":"Layer"},"description":"Only these blocks, comma-separated: noise, air_quality, flood, crime, deprivation, broadband."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Neighbourhood Cells V1 Neighbourhood Cells Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Rate limit exceeded (120 requests/minute per application)"}}},"post":{"tags":["neighbourhood"],"summary":"What each hexagon is like (long cell lists)","description":"``GET /v1/neighbourhood/cells`` with its fields in a JSON body.","operationId":"post_neighbourhood_cells_v1_neighbourhood_cells_post","security":[{"ApplicationId":[],"ApiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NeighbourhoodQuery"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Post Neighbourhood Cells V1 Neighbourhood Cells Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Rate limit exceeded (120 requests/minute per application)"}}}},"/v1/open-spaces":{"get":{"tags":["open-spaces"],"summary":"Named open spaces","description":"Open spaces touching one location, public by default, each with how many of its\nhexagons the location covers. A space whose direct parent passes the same class\nand access filters is not listed on its own, even when that parent is not listed.","operationId":"get_open_spaces_v1_open_spaces_get","security":[{"ApplicationId":[],"ApiKey":[]}],"parameters":[{"name":"near","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"lat,lng centre of a circle; needs radius_m.","title":"Near"},"description":"lat,lng centre of a circle; needs radius_m."},{"name":"radius_m","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Radius around near, up to 50,000 m.","title":"Radius M"},"description":"Radius around near, up to 50,000 m."},{"name":"bbox","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"south,west,north,east, latitude first.","title":"Bbox"},"description":"south,west,north,east, latitude first."},{"name":"cells","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Res-9 H3 cells, comma-separated.","title":"Cells"},"description":"Res-9 H3 cells, comma-separated."},{"name":"at","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"lat,lng: the one hexagon holding this point.","title":"At"},"description":"lat,lng: the one hexagon holding this point."},{"name":"class","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Only these kinds, comma-separated, e.g. park,wood.","title":"Class"},"description":"Only these kinds, comma-separated, e.g. park,wood."},{"name":"access","in":"query","required":false,"schema":{"enum":["public","restricted","all"],"type":"string","description":"public, restricted (zoos, campsites…) or all, each tagged.","default":"public","title":"Access"},"description":"public, restricted (zoos, campsites…) or all, each tagged."},{"name":"format","in":"query","required":false,"schema":{"enum":["json","geojson"],"type":"string","description":"geojson: a FeatureCollection.","default":"json","title":"Format"},"description":"geojson: a FeatureCollection."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","description":"Rows per page, up to 10,000.","default":100,"title":"Limit"},"description":"Rows per page, up to 10,000."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"next_cursor from the previous page.","title":"Cursor"},"description":"next_cursor from the previous page."},{"name":"min_area_m2","in":"query","required":false,"schema":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}],"description":"Only spaces at least this big.","title":"Min Area M2"},"description":"Only spaces at least this big."},{"name":"sort","in":"query","required":false,"schema":{"anyOf":[{"const":"-area_m2","type":"string"},{"type":"null"}],"description":"-area_m2: largest first.","title":"Sort"},"description":"-area_m2: largest first."},{"name":"include","in":"query","required":false,"schema":{"anyOf":[{"const":"cells","type":"string"},{"type":"null"}],"description":"cells adds each space's hexagons, in_search and outside; 100 rows a page.","title":"Include"},"description":"cells adds each space's hexagons, in_search and outside; 100 rows a page."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Open Spaces V1 Open Spaces Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Rate limit exceeded (120 requests/minute per application)"}}},"post":{"tags":["open-spaces"],"summary":"Named open spaces (long cell lists)","description":"``GET /v1/open-spaces`` with its fields in a JSON body.","operationId":"post_open_spaces_v1_open_spaces_post","security":[{"ApplicationId":[],"ApiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpenSpacesQuery"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Post Open Spaces V1 Open Spaces Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Rate limit exceeded (120 requests/minute per application)"}}}},"/v1/open-spaces/{id}":{"get":{"tags":["open-spaces"],"summary":"One open space","description":"One open space, with the open space directly containing it as ``parent``.","operationId":"get_open_space_v1_open_spaces__id__get","security":[{"ApplicationId":[],"ApiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","title":"Id"}},{"name":"include","in":"query","required":false,"schema":{"anyOf":[{"const":"cells","type":"string"},{"type":"null"}],"description":"cells adds the hexagons it covers.","title":"Include"},"description":"cells adds the hexagons it covers."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Open Space V1 Open Spaces  Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Rate limit exceeded (120 requests/minute per application)"}}}},"/v1/open-spaces/cells":{"get":{"tags":["open-spaces"],"summary":"Open space per hexagon","description":"How green each hexagon is and which open spaces are in it, or in total with\ngroup_by=all.","operationId":"get_open_space_cells_v1_open_spaces_cells_get","security":[{"ApplicationId":[],"ApiKey":[]}],"parameters":[{"name":"near","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"lat,lng centre of a circle; needs radius_m.","title":"Near"},"description":"lat,lng centre of a circle; needs radius_m."},{"name":"radius_m","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Radius around near, up to 50,000 m.","title":"Radius M"},"description":"Radius around near, up to 50,000 m."},{"name":"bbox","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"south,west,north,east, latitude first.","title":"Bbox"},"description":"south,west,north,east, latitude first."},{"name":"cells","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Res-9 H3 cells, comma-separated.","title":"Cells"},"description":"Res-9 H3 cells, comma-separated."},{"name":"at","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"lat,lng: the one hexagon holding this point.","title":"At"},"description":"lat,lng: the one hexagon holding this point."},{"name":"class","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Only these kinds, comma-separated, e.g. park,wood.","title":"Class"},"description":"Only these kinds, comma-separated, e.g. park,wood."},{"name":"access","in":"query","required":false,"schema":{"enum":["public","restricted","all"],"type":"string","description":"public, restricted (zoos, campsites…) or all, each tagged.","default":"public","title":"Access"},"description":"public, restricted (zoos, campsites…) or all, each tagged."},{"name":"format","in":"query","required":false,"schema":{"enum":["json","geojson"],"type":"string","description":"geojson: a FeatureCollection.","default":"json","title":"Format"},"description":"geojson: a FeatureCollection."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","description":"Rows per page, up to 10,000.","default":100,"title":"Limit"},"description":"Rows per page, up to 10,000."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"next_cursor from the previous page.","title":"Cursor"},"description":"next_cursor from the previous page."},{"name":"group_by","in":"query","required":false,"schema":{"type":"string","description":"cell: a row per hexagon; all: one total row, whose cells at resolution 9 may be compacted (resolutions 0–9 mixed, up to 200,000 res-9 hexagons).","default":"cell","title":"Group By"},"description":"cell: a row per hexagon; all: one total row, whose cells at resolution 9 may be compacted (resolutions 0–9 mixed, up to 200,000 res-9 hexagons)."},{"name":"resolution","in":"query","required":false,"schema":{"type":"integer","description":"Hexagon size; open spaces have 9 only.","default":9,"title":"Resolution"},"description":"Hexagon size; open spaces have 9 only."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Open Space Cells V1 Open Spaces Cells Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Rate limit exceeded (120 requests/minute per application)"}}},"post":{"tags":["open-spaces"],"summary":"Open space per hexagon (long cell lists)","description":"``GET /v1/open-spaces/cells`` with its fields in a JSON body.","operationId":"post_open_space_cells_v1_open_spaces_cells_post","security":[{"ApplicationId":[],"ApiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpenSpaceCellsQuery"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Post Open Space Cells V1 Open Spaces Cells Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Rate limit exceeded (120 requests/minute per application)"}}}},"/v1/places":{"get":{"tags":["places"],"summary":"A list of places","description":"Places in one location: nearest first for near, best match first for q, in\nthe order sent for cells, otherwise by id.","operationId":"get_places_v1_places_get","security":[{"ApplicationId":[],"ApiKey":[]}],"parameters":[{"name":"near","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"lat,lng centre of a circle; needs radius_m.","title":"Near"},"description":"lat,lng centre of a circle; needs radius_m."},{"name":"radius_m","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Radius around near, up to 50,000 m.","title":"Radius M"},"description":"Radius around near, up to 50,000 m."},{"name":"bbox","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"south,west,north,east, latitude first.","title":"Bbox"},"description":"south,west,north,east, latitude first."},{"name":"cells","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"H3 cells, comma-separated (geohash squares with grid=geohash).","title":"Cells"},"description":"H3 cells, comma-separated (geohash squares with grid=geohash)."},{"name":"at","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"lat,lng: the one hexagon holding this point.","title":"At"},"description":"lat,lng: the one hexagon holding this point."},{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Only these category ids, comma-separated; a group id covers its tree.","title":"Category"},"description":"Only these category ids, comma-separated; a group id covers its tree."},{"name":"grid","in":"query","required":false,"schema":{"enum":["h3","geohash"],"type":"string","description":"geohash: cells are geohashes.","default":"h3","title":"Grid"},"description":"geohash: cells are geohashes."},{"name":"precision","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":7,"minimum":6},{"type":"null"}],"description":"Geohash size (6 or 7), with grid=geohash.","title":"Precision"},"description":"Geohash size (6 or 7), with grid=geohash."},{"name":"format","in":"query","required":false,"schema":{"enum":["json","geojson"],"type":"string","description":"geojson: a FeatureCollection.","default":"json","title":"Format"},"description":"geojson: a FeatureCollection."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","description":"Rows per page, up to 10,000.","default":100,"title":"Limit"},"description":"Rows per page, up to 10,000."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"next_cursor from the previous page.","title":"Cursor"},"description":"next_cursor from the previous page."},{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The whole country, for q= name search only.","title":"Country"},"description":"The whole country, for q= name search only."},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":1,"maxLength":200},{"type":"null"}],"description":"Search by name.","title":"Q"},"description":"Search by name."},{"name":"brand","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Only this brand, e.g. pret.","title":"Brand"},"description":"Only this brand, e.g. pret."},{"name":"verified","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"true: only places a register confirms.","title":"Verified"},"description":"true: only places a register confirms."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Places V1 Places Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Rate limit exceeded (120 requests/minute per application)"}}},"post":{"tags":["places"],"summary":"A list of places (long cell lists)","description":"``GET /v1/places`` with its fields in a JSON body.","operationId":"post_places_v1_places_post","security":[{"ApplicationId":[],"ApiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlacesQuery"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Post Places V1 Places Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Rate limit exceeded (120 requests/minute per application)"}}}},"/v1/places/{id}":{"get":{"tags":["places"],"summary":"One place","description":"One place with its address, the datasets that list it and the registers\nthat verify it.","operationId":"get_place_v1_places__id__get","security":[{"ApplicationId":[],"ApiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","title":"Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Place V1 Places  Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Rate limit exceeded (120 requests/minute per application)"}}}},"/v1/places/cells":{"get":{"tags":["places"],"summary":"Places per hexagon","description":"How many places are in each hexagon, or in total with group_by=all.","operationId":"get_place_cells_v1_places_cells_get","security":[{"ApplicationId":[],"ApiKey":[]}],"parameters":[{"name":"near","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"lat,lng centre of a circle; needs radius_m.","title":"Near"},"description":"lat,lng centre of a circle; needs radius_m."},{"name":"radius_m","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Radius around near, up to 50,000 m.","title":"Radius M"},"description":"Radius around near, up to 50,000 m."},{"name":"bbox","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"south,west,north,east, latitude first.","title":"Bbox"},"description":"south,west,north,east, latitude first."},{"name":"cells","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"H3 cells, comma-separated (geohash squares with grid=geohash).","title":"Cells"},"description":"H3 cells, comma-separated (geohash squares with grid=geohash)."},{"name":"at","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"lat,lng: the one hexagon holding this point.","title":"At"},"description":"lat,lng: the one hexagon holding this point."},{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Only these category ids, comma-separated; a group id covers its tree.","title":"Category"},"description":"Only these category ids, comma-separated; a group id covers its tree."},{"name":"grid","in":"query","required":false,"schema":{"enum":["h3","geohash"],"type":"string","description":"geohash: cells are geohashes.","default":"h3","title":"Grid"},"description":"geohash: cells are geohashes."},{"name":"precision","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":7,"minimum":6},{"type":"null"}],"description":"Geohash size (6 or 7), with grid=geohash.","title":"Precision"},"description":"Geohash size (6 or 7), with grid=geohash."},{"name":"format","in":"query","required":false,"schema":{"enum":["json","geojson"],"type":"string","description":"geojson: a FeatureCollection.","default":"json","title":"Format"},"description":"geojson: a FeatureCollection."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","description":"Rows per page, up to 10,000.","default":100,"title":"Limit"},"description":"Rows per page, up to 10,000."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"next_cursor from the previous page.","title":"Cursor"},"description":"next_cursor from the previous page."},{"name":"include","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"categories adds category_counts to each row and groups adds group_counts; comma-separated for both.","title":"Include"},"description":"categories adds category_counts to each row and groups adds group_counts; comma-separated for both."},{"name":"group_by","in":"query","required":false,"schema":{"type":"string","description":"cell: a row per hexagon; all: one total row, whose cells at resolution 9 may be compacted (resolutions 0–9 mixed, up to 200,000 res-9 hexagons); a boundary type (borough, ward…): a row per boundary the hexagons fall in.","default":"cell","title":"Group By"},"description":"cell: a row per hexagon; all: one total row, whose cells at resolution 9 may be compacted (resolutions 0–9 mixed, up to 200,000 res-9 hexagons); a boundary type (borough, ward…): a row per boundary the hexagons fall in."},{"name":"resolution","in":"query","required":false,"schema":{"type":"integer","description":"Hexagon size, 6 to 10.","default":9,"title":"Resolution"},"description":"Hexagon size, 6 to 10."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Place Cells V1 Places Cells Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Rate limit exceeded (120 requests/minute per application)"}}},"post":{"tags":["places"],"summary":"Places per hexagon (long cell lists)","description":"``GET /v1/places/cells`` with its fields in a JSON body.","operationId":"post_place_cells_v1_places_cells_post","security":[{"ApplicationId":[],"ApiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlaceCellsQuery"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Post Place Cells V1 Places Cells Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Rate limit exceeded (120 requests/minute per application)"}}}},"/v1/proximity/cells":{"get":{"tags":["proximity"],"summary":"Ratings and time to the nearest thing, per hexagon","description":"Walk, transit and drive ratings (0-100) and walk / drive seconds to the 8 essentials\nand every within= target, per hexagon, or in total with group_by=all.","operationId":"get_proximity_cells_v1_proximity_cells_get","security":[{"ApplicationId":[],"ApiKey":[]}],"parameters":[{"name":"near","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"lat,lng centre of a circle; needs radius_m.","title":"Near"},"description":"lat,lng centre of a circle; needs radius_m."},{"name":"radius_m","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Radius around near, up to 50,000 m.","title":"Radius M"},"description":"Radius around near, up to 50,000 m."},{"name":"bbox","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"south,west,north,east, latitude first.","title":"Bbox"},"description":"south,west,north,east, latitude first."},{"name":"cells","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Resolution 9 H3 cells, comma-separated.","title":"Cells"},"description":"Resolution 9 H3 cells, comma-separated."},{"name":"at","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"lat,lng: the one hexagon holding this point.","title":"At"},"description":"lat,lng: the one hexagon holding this point."},{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The whole country, with within= or beyond=.","title":"Country"},"description":"The whole country, with within= or beyond=."},{"name":"within","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Keep hexagons meeting every condition, comma-separated travel.target:seconds (travel is walk or drive; seconds up to 900); target is a category, train_station, metro_station, bus_stop, transit_stop or brand:<slug>. e.g. walk.supermarket:600,drive.brand:lidl:900","title":"Within"},"description":"Keep hexagons meeting every condition, comma-separated travel.target:seconds (travel is walk or drive; seconds up to 900); target is a category, train_station, metro_station, bus_stop, transit_stop or brand:<slug>. e.g. walk.supermarket:600,drive.brand:lidl:900"},{"name":"beyond","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"As within=, but keep inhabited hexagons where the nearest one is further, or out of reach.","title":"Beyond"},"description":"As within=, but keep inhabited hexagons where the nearest one is further, or out of reach."},{"name":"covered_by","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"As within=; with group_by, adds covered_population and covered_share.","title":"Covered By"},"description":"As within=; with group_by, adds covered_population and covered_share."},{"name":"include","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"bands and/or open_spaces, comma-separated; up to 100 rows a page.","title":"Include"},"description":"bands and/or open_spaces, comma-separated; up to 100 rows a page."},{"name":"group_by","in":"query","required":false,"schema":{"type":"string","description":"cell: a row per hexagon; all: one total row, whose cells at resolution 9 may be compacted (resolutions 0–9 mixed, up to 200,000 res-9 hexagons); a boundary type (borough, ward…): a row per boundary the hexagons fall in.","default":"cell","title":"Group By"},"description":"cell: a row per hexagon; all: one total row, whose cells at resolution 9 may be compacted (resolutions 0–9 mixed, up to 200,000 res-9 hexagons); a boundary type (borough, ward…): a row per boundary the hexagons fall in."},{"name":"format","in":"query","required":false,"schema":{"enum":["json","geojson"],"type":"string","description":"geojson: a FeatureCollection.","default":"json","title":"Format"},"description":"geojson: a FeatureCollection."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","description":"Rows per page, up to 10,000.","default":100,"title":"Limit"},"description":"Rows per page, up to 10,000."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"next_cursor from the previous page.","title":"Cursor"},"description":"next_cursor from the previous page."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Proximity Cells V1 Proximity Cells Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Rate limit exceeded (120 requests/minute per application)"}}},"post":{"tags":["proximity"],"summary":"Ratings and time to the nearest thing (long cell lists)","description":"``GET /v1/proximity/cells`` with its fields in a JSON body.","operationId":"post_proximity_cells_v1_proximity_cells_post","security":[{"ApplicationId":[],"ApiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProximityQuery"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Post Proximity Cells V1 Proximity Cells Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Rate limit exceeded (120 requests/minute per application)"}}}},"/v1/transport/transit/stations":{"get":{"tags":["transport"],"summary":"Stations and stops","description":"Stations in one location: nearest first for near, best match first for q, in\nthe order sent for cells, otherwise by id.","operationId":"get_stations_v1_transport_transit_stations_get","security":[{"ApplicationId":[],"ApiKey":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","description":"Rows per page, up to 10,000.","default":100,"title":"Limit"},"description":"Rows per page, up to 10,000."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"next_cursor from the previous page.","title":"Cursor"},"description":"next_cursor from the previous page."},{"name":"near","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"lat,lng centre of a circle; needs radius_m.","title":"Near"},"description":"lat,lng centre of a circle; needs radius_m."},{"name":"radius_m","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Radius around near, up to 50,000 m.","title":"Radius M"},"description":"Radius around near, up to 50,000 m."},{"name":"bbox","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"south,west,north,east, latitude first.","title":"Bbox"},"description":"south,west,north,east, latitude first."},{"name":"cells","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"H3 cells, comma-separated.","title":"Cells"},"description":"H3 cells, comma-separated."},{"name":"at","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"lat,lng: the one hexagon holding this point.","title":"At"},"description":"lat,lng: the one hexagon holding this point."},{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The whole country, for q= name search only.","title":"Country"},"description":"The whole country, for q= name search only."},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":1,"maxLength":200},{"type":"null"}],"description":"Search by name.","title":"Q"},"description":"Search by name."},{"name":"mode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Only stations served by this mode, e.g. bus.","title":"Mode"},"description":"Only stations served by this mode, e.g. bus."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Stations V1 Transport Transit Stations Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Rate limit exceeded (120 requests/minute per application)"}}},"post":{"tags":["transport"],"summary":"Stations and stops (long cell lists)","description":"``GET /v1/transport/transit/stations`` with its fields in a JSON body.","operationId":"post_stations_v1_transport_transit_stations_post","security":[{"ApplicationId":[],"ApiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StationsQuery"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Post Stations V1 Transport Transit Stations Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Rate limit exceeded (120 requests/minute per application)"}}}},"/v1/transport/transit/stations/{id}":{"get":{"tags":["transport"],"summary":"One station","description":"One station with every line that calls there and the stations next to it.","operationId":"get_station_v1_transport_transit_stations__id__get","security":[{"ApplicationId":[],"ApiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","title":"Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Station V1 Transport Transit Stations  Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Rate limit exceeded (120 requests/minute per application)"}}}},"/v1/transport/transit/stations/cells":{"get":{"tags":["transport"],"summary":"Stations per hexagon","description":"How many stations are in each hexagon, with a count per mode.","operationId":"get_station_cells_v1_transport_transit_stations_cells_get","security":[{"ApplicationId":[],"ApiKey":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","description":"Rows per page, up to 10,000.","default":100,"title":"Limit"},"description":"Rows per page, up to 10,000."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"next_cursor from the previous page.","title":"Cursor"},"description":"next_cursor from the previous page."},{"name":"near","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"lat,lng centre of a circle; needs radius_m.","title":"Near"},"description":"lat,lng centre of a circle; needs radius_m."},{"name":"radius_m","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Radius around near, up to 50,000 m.","title":"Radius M"},"description":"Radius around near, up to 50,000 m."},{"name":"bbox","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"south,west,north,east, latitude first.","title":"Bbox"},"description":"south,west,north,east, latitude first."},{"name":"cells","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"H3 cells, comma-separated.","title":"Cells"},"description":"H3 cells, comma-separated."},{"name":"at","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"lat,lng: the one hexagon holding this point.","title":"At"},"description":"lat,lng: the one hexagon holding this point."},{"name":"group_by","in":"query","required":false,"schema":{"type":"string","description":"cell: a row per hexagon; all: one total row, whose cells at resolution 9 may be compacted (resolutions 0–9 mixed, up to 200,000 res-9 hexagons).","default":"cell","title":"Group By"},"description":"cell: a row per hexagon; all: one total row, whose cells at resolution 9 may be compacted (resolutions 0–9 mixed, up to 200,000 res-9 hexagons)."},{"name":"resolution","in":"query","required":false,"schema":{"type":"integer","description":"Hexagon size, 6 to 10.","default":9,"title":"Resolution"},"description":"Hexagon size, 6 to 10."},{"name":"format","in":"query","required":false,"schema":{"enum":["json","geojson"],"type":"string","description":"geojson: a FeatureCollection.","default":"json","title":"Format"},"description":"geojson: a FeatureCollection."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Station Cells V1 Transport Transit Stations Cells Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Rate limit exceeded (120 requests/minute per application)"}}},"post":{"tags":["transport"],"summary":"Stations per hexagon (long lists)","description":"``GET /v1/transport/transit/stations/cells`` with its fields in a JSON body.","operationId":"post_station_cells_v1_transport_transit_stations_cells_post","security":[{"ApplicationId":[],"ApiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransitCellsQuery"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Post Station Cells V1 Transport Transit Stations Cells Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Rate limit exceeded (120 requests/minute per application)"}}}},"/v1/transport/transit/lines":{"get":{"tags":["transport"],"summary":"Bus routes, Underground lines, rail services","description":"Lines that stop in one location, serve every station in serves, or are run by\none operator; best match first for q, otherwise by id.","operationId":"get_lines_v1_transport_transit_lines_get","security":[{"ApplicationId":[],"ApiKey":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","description":"Rows per page, up to 10,000.","default":100,"title":"Limit"},"description":"Rows per page, up to 10,000."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"next_cursor from the previous page.","title":"Cursor"},"description":"next_cursor from the previous page."},{"name":"near","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"lat,lng centre of a circle; needs radius_m.","title":"Near"},"description":"lat,lng centre of a circle; needs radius_m."},{"name":"radius_m","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Radius around near, up to 50,000 m.","title":"Radius M"},"description":"Radius around near, up to 50,000 m."},{"name":"bbox","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"south,west,north,east, latitude first.","title":"Bbox"},"description":"south,west,north,east, latitude first."},{"name":"cells","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"H3 cells, comma-separated.","title":"Cells"},"description":"H3 cells, comma-separated."},{"name":"at","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"lat,lng: the one hexagon holding this point.","title":"At"},"description":"lat,lng: the one hexagon holding this point."},{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The whole country, for q= name search only.","title":"Country"},"description":"The whole country, for q= name search only."},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":1,"maxLength":200},{"type":"null"}],"description":"Search by name.","title":"Q"},"description":"Search by name."},{"name":"mode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Only lines of this mode, e.g. underground.","title":"Mode"},"description":"Only lines of this mode, e.g. underground."},{"name":"operator","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Only this operator's lines, by its id.","title":"Operator"},"description":"Only this operator's lines, by its id."},{"name":"serves","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Station ids, comma-separated: lines at all.","title":"Serves"},"description":"Station ids, comma-separated: lines at all."},{"name":"include","in":"query","required":false,"schema":{"anyOf":[{"const":"stops","type":"string"},{"type":"null"}],"description":"stops adds each line's stops in order, as on one line; 100 rows a page.","title":"Include"},"description":"stops adds each line's stops in order, as on one line; 100 rows a page."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Lines V1 Transport Transit Lines Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Rate limit exceeded (120 requests/minute per application)"}}},"post":{"tags":["transport"],"summary":"Lines (long cell lists)","description":"``GET /v1/transport/transit/lines`` with its fields in a JSON body.","operationId":"post_lines_v1_transport_transit_lines_post","security":[{"ApplicationId":[],"ApiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinesQuery"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Post Lines V1 Transport Transit Lines Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Rate limit exceeded (120 requests/minute per application)"}}}},"/v1/transport/transit/lines/{id}":{"get":{"tags":["transport"],"summary":"One line","description":"One line with its stops in order, each with its station's lat and lng.","operationId":"get_line_v1_transport_transit_lines__id__get","security":[{"ApplicationId":[],"ApiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","title":"Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Line V1 Transport Transit Lines  Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Rate limit exceeded (120 requests/minute per application)"}}}},"/v1/transport/transit/lines/cells":{"get":{"tags":["transport"],"summary":"Lines per hexagon","description":"How many lines stop in each hexagon, with a count per mode; in a total each\nline counts once.","operationId":"get_line_cells_v1_transport_transit_lines_cells_get","security":[{"ApplicationId":[],"ApiKey":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","description":"Rows per page, up to 10,000.","default":100,"title":"Limit"},"description":"Rows per page, up to 10,000."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"next_cursor from the previous page.","title":"Cursor"},"description":"next_cursor from the previous page."},{"name":"near","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"lat,lng centre of a circle; needs radius_m.","title":"Near"},"description":"lat,lng centre of a circle; needs radius_m."},{"name":"radius_m","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Radius around near, up to 50,000 m.","title":"Radius M"},"description":"Radius around near, up to 50,000 m."},{"name":"bbox","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"south,west,north,east, latitude first.","title":"Bbox"},"description":"south,west,north,east, latitude first."},{"name":"cells","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"H3 cells, comma-separated.","title":"Cells"},"description":"H3 cells, comma-separated."},{"name":"at","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"lat,lng: the one hexagon holding this point.","title":"At"},"description":"lat,lng: the one hexagon holding this point."},{"name":"group_by","in":"query","required":false,"schema":{"type":"string","description":"cell: a row per hexagon; all: one total row, whose cells at resolution 9 may be compacted (resolutions 0–9 mixed, up to 200,000 res-9 hexagons).","default":"cell","title":"Group By"},"description":"cell: a row per hexagon; all: one total row, whose cells at resolution 9 may be compacted (resolutions 0–9 mixed, up to 200,000 res-9 hexagons)."},{"name":"resolution","in":"query","required":false,"schema":{"type":"integer","description":"Hexagon size, 6 to 10.","default":9,"title":"Resolution"},"description":"Hexagon size, 6 to 10."},{"name":"format","in":"query","required":false,"schema":{"enum":["json","geojson"],"type":"string","description":"geojson: a FeatureCollection.","default":"json","title":"Format"},"description":"geojson: a FeatureCollection."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Line Cells V1 Transport Transit Lines Cells Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Rate limit exceeded (120 requests/minute per application)"}}},"post":{"tags":["transport"],"summary":"Lines per hexagon (long lists)","description":"``GET /v1/transport/transit/lines/cells`` with its fields in a JSON body.","operationId":"post_line_cells_v1_transport_transit_lines_cells_post","security":[{"ApplicationId":[],"ApiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransitCellsQuery"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Post Line Cells V1 Transport Transit Lines Cells Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Rate limit exceeded (120 requests/minute per application)"}}}},"/v1/transport/roads":{"get":{"tags":["transport"],"summary":"Major roads","description":"Major roads with an entry or exit in one location, one row per direction:\nnearest first for near, otherwise by id.","operationId":"get_roads_v1_transport_roads_get","security":[{"ApplicationId":[],"ApiKey":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","description":"Rows per page, up to 10,000.","default":100,"title":"Limit"},"description":"Rows per page, up to 10,000."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"next_cursor from the previous page.","title":"Cursor"},"description":"next_cursor from the previous page."},{"name":"near","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"lat,lng centre of a circle; needs radius_m.","title":"Near"},"description":"lat,lng centre of a circle; needs radius_m."},{"name":"radius_m","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Radius around near, up to 50,000 m.","title":"Radius M"},"description":"Radius around near, up to 50,000 m."},{"name":"bbox","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"south,west,north,east, latitude first.","title":"Bbox"},"description":"south,west,north,east, latitude first."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Roads V1 Transport Roads Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Rate limit exceeded (120 requests/minute per application)"}}}},"/v1/transport/roads/{id}":{"get":{"tags":["transport"],"summary":"One road","description":"One major road, one direction, with its entries and exits counted.","operationId":"get_road_v1_transport_roads__id__get","security":[{"ApplicationId":[],"ApiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","title":"Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Road V1 Transport Roads  Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Rate limit exceeded (120 requests/minute per application)"}}}},"/v1/transport/roads/access":{"get":{"tags":["transport"],"summary":"Where you get on or off a major road","description":"Entries and exits in one location, or on one road: nearest first for near,\notherwise by id.","operationId":"get_road_access_v1_transport_roads_access_get","security":[{"ApplicationId":[],"ApiKey":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","description":"Rows per page, up to 10,000.","default":100,"title":"Limit"},"description":"Rows per page, up to 10,000."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"next_cursor from the previous page.","title":"Cursor"},"description":"next_cursor from the previous page."},{"name":"near","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"lat,lng centre of a circle; needs radius_m.","title":"Near"},"description":"lat,lng centre of a circle; needs radius_m."},{"name":"radius_m","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Radius around near, up to 50,000 m.","title":"Radius M"},"description":"Radius around near, up to 50,000 m."},{"name":"bbox","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"south,west,north,east, latitude first.","title":"Bbox"},"description":"south,west,north,east, latitude first."},{"name":"type","in":"query","required":false,"schema":{"anyOf":[{"enum":["entry","exit"],"type":"string"},{"type":"null"}],"description":"entry or exit; both if unset.","title":"Type"},"description":"entry or exit; both if unset."},{"name":"road","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Only this road's entries and exits, by its id.","title":"Road"},"description":"Only this road's entries and exits, by its id."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Road Access V1 Transport Roads Access Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Rate limit exceeded (120 requests/minute per application)"}}}},"/v1/transport/roads/access/{id}":{"get":{"tags":["transport"],"summary":"One entry or exit","description":"One place you get on or off a major road.","operationId":"get_one_access_v1_transport_roads_access__id__get","security":[{"ApplicationId":[],"ApiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","title":"Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get One Access V1 Transport Roads Access  Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Rate limit exceeded (120 requests/minute per application)"}}}}},"components":{"schemas":{"BoundaryCellsQuery":{"properties":{"cells":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Cells","description":"Res-9 H3 cells: comma-separated in a query, a JSON array in a body."},"resolution":{"type":"integer","title":"Resolution","description":"9 only: a coarser hexagon can span two areas.","default":9},"format":{"type":"string","enum":["json","geojson"],"title":"Format","description":"geojson: a FeatureCollection.","default":"json"},"limit":{"type":"integer","title":"Limit","description":"Rows per page, up to 10,000.","default":100},"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor","description":"next_cursor from the previous page."}},"type":"object","title":"BoundaryCellsQuery"},"CatalogCountry":{"properties":{"code":{"type":"string","title":"Code","description":"ISO 3166-1 alpha-2 code, e.g. ``GB``."},"name":{"type":"string","title":"Name","description":"Display name, e.g. ``United Kingdom``."},"tier":{"type":"string","enum":["A","B","C"],"title":"Tier","description":"A = places (fsq, osm or overture) plus at least one environment layer, B = places, C = no places — government-register POIs alone don't count. Derived from the deployed data, like `layers`."},"bbox":{"items":{"type":"number"},"type":"array","maxItems":4,"minItems":4,"title":"Bbox","description":"Bounding box as ``[min_lng, min_lat, max_lng, max_lat]``."},"last_refreshed":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Refreshed","description":"ISO-8601 build timestamp of the country's `pois` index, or null when it can't be read (older index, or OpenSearch unreachable)."},"verified":{"type":"boolean","title":"Verified","description":"True when `tier` and `layers` were read from the deployed data. False when they are the country's registry entry instead, which may claim data prod doesn't have: either the live read failed, or the app serves from local bundles and has no live indexes to read."},"layers":{"additionalProperties":{"$ref":"#/components/schemas/CatalogLayer"},"type":"object","title":"Layers","description":"Every known layer, with `available` false where the deployed data doesn't carry it."}},"type":"object","required":["code","name","tier","bbox","last_refreshed","verified","layers"],"title":"CatalogCountry"},"CatalogLayer":{"properties":{"available":{"type":"boolean","title":"Available","description":"Whether the deployed data carries this layer for the country."},"sources":{"items":{"type":"string"},"type":"array","title":"Sources","description":"Ids of the sources live behind the layer. Each is a key into `sources`, except an id the source facts don't cover yet, which has no entry there."},"records":{"additionalProperties":{"type":"integer"},"type":"object","title":"Records","description":"Per live source id, how many records carry it: POIs for `places` and `gov_registers`, res-9 cells for `population`, `census` and `environment`, stations for `transport`, polygons for `land_cover`, divisions for `divisions`."},"not_deployed":{"items":{"type":"string"},"type":"array","title":"Not Deployed","description":"Source ids the country is registered for that the deployed data does not carry — built but not indexed, or not built yet."}},"type":"object","required":["available","sources"],"title":"CatalogLayer"},"CatalogResponse":{"properties":{"generated_at":{"type":"string","title":"Generated At","description":"ISO-8601 timestamp this document was built."},"countries":{"items":{"$ref":"#/components/schemas/CatalogCountry"},"type":"array","title":"Countries","description":"Advertised countries this app serves — the attached bundles, or the `pois_<cc>` aliases where no bundle is mounted — sorted by name."},"sources":{"additionalProperties":{"$ref":"#/components/schemas/CatalogSource"},"type":"object","title":"Sources","description":"Every source id a returned country references, or `/v1/catalog/{country}` can name, keyed by id."}},"type":"object","required":["generated_at","countries","sources"],"title":"CatalogResponse","example":{"countries":[{"bbox":[-8.65,49.84,1.77,60.86],"code":"GB","last_refreshed":"2026-09-01T03:12:00Z","layers":{"census":{"available":true,"not_deployed":[],"records":{"census_gb":1580000},"sources":["census_gb"]},"divisions":{"available":true,"not_deployed":[],"records":{"osm":11900},"sources":["osm"]},"environment":{"available":true,"not_deployed":["env_gb_flood"],"records":{"env_gb_crime":1580000,"env_gb_noise":1720000},"sources":["env_gb_noise","env_gb_crime"]},"gov_registers":{"available":true,"not_deployed":[],"records":{"cqc":31000,"fhrs":402000,"gias":24500,"nhs":9800},"sources":["fhrs","cqc","nhs","gias"]},"land_cover":{"available":true,"not_deployed":[],"records":{"overture":812000},"sources":["overture"]},"places":{"available":true,"not_deployed":[],"records":{"fsq":1210400,"osm":986300,"overture":1402100},"sources":["fsq","osm","overture"]},"population":{"available":true,"not_deployed":["kontur"],"records":{"worldpop":1650000},"sources":["worldpop"]},"transport":{"available":true,"not_deployed":[],"records":{"traveltime_pt":392000},"sources":["traveltime_pt"]}},"name":"United Kingdom","tier":"A","verified":true}],"generated_at":"2026-09-18T12:00:00Z","sources":{"fsq":{"homepage":"https://places.foursquare.com/","licence":"Apache 2.0","name":"Foursquare OS Places","publisher":"Foursquare Labs","vintage":"current Places Portal release"}}}},"CatalogSource":{"properties":{"name":{"type":"string","title":"Name","description":"Display name of the source dataset."},"publisher":{"type":"string","title":"Publisher","description":"Organisation that publishes the source."},"licence":{"type":"string","title":"Licence","description":"The publisher's licence, where established. `\"unverified\"` is a literal placeholder meaning nothing in the codebase has confirmed one yet — it names a gap, not a licence."},"vintage":{"type":"string","title":"Vintage","description":"Edition or snapshot date of the source."},"homepage":{"type":"string","title":"Homepage","description":"URL to the publisher's page for the source."},"match_accuracy":{"anyOf":[{"$ref":"#/components/schemas/MatchAccuracy"},{"type":"null"}],"description":"Registers only: of a random sample of the register's accepted matches, the share an AI judged the same place among the pairs it judged same or different (unsure pairs are left out), with a 95% interval. Null when the register has no judged sample."}},"type":"object","required":["name","publisher","licence","vintage","homepage"],"title":"CatalogSource"},"CellsBody":{"properties":{"near":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Near","description":"lat,lng centre of a circle; needs radius_m."},"radius_m":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Radius M","description":"Radius around near, up to 50,000 m."},"bbox":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bbox","description":"south,west,north,east, latitude first."},"cells":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Cells","description":"Resolution 9 H3 cells, or compacted ones (resolutions 0–9 mixed, up to 200,000 res-9 hexagons) read as the res-9 hexagons inside them."},"at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"At","description":"lat,lng: the one hexagon holding this point."},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country","description":"The whole country, e.g. gb."},"profile":{"$ref":"#/components/schemas/CustomProfile"},"limit":{"type":"integer","title":"Limit","description":"Rows per page, up to 10,000.","default":100},"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor","description":"next_cursor from the previous page."}},"type":"object","required":["profile"],"title":"CellsBody"},"Check":{"properties":{"field":{"type":"string","title":"Field","description":"One of /v1/catalog/{country}'s custom_scores.fields, e.g. proximity.walk_s.supermarket."},"min":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min","description":"Met when at least this."},"max":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max","description":"Met when at most this."},"weight":{"anyOf":[{"type":"integer","maximum":1000,"exclusiveMinimum":0},{"type":"null"}],"title":"Weight","description":"Points when met."},"must":{"type":"boolean","title":"Must","description":"true: a dealbreaker.","default":false},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label","description":"For your UI; not returned."}},"type":"object","required":["field"],"title":"Check"},"CustomProfile":{"properties":{"checks":{"additionalProperties":{"$ref":"#/components/schemas/Check"},"type":"object","maxProperties":50,"minProperties":1,"title":"Checks"}},"type":"object","required":["checks"],"title":"CustomProfile"},"DemographicsQuery":{"properties":{"near":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Near","description":"lat,lng centre of a circle; needs radius_m."},"radius_m":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Radius M","description":"Radius around near, up to 50,000 m."},"bbox":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bbox","description":"south,west,north,east, latitude first."},"cells":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Cells","description":"Res-9 H3 cells, comma-separated."},"at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"At","description":"lat,lng: the one hexagon holding this point."},"group_by":{"type":"string","title":"Group By","description":"cell: a row per hexagon; all: one total row, whose cells at resolution 9 may be compacted (resolutions 0–9 mixed, up to 200,000 res-9 hexagons); a boundary type (borough, ward…): a row per boundary the hexagons fall in.","default":"cell"},"format":{"type":"string","enum":["json","geojson"],"title":"Format","description":"geojson: a FeatureCollection.","default":"json"},"limit":{"type":"integer","title":"Limit","description":"Rows per page, up to 10,000.","default":100},"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor","description":"next_cursor from the previous page."},"min_population":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"title":"Min Population","description":"Only hexagons with at least this many people."}},"type":"object","title":"DemographicsQuery"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"Home":{"properties":{"id":{"type":"string","title":"Id","description":"Yours; comes back unchanged."},"lat":{"type":"number","maximum":90,"minimum":-90,"title":"Lat"},"lng":{"type":"number","maximum":180,"minimum":-180,"title":"Lng"}},"type":"object","required":["id","lat","lng"],"title":"Home"},"HomesBody":{"properties":{"homes":{"items":{"$ref":"#/components/schemas/Home"},"type":"array","maxItems":1000,"minItems":1,"title":"Homes","description":"Up to 1,000 homes."},"profile":{"$ref":"#/components/schemas/CustomProfile"},"limit":{"type":"integer","title":"Limit","description":"Rows per page, up to 10,000.","default":100},"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor","description":"next_cursor from the previous page."}},"type":"object","required":["homes","profile"],"title":"HomesBody"},"LinesQuery":{"properties":{"limit":{"type":"integer","title":"Limit","description":"Rows per page, up to 10,000.","default":100},"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor","description":"next_cursor from the previous page."},"near":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Near","description":"lat,lng centre of a circle; needs radius_m."},"radius_m":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Radius M","description":"Radius around near, up to 50,000 m."},"bbox":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bbox","description":"south,west,north,east, latitude first."},"cells":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Cells","description":"H3 cells, comma-separated."},"at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"At","description":"lat,lng: the one hexagon holding this point."},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country","description":"The whole country, for q= name search only."},"q":{"anyOf":[{"type":"string","maxLength":200,"minLength":1},{"type":"null"}],"title":"Q","description":"Search by name."},"mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mode","description":"Only lines of this mode, e.g. underground."},"operator":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Operator","description":"Only this operator's lines, by its id."},"serves":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Serves","description":"Station ids, comma-separated: lines at all."},"include":{"anyOf":[{"type":"string","const":"stops"},{"type":"null"}],"title":"Include","description":"stops adds each line's stops in order, as on one line; 100 rows a page."}},"type":"object","title":"LinesQuery"},"MatchAccuracy":{"properties":{"correct":{"type":"number","title":"Correct","description":"Share of the judged pairs that are the same place."},"lo":{"type":"number","title":"Lo","description":"Lower bound of the 95% interval on `correct`."},"hi":{"type":"number","title":"Hi","description":"Upper bound of the 95% interval on `correct`."},"sample":{"type":"integer","title":"Sample","description":"Accepted matches drawn at random for judging."},"checked":{"type":"integer","title":"Checked","description":"Pairs of the sample judged same or different."}},"type":"object","required":["correct","lo","hi","sample","checked"],"title":"MatchAccuracy"},"NeighbourhoodQuery":{"properties":{"near":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Near","description":"lat,lng centre of a circle; needs radius_m."},"radius_m":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Radius M","description":"Radius around near, up to 50,000 m."},"bbox":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bbox","description":"south,west,north,east, latitude first."},"cells":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Cells","description":"Res-9 H3 cells, comma-separated."},"at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"At","description":"lat,lng: the one hexagon holding this point."},"group_by":{"type":"string","title":"Group By","description":"cell: a row per hexagon; all: one total row, whose cells at resolution 9 may be compacted (resolutions 0–9 mixed, up to 200,000 res-9 hexagons); a boundary type (borough, ward…): a row per boundary the hexagons fall in.","default":"cell"},"format":{"type":"string","enum":["json","geojson"],"title":"Format","description":"geojson: a FeatureCollection.","default":"json"},"limit":{"type":"integer","title":"Limit","description":"Rows per page, up to 10,000.","default":100},"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor","description":"next_cursor from the previous page."},"layer":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Layer","description":"Only these blocks, comma-separated: noise, air_quality, flood, crime, deprivation, broadband."}},"type":"object","title":"NeighbourhoodQuery"},"OpenSpaceCellsQuery":{"properties":{"near":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Near","description":"lat,lng centre of a circle; needs radius_m."},"radius_m":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Radius M","description":"Radius around near, up to 50,000 m."},"bbox":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bbox","description":"south,west,north,east, latitude first."},"cells":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Cells","description":"Res-9 H3 cells, comma-separated."},"at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"At","description":"lat,lng: the one hexagon holding this point."},"class":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Class","description":"Only these kinds, comma-separated, e.g. park,wood."},"access":{"type":"string","enum":["public","restricted","all"],"title":"Access","description":"public, restricted (zoos, campsites…) or all, each tagged.","default":"public"},"format":{"type":"string","enum":["json","geojson"],"title":"Format","description":"geojson: a FeatureCollection.","default":"json"},"limit":{"type":"integer","title":"Limit","description":"Rows per page, up to 10,000.","default":100},"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor","description":"next_cursor from the previous page."},"group_by":{"type":"string","title":"Group By","description":"cell: a row per hexagon; all: one total row, whose cells at resolution 9 may be compacted (resolutions 0–9 mixed, up to 200,000 res-9 hexagons).","default":"cell"},"resolution":{"type":"integer","title":"Resolution","description":"Hexagon size; open spaces have 9 only.","default":9}},"type":"object","title":"OpenSpaceCellsQuery"},"OpenSpacesQuery":{"properties":{"near":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Near","description":"lat,lng centre of a circle; needs radius_m."},"radius_m":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Radius M","description":"Radius around near, up to 50,000 m."},"bbox":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bbox","description":"south,west,north,east, latitude first."},"cells":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Cells","description":"Res-9 H3 cells, comma-separated."},"at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"At","description":"lat,lng: the one hexagon holding this point."},"class":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Class","description":"Only these kinds, comma-separated, e.g. park,wood."},"access":{"type":"string","enum":["public","restricted","all"],"title":"Access","description":"public, restricted (zoos, campsites…) or all, each tagged.","default":"public"},"format":{"type":"string","enum":["json","geojson"],"title":"Format","description":"geojson: a FeatureCollection.","default":"json"},"limit":{"type":"integer","title":"Limit","description":"Rows per page, up to 10,000.","default":100},"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor","description":"next_cursor from the previous page."},"min_area_m2":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}],"title":"Min Area M2","description":"Only spaces at least this big."},"sort":{"anyOf":[{"type":"string","const":"-area_m2"},{"type":"null"}],"title":"Sort","description":"-area_m2: largest first."},"include":{"anyOf":[{"type":"string","const":"cells"},{"type":"null"}],"title":"Include","description":"cells adds each space's hexagons, in_search and outside; 100 rows a page."}},"type":"object","title":"OpenSpacesQuery"},"PlaceCellsQuery":{"properties":{"near":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Near","description":"lat,lng centre of a circle; needs radius_m."},"radius_m":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Radius M","description":"Radius around near, up to 50,000 m."},"bbox":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bbox","description":"south,west,north,east, latitude first."},"cells":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Cells","description":"H3 cells, comma-separated (geohash squares with grid=geohash)."},"at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"At","description":"lat,lng: the one hexagon holding this point."},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category","description":"Only these category ids, comma-separated; a group id covers its tree."},"grid":{"type":"string","enum":["h3","geohash"],"title":"Grid","description":"geohash: cells are geohashes.","default":"h3"},"precision":{"anyOf":[{"type":"integer","maximum":7,"minimum":6},{"type":"null"}],"title":"Precision","description":"Geohash size (6 or 7), with grid=geohash."},"format":{"type":"string","enum":["json","geojson"],"title":"Format","description":"geojson: a FeatureCollection.","default":"json"},"limit":{"type":"integer","title":"Limit","description":"Rows per page, up to 10,000.","default":100},"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor","description":"next_cursor from the previous page."},"include":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Include","description":"categories adds category_counts to each row and groups adds group_counts; comma-separated for both."},"group_by":{"type":"string","title":"Group By","description":"cell: a row per hexagon; all: one total row, whose cells at resolution 9 may be compacted (resolutions 0–9 mixed, up to 200,000 res-9 hexagons); a boundary type (borough, ward…): a row per boundary the hexagons fall in.","default":"cell"},"resolution":{"type":"integer","title":"Resolution","description":"Hexagon size, 6 to 10.","default":9}},"type":"object","title":"PlaceCellsQuery"},"PlacesQuery":{"properties":{"near":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Near","description":"lat,lng centre of a circle; needs radius_m."},"radius_m":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Radius M","description":"Radius around near, up to 50,000 m."},"bbox":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bbox","description":"south,west,north,east, latitude first."},"cells":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Cells","description":"H3 cells, comma-separated (geohash squares with grid=geohash)."},"at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"At","description":"lat,lng: the one hexagon holding this point."},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category","description":"Only these category ids, comma-separated; a group id covers its tree."},"grid":{"type":"string","enum":["h3","geohash"],"title":"Grid","description":"geohash: cells are geohashes.","default":"h3"},"precision":{"anyOf":[{"type":"integer","maximum":7,"minimum":6},{"type":"null"}],"title":"Precision","description":"Geohash size (6 or 7), with grid=geohash."},"format":{"type":"string","enum":["json","geojson"],"title":"Format","description":"geojson: a FeatureCollection.","default":"json"},"limit":{"type":"integer","title":"Limit","description":"Rows per page, up to 10,000.","default":100},"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor","description":"next_cursor from the previous page."},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country","description":"The whole country, for q= name search only."},"q":{"anyOf":[{"type":"string","maxLength":200,"minLength":1},{"type":"null"}],"title":"Q","description":"Search by name."},"brand":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand","description":"Only this brand, e.g. pret."},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Verified","description":"true: only places a register confirms."}},"type":"object","title":"PlacesQuery"},"ProximityQuery":{"properties":{"near":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Near","description":"lat,lng centre of a circle; needs radius_m."},"radius_m":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Radius M","description":"Radius around near, up to 50,000 m."},"bbox":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bbox","description":"south,west,north,east, latitude first."},"cells":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Cells","description":"Resolution 9 H3 cells, comma-separated."},"at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"At","description":"lat,lng: the one hexagon holding this point."},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country","description":"The whole country, with within= or beyond=."},"within":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Within","description":"Keep hexagons meeting every condition, comma-separated travel.target:seconds (travel is walk or drive; seconds up to 900); target is a category, train_station, metro_station, bus_stop, transit_stop or brand:<slug>. e.g. walk.supermarket:600,drive.brand:lidl:900"},"beyond":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Beyond","description":"As within=, but keep inhabited hexagons where the nearest one is further, or out of reach."},"covered_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Covered By","description":"As within=; with group_by, adds covered_population and covered_share."},"include":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Include","description":"bands and/or open_spaces, comma-separated; up to 100 rows a page."},"group_by":{"type":"string","title":"Group By","description":"cell: a row per hexagon; all: one total row, whose cells at resolution 9 may be compacted (resolutions 0–9 mixed, up to 200,000 res-9 hexagons); a boundary type (borough, ward…): a row per boundary the hexagons fall in.","default":"cell"},"format":{"type":"string","enum":["json","geojson"],"title":"Format","description":"geojson: a FeatureCollection.","default":"json"},"limit":{"type":"integer","title":"Limit","description":"Rows per page, up to 10,000.","default":100},"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor","description":"next_cursor from the previous page."}},"type":"object","title":"ProximityQuery"},"StationsQuery":{"properties":{"limit":{"type":"integer","title":"Limit","description":"Rows per page, up to 10,000.","default":100},"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor","description":"next_cursor from the previous page."},"near":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Near","description":"lat,lng centre of a circle; needs radius_m."},"radius_m":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Radius M","description":"Radius around near, up to 50,000 m."},"bbox":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bbox","description":"south,west,north,east, latitude first."},"cells":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Cells","description":"H3 cells, comma-separated."},"at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"At","description":"lat,lng: the one hexagon holding this point."},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country","description":"The whole country, for q= name search only."},"q":{"anyOf":[{"type":"string","maxLength":200,"minLength":1},{"type":"null"}],"title":"Q","description":"Search by name."},"mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mode","description":"Only stations served by this mode, e.g. bus."}},"type":"object","title":"StationsQuery"},"TransitCellsQuery":{"properties":{"limit":{"type":"integer","title":"Limit","description":"Rows per page, up to 10,000.","default":100},"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor","description":"next_cursor from the previous page."},"near":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Near","description":"lat,lng centre of a circle; needs radius_m."},"radius_m":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Radius M","description":"Radius around near, up to 50,000 m."},"bbox":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bbox","description":"south,west,north,east, latitude first."},"cells":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Cells","description":"H3 cells, comma-separated."},"at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"At","description":"lat,lng: the one hexagon holding this point."},"group_by":{"type":"string","title":"Group By","description":"cell: a row per hexagon; all: one total row, whose cells at resolution 9 may be compacted (resolutions 0–9 mixed, up to 200,000 res-9 hexagons).","default":"cell"},"resolution":{"type":"integer","title":"Resolution","description":"Hexagon size, 6 to 10.","default":9},"format":{"type":"string","enum":["json","geojson"],"title":"Format","description":"geojson: a FeatureCollection.","default":"json"}},"type":"object","title":"TransitCellsQuery"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}},"securitySchemes":{"ApplicationId":{"type":"apiKey","in":"header","name":"X-Application-Id"},"ApiKey":{"type":"apiKey","in":"header","name":"X-Api-Key"}}},"servers":[{"url":"https://data.traveltimeapp.com"}]}