The data model
Listings, offers, free vehicles, companies — how they connect.
The listing
What the client needs moved: a car, a move, a parcel, freight. Published by an account — never directly by a company; the company only shows up through whoever makes an offer on it.
The offer
A carrier's price and date, on a listing. A carrier can come back with a new offer on the same listing (a revision), but can't have two active offers on the same listing at once.
Offers are not public: only the listing's beneficiary sees all of them; a carrier only sees their own offers.
The free vehicle
Where a carrier is heading empty, and when. Public, like the list at /vehicule-libere — no price, no phone. Ones pulled from Facebook groups don't appear in the API.
The company
A carrier's public company profile: name, tax ID, city, verification status, rating. No administration data (billing, members, documents).
Who sees what
| Resource | Public | With a key |
|---|---|---|
| Listings | Base fields | + transportStage, if you're a participant |
| A listing's offers | — | Only the beneficiary |
| Your offers | — | Only your own |
| Vehicles | Platform ones | + your own, any status |
| Companies | Public profile | — |
A "trip" isn't a separate resource: it's a listing with an accepted offer, tracked through transportStage (departed → loaded → en_route → delivered).
What doesn't exist in the API
- Accepting an offer. Stays a client action, in the site.
- Contacts. No phone number, in any response, not even after acceptance — see Product rules.
- A full company directory. Only
GET /companies/{id}, for a known id.