GreenFlow docs

Oficinas

Ubicaciones de retiro/devolución específicas por marca. Actualmente no standalone endpoint — las oficinas se exponen vía /places/search (con su lugar padre) y vía la resolución interna de /fleet/list.

Sin endpoint propio (todavía)
No existe una ruta pública GET /api/v1/offices hoy. Los datos son alcanzables de dos formas: (1) /places/search devuelve el pivot de oficinas por cada place; (2) /fleet/list mismo corre `Office::near()` por marca internamente para traducir `lat/lng` → código de oficina antes de despachar al adaptador GDS.

Semántica de Office::near

Helper interno: `Office::near($lat, $lng, $radiusKm)->where(brand_id, ...)` devuelve oficinas de la marca dentro del radio, ordenadas por distancia. El controlador de fleet lo usa para elegir exactamente una oficina por marca para una latitud/longitud — la misma oficina que /places/search hubiera devuelto.

bash
# Get the offices around Congonhas (Sao Paulo) for any brand:
curl -s "https://greenflow.live/api/v1/places/search?lat=-23.6273&lng=-46.6566&radius_km=5" \
  -H "Authorization: Bearer gfc_7s2wprmy_DWTZRBGBEV6La4dTOoFdMkEhWmWCsXdwc3zVMnqP"
json
{
  "data": [
    {
      "uuid": "c31ec1ee-3fdf-4cb2-8445-6d07e82dacd0",
      "name": "Congonhas Airport",
      "offices": [
        {"code": "AACGH", "name": "AGENCIA AEROPORTO CONGONHAS", "brand_id": 11, "distance_km": 0.142}
      ]
    }
  ]
}

Resolución por marca

Distintas marcas mantienen distintos códigos de aeropuerto para el MISMO aeropuerto físico. Un `pickup_lat`/`pickup_lng` de `(-23.62, -46.65)` resuelve a `AACGH` para LOCALIZA, `SAO01` para MOVIDA, etc. La resolución pasa adentro de /fleet/list; los integradores rara vez necesitan llamarla directamente.

bash
# Pass coords directly to /fleet/list — internal Office::near picks the
# right office per brand. No need to call any /offices route.
curl -X POST https://greenflow.live/api/v1/fleet/list \
  -H "Authorization: Bearer gfc_7s2wprmy_DWTZRBGBEV6La4dTOoFdMkEhWmWCsXdwc3zVMnqP" \
  -H "Content-Type: application/json" \
  -d '{
    "pickup_lat": -23.6273, "pickup_lng": -46.6566,
    "dropoff_lat": -23.6273, "dropoff_lng": -46.6566,
    "pickup_date": "2026-05-15", "pickup_time": "10:00",
    "dropoff_date": "2026-05-18", "dropoff_time": "10:00",
    "passenger_country_code": "BR", "passenger_age": 30,
    "brands": [11]
  }'

Errores

HTTP Body Causa
404{"message": "Not Found"}Hitting /api/v1/offices directly returns 404 — not yet wired.
200{"meta": {"LOCALIZA": {"reason": "no_offices_for_pickup"}}}/fleet/list meta — no brand-owned office near the lat/lng.