Frota
Pesquise disponibilidade nas marcas habilitadas e cunhe um token para fixar um veículo específico.
POST /fleet/list — Passo 1: busca de disponibilidade
Fan-out em paralelo para todas as marcas habilitadas no seu tenant; retorna um cars[] plano. Uma marca que falha ou dá timeout contribui para meta e errors mas não quebra a resposta inteira — /fleet/list nunca retorna 5xx por causa de upstream.
| Campo | Tipo | Notas |
|---|---|---|
| pickup_location | pickup_lat+lng | pickup_place_uuid | string | numeric | uuid | One of three is obrigatório. Ditto for dropoff; dropoff mirrors pickup if omitted. |
| pickup_radius_km | int, 0..500 | opcional, default 50. Only used for lat/lng resolution. |
| pickup_date / dropoff_date | YYYY-MM-DD | obrigatório. |
| pickup_time / dropoff_time | HH:MM | obrigatório. |
| passenger_country_code | ISO-3166 alpha-2 | obrigatório. |
| passenger_age | int, 18..99 | obrigatório. |
| brand | brands[] | int | int[] | opcional. Omit to fan out to every enabled brand. |
| include_unbookable | bool | Default true. |
Corpo da requisição
curl -X POST https://greenflow.live/api/v1/fleet/list \
-H "Authorization: Bearer gfc_7s2wprmy_DWTZRBGBEV6La4dTOoFdMkEhWmWCsXdwc3zVMnqP" \
-H "Content-Type: application/json" \
-d '{
"pickup_location": "AACGH",
"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]
}'
Resposta · 200 OK
{
"cars": [
{
"brand_id": 11, "brand_code": "LOCALIZA", "brand_name": "LOCALIZA",
"vehicle_code": "B", "vehicle_name": "Fiat Mobi 1.0",
"transmission": "Manual", "seats": 4, "doors": 2, "luggage": 4,
"price": { "currency": "BRL", "total": 272.38, "daily": null },
"rates": [
{ "code": "011880", "name": "Padrão", "currency": "BRL",
"total_amount": 236.85, "estimated_total_amount": 272.38 }
],
"bookable": true, "bookable_reason": null,
"pickup_office": "AACGH", "dropoff_office": "AACGH"
}
],
"offices": [{ "id": 27712, "code": "AACGH", "name": "AGENCIA AEROPORTO CONGONHAS", "brand_id": 11 }],
"places": { "pickup": [], "dropoff": [] },
"groups": [],
"days_calc": 3,
"meta": { "LOCALIZA": { "count": 22, "bookable_count": 22, "ms": 1404, "rate_codes": ["011880"] } },
"errors": {},
"cached": false
}
Resolução de localização
Passe uma das três formas: pickup_location (office code), pickup_lat + pickup_lng ou pickup_place_uuid. Coordenadas resolvem para o office mais próximo por marca. Place UUIDs saem de GET /places/autocomplete.
POST /fleet/show — Passo 2: cunhar tokenc
Repete uma cotação de veículo único e retorna um tokenc que POST /bookings deve ecoar. O token cacheia o envelope do provedor por 3 horas para que a reserva não tenha que perguntar novamente ao GDS pelos metadados.
curl -X POST https://greenflow.live/api/v1/fleet/show \
-H "Authorization: Bearer gfc_7s2wprmy_DWTZRBGBEV6La4dTOoFdMkEhWmWCsXdwc3zVMnqP" \
-H "Content-Type: application/json" \
-d '{
"brand": 11, "pickup_location": "AACGH", "dropoff_location": "AACGH",
"pickup_date": "2026-05-15", "pickup_time": "10:00",
"dropoff_date": "2026-05-18", "dropoff_time": "10:00",
"rate": "011880", "vehicle_code": "B",
"passenger_country_code": "BR", "passenger_age": 30
}'
{
"car": { "vehicle_code": "B", "price": { "currency": "BRL", "total": 272.38, "estimated_total": 272.38 }, "rates": [] },
"tokenc": "836c7fb31f624ca2a8b5a519f26825d2",
"installments": [
{"installments": 1, "amount": 272.38, "total": 272.38, "interest_rate": 0.0, "currency": "BRL", "stub": true}
],
"frequent_flyer_programs": [{"iata": "AR", "name": "Aerolineas Argentinas Plus"}],
"airlines": [{"iata": "AR", "name": "Aerolineas Argentinas"}]
}
Blocos de ajuste de tarifa
Cada rates[i] expõe arrays opcionais equipments[], coverages[], inclusions[], taxes[] e discounts[]. O suporte varia por marca; trate todos como opcionais e faça feature-detection por tarifa.
Erros
| HTTP | Body |
|---|---|
| 401 | {"message": "Invalid API key"} |
| 422 | {"message": "The pickup location field is required."} |
| 422 | {"message": "Unknown pickup_place_uuid or place has no coordinates."} |