View Categories

Launching soon on the Shopify App StoreJoin the waitlist

GraphQL API reference: Rentals & Bookings types

15 min read

The input objects, object types and enums the Rentals & Bookings GraphQL operations take and return. A ! after a type means it is required (in an input) or never null (in an answer); [Type!]! is a list. The GraphQL explorer (Settings › API › Open the GraphQL explorer) shows the same in its Docs pane.

Input types #

What you pass to the operations, area by area. Fields you leave out take the default shown after =.

Products, availability and prices #

RentalAvailabilityInput – An availability question. Give variantId, or productId when the product has one rent variant.

FieldTypeNotes
productIdID
variantIdID
startDateString!Start: 2026-12-01, 2026-12-01 09:00 or 2026-12-01T09:00.
endDateString!End. A date-only rental from the 1st to the 3rd runs to midnight on the 3rd; start = end is one day.
quantityInt = 1
excludeBookingIdIDLeave this booking’s own units out (an edit screen asking whether a booking can move).
excludeOrderIdIDLeave every booking of this order out.
applyTurnoverBoolean = trueAdd the product’s turnaround time around the range (as the calendar blocks it). Default true.
locationIdIDUnits at this location only (gid://shopify/Location/… or the number).

RentalCalendarInput – A window to describe for a date picker. Give variantId, or productId (its first rent variant for the storefront).

FieldTypeNotes
productIdID
variantIdID
startDateStringFirst day, Y-m-d. With it, the calendar payload covers startDate to endDate (default 90 days, at most 400); without it, everything from two days ago on.
endDateStringLast day, Y-m-d.
slimBooleanA lighter calendar payload (no day prices).
displayStringglobal: the calendar as the store-wide calendar shows it.
locationIdIDThe pick-up location: the calendar is for that location’s stock and bookings.
methodRentalHandoverMethodThe calendar for this method (its transit and hand-over days; the payload’s handover).
returnMethodRentalReturnMethod

RentalPriceInput – What to price. Give variantId, or productId when the product has one rent variant.

FieldTypeNotes
productIdID
variantIdID
quantityInt = 1
startDateString!Start date (Y-m-d), or date and time (2026-10-01T09:00).
endDateStringEnd date; default the start date (one day).
startTimeStringStart time (HH:mm) when startDate has none.
endTimeStringEnd time (HH:mm) when endDate has none.
guestsRentalPartyInputThe party, for a product that counts guests.
localeStringThe storefront language for texts such as the Rental dates attribute, e.g. fr.
locationIdIDThe pick-up location (prices don’t depend on it yet).
methodRentalHandoverMethodThe method (prices don’t depend on it yet).
returnMethodRentalReturnMethod

RentalPartyInput – A party of guests, for products that count guests. Leave it out for products that don’t.

FieldTypeNotes
guestsIntTotal guests, when the product doesn’t split them.
adultsInt
childrenInt
infantsInt
petsInt

RentalDayPricesInput

FieldTypeNotes
productIdID
variantIdID
startDateStringFirst day, Y-m-d; default today.
endDateStringLast day, Y-m-d; default 30 days after the start. At most 366 days.

RentalSearchSelectionInput – A date search (the search block’s selection; the theme’s sr_* URL parameters).

FieldTypeNotes
fromStringFirst day, Y-m-d.
toStringLast day, Y-m-d (default from).
fromTimeStringHH:mm
toTimeStringHH:mm
quantityInt
lengthStringA length code instead of to: 4h, 3d, 2w, 1m, 1y.
guestsInt
adultsInt
childrenInt
infantsInt
petsInt
whereStringA place as typed (≤ 100 characters): the shop’s own places first, then the geocoder.
radiusKmIntKilometres around where, 1–500 (default 25).
locationIdIDA pick-up location (the theme’s sr_loc): available THERE; without it, available at some location.
EnumValues
RentalHandoverMethodPICKUP – The customer picks it up.
DELIVERY – The store delivers it.
SHIPPED – It is posted (shipped).
RentalReturnMethodIN_STORE – The customer brings it back to the store.
COLLECT – The store collects it.
POST – The customer posts it back.

Bookings #

RentalBookingFilterInput – Booking filters; they combine with AND.

FieldTypeNotes
productIdID
variantIdID
orderIdID
stateRentalBookingState
statuses[RentalBookingStatus!]
sources[RentalBookingSource!]
endsAfterStringOnly bookings ending (turnaround included) after this moment.
startsBeforeStringOnly bookings starting (turnaround included) before this moment; a bare date means that day at 23:59.
searchStringOrder name / number, booking number, customer, product / variant title, SKU or notes.
isBookedBooleantrue: still hold stock; false: cancelled.
locationIdIDPicked up at this location (bookings without one belong to the default location).
methodRentalHandoverMethod
outOnStringGoes out on this day (Y-m-d).
backOnStringComes back on this day (Y-m-d).

RentalBookingCreateInput

FieldTypeNotes
productIdID
variantIdID
startDateString!Start: 2026-12-01, 2026-12-01 09:00 or 2026-12-01T09:00.
endDateString!End. A date-only rental from the 1st to the 3rd runs to midnight on the 3rd; start = end is one day.
quantityInt = 1
customerIdIDThe customer the draft order is for.
emailStringThe customer’s email, when there is no customer yet.
notesString
blockBoolean = falseBlocked dates (maintenance, private use): no order.
forceBoolean = falseLet blocked dates overlap other bookings.
guestsRentalPartyInputThe party, for a product that counts guests: person mode books the party’s seats, unit mode at least the units the party needs.
locationIdIDThe pick-up location (the hold and the draft order are for its stock).
methodRentalHandoverMethod
returnMethodRentalReturnMethod
windowString
backWindowString

RentalBookingUpdateInput

FieldTypeNotes
startDateStringNew start (one date alone keeps the other).
endDateStringNew end.
notesStringReplaces the booking’s notes.
reasonStringWhy the dates changed (kept on the booking’s history).
forceBoolean = falseSkip the stock check.
EnumValues
RentalBookingStateUPCOMING
OUT
OVERDUE
RETURNED
RentalBookingStatusRESERVED – Holds stock; nothing out yet.
OUT – Units are with the customer.
RETURNED – Everything is back.
CANCELLED – Cancelled; the stock is free.
CONFLICT – The order came in when the stock was gone: needs attention.
RentalBookingSourceONLINE – The Online Store or a headless storefront (checkout).
POS – Shopify POS.
ADMIN – Made by staff in the app (a draft order).
API – Made through this API with a secret key.
ICAL – An imported outside calendar (iCal).
BLOCK – Blocked dates (maintenance, private use).
IMPORT – Imported from another system (a data import).
RentalBookingSortKeyID
START_DATE
END_DATE

Orders #

RentalOrderFilterInput

FieldTypeNotes
startDateStringThe window’s start: default today 00:00.
endDateStringThe window’s end: default the end of the start day.
productIdID
variantIdID
stateRentalBookingState
statuses[RentalBookingStatus!]Booking statuses.
searchStringOrder name / number, booking number, customer, product / variant title, SKU.
isBookedBoolean = trueOnly rentals that still hold stock (default); false also lists orders whose rentals were cancelled.

Send & Return #

RentalMoveQueueFilterInput

FieldTypeNotes
productIdID
variantIdID
orderIdID
searchStringOrder name / number, booking number, customer, product / variant title, SKU.
locationIdIDPicked up at this location (bookings without one belong to the default location).

RentalMovementFilterInput

FieldTypeNotes
bookingIdID
variantIdID
productIdID
dateFromStringFirst day, Y-m-d (store time).
dateToStringLast day, Y-m-d.
searchStringProduct, order, customer, SKU — or a serial the movement moved.

RentalMovesInput

FieldTypeNotes
items[RentalMoveItemInput!]!
atomicBoolean = trueOne bad item refuses the whole batch (nothing recorded). Default true.
notifyBoolean = falseAsk the notification rules to tell the customer (the store’s rules decide).
locationIdIDWhere the check-out or check-in happened.

RentalMoveItemInput

FieldTypeNotes
bookingIdID!
quantityIntUnits to move: default the number of serials, else 1.
serials[String!]Serial numbers moved (one per unit for a product that tracks serials).
notesString

RentalScanInput

FieldTypeNotes
codeString!A serial number, an order name (#1042 / 1042), a booking number or a SKU.
bookingIdID
orderIdID
variantIdID
productIdID
notesString
notifyBoolean = false
locationIdIDWhere the check-out or check-in happened.
EnumValues
RentalMoveDirectionSEND
RETURN
RentalMovementSortKeyDATETIME
ID
BOOKING_ID
QUANTITY

Serial numbers #

RentalSerialNumberFilterInput

FieldTypeNotes
productIdID
variantIdID
statusRentalSerialStatus
searchStringPart of the code.

RentalSerialUsageInput

FieldTypeNotes
startDateStringFirst day, Y-m-d. With it, days days from there; without it, the last days days (30, 90 or 365) ending today.
daysInt
productIdID
sortStringcode, product, days_out, days_idle, utilisation, hires, revenue, revenue_per_day, …
directionStringasc or desc

RentalSerialNumberCreateInput

FieldTypeNotes
productIdIDGive variantId, or productId when the product has one rent variant.
variantIdID
serialNumberString!
statusRentalSerialStatusAVAILABLE (default), MAINTENANCE or RETIRED.
costStringA decimal string.
dateAcquiredStringY-m-d; default today.
notesString

RentalSerialNumberRangeInput

FieldTypeNotes
productIdID
variantIdID
fromStringThe first code, e.g. TENT-001.
toStringThe last code, e.g. TENT-020.
rangeStringOr both at once: TENT-001…TENT-020 (also .. or -).
statusRentalSerialStatus
costString
dateAcquiredString
notesString

RentalSerialNumberUpdateInput

FieldTypeNotes
serialNumberString
statusRentalSerialStatus
costString
dateAcquiredString
notesString
variantIdIDMove it to another rent variant (not while it is out).
EnumValues
RentalSerialStatusAVAILABLE – On the shelf; the only status a unit can go out in.
OUT – With a customer (set by a check-out, cleared by a check-in; never by hand).
MAINTENANCE – Being repaired or checked; can’t go out.
RETIRED – No longer owned; kept for its history.

Locations and stock #

RentalProductStockInput

FieldTypeNotes
productIdID!
modeRentalStockMode!
variants[RentalVariantStockInput!]BY_LOCATION: units per location per variant. SHARED: optional units per variant (default: keep the total).
forceBoolean = falseSave even when future bookings would no longer fit.

RentalVariantStockInput

FieldTypeNotes
variantIdID!
unitsIntSHARED: the variant’s units.
locations[RentalLocationStockInput!]

RentalLocationStockInput

FieldTypeNotes
locationIdID!
unitsInt!
EnumValues
RentalStockModeSHARED – One stock, picked up at the default location.
BY_LOCATION – Units at each location.

Rental kits #

RentalKitCreateInput

FieldTypeNotes
titleString!
items[RentalKitItemInput!]!1 to 30 items.
pricingRentalKitPricing = OWN
itemsDiscountPercentString
useItemRulesBoolean = true
rentalTypeStringdate | datetime | datefixed | datetimefixed (default: the first item’s).

RentalKitItemInput

FieldTypeNotes
variantIdID!The item’s rent variant (gid or numeric id).
quantityInt!1 to 2000.

RentalKitUpdateInput

FieldTypeNotes
titleString
items[RentalKitItemInput!]
pricingRentalKitPricing
itemsDiscountPercentString
useItemRulesBoolean
EnumValues
RentalKitPricingOWN – The kit’s own rental rates.
ITEMS_SUM – The sum of the items’ rental prices for the dates, minus itemsDiscountPercent.

Delivery & pickup #

RentalHandoverWindowsInput

FieldTypeNotes
productIdID
variantIdID
methodRentalHandoverMethod
returnMethodRentalReturnMethod
dateString!The day (Y-m-d).
locationIdID
backBooleanThe return day’s slots instead of the out day’s.

RentalHandoverChangeInput

FieldTypeNotes
bookingIdID!gid://sirentals/Booking/… or the number.
methodRentalHandoverMethod
returnMethodRentalReturnMethod
windowString
backWindowString
returnTrackingString
forceBooleanKeep it even when the new transit days are booked.

Balances #

RentalBalanceInvoiceInput

FieldTypeNotes
balanceIdID!
toStringSend to this address instead of the customer’s.
messageStringA message in the email.
EnumValues
RentalBalanceStatusADDING – Being added to the order.
DUE
OVERDUE
PAID
WAIVED
CANCELLED – The order was cancelled.
FAILED – Shopify refused the order edit and the invoice: see the Balances page.

Calendar sync #

RentalCalendarImportInput

FieldTypeNotes
urlString!The calendar’s address (https://…ics).
nameString
variantIdIDThe rent variant it blocks (required when the product has several).
blockQuantityIntUnits each event blocks (default: every unit).
intervalMinutesIntMinutes between reads (at least 5, default 30).
syncNowBoolean = true

RentalCalendarImportUpdateInput

FieldTypeNotes
urlString
nameString
enabledBoolean
blockQuantityInt
blockAllUnitsBooleanBlock every unit again.
intervalMinutesInt
EnumValues
RentalCalendarFeedFlavourAVAILABILITY – Busy / free per day, no customer data: for booking channels.
OPERATIONAL – Every booking with its customer: for the team’s own calendar.

API keys #

RentalApiKeyInput

FieldTypeNotes
nameString!Who or what will use it.
scopes[String!][“read”] (default) or [“read”, “write”].

Object types #

What the operations answer. Connection types (…Connection, …Edge) follow the usual pattern: nodes, edges { cursor node }, pageInfo and totalCount. userErrors on every mutation payload is a list of RentalUserError { field message code data httpStatus }.

Store and caller #

TypeFields
RentalShop
The store the credential belongs to.
domain: String!, name: String, currency: String!, timezone: String!, today: String!, primaryLocale: String, checkoutReady: Boolean!
RentalApiCaller
Who is calling.
context: RentalApiContext!, app: String!, scopes: [String!]!, keyPrefix: String, installedApps: [String!]!, customerId: ID
EnumValues
RentalApiContextINTEGRATION – A secret API key (sirb_…).
STOREFRONT – A publishable key (sirpk_…), or the online store’s own rental calendar.
ADMIN – The app’s own admin screens.
CUSTOMER – The app’s own customer account screens.

Products, availability and prices #

TypeFields
RentalProduct
A rent variant: a product variant this store rents out.
productId: ID!, variantId: ID!, title: String, variantTitle: String, sku: String, rentalType: String, hasTime: Boolean!, mode: String!, units: Int, enabled: Boolean!
RentalAvailability
Whether a quantity can be rented over a date range.
productId: ID!, variantId: ID!, startDate: String!, endDate: String!, totalQuantity: Int!, bookedQuantity: Int!, availableQuantity: Int!, requestedQuantity: Int!, isAvailable: Boolean!
RentalCalendar
Availability for one product over a window.
productId: ID!, variantId: ID!, totalQuantity: Int!, window: RentalDateWindow, today: String!, currency: String!, fullyBookedDays: [RentalBookedDay!]!, inventory: [RentalInventoryInterval!]!, widgetConfig: JSON!, product: RentalProduct!
RentalDateWindow
A range of days, Y-m-d.
from: String!, to: String!
RentalBookedDay
A day with every unit taken.
date: String!, quantity: Int!
RentalInventoryInterval
Units taken over an interval, turnaround included.
quantity: Int!, start: String!, end: String!
RentalPriceList
The product’s rate card.
productId: ID!, variantId: ID!, name: String, variantTitle: String, rentalType: String, priceType: String, from: RentalPriceFrom!, headline: RentalPriceHeadline!, rates: [RentalRate!]!, minLength: JSON, maxLength: JSON, currency: String!, currencySymbol: String
RentalPriceFromamount: Float!, unit: String
RentalPriceHeadlineamount: Float!, period: String
RentalRate
One period of the rate card.
label: String!, period: String!, quantity: Int!, unit: String!, days: Float!, price: Float!, perDay: Float, addOn: RentalRateAddOn
RentalRateAddOnlabel: String!, period: String!, price: Float!
RentalQuote
What a rental costs: the storefront’s quote, what the cart line will charge.
productId: ID!, variantId: ID!, startDate: String!, endDate: String!, quantity: Int!, days: Int!, hours: Float!, unitPrice: Float!, total: Float!, lines: [RentalQuoteLine!]!, extraLines: [RentalQuoteLine!]!, guests: JSON, lengthUnit: String, currency: String!, currencySymbol: String, chargedTotal: Float!, tokenUnitPrice: String!, payment: RentalPaymentOptions
RentalQuoteLine
One line of a price breakdown.
label: String!, kind: String!, amount: Float!
RentalPaymentOptions
How a rental can be paid (the store’s Settings › Payments). Present when part payment can apply to the product.
options: [RentalPaymentChoice!]!, default: RentalPaymentChoice!, part: RentalPaymentSplit, reason: String, message: String
RentalPaymentSplit
Part now, the balance later: decimal strings in the store currency.
payNow: String!, balance: String!, dueDate: String!, dueAt: String, dueLabel: String, percent: Float, text: String
RentalDayPrices
A one-day hire’s price starting on each day.
productId: ID!, variantId: ID!, startDate: String!, endDate: String!, note: String!, days: [RentalDayPrice!]!, currency: String!, currencySymbol: String
RentalDayPricedate: String!, amount: Float!
RentalCatalogAvailabilityitems: [RentalCatalogEntry!]!, where: RentalWhere
RentalCatalogEntrykey: String!, productId: ID, handle: String, rental: Boolean!, available: Boolean, units: Int, distanceKm: Float, near: Boolean
RentalWhere
A place a Where search resolved to.
resolved: Boolean!, label: String, lat: Float, lng: Float, radiusKm: Int
RentalMapmarkers: [RentalMapMarker!]!, where: RentalWhere
RentalMapMarkerproductId: ID!, handle: String!, title: String!, url: String!, image: String, lat: Float!, lng: Float!, radius: Float, approximate: Boolean!, area: String, from: String, available: Boolean, near: Boolean, distanceKm: Float
EnumValues
RentalPaymentChoiceFULL
PART

Bookings #

TypeFields
RentalBooking
A booking: units of a rent variant held for a date range.
id: ID!, legacyResourceId: Int!, productId: ID, variantId: ID!, productName: String, variantTitle: String, sku: String, orderId: ID, orderName: String, lineItemId: ID, draftOrderId: ID, quantity: Int!, startDate: String!, endDate: String!, startDateWithTurnover: String, endDateWithTurnover: String, customerStart: String, customerEnd: String, startLabel: String, endLabel: String, quantitySent: Int!, quantityReturned: Int!, quantityToSend: Int!, quantityToReturn: Int!, canSend: Boolean!, canReturn: Boolean!, isBooked: Boolean!, status: RentalBookingStatus!, state: RentalBookingState!, overdue: Boolean!, conflictReason: String, source: RentalBookingSource, customer: RentalBookingCustomer, notes: String, guests: JSON, unitPrice: Float, currency: String, createdAt: String, serialsTracked: Boolean!, serials: [RentalBookingSerial!]!, serialsAvailable: [String!]!, movements: [RentalMovement!]!, dateChangeCalendar: RentalDateChangeCalendar, location: RentalLocation, payment: RentalBookingPayment, handover: RentalHandover, kind: RentalBookingKind!, kitBooking: RentalBooking, items: [RentalBooking!]!
RentalBookingCustomer
The customer of a booking.
id: ID, name: String, email: String
RentalBookingSerialcode: String!, out: Boolean!
RentalMovement
A check-out or a check-in.
id: ID!, legacyResourceId: Int!, direction: RentalMoveDirection!, datetime: String, quantity: Int!, serials: [String!]!, staffUserId: ID, notes: String!, booking: RentalBooking
RentalDateChangeCalendardisallowed: [String!]!, closedDays: [String!]!, min: String!, max: String!
RentalLocation
A Shopify location of the store, as a place to pick up rentals.
id: ID!, legacyResourceId: Int!, name: String!, shopifyName: String, publicName: String, address: RentalLocationAddress, area: String, active: Boolean!, rentalsEnabled: Boolean!, isDefault: Boolean!, acceptsReturns: Boolean!, pickupEnabled: Boolean!, instructions: String
RentalLocationAddressaddress1: String, address2: String, city: String, province: String, zip: String, country: String, countryCode: String, phone: String
RentalBookingPayment
A part-paid rental line: what was paid at checkout and what is owed.
choice: RentalPaymentChoice!, full: String, paidNow: String, balance: String, dueDate: String, status: RentalBalanceStatus
RentalHandover
A booking’s hand-over: the out moment (pick-up, delivery or dispatch day) and the back moment (return, collection or the day the parcel is due back).
method: RentalHandoverMethod!, returnMethod: RentalReturnMethod!, label: String, returnLabel: String, outAt: String, outWindow: String, backAt: String, backWindow: String, outLabel: String, backLabel: String, text: String, transitOutMinutes: Int!, transitBackMinutes: Int!, mismatch: JSON, returnTracking: String, deliveryAddress: JSON
RentalBookingDatesCheckok: Boolean!, errors: [RentalRuleError!]!, priceDifference: Float
RentalRuleError
A rule of the store a request breaks.
code: String!, message: String!, field: String
RentalCustomerBookingscurrent: [RentalBooking!]!, upcoming: [RentalBooking!]!, past: [RentalBooking!]!
RentalCustomercustomerId: ID!, name: String, email: String, current: Int!, upcoming: Int!
RentalBookingCreatePayloadbooking: RentalBooking, draftOrder: RentalDraftOrder, userErrors: [RentalUserError!]!
RentalDraftOrderid: ID, name: String, invoiceUrl: String
RentalBookingPayloadbooking: RentalBooking, userErrors: [RentalUserError!]!
RentalBookingDeletePayloaddeletedBookingId: ID, cancelled: Boolean, previous: RentalBooking, userErrors: [RentalUserError!]!
EnumValues
RentalBookingKindITEM – One rental item (it holds stock).
KIT – A rental kit: its items are item bookings (see items).

Orders #

TypeFields
RentalOrder
An order, reduced to its rentals.
id: ID!, legacyResourceId: String!, name: String, status: RentalBookingStatus, customer: RentalBookingCustomer, earliestStart: String, latestEnd: String, bookings: [RentalBooking!]!, conflictCount: Int!

Send & Return #

TypeFields
RentalMoveQueueEdge
A booking in a work queue, with what the queue says about it.
cursor: String!, node: RentalBooking!, due: String, overdue: Boolean!, quantity: Int!, tracksSerials: Boolean!, serials: [String!]!
RentalMoveQueueCountstoday: Int!, overdue: Int!, week: Int!, all: Int!
RentalMovesPayloadprocessed: Int, items: [RentalMoveResult!], failures: [RentalMoveFailure!], userErrors: [RentalUserError!]!
RentalMoveResultbooking: RentalBooking!, quantity: Int!, serials: [String!]!, outstanding: Int!
RentalMoveFailureindex: Int!, bookingId: ID, code: String!, message: String!, httpStatus: Int
RentalScanPayloadaction: String, code: String, serials: [String!], booking: RentalBooking, outstanding: Int, userErrors: [RentalUserError!]!

Serial numbers #

TypeFields
RentalSerialNumber
One physical unit of a serial-tracked rent variant.
id: ID!, legacyResourceId: Int!, serialNumber: String!, productId: ID, variantId: ID!, status: RentalSerialStatus!, cost: String, dateAcquired: String, dateRetired: String, notes: String!, currentBookingId: ID, currentOrderId: ID, lastMovement: RentalSerialLastMovement, history: [RentalSerialMovement!]!
RentalSerialLastMovementdirection: RentalMoveDirection!, datetime: String, staffUserId: ID, bookingId: ID
RentalSerialMovementid: ID!, direction: RentalMoveDirection!, datetime: String, staffUserId: ID, bookingId: ID, orderId: ID, orderName: String, quantity: Int!, notes: String!
RentalSerialUsagewindow: RentalDateWindow!, rows: [RentalSerialUsageRow!]!, totals: RentalSerialUsageTotals!
RentalSerialUsageRowserialId: ID, variantId: ID, productId: ID, serialNumber: String, product: String, status: String, dateAcquired: String, daysOwned: Int, daysOut: Int, daysIdle: Int, utilisation: Int, hires: Int, revenue: Float, revenuePerDay: Float, unassigned: Boolean!
RentalSerialUsageTotalsdaysOut: Int!, daysOwned: Int!, revenue: Float!, serials: Int!, idle: Int!, unassignedRevenue: Float!, unassignedDays: Int!, overDays: Int!
RentalSerialLabels
A signed, short-lived link to a label sheet.
url: String!, count: Int!
RentalSerialTrackingproductId: ID!, tracking: Boolean!, counts: RentalSerialCounts!
RentalSerialCountsavailable: Int!, out: Int!, maintenance: Int!, retired: Int!
RentalSerialNumberPayloadserialNumber: RentalSerialNumber, userErrors: [RentalUserError!]!
RentalSerialNumbersPayloadserialNumbers: [RentalSerialNumber!], createdCount: Int, skipped: [String!], userErrors: [RentalUserError!]!
RentalSerialNumberDeletePayloaddeletedSerialNumberId: ID, previous: RentalSerialNumber, userErrors: [RentalUserError!]!

Locations and stock #

TypeFields
RentalProductStockproductId: ID!, mode: RentalStockMode!, variants: [RentalVariantStock!]!
RentalVariantStockvariantId: ID!, title: String, total: Int, locations: [RentalLocationStock!]!
RentalLocationStocklocationId: ID!, units: Int!, activated: Boolean!
RentalProductStockPayloadstock: RentalProductStock, conflicts: [RentalStockConflict!], userErrors: [RentalUserError!]!
RentalStockConflict
A booking that needs more units at its location than the new stock has.
bookingId: ID!, orderName: String, start: String, end: String, quantity: Int!, locationId: ID, short: Int!

Rental kits #

TypeFields
RentalKitid: ID!, legacyResourceId: Int!, productId: ID!, variantId: ID!, title: String!, source: RentalKitSource!, pricing: RentalKitPricing!, itemsDiscountPercent: String, useItemRules: Boolean!, items: [RentalKitItem!]!
RentalKitItemproductId: ID!, variantId: ID!, title: String!, variantTitle: String, quantity: Int!
RentalKitPayloadkit: RentalKit, userErrors: [RentalUserError!]!
RentalKitDeletePayloaddeletedKitId: ID, userErrors: [RentalUserError!]!
EnumValues
RentalKitSourceAPP – Made in the app or through this API.
SHOPIFY_BUNDLES – A Shopify Bundles product run as a fixed-price kit.

Delivery & pickup #

TypeFields
RentalHandoverWindow
A time slot of a hand-over day.
id: String!, from: String!, to: String!, label: String, capacity: Int, left: Int, full: Boolean!
RentalDeliverySettingsPayloadsettings: JSON, userErrors: [RentalUserError!]!

Balances #

TypeFields
RentalBalance
The balance of an order with part-paid rentals: one per order, one payment link.
id: ID!, legacyResourceId: Int!, orderId: ID!, orderName: String, amount: String!, currency: String!, amountShop: String!, shopCurrency: String!, dueDate: String!, status: RentalBalanceStatus!, method: RentalBalanceMethod!, remindersSent: Int!, paidAt: String, paymentUrl: String, bookings: [RentalBooking!]!
RentalBalancePayloadbalance: RentalBalance, userErrors: [RentalUserError!]!
EnumValues
RentalBalanceMethodORDER_EDIT – On the same order (an order edit): the order’s own payment page.
INVOICE – A separate invoice (a draft order), when the order couldn’t be edited.
POS – A split payment at the counter.

Calendar sync #

TypeFields
RentalCalendarSyncproductId: ID!, rentalType: String, feeds: RentalCalendarFeeds!, variants: [RentalCalendarVariant!]!, imports: [RentalCalendarImport!]!
RentalCalendarFeedsavailability: RentalCalendarFeed!, operational: RentalCalendarFeed, variants: [RentalCalendarVariantFeeds!]!
RentalCalendarFeedflavour: RentalCalendarFeedFlavour!, url: String!, rotatedAt: String, lastAccessAt: String
RentalCalendarVariantFeedsvariantId: ID!, title: String, availability: RentalCalendarFeed!, operational: RentalCalendarFeed
RentalCalendarVariantid: ID!, title: String, units: Int!
RentalCalendarImport
A calendar the store imports.
id: ID!, legacyResourceId: Int!, productId: ID!, variantId: ID!, name: String, host: String!, enabled: Boolean!, blockQuantity: Int, intervalMinutes: Int!, lastSyncAt: String, nextSyncAt: String, lastStatus: String, lastError: String, lastEventCount: Int, failures: Int!, blocks: Int!
RentalCalendarSyncPayloadcalendarSync: RentalCalendarSync, userErrors: [RentalUserError!]!
RentalCalendarImportPayloadcalendarImport: RentalCalendarImport, result: RentalCalendarSyncResult, userErrors: [RentalUserError!]!
RentalCalendarSyncResult
What a read of an imported calendar did.
status: String!, message: String, added: Int, updated: Int, removed: Int, events: Int
RentalCalendarImportDeletePayloaddeletedCalendarImportId: ID, userErrors: [RentalUserError!]!

Rental settings and API keys #

TypeFields
RentalSettingsImportPayloadreport: RentalSettingsImportReport, userErrors: [RentalUserError!]!
RentalSettingsImportReportdryRun: Boolean!, summary: JSON!, products: [RentalSettingsImportProduct!]!, errors: JSON!, unknownColumns: [String!]!
RentalSettingsImportProductproductId: ID!, title: String, lines: [Int!]!, action: String, changes: JSON, errors: JSON, warnings: JSON, result: JSON
RentalApiKeyid: ID!, legacyResourceId: Int!, name: String!, prefix: String!, lastFour: String, scopes: [String!]!, createdAt: String, lastUsedAt: String, revokedAt: String
RentalApiKeyCreatePayloadapiKey: RentalApiKey, secret: String, userErrors: [RentalUserError!]!
RentalApiKeyPayloadapiKey: RentalApiKey, userErrors: [RentalUserError!]!