Brands
The catalog of car-rental brands GreenFlow aggregates. Each integrator has a per-tenant slice indicating which ones are enabled for them.
GET /tenancy/brands — per-tenant catalog
Returns the FULL brand catalog plus an `active` boolean per row indicating whether the current API key's tenant is enabled for it. Pair with PUT /tenancy/brands/{brandId} to toggle.
Request
bash
curl -s https://greenflow.live/api/v1/tenancy/brands \
-H "Authorization: Bearer gfc_7s2wprmy_DWTZRBGBEV6La4dTOoFdMkEhWmWCsXdwc3zVMnqP"
Response
json
{
"data": [
{"id": 1, "name": "AVIS", "display_order": 1, "logo": "brands/avis.svg", "active": true},
{"id": 2, "name": "BUDGET", "display_order": 2, "logo": "brands/budget.svg", "active": true},
{"id": 11, "name": "LOCALIZA", "display_order": 11, "logo": "brands/localiza.svg", "active": true},
{"id": 10, "name": "MOVIDA", "display_order": 10, "logo": "brands/movida.svg", "active": false}
]
}
No public `/brands` route
There is intentionally no anonymous
GET /api/v1/brands that lists every brand without a tenant context — the catalog is the same for everyone but the active subset varies, and we want callers to see "what CAN I use" not "what does the platform offer". Use GET /tenancy/brands instead.Brand id ↔ vendor enum
Brand ids are stable across deploys (1=AVIS, 2=BUDGET, ... 11=LOCALIZA). The full list lives in App\Services\GDS\Enums\Vendor and the matching constants in App\Models\Brand.
| id | vendor | notes |
|---|---|---|
| 1 | AVIS | ABG group (shared adapter) |
| 2 | BUDGET | ABG group |
| 3 | PAYLESS | ABG group |
| 4 | ALAMO | ANE group |
| 5 | NATIONAL | ANE group |
| 6 | ENTERPRISE | ANE group |
| 7 | HERTZ | HDT group |
| 8 | DOLLAR | HDT group |
| 9 | THRIFTY | HDT group |
| 10 | MOVIDA | Brazil-only |
| 11 | LOCALIZA | Brazil-only |
Errors
| HTTP | Body | Cause |
|---|---|---|
| 401 | {"message": "Invalid API key"} | Missing or invalid Bearer token. |
| 404 | {"message": "brand not found"} | Unknown brand id on PUT /tenancy/brands/{id}. |