GuestReady Reservations API

The reservations API from GuestReady — 6 operation(s) for reservations.

Business capability
Reservation Capture BC-4020.10

Operations 9

GET /api/v3/reservations/ #
POST /api/v3/reservations/ #
GET /api/v3/reservations/{id}/ #
PATCH /api/v3/reservations/{id}/ #
PATCH /api/v3/reservations/{id}/cancel/ #
GET /api/v3/reservations/{id}/custom_fields/ #
POST /api/v3/reservations/{id}/custom_fields/ #
PATCH /api/v3/reservations/{id}/update_arrival_time/ #
PATCH /api/v3/reservations/{id}/update_key_code/ #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/guestready-reservations-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

guestready-reservations-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: RentalReady Reservations API
  version: 1.0.0 (api)
  description: 'This API enables you to access and update resources from RentalReady (GuestReady PMS)


    ### Throttling


    Our API supports up to 400 requests per minute

    '
servers:
- url: https://pms.rentalready.io/api/v3/
  description: Base URL declared by the provider in apis.yml (roadmap#122).
tags:
- name: reservations
paths:
  /api/v3/reservations/:
    get:
      operationId: reservations_list
      description: Mixin that adds custom-fields GET/POST actions to entity ViewSets.
      parameters:
      - in: query
        name: checkin_date_after
        schema:
          type: string
          format: date
      - in: query
        name: checkin_date_before
        schema:
          type: string
          format: date
      - in: query
        name: checkout_date_after
        schema:
          type: string
          format: date
      - in: query
        name: checkout_date_before
        schema:
          type: string
          format: date
      - in: query
        name: created_after
        schema:
          type: string
          format: date-time
      - in: query
        name: created_before
        schema:
          type: string
          format: date-time
      - name: cursor
        required: false
        in: query
        description: 'Opt-in cursor pagination: pass an empty value to get the first page, then follow the `next` links. While paginating with a cursor, `offset` is ignored, the response contains no `count`, and only primary-key orderings are supported.'
        schema:
          type: string
      - in: query
        name: is_extension
        schema:
          type: boolean
      - in: query
        name: is_relocation
        schema:
          type: boolean
      - name: limit
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      - in: query
        name: modified_after
        schema:
          type: string
          format: date-time
      - in: query
        name: modified_before
        schema:
          type: string
          format: date-time
      - name: offset
        required: false
        in: query
        description: The initial index from which to return the results.
        schema:
          type: integer
      - name: ordering
        required: false
        in: query
        description: Which field to use when ordering the results.
        schema:
          type: string
      - in: query
        name: rental_id
        schema:
          type: string
        description: 'Multiple rental_id parameters are accepted. Example: rental_id=0000&rental_id=0001'
      - in: query
        name: reservation_type
        schema:
          type: string
      - in: query
        name: status
        schema:
          type: array
          items:
            type: string
        explode: true
        style: form
      tags:
      - reservations
      security:
      - oauth2:
        - reservations:read
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedReservationList'
          description: ''
    post:
      operationId: reservations_create
      description: Mixin that adds custom-fields GET/POST actions to entity ViewSets.
      parameters:
      - in: query
        name: rental_id
        schema:
          type: string
        description: 'Multiple rental_id parameters are accepted. Example: rental_id=0000&rental_id=0001'
      tags:
      - reservations
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReservationCreate'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/ReservationCreate'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/ReservationCreate'
        required: true
      security:
      - oauth2:
        - reservations:write
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReservationCreate'
          description: ''
  /api/v3/reservations/{id}/:
    get:
      operationId: reservations_retrieve
      description: Mixin that adds custom-fields GET/POST actions to entity ViewSets.
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this reservation.
        required: true
      - in: query
        name: rental_id
        schema:
          type: string
        description: 'Multiple rental_id parameters are accepted. Example: rental_id=0000&rental_id=0001'
      tags:
      - reservations
      security:
      - oauth2:
        - reservations:read
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Reservation'
          description: ''
    patch:
      operationId: reservations_partial_update
      description: Mixin that adds custom-fields GET/POST actions to entity ViewSets.
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this reservation.
        required: true
      - in: query
        name: rental_id
        schema:
          type: string
        description: 'Multiple rental_id parameters are accepted. Example: rental_id=0000&rental_id=0001'
      tags:
      - reservations
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedReservationCreate'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedReservationCreate'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedReservationCreate'
      security:
      - oauth2:
        - reservations:write
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReservationCreate'
          description: ''
  /api/v3/reservations/{id}/cancel/:
    patch:
      operationId: reservations_cancel_partial_update
      description: Mixin that adds custom-fields GET/POST actions to entity ViewSets.
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this reservation.
        required: true
      - in: query
        name: rental_id
        schema:
          type: string
        description: 'Multiple rental_id parameters are accepted. Example: rental_id=0000&rental_id=0001'
      tags:
      - reservations
      security:
      - oauth2:
        - reservations:write
      responses:
        '200':
          content:
            application/json:
              schema:
                example:
                  message: Reservation cancelled
          description: ''
  /api/v3/reservations/{id}/custom_fields/:
    get:
      operationId: reservations_custom_fields_retrieve
      description: Get the custom-field values set on this object, as a mapping of custom field key to value.
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this reservation.
        required: true
      - in: query
        name: rental_id
        schema:
          type: string
        description: 'Multiple rental_id parameters are accepted. Example: rental_id=0000&rental_id=0001'
      tags:
      - reservations
      security:
      - oauth2:
        - reservations:read
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Reservation'
          description: ''
    post:
      operationId: reservations_custom_fields_create
      description: Set custom-field values on this object. Send a mapping of custom field key to value; keys left out keep their current value, and a key with no definition on this account is rejected.
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this reservation.
        required: true
      - in: query
        name: rental_id
        schema:
          type: string
        description: 'Multiple rental_id parameters are accepted. Example: rental_id=0000&rental_id=0001'
      tags:
      - reservations
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReservationCreate'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/ReservationCreate'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/ReservationCreate'
        required: true
      security:
      - oauth2:
        - reservations:write
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReservationCreate'
          description: ''
  /api/v3/reservations/{id}/update_arrival_time/:
    patch:
      operationId: reservations_update_arrival_time_partial_update
      description: 'Update the expected guest arrival time. The check-in mission is rescheduled and its assigned agent asked to re-confirm. No guest notification is sent: when late_checkin_payment_pending comes back true, the late check-in fee still has to be collected.'
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this reservation.
        required: true
      - in: query
        name: rental_id
        schema:
          type: string
        description: 'Multiple rental_id parameters are accepted. Example: rental_id=0000&rental_id=0001'
      tags:
      - reservations
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedReservationArrivalTimeUpdate'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedReservationArrivalTimeUpdate'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedReservationArrivalTimeUpdate'
      security:
      - oauth2:
        - reservations:write
      responses:
        '200':
          content:
            application/json:
              schema:
                example:
                  message: reservation updated
                  arrival_time: '23:00:00'
                  late_checkin_payment_pending: true
          description: ''
  /api/v3/reservations/{id}/update_key_code/:
    patch:
      operationId: reservations_update_key_code_partial_update
      description: Mixin that adds custom-fields GET/POST actions to entity ViewSets.
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this reservation.
        required: true
      - in: query
        name: rental_id
        schema:
          type: string
        description: 'Multiple rental_id parameters are accepted. Example: rental_id=0000&rental_id=0001'
      tags:
      - reservations
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                key_code:
                  type: string
                  example: 1234abc
                  description: A string representing the key code.
              required:
              - key_code
      security:
      - oauth2:
        - reservations:write
      responses:
        '200':
          content:
            application/json:
              schema:
                example:
                  message: key_code updated
          description: ''
        '400':
          content:
            application/json:
              schema:
                example:
                  message: invalid key_code
          description: ''
components:
  schemas:
    Status3eaEnum:
      enum:
      - TENTATIVE
      - NEW
      - ARCHIVED
      - CANCELLED
      - CANCELLED_FEE
      type: string
      description: '* `TENTATIVE` - Tentative

        * `NEW` - New

        * `ARCHIVED` - Archived

        * `CANCELLED` - Cancelled

        * `CANCELLED_FEE` - Cancelled with fee'
    SwiklyDepositEmbedded:
      type: object
      properties:
        status:
          allOf:
          - $ref: '#/components/schemas/Status6f9Enum'
          readOnly: true
          description: 'Swikly security-deposit status. Possible values: `NOT_PAID` — not yet paid; `PAID` — paid.


            * `NOT_PAID` - NOT_PAID

            * `PAID` - PAID'
        amount:
          type: number
          format: double
      required:
      - amount
      - status
    BlockedReasonEnum:
      enum:
      - HOST_STAY
      - MAINTENANCE
      - OTHER
      - PARTIAL_OCCUPANCY
      - FULL_OCCUPANCY
      - BLOCKED_BY_HOST
      - UPSELLING_REQUEST
      type: string
      description: '* `HOST_STAY` - Owner stay

        * `MAINTENANCE` - Maintenance

        * `OTHER` - Other

        * `PARTIAL_OCCUPANCY` - Partially occupied

        * `FULL_OCCUPANCY` - Fully occupied

        * `BLOCKED_BY_HOST` - Blocked by owner

        * `UPSELLING_REQUEST` - Upselling request'
    Status1a4Enum:
      enum:
      - AUTHORIZED
      - NOT_PAID
      - PAID
      - FAILED
      - VOIDED
      - PROCESSED
      type: string
      description: '* `AUTHORIZED` - Authorized

        * `NOT_PAID` - Not paid

        * `PAID` - Paid

        * `FAILED` - Failed

        * `VOIDED` - Voided

        * `PROCESSED` - Processed'
    PaidToEnum:
      enum:
      - HOST
      - PROPERTY_MANAGER
      type: string
      description: '* `HOST` - Owner

        * `PROPERTY_MANAGER` - Property manager'
    PaginatedReservationList:
      type: object
      required:
      - results
      properties:
        count:
          type: integer
          example: 123
          description: Only present when paginating with `limit`/`offset`, not with `cursor`.
        next:
          type:
          - string
          - 'null'
          format: uri
          example: http://api.example.org/accounts/?offset=400&limit=100
        previous:
          type:
          - string
          - 'null'
          format: uri
          example: http://api.example.org/accounts/?offset=200&limit=100
        results:
          type: array
          items:
            $ref: '#/components/schemas/Reservation'
        limit:
          type: integer
          example: 100
          description: Only present when paginating with `limit`/`offset`, not with `cursor`.
    ReservationCreate:
      type: object
      properties:
        guest_preferred_language:
          type:
          - string
          - 'null'
        currency:
          oneOf:
          - $ref: '#/components/schemas/CurrencyD53Enum'
          - $ref: '#/components/schemas/BlankEnum'
        payment_fee:
          type: string
          format: decimal
          pattern: ^-?\d{0,13}(?:\.\d{0,2})?$
          description: 'Deprecated: any submitted value is ignored. The payment fee is computed from the platform/property-level rate configured in RentalReady.'
        reservation_type:
          allOf:
          - $ref: '#/components/schemas/ReservationTypeEnum'
          default: CLASSIQUE
        check_in_internal_comment:
          type: string
          description: Visible to staff only
        platform_reservation_id:
          type:
          - string
          - 'null'
          maxLength: 50
        id:
          type: integer
          readOnly: true
        rental_id:
          type: string
          description: Id of the property (rental) the reservation is for.
        booked_at:
          type: string
          readOnly: true
          description: Timestamp when the booking was originally placed on the source platform (ISO 8601, e.g. 2026-07-04T09:00:00Z); falls back to when the reservation was first created in the system.
        reservation_platform_id:
          type: integer
          description: Id of the reservation platform (the booking channel) the reservation belongs to.
        checkin_date:
          type: string
          format: date
          description: Check-in date, the first night of the stay (YYYY-MM-DD).
        checkout_date:
          type: string
          format: date
          description: Check-out date, the day the guest leaves (YYYY-MM-DD); falls after the check-in date.
        rental_amount:
          type: string
          format: decimal
          pattern: ^-?\d{0,13}(?:\.\d{0,2})?$
        platform_cleaning_fee:
          type: string
          format: decimal
          pattern: ^-?\d{0,13}(?:\.\d{0,2})?$
        invoiced_cleaning_fee:
          type: string
          format: decimal
          pattern: ^-?\d{0,13}(?:\.\d{0,2})?$
        platform_fee:
          type: string
          format: decimal
          pattern: ^-?\d{0,13}(?:\.\d{0,2})?$
        guest_first_name:
          type: string
          maxLength: 90
        guest_last_name:
          type: string
          maxLength: 150
        guest_email:
          type:
          - string
          - 'null'
          format: email
          maxLength: 254
        guest_phone_number:
          type: string
        guest_personal_email:
          type: string
        arrival_time:
          type: string
          format: time
          description: Expected guest arrival time on the check-in date (e.g. 15:00:00).
        departure_time:
          type: string
          format: time
          description: Expected guest departure time on the check-out date (e.g. 11:00:00).
        number_of_adults:
          type: integer
          description: Number of adults staying on the reservation.
        number_of_children:
          type: integer
          description: Number of children staying on the reservation.
        number_of_infants:
          type: integer
          description: Number of infants staying on the reservation (at most 5).
        number_of_pets:
          type: integer
          description: Number of pets on the reservation.
        city_tax:
          type: string
          format: decimal
          pattern: ^-?\d{0,13}(?:\.\d{0,2})?$
        status:
          $ref: '#/components/schemas/Status3eaEnum'
        is_stay_relocation:
          type:
          - boolean
          - 'null'
          title: Is this a stay relocation?
        is_stay_extension:
          type:
          - boolean
          - 'null'
          title: Is this a stay extension?
        blocked_reason:
          oneOf:
          - $ref: '#/components/schemas/BlockedReasonEnum'
          - $ref: '#/components/schemas/BlankEnum'
          - $ref: '#/components/schemas/NullEnum'
        blocked_notes:
          type:
          - string
          - 'null'
        internal_comment:
          type: string
          description: Visible to staff only
        return_cleaning:
          title: Owner return cleaning
          oneOf:
          - $ref: '#/components/schemas/ReturnCleaningEnum'
          - $ref: '#/components/schemas/BlankEnum'
          - $ref: '#/components/schemas/NullEnum'
        departure_cleaning:
          title: Owner departure cleaning
          oneOf:
          - $ref: '#/components/schemas/DepartureCleaningEnum'
          - $ref: '#/components/schemas/BlankEnum'
          - $ref: '#/components/schemas/NullEnum'
        platform_payment_fees:
          type: string
          readOnly: true
        passport_number:
          type:
          - string
          - 'null'
          maxLength: 50
        guest_invoice:
          $ref: '#/components/schemas/GuestInvoice'
        guidebook_url:
          type:
          - string
          - 'null'
          format: uri
          maxLength: 200
        user:
          type: string
          readOnly: true
      required:
      - booked_at
      - checkin_date
      - checkout_date
      - city_tax
      - guest_personal_email
      - guest_phone_number
      - id
      - invoiced_cleaning_fee
      - number_of_adults
      - number_of_children
      - platform_cleaning_fee
      - platform_fee
      - platform_payment_fees
      - rental_amount
      - rental_id
      - reservation_platform_id
      - user
    MidTermPeriodBreakdown:
      type: object
      properties:
        period_start_date:
          type: string
          format: date
        period_end_date:
          type: string
          format: date
        payment_due_date:
          type: string
          format: date
        total_guest_payment:
          type: string
          format: decimal
          pattern: ^-?\d{0,13}(?:\.\d{0,2})?$
        rental_income:
          type: string
          format: decimal
          pattern: ^-?\d{0,13}(?:\.\d{0,2})?$
        platform_fees:
          type: string
          format: decimal
          pattern: ^-?\d{0,13}(?:\.\d{0,2})?$
        city_tax:
          type: string
          format: decimal
          pattern: ^-?\d{0,13}(?:\.\d{0,2})?$
        cleaning_fee_share:
          type: string
          format: decimal
          pattern: ^-?\d{0,13}(?:\.\d{0,2})?$
        pm_commission:
          type: string
          format: decimal
          pattern: ^-?\d{0,13}(?:\.\d{0,2})?$
        owner_net_payout:
          type: string
          format: decimal
          pattern: ^-?\d{0,13}(?:\.\d{0,2})?$
      required:
      - city_tax
      - cleaning_fee_share
      - owner_net_payout
      - payment_due_date
      - period_end_date
      - period_start_date
      - platform_fees
      - pm_commission
      - rental_income
      - total_guest_payment
    GuestInvoice:
      type: object
      properties:
        email:
          type:
          - string
          - 'null'
          format: email
          title: Recipient email
          maxLength: 254
        country_name:
          type: string
          readOnly: true
        city:
          type:
          - string
          - 'null'
          maxLength: 50
        name:
          type:
          - string
          - 'null'
          maxLength: 75
        company:
          type:
          - string
          - 'null'
          title: Company name
          maxLength: 255
        tax_number:
          type:
          - string
          - 'null'
          maxLength: 255
        address:
          type:
          - string
          - 'null'
          maxLength: 200
      required:
      - country_name
    VoucherRedemption:
      type: object
      properties:
        code:
          type: string
        voucher_amount:
          type: string
          format: decimal
          pattern: ^-?\d{0,8}(?:\.\d{0,2})?$
      required:
      - code
      - voucher_amount
    Reservation:
      type: object
      description: Renders custom-field values under `custom_fields`, skipped on list actions.
      properties:
        number:
          type: string
          description: Guest-facing booking reference generated by the system and shared with the guest, distinct from the platform's own reservation id.
        created_at:
          type: string
          format: date-time
          readOnly: true
          description: Timestamp when the reservation record was created in the system (ISO 8601, e.g. 2026-07-04T09:00:00Z).
        modified_at:
          type: string
          format: date-time
          readOnly: true
          description: Timestamp when the reservation was last modified (ISO 8601, e.g. 2026-07-04T09:00:00Z).
        source:
          type: string
          description: Name of the platform (booking channel) the reservation came from, e.g. the connected OTA or a direct booking.
        currency:
          description: 'ISO 4217 currency code of the reservation''s monetary amounts, e.g. EUR.


            * `AED` - AED

            * `AUD` - AUD

            * `BRL` - BRL

            * `CAD` - CAD

            * `CHF` - CHF

            * `CZK` - CZK

            * `EUR` - EUR

            * `GBP` - GBP

            * `HKD` - HKD

            * `IDR` - IDR

            * `ILS` - ILS

            * `JPY` - JPY

            * `KRW` - KRW

            * `MAD` - MAD

            * `MYR` - MYR

            * `PLN` - PLN

            * `RUB` - RUB

            * `SAR` - SAR

            * `THB` - THB

            * `USD` - USD'
          oneOf:
          - $ref: '#/components/schemas/CurrencyD53Enum'
          - $ref: '#/components/schemas/BlankEnum'
        reservation_status:
          allOf:
          - $ref: '#/components/schemas/ReservationStatusEnum'
          readOnly: true
          description: 'Reservation lifecycle status. Possible values: `pending` — a tentative/held reservation (e.g. an unconfirmed manual quote hold); `accepted` — a confirmed booking; `cancelled` — a cancelled booking. Note: guest inquiries never appear here. An inquiry is not a reservation — read inquiry state from the inquiries endpoint or a conversation''s `inquiry_ids`. A reservation (and therefore this field) only exists once a booking is confirmed or created as an internal tentative hold.


            * `pending` - pending

            * `accepted` - accepted

            * `cancelled` - cancelled'
        reservation_type:
          allOf:
          - $ref: '#/components/schemas/ReservationTypeEnum'
          readOnly: true
          description: 'Kind of reservation, distinguishing a real guest booking from an owner (blocking) stay or a placeholder booking.


            * `CLASSIQUE` - CLASSIQUE

            * `FAUSSE` - FAUSSE

            * `PROPRIETAIRE` - PROPRIETAIRE'
        is_owner:
          type: boolean
          description: True when the reservation is an owner stay that blocks the property for the owner's own use rather than a paying guest booking.
        property_manager_commission:
          type: string
          format: decimal
          pattern: ^-?\d{0,13}(?:\.\d{0,2})?$
        pms_fee:
          type: string
          format: decimal
          pattern: ^-?\d{0,13}(?:\.\d{0,2})?$
        payment_fee:
          type: string
          format: decimal
          pattern: ^-?\d{0,13}(?:\.\d{0,2})?$
        guest_preferred_language:
          type: string
          description: Name of the guest's preferred language, e.g. English.
        total_paid_by_guest:
          type: string
          format: decimal
          pattern: ^-?\d{0,13}(?:\.\d{0,2})?$
        payment_links_deposits:
          type: array
          items:
            $ref: '#/components/schemas/PaymentLinkSecurityDeposit'
          readOnly: true
          description: This field is deprecated and will be removed in the v4. Use the payment_links endpoint instead.
        swikly_deposit:
          allOf:
          - $ref: '#/components/schemas/SwiklyDepositEmbedded'
          readOnly: true
          description: This field is deprecated and will be removed in the v4. Use the swikly_deposits endpoint instead.
        keynest_code:
          type:
          - string
          - 'null'
          readOnly: true
          description: KeyNest collection code for the check-in, or null if none.
        keynest_access_link:
          type:
          - string
          - 'null'
          readOnly: true
          description: KeyNest access link for the check-in, or null if none.
        igloohome_code:
          type:
          - string
          - 'null'
          readOnly: true
          description: Igloohome lock code for the check-in, or null if none.
        key_code:
          type: string
        cancellation_date:
          type:
          - string
          - 'null'
          format: date-time
          description: Timestamp when the reservation was cancelled (ISO 8601, e.g. 2026-07-04T09:00:00Z); set once a cancellation takes place.
        guest_reservation_id:
          type: string
          description: Guest-facing booking reference; the same value as `number`.
        platform_reservation_id:
          type: string
          description: Identifier of the reservation on the external booking platform, as assigned by that platform.
        cleaning_internal_comment:
          type: string
          description: Cleaning note for the reservation, visible to staff only.
        cleaning_external_comment:
          type: string
          description: Cleaning note for the reservation, visible to staff and the assigned agent.
        check_in_internal_comment:
          type: string
          description: Check-in note for the reservation, visible to staff only.
        check_in_external_comment:
          type: string
          description: Check-in note for the reservation, visible to staff and the assigned agent.
        check_out_internal_comment:
          type: string
          description: Check-out note for the reservation, visible to staff only.
        check_out_external_comment:
          type: string
          description: Check-out note for the reservation, visible to staff and the assigned agent.
        is_stay_extension:
          type:
          - boolean
          - 'null'
          title: Is this a stay extension?
          description: Flag marking the reservation as an extension of an earlier stay.
        relocated_from_id:
          type: integer
          description: Id of the reservation this one was relocated from, when the stay was moved over from another property.
        voucher_redemption:
          type: array
          items:
            $ref: '#/components/schemas/VoucherRedemption'
          readOnly: true
        branch_name:
          type: string
          description: Name of the branch the reservation's office belongs to.
        office_name:
          type: string
          description: Name of the office managing the reservation's property.
        owner_net_earnings:
          type: string
          format: decimal
          pattern: ^-?\d{0,13}(?:\.\d{0,2})?$
        guest_total_to_pay:
          type: string
          format: decimal
          pattern: ^-?\d{0,13}(?:\.\d{0,2})?$
          readOnly: true
          title: Total to pay
          description: Total amount to be paid by the guest.
        extra_fees:
          type: array
          items:
            $ref: '#/components/schemas/ReservationExtraFee'
        id_verification_status:
          allOf:
          - $ref: '#/components/schemas/IdVerificationStatusEnum'
          readOnly: true
          description: 'Status of the guest''s identity verification: not verified, pending, verified, or failed.


            * `NOT_VERIFIED` - NOT_VERIFIED

            * `PENDING` - PENDING

            * `VERIFIED` - VERIFIED

            * `FAILED` - FAILED'
        reviewed_by:
          type: string
          readOnly: true
          description: Username of the staff member who reviewed the guest's identity document.
        rate_plan_name:
          type:
          - string
          - 'null'
          description: Name of the rate plan applied to the reservation; rate_plan_display_name gives its human-friendly label.
          maxLength: 255
        rate_plan_display_name:
          type: string
          readOnly: true
          description: Human-friendly display name of the rate plan applied to the reservation.
        mid_term_period_breakdown:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/MidTermPeriodBreakdown'
          readOnly: true
          description: Per-period rent breakdown for a mid-term stay, or null when the reservation is not mid-term.
        id:
          type: integer
          readOnly: true
          description: Id of the reservation (booking) in the system.
        rental_id:
          type: string
          description: Id of the property (rental) the reservation is for.
        booked_at:
          type: string
          readOnly: true
          description: Timestamp when the booking was originally placed on the source platform (ISO 8601, e.g. 2026-07-04T09:00:00Z); falls back to when the reservation was first created in the system.
        reservation_platform_id:
          type: integer
          description: Id of the reservation platform (the booking channel) the reservation belongs to.
        checkin_date:
          type: string
  

# --- truncated at 32 KB (50 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/guestready/refs/heads/main/openapi/guestready-reservations-api-openapi.yml