Passa al contenuto principale

Prenotazione end-to-end

Questa guida percorre l'intero flusso per integrare una prenotazione con l'API di Rently: cercare la disponibilità → preventivare → scegliere gli extra → creare → pagare. Ogni passo indica l'endpoint reale (metodo + path), i campi chiave e un esempio di curl pronto da adattare.

Prima di iniziare

Conviene avere caricato il contesto (lingue, valute, luoghi e orari di apertura) per sapere quali prenotazioni si possono creare. Vedi Preparazione del contesto.

Tutti gli endpoint richiedono un token Bearer (OAuth2): invia l'header Authorization: Bearer {token} in ogni request. Il dettaglio di ogni operazione è nella API Reference →.

Diagramma di sequenza

Cliente API di Rently
│ │
│ 1. GET /api/search ─────────────────────► │ cerca disponibilità + prezzo
│ ◄──────────── List<Availability> ──────────┤
│ │
│ 2. GET /api/booking/price ──────────────► │ preventiva l'opzione scelta
│ ◄──────────────── Booking ─────────────────┤
│ │
│ 3. GET /api/booking/additionals-price ──► │ extra disponibili + prezzo
│ ◄──────────── List<AdditionalPriceItem> ───┤
│ │
│ 4. POST /api/booking/book ──────────────► │ crea la prenotazione (con extra)
│ ◄────────── BookingId / Booking ───────────┤ → Reserved
│ │
│ 5. POST /api/booking/pay ───────────────► │ registra il pagamento
│ ◄──────────────── Booking ─────────────────┤ Reserved → Confirmed
│ │

Riepilogo del flusso:

  1. Cercare la disponibilitàGET /api/search
  2. PreventivareGET /api/booking/price
  3. Scegliere gli extraGET /api/booking/additionals-price
  4. Creare la prenotazionePOST /api/booking/book
  5. PagarePOST /api/booking/pay
Stati della prenotazione

