Zum Hauptinhalt springen

Buchung von Anfang bis Ende

Dieser Leitfaden durchläuft den vollständigen Ablauf zur Integration einer Buchung mit der Rently API: Verfügbarkeit suchen → Preis berechnen → Zusatzleistungen wählen → erstellen → bezahlen. Jeder Schritt nennt den echten Endpunkt (Methode + Pfad), die Schlüsselfelder und ein anpassbares curl-Beispiel.

Bevor Sie beginnen

Es ist ratsam, den Kontext geladen zu haben (Sprachen, Währungen, Orte und Öffnungszeiten), um zu wissen, welche Buchungen erstellt werden können. Siehe Den Kontext vorbereiten.

Alle Endpunkte erfordern ein Bearer-Token (OAuth2): Senden Sie den Header Authorization: Bearer {token} bei jeder Anfrage. Die Details jeder Operation finden Sie in der API Reference →.

Sequenzdiagramm

Client Rently API
│ │
│ 1. GET /api/search ─────────────────────► │ sucht Verfügbarkeit + Preis
│ ◄──────────── List<Availability> ──────────┤
│ │
│ 2. GET /api/booking/price ──────────────► │ kalkuliert die gewählte Option
│ ◄──────────────── Booking ─────────────────┤
│ │
│ 3. GET /api/booking/additionals-price ──► │ verfügbare Zusatzleistungen + Preis
│ ◄──────────── List<AdditionalPriceItem> ───┤
│ │
│ 4. POST /api/booking/book ──────────────► │ erstellt die Buchung (mit Zusatzleistungen)
│ ◄────────── BookingId / Booking ───────────┤ → Reserved
│ │
│ 5. POST /api/booking/pay ───────────────► │ erfasst die Zahlung
│ ◄──────────────── Booking ─────────────────┤ Reserved → Confirmed
│ │

Zusammenfassung des Ablaufs:

  1. Verfügbarkeit suchenGET /api/search
  2. Preis berechnenGET /api/booking/price
  3. Zusatzleistungen wählenGET /api/booking/additionals-price
  4. Die Buchung erstellenPOST /api/booking/book
  5. BezahlenPOST /api/booking/pay
Buchungszustände

Erstellen Sie mit IsQuotation=false (der Regelfall), bleibt die Buchung im Zustand Reserved und geht beim Bezahlen nach Confirmed über. Sie können auch ein Angebot erstellen (IsQuotation=true, Zustand Quoted), wenn Sie nur einen Kostenvoranschlag persistieren möchten; sehen Sie in diesem Fall die API Reference für die Schritte zur Umwandlung ein.


Schritt 1 — Verfügbarkeit suchen

GET /api/search sucht verfügbare Fahrzeuge für einen Datumsbereich sowie Übergabe- und Rückgabeorte und liefert jede Option mit ihrem bereits berechneten Preis pro Modell (List<Availability>). Es funktioniert auch als anfängliche Preisberechnung.

Schlüsselfelder (gehen per Query-String):

FeldTypPflichtBeschreibung
Fromdate-timeJaDatum und Uhrzeit der Abholung.
Todate-timeJaDatum und Uhrzeit der Rückgabe.
FromPlaceintJaID des Übergabeorts (aus GET /api/places).
ToPlaceintNeinID des Rückgabeorts. Wird er weggelassen, wird FromPlace verwendet.
CurrencyCodestringNeinWährung der Berechnung (aus GET /api/currencies).
CommercialAgreementCodestringNeinCode der Geschäftsvereinbarung.
PromotionCodestringNeinAnzuwendender Promotionscode.
DriverAgeintNeinAlter des Fahrers (wird gegen die Grenzwerte des Mandanten validiert).
IlimitedKmboolNeinWird es weggelassen, werden zwei Varianten pro Modell zurückgegeben (mit und ohne unbegrenzte km).
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"
Verfügbarkeit nach Modell oder nach Kategorie

Je nach Konfiguration des Mandanten kann die Verfügbarkeit nach Modell oder nach Kategorie erfolgen. Das bestimmt, welche Kennung beim Kalkulieren und beim Erstellen der Buchung zu verwenden ist (ModelId/Car.Model vs. CategoryId/Category). GET /api/search löst dies intern auf.


Schritt 2 — Die gewählte Option kalkulieren

GET /api/booking/price berechnet den Gesamtpreis einer konkreten Konfiguration neu (Modell + Daten + Orte). Es liefert ein Objekt Booking mit den aufgeschlüsselten Preisen, Selbstbeteiligungen und verfügbaren Promotionen. Übernehmen Sie von hier den Price, um ihn (optional) im Schritt zur Erstellung zu senden.

Schlüsselfelder (per Query-String):

FeldTypPflichtBeschreibung
ModelIdintJaZu kalkulierendes Modell (aus einem Ergebnis von GET /api/search).
From / Todate-timeJaDieselben Daten wie bei der Suche.
FromPlace / ToPlaceintJa / NeinÜbergabe- und Rückgabeorte.
AdditionalsarrayNeinIn die Berechnung einzubeziehende Zusatzleistungen (ID + Menge).
PromotionintNeinID der anzuwendenden Promotion.
CurrencyCodestringNeinWährung der Berechnung.
DriverAgeintNeinAlter des Fahrers.
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"

Schritt 3 — Zusatzleistungen wählen

Bevor Sie die Buchung erstellen, fragen Sie ab, welche Zusatzleistungen zu dieser Konfiguration hinzugefügt werden können (Versicherung, GPS, Kindersitz, Zusatzfahrer usw.) mit ihrem bereits für die gewählten Daten berechneten Preis. GET /api/booking/additionals-price liefert die Liste (List<AdditionalPriceItem>).

