---
title: "Get pet blockout ranges overlapping a stay window"
method: GET
path: "/properties/{property_id}/pet-blockouts"
tags: ["Propertys"]
---

# Get pet blockout ranges overlapping a stay window

`GET /properties/{property_id}/pet-blockouts`

## Request

- Base URL: `http://localhost:8000`
- URL: `http://localhost:8000/properties/{property_id}/pet-blockouts`
- Auth: none declared

Return blockout ranges that overlap ``[start, end - 1]``.

``start`` must be strictly before ``end`` and the span must not exceed
one year to keep payloads bounded. The response is always a 200 with
a (possibly empty) ``ranges`` list — there is no 404 for properties
that have never configured a schedule, only for missing property ids.

## Path parameters

- `property_id` integer, required: Property ID

## Query parameters

- `start` string, date, required: Stay check-in date (inclusive)
- `end` string, date, required: Stay check-out date (exclusive — matches booking convention)
- `country` 'AU' | 'NZ': ISO country code used to scope the public property.

## Headers

- `API-Version` '1'

## Response `200`

Overlapping blockout ranges (possibly empty)

- PetBlockoutStayResponse: Public response for the guest-facing stay-window blockout endpoint. Powers the booking flow's proactive "Book Now" disable: the room-type page fetches this when a guest has dates + pets selected and uses the resulting ranges to gate the booking button before verify runs.
  - `property_id` integer, required
  - `start` string, date, required: Stay check-in date (inclusive)
  - `end` string, date, required: Stay check-out date (exclusive — matches booking convention)
  - `ranges` ResolvedBlockoutRange[]: Blockout ranges that overlap the stay's night window
    - `start` string, date, required
    - `end` string, date, required
    - `source` 'preset' | 'custom', required
    - `label` string, required: Display label for UI and booking rejections
    - `preset_key` string, nullable: Preset key when source == 'preset', otherwise null
  - `note` string, nullable: Optional admin caption (`properties.pet_blockout_note`). Returned when set on the property; the frontend renders it only when the stay is actually blocked, per the Phase E 'immediately relevant' guest-display principle.

## Other responses

- `400`: Invalid stay window
- `404`: Property not found
- `422`: Validation Error

---

[API](https://skmtc.dev/totalparks/apis/total-parks-public-api.md) · [All operations](https://skmtc.dev/totalparks/apis/total-parks-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/totalparks/apis/total-parks-public-api/revisions/dcb4c822e2c6?raw)
