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.
| Field | Type | Notes |
|---|---|---|
productId | ID | |
variantId | ID | |
startDate | String | Start: 2026-12-01, 2026-12-01 09:00 or 2026-12-01T09:00. Required (or checkIn). |
endDate | String | End. A date-only rental from the 1st to the 3rd runs to midnight on the 3rd; start = end is one day (a stay needs a night). Required (or checkOut). |
quantity | Int = 1 | |
excludeBookingId | ID | Leave this booking’s own units out (an edit screen asking whether a booking can move). |
excludeOrderId | ID | Leave every booking of this order out. |
applyTurnover | Boolean = true | Add the product’s turnaround time around the range (as the calendar blocks it). Default true. |
locationId | ID | Units at this location only (gid://shopify/Location/… or the number). |
checkIn | String | A stay’s check-in day (stands for startDate). |
checkOut | String | A stay’s check-out day (stands for endDate). |
RentalCalendarInput – A window to describe for a date picker. Give variantId, or productId (its first rent variant for the storefront).
| Field | Type | Notes |
|---|---|---|
productId | ID | |
variantId | ID | |
startDate | String | First day, Y-m-d. With it, the widget payload covers startDate … endDate (default 90 days, at most 400); without it, everything from two days ago on. |
endDate | String | Last day, Y-m-d. |
slim | Boolean | A lighter widget payload (no day prices), as the POS asks for. |
display | String | global = the store-wide calendar’s display. |
locationId | ID | The pick-up location: the calendar is for that location’s stock and bookings. |
returnLocationId | ID | A one-way rental’s return location: the calendar answers for renting it one way (widgetConfig.returnLocations lists the choices). |
method | RentalHandoverMethod | The calendar for this method (its transit and hand-over days; the payload’s handover). |
returnMethod | RentalReturnMethod | |
postcode | String | Delivery: the postcode (its area’s days; with several locations, where it is delivered from). |
zoneId | ID |
RentalPriceInput – What to price. Give variantId, or productId when the product has one rent variant.
| Field | Type | Notes |
|---|---|---|
productId | ID | |
variantId | ID | |
quantity | Int = 1 | |
startDate | String | Start date (Y-m-d), or date and time (2026-10-01T09:00). Required (or checkIn). |
endDate | String | End date; default the start date (one day; a stay needs a later check-out). |
startTime | String | Start time (HH:mm) when startDate has none. |
endTime | String | End time (HH:mm) when endDate has none. |
guests | RentalPartyInput | The party, for a product that counts guests. |
locale | String | The storefront language for texts (Rental dates line property), e.g. fr. |
locationId | ID | The pick-up location (prices don’t depend on it yet; with returnLocationId it decides the one-way fee). |
returnLocationId | ID | Returned to another location than the pick-up: the one-way fee is added. |
method | RentalHandoverMethod | The method (prices don’t depend on it yet). |
returnMethod | RentalReturnMethod | |
checkIn | String | A stay’s check-in day (stands for startDate). |
checkOut | String | A stay’s check-out day (stands for endDate). |
RentalPartyInput – A party of guests, for products that count guests (the widget’s guest picker). Omit for products that don’t.
| Field | Type | Notes |
|---|---|---|
guests | Int | Total guests, when the product doesn’t split them. |
adults | Int | |
children | Int | |
infants | Int | |
pets | Int |
RentalDayPricesInput
| Field | Type | Notes |
|---|---|---|
productId | ID | |
variantId | ID | |
startDate | String | First day, Y-m-d; default today. |
endDate | String | Last 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).
| Field | Type | Notes |
|---|---|---|
from | String | First day, Y-m-d. |
to | String | Last day, Y-m-d (default from). |
fromTime | String | HH:mm |
toTime | String | HH:mm |
quantity | Int | |
length | String | A length code instead of to: 4h, 3d, 2w, 1m, 1y. |
guests | Int | |
adults | Int | |
children | Int | |
infants | Int | |
pets | Int | |
where | String | A place as typed (≤ 100 characters): the shop’s own places first, then the geocoder. |
radiusKm | Int | Kilometres around where, 1–500 (default 25). |
locationId | ID | A pick-up location (the theme’s sr_loc): available THERE; without it, available at some location. |
| Enum | Values |
|---|---|
RentalHandoverMethod | PICKUP – The customer picks it up.DELIVERY – The store delivers it.SHIPPED – It is transported (shipped). |
RentalReturnMethod | IN_STORE – The customer brings it back to the store.COLLECT – The store collects it.POST – The customer transports it back. |
Bookings #
RentalBookingFilterInput – Booking filters; they combine with AND.
| Field | Type | Notes |
|---|---|---|
productId | ID | |
variantId | ID | |
orderId | ID | |
state | RentalBookingState | |
statuses | [RentalBookingStatus!] | |
sources | [RentalBookingSource!] | |
endsAfter | String | Only bookings ending (turnaround included) after this moment. |
startsBefore | String | Only bookings starting (turnaround included) before this moment; a bare date means that day at 23:59. |
search | String | Order name / number, booking number, customer, product / variant title, SKU or notes. |
isBooked | Boolean | true: still hold stock; false: cancelled. |
locationId | ID | Picked up at this location (bookings without one belong to the default location). |
method | RentalHandoverMethod | |
outOn | String | Goes out on this day (Y-m-d). |
backOn | String | Comes back on this day (Y-m-d). |
RentalBookingCreateInput
| Field | Type | Notes |
|---|---|---|
productId | ID | |
variantId | ID | |
startDate | String! | Start: 2026-12-01, 2026-12-01 09:00 or 2026-12-01T09:00. |
endDate | String! | End. A date-only rental from the 1st to the 3rd runs to midnight on the 3rd; start = end is one day. |
quantity | Int = 1 | |
customerId | ID | The customer the draft order is for. |
email | String | The customer’s email, when there is no customer yet. |
notes | String | |
block | Boolean = false | Blocked dates (maintenance, private use): no order. |
force | Boolean = false | Let blocked dates overlap other bookings. |
guests | RentalPartyInput | The party, for a product that counts guests: person mode books the party’s seats, unit mode at least the units the party needs. |
locationId | ID | The pick-up location (the hold and the draft order are for its stock). |
returnLocationId | ID | A one-way rental’s return location. |
method | RentalHandoverMethod | |
returnMethod | RentalReturnMethod | |
window | String | |
backWindow | String |
RentalBookingUpdateInput
| Field | Type | Notes |
|---|---|---|
startDate | String | New start (one date alone keeps the other). |
endDate | String | New end. |
notes | String | Replaces the booking’s notes. |
reason | String | Why the dates changed (kept on the booking’s history). |
force | Boolean = false | Skip the stock check. |
| Enum | Values |
|---|---|
RentalBookingState | UPCOMINGOUTOVERDUERETURNED |
RentalBookingStatus | RESERVED – 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. |
RentalBookingSource | ONLINE – 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). |
RentalBookingSortKey | IDSTART_DATEEND_DATE |
Orders #
RentalOrderFilterInput
| Field | Type | Notes |
|---|---|---|
startDate | String | The window’s start: default today 00:00. |
endDate | String | The window’s end: default the end of the start day. |
productId | ID | |
variantId | ID | |
state | RentalBookingState | |
statuses | [RentalBookingStatus!] | Booking statuses. |
search | String | Order name / number, booking number, customer, product / variant title, SKU. |
isBooked | Boolean = true | Only rentals that still hold stock (default); false also lists orders whose rentals were cancelled. |
Send & Return #
RentalMoveQueueFilterInput
| Field | Type | Notes |
|---|---|---|
productId | ID | |
variantId | ID | |
orderId | ID | |
search | String | Order name / number, booking number, customer, product / variant title, SKU. |
locationId | ID | Picked up at this location (bookings without one belong to the default location). |
RentalMovementFilterInput
| Field | Type | Notes |
|---|---|---|
bookingId | ID | |
variantId | ID | |
productId | ID | |
dateFrom | String | First day, Y-m-d (store time). |
dateTo | String | Last day, Y-m-d. |
search | String | Product, order, customer, SKU — or a serial the movement moved. |
RentalMovesInput
| Field | Type | Notes |
|---|---|---|
items | [RentalMoveItemInput!]! | |
atomic | Boolean = true | One bad item refuses the whole batch (nothing recorded). Default true. |
notify | Boolean = false | Ask the notification rules to tell the customer (the store’s rules decide). |
locationId | ID | Where the check-out or check-in happened. |
RentalMoveItemInput
| Field | Type | Notes |
|---|---|---|
bookingId | ID! | |
quantity | Int | Units to move: default the number of serials, else 1. |
serials | [String!] | Serial numbers moved (one per unit for a product that tracks serials). |
notes | String |
RentalScanInput
| Field | Type | Notes |
|---|---|---|
code | String! | A serial number, an order name (#1042 / 1042), a booking number or a SKU. |
bookingId | ID | |
orderId | ID | |
variantId | ID | |
productId | ID | |
notes | String | |
notify | Boolean = false | |
locationId | ID | Where the check-out or check-in happened. |
| Enum | Values |
|---|---|
RentalMoveDirection | SENDRETURN |
RentalMovementSortKey | DATETIMEIDBOOKING_IDQUANTITY |
Serial numbers #
RentalSerialNumberFilterInput
| Field | Type | Notes |
|---|---|---|
productId | ID | |
variantId | ID | |
status | RentalSerialStatus | |
search | String | Part of the code. |
RentalSerialUsageInput
| Field | Type | Notes |
|---|---|---|
startDate | String | First day, Y-m-d. With it, days days from there; without it, the last days days (30, 90 or 365) ending today. |
days | Int | |
productId | ID | |
sort | String | code, product, days_out, days_idle, utilisation, hires, revenue, revenue_per_day, … |
direction | String | asc or desc |
RentalSerialNumberCreateInput
| Field | Type | Notes |
|---|---|---|
productId | ID | Give variantId, or productId when the product has one rent variant. |
variantId | ID | |
serialNumber | String! | |
status | RentalSerialStatus | AVAILABLE (default), MAINTENANCE or RETIRED. |
cost | String | A decimal string. |
dateAcquired | String | Y-m-d; default today. |
notes | String |
RentalSerialNumberRangeInput
| Field | Type | Notes |
|---|---|---|
productId | ID | |
variantId | ID | |
from | String | The first code, e.g. TENT-001. |
to | String | The last code, e.g. TENT-020. |
range | String | Or both at once: TENT-001…TENT-020 (also .. or -). |
status | RentalSerialStatus | |
cost | String | |
dateAcquired | String | |
notes | String |
RentalSerialNumberUpdateInput
| Field | Type | Notes |
|---|---|---|
serialNumber | String | |
status | RentalSerialStatus | |
cost | String | |
dateAcquired | String | |
notes | String | |
variantId | ID | Move it to another rent variant (not while it is out). |
| Enum | Values |
|---|---|
RentalSerialStatus | AVAILABLE – 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
| Field | Type | Notes |
|---|---|---|
productId | ID! | |
mode | RentalStockMode! | |
variants | [RentalVariantStockInput!] | BY_LOCATION: units per location per variant. SHARED: optional units per variant (default: keep the total). |
returnRules | RentalReturnRulesInput | BY_LOCATION: where customers return it (left out: unchanged). |
force | Boolean = false | Save even when future bookings would no longer fit. |
RentalVariantStockInput
| Field | Type | Notes |
|---|---|---|
variantId | ID! | |
units | Int | SHARED: the variant’s units. |
locations | [RentalLocationStockInput!] |
RentalLocationStockInput
| Field | Type | Notes |
|---|---|---|
locationId | ID! | |
units | Int! | |
min | Int | Keep at least (null = none; left out: unchanged). |
max | Int | Keep at most (null = none; left out: unchanged). |
price | JSON | This variant’s price rule here (null = the location’s; left out: unchanged). See RentalLocationStock.price. |
| Enum | Values |
|---|---|
RentalStockMode | SHARED – One stock, picked up at the default location.BY_LOCATION – Units at each location. |
RentalReturnRulesInput
| Field | Type | Notes |
|---|---|---|
returns | RentalReturnsTo! | |
locationIds | [ID!] | |
policy | RentalOneWayPolicy = STRICT | |
fee | String | |
routes | [RentalOneWayRouteInput!] |
RentalOneWayRouteInput
| Field | Type | Notes |
|---|---|---|
fromLocationId | ID | |
toLocationId | ID | |
amount | String! |
RentalTransferCreateInput
| Field | Type | Notes |
|---|---|---|
fromLocationId | ID! | |
toLocationId | ID! | |
shipAt | String | Shop-local date or date and time (2026-10-04, 2026-10-04T09:00); default now. |
arriveAt | String | Shop-local; default the ship time. |
note | String | |
items | [RentalTransferItemInput!]! | |
force | Boolean = false | Plan it even when the origin would be short (needs a reason). |
reason | String |
RentalTransferItemInput
| Field | Type | Notes |
|---|---|---|
variantId | ID! | |
quantity | Int | Create: required. Dispatch / receive: default all. |
serials | [String!] |
RentalTransferMoveInput
| Field | Type | Notes |
|---|---|---|
id | ID! | |
items | [RentalTransferItemInput!] | Left out: every item, all of it. |
serials | [String!] | Receive: the serial numbers scanned in (they pick their items). |
RentalTransferFilterInput
| Field | Type | Notes |
|---|---|---|
status | RentalTransferFilterStatus = OPEN | OPEN = PLANNED or IN_TRANSIT (the default); null = all. |
locationId | ID | From or to this location (gid://shopify/Location/… or the number). |
inbound | Boolean = false | With locationId: only transfers to it. |
| Enum | Values |
|---|---|
RentalReturnsTo | SAME – Where they picked it up (a round trip).ANY – Any location that takes returns.LIST – One of the listed locations. |
RentalOneWayPolicy | STRICT – The pick-up location must keep enough units for all its later bookings (the unit doesn’t come back there).POOLED – The pick-up location has it on the day; all locations together cover the rental; the store moves units to cover later bookings. |
RentalTransferFilterStatus | OPENALLPLANNEDIN_TRANSITARRIVEDCANCELLED |
Rental kits #
RentalKitCreateInput
| Field | Type | Notes |
|---|---|---|
title | String! | |
items | [RentalKitItemInput!]! | 1 to 30 items. |
pricing | RentalKitPricing = OWN | |
itemsDiscountPercent | String | |
useItemRules | Boolean = true | |
rentalType | String | date | datetime | datefixed | datetimefixed (default: the first item’s). |
RentalKitItemInput
| Field | Type | Notes |
|---|---|---|
variantId | ID! | The item’s rent variant (gid or numeric id). |
quantity | Int! | 1 to 2000. |
RentalKitUpdateInput
| Field | Type | Notes |
|---|---|---|
title | String | |
items | [RentalKitItemInput!] | |
pricing | RentalKitPricing | |
itemsDiscountPercent | String | |
useItemRules | Boolean |
| Enum | Values |
|---|---|
RentalKitPricing | OWN – The kit’s own rental rates.ITEMS_SUM – The sum of the items’ rental prices for the dates, minus itemsDiscountPercent. |
Delivery & pickup #
RentalHandoverWindowsInput
| Field | Type | Notes |
|---|---|---|
productId | ID | |
variantId | ID | |
method | RentalHandoverMethod | |
returnMethod | RentalReturnMethod | |
date | String! | The day (Y-m-d). |
locationId | ID | |
back | Boolean | The return day’s slots instead of the out day’s. |
postcode | String | Delivery: the postcode (its area’s slots and the places left). |
zoneId | ID |
RentalHandoverChangeInput
| Field | Type | Notes |
|---|---|---|
bookingId | ID! | gid://sirentals/Booking/… or the number. |
method | RentalHandoverMethod | |
returnMethod | RentalReturnMethod | |
window | String | |
backWindow | String | |
returnTracking | String | |
force | Boolean | Keep it even when the new transit days are booked. |
RentalDeliveryZoneInput – A delivery area’s fields; on update, the fields left out keep their value.
| Field | Type | Notes |
|---|---|---|
name | String | |
publicName | String | |
locationId | ID | |
postcodes | [String!] | |
radiusKm | Float | |
centerLat | Float | |
centerLng | Float | |
feeHint | String | |
minOrderHint | String | |
days | [String!] | |
windows | [RentalDeliveryZoneWindowInput!] | |
deliverBefore | Int | |
collectAfter | Int | |
active | Boolean | |
position | Int |
RentalDeliveryZoneWindowInput
| Field | Type | Notes |
|---|---|---|
from | String! | |
to | String! | |
capacity | Int | |
days | [String!] |
Balances #
RentalBalanceInvoiceInput
| Field | Type | Notes |
|---|---|---|
balanceId | ID! | |
to | String | Send to this address instead of the customer’s. |
message | String | A message in the email. |
| Enum | Values |
|---|---|
RentalBalanceStatus | ADDING – Being added to the order.DUEOVERDUEPAIDWAIVEDCANCELLED – The order was cancelled.FAILED – Shopify refused the order edit and the invoice: see the Balances page. |
Subscriptions #
RentalSubscriptionInput – Rent billed per period instead of for dates (the store’s Settings › Subscriptions).
| Field | Type | Notes |
|---|---|---|
billing | RentalBillingSource! | EXTERNAL = another app’s selling plan (planId required); INVOICE = our invoice each period. |
planId | ID | The selling plan (gid://shopify/SellingPlan/… or its number), for EXTERNAL. |
term | String | o (default) = until returned, or a number of periods (1–120). |
interval | String | INVOICE: 1M, 2W… (default the product’s). |
RentalSubscriptionEndInput
| Field | Type | Notes |
|---|---|---|
subscriptionId | ID! | |
returnBy | String | Y-m-d; default the end of the paid period. |
note | String |
RentalSubscriptionPaymentInput
| Field | Type | Notes |
|---|---|---|
subscriptionId | ID! | |
amount | String | Default the period price. |
note | String | |
orderId | ID | The order that paid it (gid://shopify/Order/… or its number), if any. |
Calendar sync #
RentalCalendarImportInput
| Field | Type | Notes |
|---|---|---|
url | String! | The calendar’s address (https://…ics). |
name | String | |
variantId | ID | The rent variant it blocks (required when the product has several). |
blockQuantity | Int | Units each event blocks (default: every unit). |
intervalMinutes | Int | Minutes between reads (at least 5, default 30). |
syncNow | Boolean = true |
RentalCalendarImportUpdateInput
| Field | Type | Notes |
|---|---|---|
url | String | |
name | String | |
enabled | Boolean | |
blockQuantity | Int | |
blockAllUnits | Boolean | Block every unit again. |
intervalMinutes | Int |
| Enum | Values |
|---|---|
RentalCalendarFeedFlavour | AVAILABILITY – 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
| Field | Type | Notes |
|---|---|---|
name | String! | 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 #
| Type | Fields |
|---|---|
RentalShopThe store the credential belongs to. | domain: String!, name: String, currency: String!, timezone: String!, today: String!, primaryLocale: String, checkoutReady: Boolean!, posCartMode: String |
RentalApiCallerWho is calling. | context: RentalApiContext!, app: String!, scopes: [String!]!, keyPrefix: String, installedApps: [String!]!, customerId: ID |
| Enum | Values |
|---|---|
RentalApiContext | INTEGRATION – A secret API key (sirb_…): the merchant’s own servers and integrations.STOREFRONT – A publishable key (sirpk_…) with allowed websites, or Shopify’s signed app proxy (the theme widget).ADMIN – A staff session token: App Home, admin UI extensions, POS UI extensions.CUSTOMER – A customer’s session token: customer account and checkout UI extensions. |
Products, availability and prices #
| Type | Fields |
|---|---|
RentalProductA 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!, nightly: Boolean!, stayType: String, checkInTime: String, checkOutTime: String. stayType is days, days_free (Days: can go out again on the return day) or nights; it is null when the product follows the store. |
RentalAvailabilityWhether 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!, nightly: Boolean!, nights: Int |
RentalCalendarAvailability 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!, nightly: Boolean!, turnoverDates: [String!]!, stayDays: [RentalStayDay!]! |
RentalStayDayHow a day looks in a stay-of-nights calendar (the widget’s stayDayState). | date: String!, state: String!, checkIn: Boolean!, checkOut: Boolean! |
RentalDateWindowA range of days, Y-m-d. | from: String!, to: String! |
RentalBookedDayA day with every unit taken. | date: String!, quantity: Int! |
RentalInventoryIntervalUnits taken over an interval (the ledger, turnaround included). | quantity: Int!, start: String!, end: String! |
RentalPriceListThe 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 |
RentalPriceFrom | amount: Float!, unit: String |
RentalPriceHeadline | amount: Float!, period: String |
RentalRateOne period of the rate card. | label: String!, period: String!, quantity: Int!, unit: String!, days: Float!, price: Float!, perDay: Float, addOn: RentalRateAddOn |
RentalRateAddOn | label: String!, period: String!, price: Float! |
RentalQuoteWhat 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, nightly: Boolean!, nights: Int |
RentalQuoteLineOne line of a price breakdown. | label: String!, kind: String!, amount: Float! |
RentalPaymentOptionsHow 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 |
RentalPaymentSplitPart now, the balance later: decimal strings in the store currency. | payNow: String!, balance: String!, dueDate: String!, dueAt: String, dueLabel: String, percent: Float, text: String |
RentalDayPricesA 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 |
RentalDayPrice | date: String!, amount: Float! |
RentalCatalogAvailability | items: [RentalCatalogEntry!]!, where: RentalWhere |
RentalCatalogEntry | key: String!, productId: ID, handle: String, rental: Boolean!, available: Boolean, units: Int, distanceKm: Float, near: Boolean |
RentalWhereA place a Where search resolved to. | resolved: Boolean!, label: String, lat: Float, lng: Float, radiusKm: Int |
RentalMap | markers: [RentalMapMarker!]!, where: RentalWhere |
RentalMapMarker | productId: 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 |
| Enum | Values |
|---|---|
RentalPaymentChoice | FULLPART |
Bookings #
| Type | Fields |
|---|---|
RentalBookingA 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, returnLocation: RentalLocation, returnedElsewhere: Boolean!, payment: RentalBookingPayment, handover: RentalHandover, kind: RentalBookingKind!, kitBooking: RentalBooking, items: [RentalBooking!]!, term: String, subscription: RentalSubscription, nightly: Boolean!, nights: Int, checkIn: String, checkOut: String |
RentalBookingCustomerThe customer of a booking. | id: ID, name: String, email: String |
RentalBookingSerial | code: String!, out: Boolean! |
RentalMovementA check-out or a check-in. | id: ID!, legacyResourceId: Int!, direction: RentalMoveDirection!, datetime: String, quantity: Int!, serials: [String!]!, staffUserId: ID, notes: String!, booking: RentalBooking |
RentalDateChangeCalendar | disallowed: [String!]!, closedDays: [String!]!, min: String!, max: String! |
RentalLocationA 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, rules: JSON |
RentalLocationAddress | address1: String, address2: String, city: String, province: String, zip: String, country: String, countryCode: String, phone: String |
RentalBookingPaymentA 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 |
RentalHandoverA 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, zone: RentalDeliveryArea, postcode: String |
RentalBookingDatesCheck | ok: Boolean!, errors: [RentalRuleError!]!, priceDifference: Float |
RentalRuleErrorA rule of the store a request breaks. | code: String!, message: String!, field: String |
RentalCustomerBookings | current: [RentalBooking!]!, upcoming: [RentalBooking!]!, past: [RentalBooking!]! |
RentalCustomer | customerId: ID!, name: String, email: String, current: Int!, upcoming: Int! |
RentalBookingCreatePayload | booking: RentalBooking, draftOrder: RentalDraftOrder, userErrors: [RentalUserError!]! |
RentalDraftOrder | id: ID, name: String, invoiceUrl: String |
RentalBookingPayload | booking: RentalBooking, userErrors: [RentalUserError!]! |
RentalBookingDeletePayload | deletedBookingId: ID, cancelled: Boolean, previous: RentalBooking, userErrors: [RentalUserError!]! |
| Enum | Values |
|---|---|
RentalBookingKind | ITEM – One rental item (it holds stock).KIT – A rental kit: its items are item bookings (see items). |
Orders #
| Type | Fields |
|---|---|
RentalOrderAn 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 #
| Type | Fields |
|---|---|
RentalMoveQueueEdgeA 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!]! |
RentalMoveQueueCounts | today: Int!, overdue: Int!, week: Int!, all: Int! |
RentalMovesPayload | processed: Int, items: [RentalMoveResult!], failures: [RentalMoveFailure!], userErrors: [RentalUserError!]! |
RentalMoveResult | booking: RentalBooking!, quantity: Int!, serials: [String!]!, outstanding: Int! |
RentalMoveFailure | index: Int!, bookingId: ID, code: String!, message: String!, httpStatus: Int |
RentalScanPayload | action: String, code: String, serials: [String!], booking: RentalBooking, outstanding: Int, userErrors: [RentalUserError!]! |
Serial numbers #
| Type | Fields |
|---|---|
RentalSerialNumberOne 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!]! |
RentalSerialLastMovement | direction: RentalMoveDirection!, datetime: String, staffUserId: ID, bookingId: ID |
RentalSerialMovement | id: ID!, direction: RentalMoveDirection!, datetime: String, staffUserId: ID, bookingId: ID, orderId: ID, orderName: String, quantity: Int!, notes: String! |
RentalSerialUsage | window: RentalDateWindow!, rows: [RentalSerialUsageRow!]!, totals: RentalSerialUsageTotals! |
RentalSerialUsageRow | serialId: 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! |
RentalSerialUsageTotals | daysOut: Int!, daysOwned: Int!, revenue: Float!, serials: Int!, idle: Int!, unassignedRevenue: Float!, unassignedDays: Int!, overDays: Int! |
RentalSerialLabelsA signed, short-lived link to a label sheet. | url: String!, count: Int! |
RentalSerialTracking | productId: ID!, tracking: Boolean!, counts: RentalSerialCounts! |
RentalSerialCounts | available: Int!, out: Int!, maintenance: Int!, retired: Int! |
RentalSerialNumberPayload | serialNumber: RentalSerialNumber, userErrors: [RentalUserError!]! |
RentalSerialNumbersPayload | serialNumbers: [RentalSerialNumber!], createdCount: Int, skipped: [String!], userErrors: [RentalUserError!]! |
RentalSerialNumberDeletePayload | deletedSerialNumberId: ID, previous: RentalSerialNumber, userErrors: [RentalUserError!]! |
Locations and stock #
| Type | Fields |
|---|---|
RentalProductStock | productId: ID!, mode: RentalStockMode!, variants: [RentalVariantStock!]!, returnRules: RentalReturnRules! |
RentalVariantStock | variantId: ID!, title: String, total: Int, locations: [RentalLocationStock!]! |
RentalLocationStock | locationId: ID!, units: Int!, activated: Boolean!, min: Int, max: Int, price: JSON |
RentalProductStockPayload | stock: RentalProductStock, conflicts: [RentalStockConflict!], userErrors: [RentalUserError!]! |
RentalStockConflictA 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! |
| Type | Fields |
|---|---|
RentalLocationPayload | location: RentalLocation, userErrors: [RentalUserError!]! |
RentalReturnRules | returns: RentalReturnsTo!, locationIds: [ID!]!, policy: RentalOneWayPolicy!, fee: String, routes: [RentalOneWayRoute!]! |
RentalOneWayRoute | fromLocationId: ID, toLocationId: ID, amount: String! |
RentalTransfer | id: ID!, legacyResourceId: Int!, status: RentalTransferStatus!, late: Boolean!, from: RentalLocation, to: RentalLocation, shipAt: String, arriveAt: String, shippedAt: String, receivedAt: String, cancelledAt: String, note: String, forcedReason: String, createdAt: String, items: [RentalTransferItem!]! |
RentalTransferItem | variantId: ID!, productId: ID!, title: String, quantity: Int!, dispatched: Int!, received: Int!, inTransit: Int!, serials: [String!]!, receivedSerials: [String!]! |
RentalTransferList | transfers: [RentalTransfer!]!, total: Int! |
RentalTransferPayload | transfer: RentalTransfer, userErrors: [RentalUserError!]! |
RentalTransferSuggestion | variantId: ID!, productId: ID!, title: String, fromLocationId: ID!, toLocationId: ID!, quantity: Int!, reason: String! |
RentalStockBoard | locations: [RentalLocation!]!, rows: [RentalStockBoardRow!]!, truncated: Boolean! |
RentalStockBoardRow | productId: ID!, variantId: ID!, title: String, variantTitle: String, total: Int!, oneWay: Boolean!, locations: [RentalStockBoardCell!]! |
RentalStockBoardCell | locationId: ID!, units: Int!, free: Int!, out: Int!, inTransit: Int!, min: Int, max: Int, belowMin: Boolean!, aboveMax: Boolean! |
| Enum | Values |
|---|---|
RentalTransferStatus | PLANNEDIN_TRANSIT – Dispatched, not all received.ARRIVEDCANCELLED |
Rental kits #
| Type | Fields |
|---|---|
RentalKit | id: ID!, legacyResourceId: Int!, productId: ID!, variantId: ID!, title: String!, source: RentalKitSource!, pricing: RentalKitPricing!, itemsDiscountPercent: String, useItemRules: Boolean!, items: [RentalKitItem!]! |
RentalKitItem | productId: ID!, variantId: ID!, title: String!, variantTitle: String, quantity: Int! |
RentalKitPayload | kit: RentalKit, userErrors: [RentalUserError!]! |
RentalKitDeletePayload | deletedKitId: ID, userErrors: [RentalUserError!]! |
| Enum | Values |
|---|---|
RentalKitSource | APP – Made in the app (App Home or this API).SHOPIFY_BUNDLES – A Shopify Bundles product run as a fixed-price kit. |
Delivery & pickup #
| Type | Fields |
|---|---|
RentalHandoverWindowA time slot of a hand-over day. | id: String!, from: String!, to: String!, label: String, capacity: Int, left: Int, full: Boolean! |
RentalDeliverySettingsPayload | settings: JSON, userErrors: [RentalUserError!]! |
| Type | Fields |
|---|---|
RentalDeliveryAreaA delivery area as shoppers see it . | id: ID!, name: String!, feeHint: String, minOrderHint: String |
RentalDeliveryZoneA delivery area: the postcodes or radius it covers and its own days and slots. | id: ID!, legacyResourceId: Int!, name: String!, publicName: String, displayName: String!, locationId: ID, postcodes: [String!]!, radiusKm: Float, centerLat: Float, centerLng: Float, feeHint: String, minOrderHint: String, days: [String!], windows: [RentalDeliveryZoneWindow!], deliverBefore: Int, collectAfter: Int, active: Boolean!, position: Int! |
RentalDeliveryZoneWindow | from: String!, to: String!, capacity: Int, days: [String!]! |
RentalDeliveryZonePayload | zone: RentalDeliveryZone, userErrors: [RentalUserError!]! |
RentalDeliveryZoneDeletePayload | deletedZoneId: ID, userErrors: [RentalUserError!]! |
RentalDeliveryCheckThe postcode check. | ok: Boolean!, postcode: String, zone: RentalDeliveryArea, locationId: ID, code: String, message: String, earliestStart: String |
RentalScheduleOne day’s run sheet: deliveries and collections in route order, pick-ups, returns in store, parcels to transport and returns due back by transport. | day: String!, today: String!, locationId: ID, locationName: String, deliveries: [RentalScheduleStop!]!, collections: [RentalScheduleStop!]!, pickups: [RentalScheduleStop!]!, returns: [RentalScheduleStop!]!, toPost: [RentalScheduleStop!]!, dueBack: [RentalScheduleStop!]!, route: [String!]!, mapLinks: [String!]! |
RentalScheduleStopOne stop (an order) of the run sheet. | key: String!, section: String!, orderId: ID, orderName: String, customerName: String, email: String, phone: String, address: [String!]!, addressText: String!, mapUrl: String, postcode: String, zone: String, window: String, windowLabel: String, at: String, items: [RentalScheduleItem!]!, bookingIds: [ID!]!, note: String, status: String!, late: Boolean!, tracking: String |
RentalScheduleItem | bookingId: ID!, title: String, variantTitle: String, quantity: Int! |
RentalDeliveryFeeLineA delivery fee cart line . | merchandiseId: ID!, amount: String!, stop: String!, token: String!, properties: JSON!, attributes: [RentalAttribute!]! |
Balances #
| Type | Fields |
|---|---|
RentalBalanceThe 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!]! |
RentalBalancePayload | balance: RentalBalance, userErrors: [RentalUserError!]! |
| Enum | Values |
|---|---|
RentalBalanceMethod | ORDER_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 – The outstanding amount of a POS split payment. |
Subscriptions #
| Type | Fields |
|---|---|
RentalSubscriptionA rental billed per period: an ongoing rental (until returned) or a fixed-term one (N periods). | id: ID!, legacyResourceId: Int!, bookingId: ID, orderId: ID, orderName: String, customerId: ID, source: RentalBillingSource!, sellingPlanId: ID, planName: String, interval: String!, everyLabel: String!, term: String!, cycles: Int, cyclesPaid: Int!, periodPrice: String!, currency: String!, status: RentalSubscriptionStatus!, start: String!, paidThrough: String, nextDue: String, holdUntil: String, returnBy: String, endedReason: String, summary: String!, periods: [RentalSubscriptionPeriod!]! |
RentalSubscriptionPeriodOne billing period of a rental billed per period. | cycle: Int!, start: String!, end: String!, due: String!, status: RentalSubscriptionPeriodStatus!, via: String, amount: String!, currency: String!, orderId: ID, orderName: String, paidAt: String |
RentalSubscriptionPayload | subscription: RentalSubscription, userErrors: [RentalUserError!]! |
RentalReserveSubscriptionThe subscription of a held rental: pass sellingPlan with the cart line (Online Store /cart/add.js selling_plan, Storefront API sellingPlanId). | billing: RentalBillingSource!, sellingPlan: Int, planName: String, interval: String!, everyLabel: String!, term: String!, cycles: Int, periodPrice: String!, currency: String!, holdUntil: String, termEnd: String, consent: String!, consentAmounts: [String!]! |
| Enum | Values |
|---|---|
RentalBillingSource | EXTERNAL – Another app’s subscription (a selling plan on the rent variant): the app charges, we hold the stock.INVOICE – Our invoice each period: a Shopify payment link.CONTRACT – Our own subscription contract. |
RentalSubscriptionStatus | ACTIVEPAUSEDPAST_DUE – A period wasn’t paid by its due date plus the store’s grace days.ENDING – Ended by the customer, staff or Flow: due back by returnBy.ENDED – Every unit is back.CANCELLEDOWNED |
RentalSubscriptionPeriodStatus | DUEPAIDFAILEDSKIPPEDWAIVEDREFUNDEDCANCELLED |
POS alerts #
| Type | Fields |
|---|---|
RentalPosAlertA rent item rung up at POS without the Rentals desk: no dates, no booking. | id: ID!, legacyResourceId: String!, kind: String!, status: RentalPosAlertStatus!, orderId: ID!, orderName: String, productId: ID, variantId: ID!, title: String, variantTitle: String, quantity: Int!, unitPrice: String, currency: String, customerId: ID, customerName: String, bookingId: ID, note: String, text: String!, createdAt: String, resolvedAt: String |
RentalPosAlertPayload | alert: RentalPosAlert, userErrors: [RentalUserError!]! |
| Enum | Values |
|---|---|
RentalPosAlertStatus | OPEN – Waiting for the merchant: book the dates or refund it.BOOKED – Booked: a booking is attached to the order line.DISMISSED – Dismissed (refunded, cancelled, or sold on purpose). |
Calendar sync #
| Type | Fields |
|---|---|
RentalCalendarSync | productId: ID!, rentalType: String, feeds: RentalCalendarFeeds!, variants: [RentalCalendarVariant!]!, imports: [RentalCalendarImport!]! |
RentalCalendarFeeds | availability: RentalCalendarFeed!, operational: RentalCalendarFeed, variants: [RentalCalendarVariantFeeds!]!, locations: [RentalCalendarLocationFeeds!]! |
RentalCalendarLocationFeeds | locationId: ID!, name: String!, availability: RentalCalendarFeed!, operational: RentalCalendarFeed |
RentalCalendarFeed | flavour: RentalCalendarFeedFlavour!, url: String!, rotatedAt: String, lastAccessAt: String |
RentalCalendarVariantFeeds | variantId: ID!, title: String, availability: RentalCalendarFeed!, operational: RentalCalendarFeed |
RentalCalendarVariant | id: ID!, title: String, units: Int! |
RentalCalendarImportA 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! |
RentalCalendarSyncPayload | calendarSync: RentalCalendarSync, userErrors: [RentalUserError!]! |
RentalCalendarImportPayload | calendarImport: RentalCalendarImport, result: RentalCalendarSyncResult, userErrors: [RentalUserError!]! |
RentalCalendarSyncResultWhat a read of an imported calendar did. | status: String!, message: String, added: Int, updated: Int, removed: Int, events: Int |
RentalCalendarImportDeletePayload | deletedCalendarImportId: ID, userErrors: [RentalUserError!]! |
Rental settings and API keys #
| Type | Fields |
|---|---|
RentalSettingsImportPayload | report: RentalSettingsImportReport, userErrors: [RentalUserError!]! |
RentalSettingsImportReport | dryRun: Boolean!, summary: JSON!, products: [RentalSettingsImportProduct!]!, errors: JSON!, unknownColumns: [String!]! |
RentalSettingsImportProduct | productId: ID!, title: String, lines: [Int!]!, action: String, changes: JSON, errors: JSON, warnings: JSON, result: JSON |
RentalApiKey | id: ID!, legacyResourceId: Int!, name: String!, prefix: String!, lastFour: String, scopes: [String!]!, createdAt: String, lastUsedAt: String, revokedAt: String |
RentalApiKeyCreatePayload | apiKey: RentalApiKey, secret: String, userErrors: [RentalUserError!]! |
RentalApiKeyPayload | apiKey: RentalApiKey, userErrors: [RentalUserError!]! |