Schlüsselfelder (per Query-String):

FeldTypPflichtBeschreibung
FromDate / ToDatedate-timeJaDieselben Daten der Buchung.
ModelIdintNein*Gewähltes Modell (wenn die Verfügbarkeit nach Modell erfolgt).
CategoryIdintNein*Gewählte Kategorie (wenn nach Kategorie).
DeliveryPlaceId / ReturnPlaceIdintNeinÜbergabe- und Rückgabeorte.
CurrencyCodestringNeinWährung der Berechnung.
PromotionintNeinAngewandte Promotion.
*Geben Sie ModelId oder CategoryId an, je nachdem, wie der Mandant arbeitet.
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"

Jedes Element der Antwort beschreibt eine verfügbare Zusatzleistung:

[
{
"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"
}
]
FeldBeschreibung
IdKennung der Zusatzleistung. Sie wird beim Erstellen der Buchung gesendet.
Name / DescriptionName und Detail zur Anzeige.
Price / DailyPrice / IsPriceByDayGesamtpreis und Preis pro Tag; IsPriceByDay gibt an, welcher gilt.
MaxQuantityPerBookingMaximale Menge, die von dieser Zusatzleistung hinzugefügt werden kann.
AvailableStockFür diese Daten verfügbarer Bestand.
IsRequiredIst es true, ist die Zusatzleistung verpflichtend und muss zwingend in der Buchung enthalten sein.
Wie man sie zur Buchung hinzufügt

Übergeben Sie im Body des POST /api/booking/book (Schritt 4) die gewählten Zusatzleistungen im Array Additionals. Jedes Element verweist auf die Id der Zusatzleistung und die Menge:

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

Regeln: Die Quantity darf MaxQuantityPerBooking nicht überschreiten, und Zusatzleistungen mit IsRequired=true müssen einbezogen werden. Damit der Gesamt-Price bei der Validierung übereinstimmt (siehe Schritt 4), beziehen Sie dieselben Zusatzleistungen auch beim Kalkulieren ein (Schritt 2).


Schritt 4 — Die Buchung erstellen

POST /api/booking/book erstellt die Buchung. Der Body ist ein SaveBookingModel (die Daten der Buchung plus einige Flags). Es liefert BookingCreationResponse mit BookingId und CustomerId oder das vollständige Objekt Booking, wenn Sie FullResponse=true senden. Mit IsQuotation=false bleibt die Buchung im Zustand Reserved.

Schlüsselfelder des Body:

FeldPflichtBeschreibung
FromDate / ToDateJaZeitraum der Vermietung.
CustomerJaKundendaten (Name oder Firstname/Lastname, DocumentId, DocumentTypeId, Age, EmailAddress).
DeliveryPlace.IdJaÜbergabeort.
ReturnPlace.IdNeinRückgabeort (standardmäßig der Übergabeort).
Car.Model oder CategoryJa (eines)Car.Model (Id oder SIPP), wenn die Verfügbarkeit nach Modell erfolgt; Category (Id oder Name), wenn nach Kategorie.
CurrencyJaISO-Währung (z. B. USD).
AdditionalsNeinIn Schritt 3 gewählte Zusatzleistungen (Additional.Id + Quantity).
PriceNeinErwarteter Preis; wird mit 1 % Toleranz gegen den berechneten validiert.
IsQuotationNeintrue erstellt ein Angebot im Zustand Quoted.
PromotionCodeNeinPromotionscode.
FullResponseNeintrue liefert das vollständige Booking statt nur der IDs.
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 }
]
}'
Preisvalidierung

Senden Sie Price und weicht er um mehr als 1 % vom durch den Tarif berechneten Preis ab, schlägt die Operation mit PriceMismatch (ErrorCode 4) fehl. Kalkulieren Sie mit den gleichen Zusatzleistungen (Schritt 2) und verwenden Sie diesen Preis, oder senden Sie kein Price und lassen die API ihn berechnen.

Verfügbarkeit nach Kategorie

Arbeitet der Mandant nach Kategorie, ersetzen Sie den Block Car durch "Category": { "Id": 1 } (oder "Category": { "Name": "..." }).


Schritt 5 — Bezahlen

POST /api/booking/pay erfasst und stimmt die Zahlung je nach Gateway ab. Da die Buchung Reserved ist, geht sie beim Bezahlen nach Confirmed über. Der Body ist ein PayBookingModel.

Schlüsselfelder des Body:

FeldPflichtBeschreibung
BookingIdJaID der Buchung (aus Schritt 4).
GatewayIdJaCode des Gateways (z. B. STRIPE, ML, PL, TBANKCL, VOUCHER, BANKTRANSFER, CREDITCARD).
AmountJaZu zahlender Betrag (> 0).
CurrencyCodeNeinISO-Währung.
TransactionIdNeinID der Transaktion im Gateway.
BillingInformationNeinRechnungsdaten (je nach 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"
}
}'

Die Buchung abfragen

Sie können jederzeit den Status, den Saldo und die Preise der Buchung mit GET /api/booking/{bookingId} abfragen.

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

Um die erfassten Zahlungen einer Buchung aufzulisten, verwenden Sie GET /api/bookingPayments/{bookingId}.

Nächste Schritte

  • API Reference → — alle Endpunkte mit ihren Schemas, Beispielen und der Schaltfläche Try it.
  • Sobald die Buchung bestätigt ist, folgen die operativen Abläufe: Self-Check-in (PUT /api/selfcheckin), Übergabe und Rückgabe sowie Vorfälle und Verstöße.