---
title: "Date-independent equipment fit for site room types"
method: GET
path: "/properties/{property_id}/equipment-fit"
tags: ["Propertys"]
---

# Date-independent equipment fit for site room types

`GET /properties/{property_id}/equipment-fit`

## Request

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

Date-independent equipment fit for a property's site room types.

Answers "can this rig physically fit?" without picking dates, so the
property page can disable non-fitting site room types as soon as a
guest enters equipment, and agents can compare fit before checking
availability. Only guest-visible **site** room types are returned;
accommodation room types have no equipment-fit concept and are omitted
(treat them as always fitting).

Fit combines three orthogonal signals (see ``RoomTypeEquipmentFit``):
``dimensions_pending``, ``equipment_type_excluded``, and
``sites_matching``. The dimension rules (length strict, width relaxed)
are shared with ``GET /properties/{id}/availability`` so the date-gated
calendar and this endpoint never diverge.

## Path parameters

- `property_id` integer, required

## Query parameters

- `equipment_length` number, nullable: Equipment length in metres (enables dimension fit).
- `equipment_width` number, nullable: Equipment width in metres (optional, relaxed filter).
- `equipment_type` string, nullable: Canonical equipment type (e.g. 'caravan', 'motorhome') for RMS dwelling-type compatibility checking.
- `room_type_id` integer, nullable: Restrict the result to a single site room type.
- `country` 'AU' | 'NZ': ISO country code used to scope public property inventory.

## Headers

- `API-Version` '1'

## Response `200`

Successful Response

- PropertyEquipmentFitResponse: Date-free equipment-fit result across a property's site room types.
  - `property_id` integer, required: Property the verdicts belong to.
  - `equipment_length` number, nullable: Echoed equipment length (metres) used for dimension fit.
  - `equipment_width` number, nullable: Echoed equipment width (metres) used for dimension fit.
  - `equipment_type` string, nullable: Echoed canonical equipment type used for RMS type compatibility.
  - `room_types` RoomTypeEquipmentFit[], required: Per-site-room-type fit verdicts. Only guest-visible site room types are included; accommodation room types are omitted.
    - `room_type_id` integer, required: ID of the site room type this verdict applies to.
    - `is_site` boolean, required: Always true — only site room types are evaluated for equipment fit. Accommodation (cabins, villas) is omitted from the response and should be treated as always fitting.
    - `dimensions_pending` boolean, required: True when the park has not configured per-site dimensions for this room type yet. Fit cannot be verified, so the room type is treated as not fitting (an onboarding gap, not a guest-side mismatch).
    - `equipment_type_excluded` boolean, required: True when an equipment_type was supplied and the room type's RMS category does not accept it. Lenient by default: false when the category has no dwelling-type allocations at all.
    - `sites_matching` integer, nullable: Number of individual sites whose dimensions and RMS dwelling compatibility fit the equipment. Null when no equipment_length was supplied (dimension fit not evaluated). Length is strict (areas with NULL length excluded); width is relaxed (NULL/0 width passes).
    - `total_sites` integer, required: Total number of individual sites in this room type.
    - `fits_equipment` boolean, required: Convenience verdict: false when dimensions_pending, equipment_type_excluded, or (equipment_length supplied and sites_matching == 0); true otherwise.
    - `unavailable_reason` string, nullable: Human-facing copy for the failing signal, or null when the equipment fits. Programmatic callers should branch on the boolean / count fields, not this string.
    - `physical_sites_matching` integer, nullable: Sites that pass physical length/width checks before RMS dwelling compatibility is applied. Null when no equipment_length was supplied.
    - `dwelling_compatible_sites` integer, nullable: Sites that pass RMS dwelling type/length compatibility before physical fit. Null when RMS compatibility was not evaluated.
    - `compatibility_status` 'compatible' | 'incompatible' | 'unknown' | 'not_evaluated': Overall static compatibility after combining physical dimensions and RMS dwelling rules. Unknown means missing/incomplete dwelling data failed open rather than excluding the site type.
    - `physical_fit_status` 'compatible' | 'incompatible' | 'unknown' | 'not_evaluated': Aggregate physical length/width fit status.
    - `type_compatibility_status` 'compatible' | 'incompatible' | 'unknown' | 'not_evaluated': Aggregate RMS dwelling type compatibility status.
    - `length_compatibility_status` 'compatible' | 'incompatible' | 'unknown' | 'not_evaluated': Aggregate RMS dwelling length-bucket compatibility status.

## Other responses

- `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)
