Lugares
Dos endpoints para resolver ubicaciones de retiro/devolución: una búsqueda por radio con PostGIS y un autocompletar tipo typeahead. Ambos alimentan `pickup_place_uuid` directamente en POST /fleet/list.
GET /places — autocompletar
LIKE económico sobre la tabla `places` precargada. Devuelve hasta limit (default 10, max 25) filas ordenadas por coincidencia de prefijo y luego alfabéticamente. Cacheado 5 minutos por (q, country, limit). Aliasado en GET /api/v1/places/autocomplete para quien prefiera el nombre más explícito.
Request
bash
curl -s "https://greenflow.live/api/v1/places?q=miami&country=US&limit=5" \
-H "Authorization: Bearer gfc_7s2wprmy_DWTZRBGBEV6La4dTOoFdMkEhWmWCsXdwc3zVMnqP"
Response
json
{
"data": [
{
"uuid": "9566c9fe-a2d6-451b-a754-e2fee27a2c8f",
"name": "Miami Downtown",
"latitude": 25.77125531,
"longitude": -80.19186806,
"country_id": 254,
"country_code": "US",
"place_type": 2
}
]
}
GET /places/search — búsqueda por radio
Lookup PostGIS `ST_DWithin` sobre la columna geográfica `location`. Pasá `lat` + `lng` (requeridos) y un `radius_km` opcional (default 50, máx 500). Cada resultado incluye las oficinas pivoteadas para ese lugar para saltar directo a POST /fleet/list.
Request
bash
curl -s "https://greenflow.live/api/v1/places/search?lat=-23.6273&lng=-46.6566&radius_km=25" \
-H "Authorization: Bearer gfc_7s2wprmy_DWTZRBGBEV6La4dTOoFdMkEhWmWCsXdwc3zVMnqP"
Response
json
{
"data": [
{
"uuid": "c31ec1ee-3fdf-4cb2-8445-6d07e82dacd0",
"name": "Congonhas Airport",
"latitude": -23.62799975,
"longitude": -46.65703389,
"distance_km": 0.089,
"place_type": 1,
"offices": [
{"code": "AACGH", "name": "AGENCIA AEROPORTO CONGONHAS", "brand_id": 11, "distance_km": 0.142}
]
}
]
}
Errores
| HTTP | Body | Causa |
|---|---|---|
| 401 | {"message": "Invalid API key"} | Missing or invalid Bearer token. |
| 422 | {"message": "The q field is required."} | Autocomplete needs `q` (min 2 chars). |
| 422 | {"message": "The lat field is required."} | Search needs both `lat` and `lng`. |