Schemas
Rental
slugnamecurrencycountrytimezonelocalepricesIncludeTaxminStayDaysminPaidDaysemailphoneCarType
idcodeslugThe car type's name for the rental's own site addresses, such as land-cruiser-150. Unique in the rental. Made from the name, kept when the name changes.
acrissnamedescriptionSimple Markdown: paragraphs, - lists, bold, italic and links. Show only those marks, and any other as text.
makemodelimagesimageTagsThe tag of each image, in the same order as images: exterior, interior, floor_plan, or null for none.
The images again, in the same order, each with its address at every width.
seatsdoorslargeBagssmallBagstransmissiondrivefuelminDriverAgeminRentalHoursmaxRentalDaysincludedKmPerDayextraKmMinorturnaroundHourskindA car, or a camper that people sleep in.
sleepsHow many the camper sleeps. Always null for a car.
guaranteedModelTrue when the customer gets the make and model named. False means "or similar".
The features the rental set for the car type, on or off, from Mellow's one list. A feature that is not set is left out. A car never has a camper feature.
fRoadsTrue when the car type may drive on F-roads. Only a rental in Iceland sends it.
yearFromThe oldest model year of the car type's cars, as the rental states it: 2018 means "2018 or newer". It describes the car type and promises nothing. Left out when the rental has not stated it.
Picture
urlThe picture as it was stored.
The picture at each width in pixels: 128, 256, 320, 480, 640, 800, 960, 1280, 1600 and 1920. AVIF or WebP when the browser takes it. Never larger than the stored picture.
CarTypeFeature
codeThe feature's code in Mellow's list. It never changes.
groupThe code of the feature's group.
nameThe feature's name, in English or Icelandic.
onTrue when the car type has it, false when it has not.
countHow many, for a feature that counts, such as camping chairs. Only when on and given.
widthCmThe width in cm, for a feature with a size, such as a bed. Only when on and given.
lengthCmThe length in cm, for a feature with a size. Only when on and given.
Location
idnamekindpickupreturnaddressrequiresDetaildetailPromptpickupInstructionsHow the customer finds the car at the location, in the asked locale when the rental has it.
Product
idcodeotaCodekindnamedescriptionimageThe address of its picture, to show beside the name. Null when it has none.
The same picture, with its address at every width. Null when it has none.
chargeModelpriceMinorcapDaysmaxQuantityextraDriversincludedByDefaultdeclinablelevelageUnderOn a level: a main driver younger than this needs this level or a higher one. A quote below it names the problem level_too_low, and a booking below it is refused. Null on every other product and on a level for any age.
includesexclusionsWhat a cover or a package does not cover, one line each, such as off-road driving. In the asked locale when the rental translated them, else in English. Empty when there are none.
The insurer, when the cover is sold as an insurer's policy. Null for the rental's own cover and for every other product.
The extra group it sits in: a heading to show it under, such as Winter driving. code names the group and is unique in the rental. name is in the asked locale when the rental translated it. The products of one group come one after another, the groups in the rental's order, and the products with no group last. Null on a product with no group, on every insurance and on a package with a level.
Fee
idcodeotaCodekindbooking goes on every booking. location goes on a booking that picks up at pickupLocationId and returns at returnLocationId, where a null place is any place. young_driver goes on a booking whose driverAge is under ageUnder. Of two, only the one with the lowest age goes on. outside_hours goes on a booking whose pickup or return, by side, falls from windowFrom up to windowTo, or with no window outside the place's opening hours or on a closure day. Its place is pickupLocationId or returnLocationId on its side, where null is any place. It is charged once.
ageUnderA young driver fee: a driver younger than this pays it. Null on the others.
sideAn outside hours fee: the time it reads. Null on the others.
windowFromAn outside hours fee: the window's start, "HH:MM", local time at the rental. A windowTo before it crosses midnight. Null on the others, and on one that follows the opening hours.
windowToAn outside hours fee: the window's end, "HH:MM", not part of the window. Null with windowFrom.
namepickupLocationIdreturnLocationIdoneWayOnlychargeModelpriceMinorcapDaysonArrivalPaid on arrival, not with the booking. Show it beside the price, such as "Road tax: 1.500 kr a day, paid on arrival". For a pickup from a key box, the customer pays it with the rest.
Quote
currencydaysnetMinortaxMinortotalMinorpayOnArrivalMinorWhat is paid at pickup: the fees paid on arrival, such as a road tax, and the rest of a term that pays a share at booking. 0 for full payment at a key box pickup: no desk is there, so the fees are in payNowMinor.
payNowMinorWhat is paid at booking: the term's share of the total, never past the total less the fees paid on arrival. The amount to ask for.
refundableThe term this quote priced.
confirmationBpThe share of the term this quote priced, in basis points.
Every payment term the rental sells for this order, cheapest first, each priced. One term when the rental sells only full refundable payment. Show them as choices, and send the picked one's refundable and confirmationBp on the hold or the booking.
problemsWhy a booking of this order would be refused, or a coupon that did not apply. level_too_low: the driver's age needs a higher level than the order holds (see levelNeeded). The price still comes, so a page can show the level as not available.
What the customer pays at most for each peril after every cover on the quote, in minor units: the excess. Every peril is named. 0 is covered in full. Null is not covered: the customer pays the whole cost, up to the car's value. The booking made from the same order keeps the same.
depositMinorWhat the rental holds on the card at pickup for this quote, in minor units. A cover may set its own deposit, and the lowest among the covers on the quote holds. Otherwise the car type sets how: the collision excess (the car's value when collision is not covered), a fixed amount, or none (0).
handlingMinorWhat the customer pays for each damage on top of the excess, such as a workshop's evaluation, in minor units. The lowest among the covers on the quote. Null is none.
levelNeededThe lowest level the driver's age allows. Null when no level asks for an age, or no driverAge was sent.
The coupon whose discount is in this price. Null with no couponCode, and with a coupon that did not apply: problems then says why, and the price is the price with no coupon.
PaymentTerm
refundableconfirmationBpThe share of the total paid at booking, in basis points. 0 is pay on arrival.
titleThe term in the asked locale, such as Pay now · refundable.
summaryOne line on what the term allows, in the asked locale.
freeCancelUntilThe last minute of the free cancel on manage booking, in the rental's clock. Null when the term has none.
changesUntilWhen the customer's own changes close on manage booking, in the rental's clock. Null when manage booking is off.
totalMinorpayNowMinorpayOnArrivalMinordifferenceMinorThe total less the cheapest term's total. 0 on the first term, which is the cheapest.
discountMinorWhat the coupon took off this term's total, in minor units. 0 with no coupon, and with one that did not apply. totalMinor plus this is the price before the coupon.
Liability
collisiontheftglasstyresgravelsand_ashscratchesundercarriagewaterinteriorkeysotherQuoteRequest
carTypeIdpickupAt^\d{4}-\d{2}-\d{2}T\… · requiredreturnAt^\d{4}-\d{2}-\d{2}T\… · requiredpickupLocationIdreturnLocationIdcouponCodedriverAgeThe driver's age in years, from 16 to 120, when known. A young driver fee goes on only with it. Under the car type's minDriverAge, the request is refused with driver_too_young.
declinedThe ids of included covers the customer refuses, as the booking takes them. Only a product with includedByDefault and declinable true can be refused. It then comes off the price, and liability and depositMinor lose its cover. Any other id is refused with 422 invalid.
refundableThe payment term: false is non-refundable, which the rental must sell. Left out, refundable. A term the rental does not sell is refused with 422 term_not_sold. See terms on the quote.
confirmationBpThe share of the total paid at booking, in basis points: 10000 is full payment, 2000 is 20%, 0 is pay on arrival. Left out, the rental's own share. Under the rental's share is refused with 422 term_not_sold. Sent, the quote's terms hold this share beside full payment and the rental's share.
locale^[a-z]{2}$The language of each term's title and summary: en, is, de, fr, es or it. Left out, the rental's own language.
Offer
carTypeIdcarTypefreeCars of the type free over the whole span.
currencydaystotalMinorThe full price of the booking with the included Level and no extras, as a booking made with the same order costs.
payOnArrivalMinorThe fees paid on arrival, such as a road tax. 0 for a pickup from a key box: no desk is there, so the customer pays them online at check-in.
includedLevelIdminDriverAgeproblemsWhy a booking of the offer would be refused, such as a stay under the minimum or driver_too_young. Empty when it can be booked.
The fuel terms of the car type. Null when the rental charges nothing for fuel. Never part of the total.
QuoteAnswer
rentalcarTypeIdThe quote, when it could be priced.
Why there is no quote. not_found for a rental or car type.
QuoteForRental
carTypeIdpickupAt^\d{4}-\d{2}-\d{2}T\… · requiredreturnAt^\d{4}-\d{2}-\d{2}T\… · requiredpickupLocationIdreturnLocationIdrentalThe rental's slug.
couponCodedriverAgeThe driver's age in years, from 16 to 120, when known. A young driver fee goes on only with it. Under the car type's minDriverAge, the request is refused with driver_too_young.
declinedThe ids of included covers the customer refuses, as the booking takes them. Only a product with includedByDefault and declinable true can be refused. It then comes off the price, and liability and depositMinor lose its cover. Any other id is refused with 422 invalid.
refundableThe payment term: false is non-refundable, which the rental must sell. Left out, refundable. A term the rental does not sell is refused with 422 term_not_sold. See terms on the quote.
confirmationBpThe share of the total paid at booking, in basis points: 10000 is full payment, 2000 is 20%, 0 is pay on arrival. Left out, the rental's own share. Under the rental's share is refused with 422 term_not_sold. Sent, the quote's terms hold this share beside full payment and the rental's share.
locale^[a-z]{2}$The language of each term's title and summary: en, is, de, fr, es or it. Left out, the rental's own language.
Booking
idreferencecodestatuscarTypeIdcarTypechannelIdThe rental's custom fields on the booking, by key. Only the fields the rental sends through the API. A value nobody gave reads as the field's default, or null. Empty while the rental's plan has no booking and customer fields.
pickupAtpickupLocationIdreturnAtreturnLocationIdcurrencynetMinortaxMinortotalMinorpaidMinorbalanceMinorpayOnArrivalMinorThe fees paid on arrival, such as a road tax. They are in the balance. 0 for a pickup from a key box: no desk is there, so the fees are in payNowMinor.
payNowMinorWhat is due before arrival: the term's share of the total less what was paid, never past the balance less the fees paid on arrival. 0 once the share is paid: the rest is due at pickup. A sale with no amount asks for this.
refundableThe payment term. False is non-refundable: the customer may only ask to cancel, and what was paid stays.
confirmationBpThe share of the total paid at booking, in basis points. 10000 is full payment, 0 is pay on arrival.
oversoldplatesourceReferenceWhat the rental should know before it hands over a car: the same customer already has a car over these dates, an earlier booking ended owing money, a chargeback, a habit of cancelling. Each one is a fact from the rental's own records, and none of them stops anything. A key of one channel sees only what the bookings of that channel show. They are for the people who sell and hand over the car. Never show them to the customer.
createdAtmanageCodeThe code that opens the customer's manage booking page: https://mllw.is/m/{manageCode}, or /m/{manageCode} on the rental's own manage booking domain. It is not the booking code. Given on one booking, not on a list.
BookingRequest
carTypeIdpickupAt^\d{4}-\d{2}-\d{2}T\… · requiredreturnAt^\d{4}-\d{2}-\d{2}T\… · requiredpickupLocationIdreturnLocationIdcouponCodedriverAgeThe driver's age in years, from 16 to 120, when known. A young driver fee goes on only with it. Under the car type's minDriverAge, the request is refused with driver_too_young.
declinedThe ids of included covers the customer refuses, as the booking takes them. Only a product with includedByDefault and declinable true can be refused. It then comes off the price, and liability and depositMinor lose its cover. Any other id is refused with 422 invalid.
refundableThe payment term: false is non-refundable, which the rental must sell. Left out, refundable. A term the rental does not sell is refused with 422 term_not_sold. See terms on the quote.
confirmationBpThe share of the total paid at booking, in basis points: 10000 is full payment, 2000 is 20%, 0 is pay on arrival. Left out, the rental's own share. Under the rental's share is refused with 422 term_not_sold. Sent, the quote's terms hold this share beside full payment and the rental's share.
locale^[a-z]{2}$The language of each term's title and summary: en, is, de, fr, es or it. Left out, the rental's own language.
channelIdpickupDetailWhere exactly at the pickup location the customer meets the car, such as the hotel name or the street. Ask for it when the location has requiresDetail, with its detailPrompt as the question. The rental reads it on the booking. Left out, the booking has none.
returnDetailWhere exactly at the return location the customer leaves the car, as pickupDetail for the pickup.
passengersHow many people travel, the driver included.
The rental's custom fields on bookings, by key. Only a field the rental sends through the API is taken: any other key answers 422 invalid, and no booking is made. A value has the JSON type of its field: a string for text, a link, one choice or a date (2026-06-01), a number, true or false, or a list of choices. A required field with no default must come. A field left out starts as its default.
flightNumbernotessourceReferencelanguageThe language the customer booked in, such as en or is. The confirmation email and the documents come in it. A language the rental does not use is ignored, and the rental's own language is used.
mrefThe click id an affiliate link added to your page's address as ?mref=. A UUID of 36 characters. Pass it back as it came. An unknown or expired one is ignored and does not refuse the booking. Over 64 characters fails the field check with 422.
affiliateAn affiliate's code, when your site knows who referred the customer but has no mref. A code that is not in the rental's program is ignored.
BookingChange
carTypeIdpickupAt^\d{4}-\d{2}-\d{2}T\…returnAt^\d{4}-\d{2}-\d{2}T\…pickupLocationIdreturnLocationIdpickupDetailWhere exactly at the pickup location, such as the hotel name. See pickupDetail on BookingRequest. Null or an empty string takes it off. It changes no price.
returnDetailWhere exactly at the return location, as pickupDetail. Null or an empty string takes it off.
The custom fields that change, by key. See customFields on BookingRequest. A key left out keeps its value. Null takes a value off, but not from a required field. It changes no price. The customer's own fields do not change here.
reasonPaymentOut
paymentIdprocessormodeamountcurrencyurlSend the customer here, for a link.
What the processor's own browser code takes, for a form of your own.
expiresAtPaymentIn
kindTake the money, or hold it as a deposit.
modeA page of the processor's to send them to, or a form of your own.
amountMinor units. Left out, a sale asks for what is due now (payNowMinor), or for the balance when only the fees paid on arrival are left. A hold asks for the deposit.
returnUrlWhere the customer lands after paying. Only for a link.
methodIdWhich online method, when the rental has more than one.
localeAffiliate
idnamecompanyemailcodestatusgrouplinkThe affiliate's link, on mllw.is.
clicksbookingspendingEarned on bookings not yet approved.
balanceApproved and not yet paid.
currencycreatedAtAffiliateIn
nameemailphonecompanyregistrationNoKennitala, ten digits.
vatNoVAT number.
codeThe code in the link. Made from the name when left out.
Commission
bookingIdbookingReferenceaffiliateIdaffiliateNamecodemethodflagsWhat looks wrong. A flag stops automatic approval.
statusvoidReasonbaseWhat the commission is taken of.
commissioncurrencydueAtapprovedAtpayoutIdcreatedAtFindBooking
bookingWhat names the booking: its code, its number or the reseller's reference, as the rental allows.
checkWhat shows it is the customer's: last name, email or phone, as the rental allows.
ManageOpens
detailsextendshortenplacescarTypecoversextrasshutWhy prices cannot change: not reserved or checked in, a reseller's booking, or a price set by hand.
pastCutoffcarTypeFrozenThe planner's freeze window closed the car type.
earliestPickupThe earliest pickup a change may ask for.
ChangeQuote
totalMinordifferenceMinorcurrencybelowPaidThe new total is below what is paid. Such a change is not saved: the rental decides on a refund.
partsCustomerChange
pickupAtreturnAtpickupLocationIdreturnLocationIdcarTypeIdCovers and extras after the change. A product left out keeps its quantity. Zero takes it off.
CheckinContent
idkindtitlebodyurlThe picture or the video. Byte ranges are answered.
requiredCatalogProduct
idcodekindnamedescriptionlevelA Level: Basic 1, Premium 2, Platinum 3. Null is an extra or an add-on cover.
includesincludedByDefaultdeclinablemaxQuantityextraDriverscarTypeIdsThe extra group it sits in: a heading to show it under, such as Winter driving. code names the group and is unique in the rental. name is in the asked locale when the rental translated it. The products of one group come one after another, the groups in the rental's order, and the products with no group last. Null on a product with no group, on every insurance and on a package with a level.
Place
codenamerentalsThe slugs of the rentals that serve it.
Each serving rental's own location for the place, in the order of rentals.
PlaceLocation
rentalThe rental's slug.
idnameaddresspickupInstructionsHow the customer finds the car there, such as where the shuttle waits.
The opening hours, local time at the rental. Two spans on one weekday are a lunch close. Empty means open at every time of the day.
Days the location is shut, whatever its hours say, from today on.
ResellerHold
holdIdrentalexpiresAtcurrencytotalMinorResellerHoldRequest
rentalThe rental's slug, from an offer.
carTypeIdpickupAt^\d{4}-\d{2}-\d{2}T\… · requiredreturnAt^\d{4}-\d{2}-\d{2}T\… · requiredpickupPlaceThe code of one of your places, such as KEF. An own reseller sends the location's id, the code from /places.
returnPlaceThe place the car comes back to, as pickupPlace.
levelIdThe Level the customer picked. Left out, the rental's included Level.
driverAgeThe driver's age in years, from 16 to 120, when known. A young driver fee goes on only with it. Under the car type's minDriverAge, the request is refused with driver_too_young.
ResellerBooking
idrentalreferenceYour own booking number.
codeThe rental's code for the booking.
statuscarTypeIdcarTypepickupAtreturnAtpickupPlaceYour code for the place of the pickup location, from the rental's map of your places. Null when the rental maps none of your places to it. An own reseller gets the location's id.
returnPlaceYour code for the place of the return location, as pickupPlace.
flightNumbernotecurrencytotalMinorcommissionMinorYour commission on the booking as it stands now. A cancelled booking has none, and a no show keeps it.
prepaidMinorWhat the customer prepaid to you, less any part of it given back.
balanceMinorWhat the customer pays at the rental.
payOnArrivalMinorThe fees paid on arrival, such as a road tax. 0 for a pickup from a key box: no desk is there, so the customer pays them online at check-in.
updatedAtcreatedAtResellerBookingRequest
prepaidMinorWhat the customer paid you for the booking: the commission, the full price or any amount up to the total. The customer pays the rest at the rental.
referenceYour own booking number. Unique among your bookings.
rentalThe rental's slug, from an offer.
carTypeIdpickupAt^\d{4}-\d{2}-\d{2}T\…returnAt^\d{4}-\d{2}-\d{2}T\…pickupPlaceThe code of one of your places, such as KEF. An own reseller sends the location's id, the code from /places.
returnPlaceThe place the car comes back to, as pickupPlace.
levelIdThe Level the customer picked. Left out, the rental's included Level.
driverAgeThe driver's age in years, from 16 to 120, when known. A young driver fee goes on only with it. Under the car type's minDriverAge, the request is refused with driver_too_young.
holdIdA hold from POST /holds. With it, send no order fields: the booking takes the hold's order and total.
flightNumbernoteResellerBookingChange
flightNumbernoteprepaidMinorThe new total the customer prepaid to you, up or down. Refused once the rental took a payment itself.
PriceList
idnamecurrencyisDefaultactiveparentIdA derived list takes its rates from this list, moved by its adjustment. A cell it sets itself wins.
adjustPercentBp1000 is +10%.
adjustMinorPerDayroundToMinorRatePeriod
idnamefrom^\d{2}-\d{2}$ · requiredMonth and day, MM-DD.
to^\d{2}-\d{2}$ · requiredThe last day, MM-DD, inclusive.
yearNull: a recurring period. Recurring periods split the year with no gap and no overlap. A year: a one-off, such as Easter 2027, that wins for its days.
minPaidDaysRateCell
carTypeIdratePeriodIdNull: all year.
ownFalse: the list takes this cell from its parent, moved by its adjustment.
RateStep
fromDaysThe booking length this step starts at. The first step starts at 1.
dailyMinorThe price of each day.
RatePeriodChange
previewidThe rate period added, changed or removed.
splitNameThe rate period cut in two, when a new one landed in its middle.
Every rate period after.
Rate periods that go, each with the count of rates that go too.
Price rules that named only rate periods that go. They go too.
PriceRule
idnameNull: a stored condition that does not read. The rule moves no price.
percentBp1000 is +10%, -1000 is 10% off. Or amountMinor, never both.
amountMinoramountPerAn amount moves the booking once, or each day inside the window. A rule on the whole booking is once.
appliesTocar: the car's daily price on each day inside the window. booking: the whole total, once, when a day falls inside the window.
carTypeIdsEmpty: every car type.
ratePeriodIdsThe window, as rate periods. Or dateFrom and dateTo, never both.
dateFromdateTopriceListIdsEmpty: every price list.
exclusiveGroupRules in one group never stack: only the one that moves the price most applies.
position0 applies first. Rules compound in order.
activePriceRuleCondition
leadDaysAtLeastleadDaysUnderdaysAtLeastdaysUnderpickupWeekdays0 is Sunday.
channelIdsrefundableOnly bookings on a refundable (true) or a non-refundable (false) payment term.
confirmationBpAtLeastOnly bookings that pay this share of the total at booking or more, in basis points.
confirmationBpUnderOnly bookings that pay less than this share at booking. 1 is pay on arrival only.
PriceRuleIn
nameNull: a stored condition that does not read. The rule moves no price.
percentBpamountMinoramountPerappliesTocarTypeIdsratePeriodIdsdateFromdateTopriceListIdsexclusiveGroupactiveHold
holdIdexpiresAtWhen the car goes back, unless a payment came.
currencytotalMinorpayOnArrivalMinorpayNowMinorWhat the payment on the hold asks for: the term's share of the total, never past the total less the fees paid on arrival. 0 is pay on arrival: book with POST /rentals/{slug}/holds/{id}/book, with no payment.
refundableconfirmationBpHoldRequest
carTypeIdpickupAt^\d{4}-\d{2}-\d{2}T\… · requiredreturnAt^\d{4}-\d{2}-\d{2}T\… · requiredpickupLocationIdreturnLocationIdcouponCodedriverAgeThe driver's age in years, from 16 to 120, when known. A young driver fee goes on only with it. Under the car type's minDriverAge, the request is refused with driver_too_young.
declinedThe ids of included covers the customer refuses. Only a product with includedByDefault and declinable true can be refused, and it then comes off the price. Any other id is refused with 422 invalid, and no booking is made.
refundableThe payment term: false is non-refundable, which the rental must sell. Left out, refundable. A term the rental does not sell is refused with 422 term_not_sold. See terms on the quote.
confirmationBpThe share of the total paid at booking, in basis points: 10000 is full payment, 2000 is 20%, 0 is pay on arrival. Left out, the rental's own share. Under the rental's share is refused with 422 term_not_sold. Sent, the quote's terms hold this share beside full payment and the rental's share.
locale^[a-z]{2}$The language of each term's title and summary: en, is, de, fr, es or it. Left out, the rental's own language.
pickupDetailWhere exactly at the pickup location the customer meets the car, such as the hotel name or the street. Ask for it when the location has requiresDetail, with its detailPrompt as the question. The rental reads it on the booking. Left out, the booking has none.
returnDetailWhere exactly at the return location the customer leaves the car, as pickupDetail for the pickup.
passengersHow many people travel, the driver included.
The rental's custom fields on bookings, by key. Only a field the rental sends through the API is taken: any other key answers 422 invalid, and no booking is made. A value has the JSON type of its field: a string for text, a link, one choice or a date (2026-06-01), a number, true or false, or a list of choices. A required field with no default must come. A field left out starts as its default.
flightNumbernotessourceReferencelanguageThe language the customer booked in, such as en or is. The confirmation email and the documents come in it. A language the rental does not use is ignored, and the rental's own language is used.
mrefThe click id an affiliate link added to your page's address as ?mref=. A UUID of 36 characters. Pass it back as it came. An unknown or expired one is ignored and does not refuse the booking. Over 64 characters fails the field check with 422.
affiliateAn affiliate's code, when your site knows who referred the customer but has no mref. A code that is not in the rental's program is ignored.
sessionThe widget's own id for the browser tab, such as a random UUID kept in sessionStorage. A new hold with the same session gives the old one back first, so a customer who goes back and changes the order keeps one hold.
turnstileThe Turnstile token from the bot check frame, the page turnstileFrame of GET /rentals/{slug}/widget names. Required for a browser key (pk_), one token for each hold. A secret key sends none.
HoldState
holdIdstateopen while the car is kept, lapsed after 15 minutes with no payment, booked once the paid webhook made the booking, ended when it was given back. A payment on a lapsed or ended hold still books.
expiresAtcurrencytotalMinorThe booking the paid webhook made, for the done page.
The newest payment asked for on the hold.
testTrue for a hold made with a widget's test key. Its booking is no booking: reference is 0, and code is a test code such as TEST-4F2A. Show it as a test, with no manage booking or check-in links.
HoldPayment
paymentIdprocessormodeamountcurrencytestTrue for a payment on a test hold. processor is rapyd for Rapyd's sandbox, so load its sandbox toolkit, or test for Mellow's fake page at url, with Refuse card and Pay.
urlSend the customer here, for a link.
What the processor's own browser code takes, for a form of your own.
expiresAtHoldPaymentRequest
modeA page of the processor's to send them to, or a form of your own.
returnUrlWhere the customer lands after paying. Only for a link. A browser key's address is on one of the widget's sites, over https.
methodIdWhich online method, when the rental has more than one.
localeWidget
turnstileFrameThe bot check frame: a page on Mellow's short host to load in an iframe before each hold. It runs Cloudflare Turnstile with the action hold and posts the token to the page, only when the page is on one of the widget's sites (localhost too for a test key). Null when no check runs, as on a developer's machine: then a hold needs no token.
testTrue for a widget's test key.
The look the Plain preset wears, from Settings · Customer pages. The script turns it into --mellow-* tokens. The site keeps its own typeface.
WidgetLook
accentThe rental's brand colour, #rrggbb: buttons and chosen states. Mellow's neutral grey when the rental set none.
accentTextThe text colour on the brand colour.
secondThe second colour from Settings · Customer pages: badges and soft highlights.
radiusThe corners of a card, in px.
radiusControlThe corners of a box or a button, in px.
schemeLight or dark when the rental forces one. Null follows the site's own color-scheme.
Currencies
currencyThe rental's currency. Every hold, payment and booking is in it.
shownThe picker's list: the rental's currency first, then EUR, USD, GBP and the ones the widget adds on its page in Mellow. A currency with no rate is left out.
How many of each currency make one of the rental's, for every currency Mellow has a rate for. Empty before the first read, or when the rental's own currency has no rate.
dayThe ECB's day of the rates, YYYY-MM-DD. Null before the first read.