Creando con IsQuotation=false (l'opzione abituale), la prenotazione resta in Reserved e al pagamento passa a Confirmed. Puoi anche creare un preventivo (IsQuotation=true, stato Quoted) se vuoi solo conservare un preventivo; in tal caso consulta la API Reference per i passi di conversione.


Passo 1 — Cercare la disponibilità

GET /api/search cerca le auto disponibili per un intervallo di date e luoghi di consegna e restituzione, e restituisce ogni opzione con il suo prezzo già calcolato per modello (List<Availability>). Funziona anche come preventivo iniziale.

Campi chiave (vanno per query string):

CampoTipoObbligatorioDescrizione
Fromdate-timeData e ora di ritiro.
Todate-timeData e ora di restituzione.
FromPlaceintID del luogo di consegna (da GET /api/places).
ToPlaceintNoID del luogo di restituzione. Se omesso, si usa FromPlace.
CurrencyCodestringNoValuta del calcolo (da GET /api/currencies).
CommercialAgreementCodestringNoCodice di accordo commerciale.
PromotionCodestringNoCodice di promozione da applicare.
DriverAgeintNoEtà del conducente (viene validata rispetto ai limiti del tenant).
IlimitedKmboolNoSe omesso, restituisce due varianti per modello (con e senza km illimitati).
curl -G "https://{tenant}.rently.com.ar/api/search?language=es-AR" \
-H "Authorization: Bearer {token}" \
--data-urlencode "From=2026-07-01T10:00:00" \
--data-urlencode "To=2026-07-05T10:00:00" \
--data-urlencode "FromPlace=1" \
--data-urlencode "ToPlace=1" \
--data-urlencode "CurrencyCode=USD" \
--data-urlencode "DriverAge=30"
Disponibilità per modello o per categoria

A seconda della configurazione del tenant, la disponibilità può essere per modello o per categoria. Questo determina quale identificatore usare per preventivare e per creare la prenotazione (ModelId/Car.Model vs. CategoryId/Category). GET /api/search lo risolve internamente.


Passo 2 — Preventivare l'opzione scelta

GET /api/booking/price ricalcola il prezzo totale di una configurazione concreta (modello + date + luoghi). Restituisce un oggetto Booking con i prezzi dettagliati, franchigie e promozioni disponibili. Prendi da qui il Price per inviarlo (facoltativo) nel passo di creazione.

Campi chiave (per query string):

CampoTipoObbligatorioDescrizione
ModelIdintModello da preventivare (da un risultato di GET /api/search).
From / Todate-timeStesse date usate nella ricerca.
FromPlace / ToPlaceintSì / NoLuoghi di consegna e restituzione.
AdditionalsarrayNoExtra da includere nel calcolo (ID + quantità).
PromotionintNoID della promozione da applicare.
CurrencyCodestringNoValuta del calcolo.
DriverAgeintNoEtà del conducente.
curl -G "https://{tenant}.rently.com.ar/api/booking/price?language=es-AR" \
-H "Authorization: Bearer {token}" \
--data-urlencode "ModelId=1" \
--data-urlencode "From=2026-07-01T10:00:00" \
--data-urlencode "To=2026-07-05T10:00:00" \
--data-urlencode "FromPlace=1" \
--data-urlencode "ToPlace=1" \
--data-urlencode "CurrencyCode=USD" \
--data-urlencode "DriverAge=30"

Passo 3 — Scegliere gli extra

Prima di creare la prenotazione, consulta quali extra si possono aggiungere a quella configurazione (assicurazione, GPS, seggiolino per bambini, conducente aggiuntivo, ecc.) con il prezzo già calcolato per le date scelte. GET /api/booking/additionals-price restituisce la lista (List<AdditionalPriceItem>).

Campi chiave (per query string):

CampoTipoObbligatorioDescrizione
FromDate / ToDatedate-timeStesse date della prenotazione.
ModelIdintNo*Modello scelto (se la disponibilità è per modello).
CategoryIdintNo*Categoria scelta (se è per categoria).
DeliveryPlaceId / ReturnPlaceIdintNoLuoghi di consegna e restituzione.
CurrencyCodestringNoValuta del calcolo.
PromotionintNoPromozione applicata.
*Indica ModelId o CategoryId a seconda di come lavora il tenant.
curl -G "https://{tenant}.rently.com.ar/api/booking/additionals-price?language=es-AR" \
-H "Authorization: Bearer {token}" \
--data-urlencode "ModelId=1" \
--data-urlencode "FromDate=2026-07-01T10:00:00" \
--data-urlencode "ToDate=2026-07-05T10:00:00" \
--data-urlencode "DeliveryPlaceId=1" \
--data-urlencode "ReturnPlaceId=1" \
--data-urlencode "CurrencyCode=USD"

Ogni elemento della risposta descrive un extra disponibile:

[
{
"Id": 1,
"Name": "Seguro full",
"Description": "Cobertura todo riesgo con franquicia reducida",
"Price": 80.0,
"DailyPrice": 20.0,
"IsPriceByDay": true,
"MaxQuantityPerBooking": 1,
"AvailableStock": 999,
"IsRequired": false,
"Currency": "USD"
}
]
CampoDescrizione
IdIdentificatore dell'extra. È quello che si invia al momento di creare la prenotazione.
Name / DescriptionNome e dettaglio da mostrare.
Price / DailyPrice / IsPriceByDayPrezzo totale e giornaliero; IsPriceByDay indica quale si applica.
MaxQuantityPerBookingQuantità massima che si può aggiungere di quell'extra.
AvailableStockStock disponibile per quelle date.
IsRequiredSe è true, l'extra è obbligatorio e deve essere incluso necessariamente nella prenotazione.
Come aggiungerli alla prenotazione

Nel corpo del POST /api/booking/book (passo 4), passa gli extra scelti nell'array Additionals. Ogni item fa riferimento all'Id dell'extra e alla quantità:

"Additionals": [
{ "Additional": { "Id": 1 }, "Quantity": 1 },
{ "Additional": { "Id": 5 }, "Quantity": 2 }
]

Regole: la Quantity non può superare MaxQuantityPerBooking, e gli extra con IsRequired=true devono essere inclusi. Affinché il Price totale coincida nella validazione (vedi passo 4), includi gli stessi extra anche nel preventivo (passo 2).


Passo 4 — Creare la prenotazione

POST /api/booking/book crea la prenotazione. Il corpo è un SaveBookingModel (i dati della prenotazione più alcuni flag). Restituisce BookingCreationResponse con BookingId e CustomerId, oppure l'oggetto Booking completo se invii FullResponse=true. Con IsQuotation=false la prenotazione resta in stato Reserved.

Campi chiave del corpo:

CampoObbligatorioDescrizione
FromDate / ToDateIntervallo del noleggio.
CustomerDati del cliente (Name o Firstname/Lastname, DocumentId, DocumentTypeId, Age, EmailAddress).
DeliveryPlace.IdLuogo di consegna.
ReturnPlace.IdNoLuogo di restituzione (per impostazione predefinita, quello di consegna).
Car.Model o CategorySì (uno)Car.Model (Id o SIPP) se la disponibilità è per modello; Category (Id o Name) se è per categoria.
CurrencyValuta ISO (es. USD).
AdditionalsNoExtra scelti nel passo 3 (Additional.Id + Quantity).
PriceNoPrezzo atteso; viene validato rispetto a quello calcolato con l'1% di tolleranza.
IsQuotationNotrue crea un preventivo in stato Quoted.
PromotionCodeNoCodice di promozione.
FullResponseNotrue restituisce il Booking completo invece dei soli ID.
curl -X POST "https://{tenant}.rently.com.ar/api/booking/book?language=es-AR" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"FullResponse": true,
"IsQuotation": false,
"Customer": {
"Name": "John Doe",
"DocumentId": "12345678",
"DocumentTypeId": 2,
"EmailAddress": "john.doe@example.com",
"Age": 30
},
"FromDate": "2026-07-01T10:00:00",
"ToDate": "2026-07-05T10:00:00",
"DeliveryPlace": { "Id": 1 },
"ReturnPlace": { "Id": 1 },
"Car": { "Model": { "Id": 1 } },
"Currency": "USD",
"Additionals": [
{ "Additional": { "Id": 1 }, "Quantity": 1 }
]
}'
Validazione del prezzo

