{"openapi":"3.1.0","info":{"title":"Kaizen Auto Rentals Public Booking API","version":"1.2.0","description":"Read public information, quote dates and prepare a customer-authorized temporary reservation with a private payment handoff. No card charging or staff access. Read https://www.kaizenautorentals.com/agents first."},"servers":[{"url":"https://www.kaizenboss.com"}],"paths":{"/api/public/rentals":{"get":{"operationId":"getKaizenRentalInformation","summary":"Read business details, locations, class rates, policies and fleet illustrations","responses":{"200":{"description":"Public rental information. Class rates do not guarantee availability.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/public/profile":{"get":{"operationId":"getKaizenBusinessProfile","summary":"Read public business contacts and social links","responses":{"200":{"description":"Public profile","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/public/vehicle-availability":{"get":{"operationId":"getKaizenVehicleAvailabilityNow","summary":"Availability now only. Use booking quote for future dates.","parameters":[{"in":"query","name":"vehicle","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Public availability; no plates, private booking records or staff notes.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/public/agent-booking":{"get":{"operationId":"getKaizenBookingOptions","summary":"Read current classes, locations, currencies, eligibility, booking policy and enabled state","responses":{"200":{"description":"Booking options. Rates are integer minor units. Check enabled before preparing.","content":{"application/json":{"schema":{"type":"object"}}}}}},"post":{"operationId":"kaizenAgentBooking","summary":"Quote, prepare an authorized temporary hold, or check limited status. Never charges a card.","description":"Send application/json without cookies or Authorization. Server agents omit Origin; browser origins are restricted. Prepare requires customer authorization for the exact quote and policy version 1, driver details and a reusable secret token generated from 32 random bytes. Share the private handoffUrl only with the customer, who reviews and pays on Kaizen. All Cents amounts are integer minor units in the stated currency. No discount-code bookings in this API.","requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"action":{"const":"quote"},"start":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$","description":"Local Jamaica pickup time, e.g. 2027-01-10T10:00. At least 2 hours ahead."},"end":{"type":"string","description":"Local Jamaica return time. Rental is 3–90 days."},"vehicleClass":{"type":"string","description":"Exact class name from GET /api/public/agent-booking."},"vehicleSlug":{"type":"string","description":"Optional fleet illustration slug; a specific model is not guaranteed."},"pickup":{"type":"string"},"dropoff":{"type":"string"},"currency":{"type":"string","enum":["JMD","USD"],"default":"JMD"},"payInFull":{"type":"boolean","default":false}},"required":["action","start","end","vehicleClass","pickup","dropoff"],"additionalProperties":false},{"type":"object","properties":{"action":{"const":"prepare"},"start":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$","description":"Local Jamaica pickup time, e.g. 2027-01-10T10:00. At least 2 hours ahead."},"end":{"type":"string","description":"Local Jamaica return time. Rental is 3–90 days."},"vehicleClass":{"type":"string","description":"Exact class name from GET /api/public/agent-booking."},"vehicleSlug":{"type":"string","description":"Optional fleet illustration slug; a specific model is not guaranteed."},"pickup":{"type":"string"},"dropoff":{"type":"string"},"currency":{"type":"string","enum":["JMD","USD"],"default":"JMD"},"payInFull":{"type":"boolean","default":false},"token":{"type":"string","pattern":"^[a-f0-9]{64}$","description":"Generate with a cryptographically secure random source; reuse on retries, never in logs."},"name":{"type":"string","maxLength":120},"email":{"type":"string","format":"email","maxLength":200},"phone":{"type":"string","maxLength":40},"birthDate":{"type":"string","format":"date"},"licenceIssued":{"type":"string","format":"date","description":"Original issue date, not renewal."},"licenceExpiry":{"type":"string","format":"date"},"notes":{"type":"string","maxLength":1000,"description":"Delivery address required for Home / Office Delivery. Never include card numbers or identity scans."},"chauffeurRequested":{"type":"boolean"},"quotedTotalCents":{"type":"integer","minimum":1,"description":"Exact accepted quote total in integer minor units."},"quotedJmdPerUsd":{"type":"number","description":"Use jmdPerUsd returned by the quote for USD bookings."},"customerAuthorized":{"type":"boolean","const":true,"description":"Customer explicitly authorized the trip, price and payment choice."},"consent":{"type":"boolean","const":true,"description":"Customer accepted the returned booking policy."},"policyVersion":{"type":"integer","const":1}},"required":["action","start","end","vehicleClass","pickup","dropoff","token","name","email","phone","birthDate","licenceIssued","licenceExpiry","quotedTotalCents","customerAuthorized","consent","policyVersion"],"additionalProperties":false},{"type":"object","properties":{"action":{"const":"status"},"token":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["action","token"],"additionalProperties":false}]}}}},"responses":{"200":{"description":"Quote returns available, trip, currency, jmdPerUsd, itemized amounts, totalCents, payNowCents, securityDepositCents and quoteValidUntil; it creates no hold. Prepare/status returns reference, status, paymentVerified, canPay, quoteChanged, holdExpiresAt, currency, amounts and private handoffUrl; no personal details. Only paymentVerified true confirms payment.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid details or customer authorization missing","content":{"application/json":{"schema":{"type":"object"}}}},"403":{"description":"Unapproved browser origin","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Booking unavailable","content":{"application/json":{"schema":{"type":"object"}}}},"409":{"description":"Changed or unavailable booking","content":{"application/json":{"schema":{"type":"object"}}}},"413":{"description":"Request too large","content":{"application/json":{"schema":{"type":"object"}}}},"415":{"description":"Send application/json","content":{"application/json":{"schema":{"type":"object"}}}},"429":{"description":"Rate limit; stop retries","content":{"application/json":{"schema":{"type":"object"}}}},"503":{"description":"Online booking unavailable","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/public/agent-booking/quote":{"post":{"operationId":"quoteKaizenRental","summary":"Check date availability and exact price. No inventory hold or charge.","description":"Send application/json without cookies or Authorization. Server agents omit Origin; browser origins are restricted. Prepare requires customer authorization for the exact quote and policy version 1, driver details and a reusable secret token generated from 32 random bytes. Share the private handoffUrl only with the customer, who reviews and pays on Kaizen. All Cents amounts are integer minor units in the stated currency. No discount-code bookings in this API.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$","description":"Local Jamaica pickup time, e.g. 2027-01-10T10:00. At least 2 hours ahead."},"end":{"type":"string","description":"Local Jamaica return time. Rental is 3–90 days."},"vehicleClass":{"type":"string","description":"Exact class name from GET /api/public/agent-booking."},"vehicleSlug":{"type":"string","description":"Optional fleet illustration slug; a specific model is not guaranteed."},"pickup":{"type":"string"},"dropoff":{"type":"string"},"currency":{"type":"string","enum":["JMD","USD"],"default":"JMD"},"payInFull":{"type":"boolean","default":false}},"required":["start","end","vehicleClass","pickup","dropoff"],"additionalProperties":false}}}},"responses":{"200":{"description":"Quote returns available, trip, currency, jmdPerUsd, itemized amounts, totalCents, payNowCents, securityDepositCents and quoteValidUntil; it creates no hold. Prepare/status returns reference, status, paymentVerified, canPay, quoteChanged, holdExpiresAt, currency, amounts and private handoffUrl; no personal details. Only paymentVerified true confirms payment.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid details or customer authorization missing","content":{"application/json":{"schema":{"type":"object"}}}},"403":{"description":"Unapproved browser origin","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Booking unavailable","content":{"application/json":{"schema":{"type":"object"}}}},"409":{"description":"Changed or unavailable booking","content":{"application/json":{"schema":{"type":"object"}}}},"413":{"description":"Request too large","content":{"application/json":{"schema":{"type":"object"}}}},"415":{"description":"Send application/json","content":{"application/json":{"schema":{"type":"object"}}}},"429":{"description":"Rate limit; stop retries","content":{"application/json":{"schema":{"type":"object"}}}},"503":{"description":"Online booking unavailable","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/public/agent-booking/prepare":{"post":{"operationId":"prepareKaizenBooking","summary":"Prepare one customer-authorized temporary hold and private payment handoff. Never charges.","description":"Send application/json without cookies or Authorization. Server agents omit Origin; browser origins are restricted. Prepare requires customer authorization for the exact quote and policy version 1, driver details and a reusable secret token generated from 32 random bytes. Share the private handoffUrl only with the customer, who reviews and pays on Kaizen. All Cents amounts are integer minor units in the stated currency. No discount-code bookings in this API.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$","description":"Local Jamaica pickup time, e.g. 2027-01-10T10:00. At least 2 hours ahead."},"end":{"type":"string","description":"Local Jamaica return time. Rental is 3–90 days."},"vehicleClass":{"type":"string","description":"Exact class name from GET /api/public/agent-booking."},"vehicleSlug":{"type":"string","description":"Optional fleet illustration slug; a specific model is not guaranteed."},"pickup":{"type":"string"},"dropoff":{"type":"string"},"currency":{"type":"string","enum":["JMD","USD"],"default":"JMD"},"payInFull":{"type":"boolean","default":false},"token":{"type":"string","pattern":"^[a-f0-9]{64}$","description":"Generate with a cryptographically secure random source; reuse on retries, never in logs."},"name":{"type":"string","maxLength":120},"email":{"type":"string","format":"email","maxLength":200},"phone":{"type":"string","maxLength":40},"birthDate":{"type":"string","format":"date"},"licenceIssued":{"type":"string","format":"date","description":"Original issue date, not renewal."},"licenceExpiry":{"type":"string","format":"date"},"notes":{"type":"string","maxLength":1000,"description":"Delivery address required for Home / Office Delivery. Never include card numbers or identity scans."},"chauffeurRequested":{"type":"boolean"},"quotedTotalCents":{"type":"integer","minimum":1,"description":"Exact accepted quote total in integer minor units."},"quotedJmdPerUsd":{"type":"number","description":"Use jmdPerUsd returned by the quote for USD bookings."},"customerAuthorized":{"type":"boolean","const":true,"description":"Customer explicitly authorized the trip, price and payment choice."},"consent":{"type":"boolean","const":true,"description":"Customer accepted the returned booking policy."},"policyVersion":{"type":"integer","const":1}},"required":["start","end","vehicleClass","pickup","dropoff","token","name","email","phone","birthDate","licenceIssued","licenceExpiry","quotedTotalCents","customerAuthorized","consent","policyVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Quote returns available, trip, currency, jmdPerUsd, itemized amounts, totalCents, payNowCents, securityDepositCents and quoteValidUntil; it creates no hold. Prepare/status returns reference, status, paymentVerified, canPay, quoteChanged, holdExpiresAt, currency, amounts and private handoffUrl; no personal details. Only paymentVerified true confirms payment.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid details or customer authorization missing","content":{"application/json":{"schema":{"type":"object"}}}},"403":{"description":"Unapproved browser origin","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Booking unavailable","content":{"application/json":{"schema":{"type":"object"}}}},"409":{"description":"Changed or unavailable booking","content":{"application/json":{"schema":{"type":"object"}}}},"413":{"description":"Request too large","content":{"application/json":{"schema":{"type":"object"}}}},"415":{"description":"Send application/json","content":{"application/json":{"schema":{"type":"object"}}}},"429":{"description":"Rate limit; stop retries","content":{"application/json":{"schema":{"type":"object"}}}},"503":{"description":"Online booking unavailable","content":{"application/json":{"schema":{"type":"object"}}}}},"x-openai-isConsequential":true}},"/api/public/agent-booking/status":{"post":{"operationId":"checkKaizenBookingStatus","summary":"Read limited private booking status. Only paymentVerified true confirms payment.","description":"Send application/json without cookies or Authorization. Server agents omit Origin; browser origins are restricted. Prepare requires customer authorization for the exact quote and policy version 1, driver details and a reusable secret token generated from 32 random bytes. Share the private handoffUrl only with the customer, who reviews and pays on Kaizen. All Cents amounts are integer minor units in the stated currency. No discount-code bookings in this API.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["token"],"additionalProperties":false}}}},"responses":{"200":{"description":"Quote returns available, trip, currency, jmdPerUsd, itemized amounts, totalCents, payNowCents, securityDepositCents and quoteValidUntil; it creates no hold. Prepare/status returns reference, status, paymentVerified, canPay, quoteChanged, holdExpiresAt, currency, amounts and private handoffUrl; no personal details. Only paymentVerified true confirms payment.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid details or customer authorization missing","content":{"application/json":{"schema":{"type":"object"}}}},"403":{"description":"Unapproved browser origin","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Booking unavailable","content":{"application/json":{"schema":{"type":"object"}}}},"409":{"description":"Changed or unavailable booking","content":{"application/json":{"schema":{"type":"object"}}}},"413":{"description":"Request too large","content":{"application/json":{"schema":{"type":"object"}}}},"415":{"description":"Send application/json","content":{"application/json":{"schema":{"type":"object"}}}},"429":{"description":"Rate limit; stop retries","content":{"application/json":{"schema":{"type":"object"}}}},"503":{"description":"Online booking unavailable","content":{"application/json":{"schema":{"type":"object"}}}}}}}}}