Se invii Price e differisce di più dell'1% dal prezzo calcolato dal tariffario, l'operazione fallisce con PriceMismatch (ErrorCode 4). Preventiva con gli stessi extra (passo 2) e usa quel prezzo, oppure non inviare Price e lascia che l'API lo calcoli.

Disponibilità per categoria

Se il tenant lavora per categoria, sostituisci il blocco Car con "Category": { "Id": 1 } (o "Category": { "Name": "..." }).


Passo 5 — Pagare

POST /api/booking/pay registra e riconcilia il pagamento secondo il gateway. Poiché la prenotazione è Reserved, al pagamento passa a Confirmed. Il corpo è un PayBookingModel.

Campi chiave del corpo:

CampoObbligatorioDescrizione
BookingIdID della prenotazione (dal passo 4).
GatewayIdCodice del gateway (es. STRIPE, ML, PL, TBANKCL, VOUCHER, BANKTRANSFER, CREDITCARD).
AmountImporto da pagare (> 0).
CurrencyCodeNoValuta ISO.
TransactionIdNoID della transazione nel gateway.
BillingInformationNoDati di fatturazione (secondo il gateway).
curl -X POST "https://{tenant}.rently.com.ar/api/booking/pay?language=es-AR" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"BookingId": 12345,
"GatewayId": "STRIPE",
"Amount": 199.99,
"CurrencyCode": "USD",
"TransactionId": "TXN123",
"BillingInformation": {
"FirstName": "John",
"LastName": "Doe",
"DocumentTypeId": 1,
"DocumentId": "123456789",
"EmailAddress": "john.doe@example.com"
}
}'

Consultare la prenotazione

In qualsiasi momento puoi consultare lo stato, il saldo e i prezzi della prenotazione con GET /api/booking/{bookingId}.

curl -G "https://{tenant}.rently.com.ar/api/booking/12345?language=es-AR" \
-H "Authorization: Bearer {token}"

Per elencare i pagamenti registrati di una prenotazione, usa GET /api/bookingPayments/{bookingId}.

Prossimi passi

  • API Reference → — tutti gli endpoint con i loro schema, esempi e il pulsante Try it.
  • Una volta confermata la prenotazione, proseguono i flussi operativi: self-check-in (PUT /api/selfcheckin), consegna e restituzione, e incidenti e infrazioni.