{
  "openapi": "3.1.0",
  "info": {
    "title": "Resi V2 API",
    "version": "2.0.0",
    "description": "OpenAPI specification for the /api/v2 Laravel API. Resource routes require a Sanctum bearer token scoped to an account: an account API token. Website delivery and preview tokens cannot call this API and get a `403`. Every account-scoped route runs against the token's account by default; a user with access to more than one account can direct a single request at another of their accounts with the optional `account_id` parameter (query string, or JSON body on writes) — for example listing properties for a specific account, or creating a property or connection under it. The account a request resolved to is returned on the `X-Resi-Account-Id` response header. Every path identifier is a **UUID**, except a fee assignment's integer id; a value that is not in the expected form is a `404`. Slug addressing is available only on the V1 connection-scoped portfolio routes, where the slug is resolved against a single portfolio. Create and update payloads are JSON bodies. Media is imported by URL — `POST /api/v2/media` for one item, `POST /api/v2/media/batch` for up to 100 — and Resi downloads and stores each file; uploading a binary body is not supported. Imports deduplicate, so re-running the same import is safe (see the Media tag for the dedup keys)."
  },
  "servers": [
    {
      "url": "{baseUrl}",
      "description": "Resi API host",
      "variables": {
        "baseUrl": {
          "default": "https://v2.getresi.com",
          "enum": [
            "https://v2.getresi.com"
          ]
        }
      }
    }
  ],
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "tags": [
    {
      "name": "Auth",
      "description": "The authenticated user, and the account-scoped API tokens that call this API."
    },
    {
      "name": "Properties",
      "description": "Properties in the account: create, read, update and delete."
    },
    {
      "name": "Buildings",
      "description": "Buildings within a property."
    },
    {
      "name": "Floor Plans",
      "description": "Floor plans within a property."
    },
    {
      "name": "Units",
      "description": "Units within a property, each optionally tied to a floor plan and building."
    },
    {
      "name": "Amenities",
      "description": "Amenities attached to properties, floor plans or units."
    },
    {
      "name": "Fees",
      "description": "The account fee library. Fees are assigned to properties and feed pricing."
    },
    {
      "name": "Reviews",
      "description": "Property reviews, with their rating, source and any reply."
    },
    {
      "name": "Announcements",
      "description": "Announcements shown on property websites, optionally scheduled with a start and end date. Each is global or assigned to properties."
    },
    {
      "name": "Content Blocks",
      "description": "Blocks of marketing copy for property websites. Each is global or assigned to properties."
    },
    {
      "name": "FAQs",
      "description": "Frequently asked questions shown on property websites.",
      "x-displayName": "FAQs"
    },
    {
      "name": "Galleries",
      "description": "Named collections of media. Each is global or assigned to properties."
    },
    {
      "name": "Neighborhood Categories",
      "description": "Account-wide categories that neighborhood places are filed under. Managing them requires the account Admin role (staff qualify). Every account created — in the admin panel or with POST /api/v2/accounts — starts with nine default categories: Bars, Coffee, Groceries, Personal Care, Public Transit, Restaurants, Schools, Shopping, Activities. They carry sort_order 0 and so list alphabetically until reordered. Categories have no enabled flag: a category with no places simply does not render."
    },
    {
      "name": "Neighborhood Places",
      "description": "Points of interest near a property, filed under a neighborhood category."
    },
    {
      "name": "Media",
      "description": "Media is imported by URL; Resi downloads and stores files, and stores embeds (videos, virtual tours) as links. Imports are idempotent. A **file** deduplicates within the account on its source `url` first and its `reference_id` second: a match re-attaches the existing asset to the parent (slot and sort_order updated) instead of downloading again, and caption, alt_text and tags on the existing asset are left as they are (change them with PATCH /api/v2/media/{media}). A `reference_id` match whose `url` differs replaces the stored file with the new download. An **embed** deduplicates on parent + `embed_type` + `url`: a repeat updates that embed's title, provider, settings, tags and sort_order rather than adding a copy. Give each file a stable `reference_id` (for example the source system's image id) so a changed CDN url still lands on the same asset."
    },
    {
      "name": "Accounts",
      "description": "The accounts the authenticated user belongs to."
    },
    {
      "name": "Connections",
      "description": "Integrations with external systems (PMS, CRM and others), the properties they cover, and on-demand sync runs."
    },
    {
      "name": "Users",
      "description": "Users in the account."
    },
    {
      "name": "Lead Sources",
      "description": "The lead sources that attribute where a lead came from."
    },
    {
      "name": "Property Settings",
      "description": "A property's settings in one read: attributes, connections, domain settings and fees."
    },
    {
      "name": "Instagram",
      "description": "The Instagram feed of a property with a connected Instagram account."
    },
    {
      "name": "Groups",
      "description": "Group sets and the groups in them: how properties, buildings, floor plans and units are organised, and the group filter on every inventory list."
    },
    {
      "name": "Websites",
      "description": "The account's websites, the content types each carries, and their content entries. Websites and content types are read-only here; entries are writable."
    },
    {
      "name": "Leads",
      "description": "Leads: form submissions and tour bookings. Read-only; leads arrive through websites and the public APIs."
    }
  ],
  "paths": {
    "/api/v2/me": {
      "get": {
        "tags": [
          "Auth"
        ],
        "summary": "Get the authenticated user and accounts",
        "operationId": "getCurrentUser",
        "responses": {
          "200": {
            "description": "Authenticated user",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CurrentUserResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          }
        }
      }
    },
    "/api/v2/tokens": {
      "get": {
        "tags": [
          "Auth"
        ],
        "summary": "List account API tokens",
        "operationId": "listApiTokens",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountIdQuery"
          }
        ],
        "responses": {
          "200": {
            "description": "API tokens",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TokenCollection"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      },
      "post": {
        "tags": [
          "Auth"
        ],
        "summary": "Create an account-scoped API token",
        "operationId": "createApiToken",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TokenCreate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedTokenResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/tokens/{tokenId}": {
      "delete": {
        "tags": [
          "Auth"
        ],
        "summary": "Revoke an account API token",
        "operationId": "revokeApiToken",
        "parameters": [
          {
            "name": "tokenId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/NoContent"
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      }
    },
    "/api/v2/properties": {
      "get": {
        "tags": [
          "Properties"
        ],
        "summary": "List properties",
        "operationId": "listProperties",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "$ref": "#/components/parameters/PerPage"
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated properties",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PropertyCollection"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      },
      "post": {
        "tags": [
          "Properties"
        ],
        "summary": "Create property",
        "operationId": "createProperty",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PropertyWrite"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created property",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PropertyResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/properties/{property}": {
      "get": {
        "tags": [
          "Properties"
        ],
        "summary": "Get property",
        "operationId": "getProperty",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "property",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Property UUID. This route does not accept a slug."
          }
        ],
        "responses": {
          "200": {
            "description": "property",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PropertyResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      },
      "patch": {
        "tags": [
          "Properties"
        ],
        "summary": "Update property",
        "operationId": "updateProperty",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "property",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Property UUID. This route does not accept a slug."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PropertyWrite"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated property",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PropertyResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      },
      "delete": {
        "tags": [
          "Properties"
        ],
        "summary": "Delete property",
        "operationId": "deleteProperty",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "property",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Property UUID. This route does not accept a slug."
          }
        ],
        "responses": {
          "202": {
            "description": "Deletion queued. The property and its related records are removed by a background job, so it can still be read until the job finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "message"
                  ],
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "additionalProperties": false
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/buildings": {
      "get": {
        "tags": [
          "Buildings"
        ],
        "summary": "List buildings",
        "operationId": "listBuildings",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "$ref": "#/components/parameters/PerPage"
          },
          {
            "$ref": "#/components/parameters/PropertyIdFilter"
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated buildings",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BuildingCollection"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      },
      "post": {
        "tags": [
          "Buildings"
        ],
        "summary": "Create building",
        "operationId": "createBuilding",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BuildingCreate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created building",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BuildingResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/buildings/{building}": {
      "get": {
        "tags": [
          "Buildings"
        ],
        "summary": "Get building",
        "operationId": "getBuilding",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "building",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "building",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BuildingResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      },
      "patch": {
        "tags": [
          "Buildings"
        ],
        "summary": "Update building",
        "operationId": "updateBuilding",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "building",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BuildingUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated building",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BuildingResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      },
      "delete": {
        "tags": [
          "Buildings"
        ],
        "summary": "Delete building",
        "operationId": "deleteBuilding",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "building",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/NoContent"
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/floor-plans": {
      "get": {
        "tags": [
          "Floor Plans"
        ],
        "summary": "List floor plans",
        "operationId": "listFloorPlans",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "$ref": "#/components/parameters/PerPage"
          },
          {
            "$ref": "#/components/parameters/PropertyIdFilter"
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated floor plans",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FloorPlanCollection"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      },
      "post": {
        "tags": [
          "Floor Plans"
        ],
        "summary": "Create floor plan",
        "operationId": "createFloorPlan",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FloorPlanCreate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created floor plan",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FloorPlanResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/floor-plans/{floor_plan}": {
      "get": {
        "tags": [
          "Floor Plans"
        ],
        "summary": "Get floor plan",
        "operationId": "getFloorPlan",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "floor_plan",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Floor plan UUID. This route does not accept a slug."
          }
        ],
        "responses": {
          "200": {
            "description": "floor plan",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FloorPlanResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      },
      "patch": {
        "tags": [
          "Floor Plans"
        ],
        "summary": "Update floor plan",
        "operationId": "updateFloorPlan",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "floor_plan",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Floor plan UUID. This route does not accept a slug."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FloorPlanUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated floor plan",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FloorPlanResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      },
      "delete": {
        "tags": [
          "Floor Plans"
        ],
        "summary": "Delete floor plan",
        "operationId": "deleteFloorPlan",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "floor_plan",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Floor plan UUID. This route does not accept a slug."
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/NoContent"
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/units": {
      "get": {
        "tags": [
          "Units"
        ],
        "summary": "List units",
        "operationId": "listUnits",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "$ref": "#/components/parameters/PerPage"
          },
          {
            "$ref": "#/components/parameters/PropertyIdFilter"
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated units",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnitCollection"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      },
      "post": {
        "tags": [
          "Units"
        ],
        "summary": "Create unit",
        "operationId": "createUnit",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UnitCreate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created unit",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnitResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/units/{unit}": {
      "get": {
        "tags": [
          "Units"
        ],
        "summary": "Get unit",
        "operationId": "getUnit",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "unit",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Unit UUID. This route does not accept a slug."
          }
        ],
        "responses": {
          "200": {
            "description": "unit",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnitResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      },
      "patch": {
        "tags": [
          "Units"
        ],
        "summary": "Update unit",
        "operationId": "updateUnit",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "unit",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Unit UUID. This route does not accept a slug."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UnitUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated unit",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnitResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      },
      "delete": {
        "tags": [
          "Units"
        ],
        "summary": "Delete unit",
        "operationId": "deleteUnit",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "unit",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Unit UUID. This route does not accept a slug."
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/NoContent"
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/amenities": {
      "get": {
        "tags": [
          "Amenities"
        ],
        "summary": "List amenities",
        "operationId": "listAmenities",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "$ref": "#/components/parameters/PerPage"
          },
          {
            "$ref": "#/components/parameters/PropertyIdFilter"
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated amenities",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AmenityCollection"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      },
      "post": {
        "tags": [
          "Amenities"
        ],
        "summary": "Create amenity",
        "operationId": "createAmenity",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AmenityCreate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created amenity",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AmenityResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/amenities/{amenity}": {
      "get": {
        "tags": [
          "Amenities"
        ],
        "summary": "Get amenity",
        "operationId": "getAmenity",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "amenity",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "amenity",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AmenityResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      },
      "patch": {
        "tags": [
          "Amenities"
        ],
        "summary": "Update amenity",
        "operationId": "updateAmenity",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "amenity",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AmenityUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated amenity",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AmenityResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      },
      "delete": {
        "tags": [
          "Amenities"
        ],
        "summary": "Delete amenity",
        "operationId": "deleteAmenity",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "amenity",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/NoContent"
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/fees": {
      "get": {
        "tags": [
          "Fees"
        ],
        "summary": "List fees",
        "operationId": "listFees",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "$ref": "#/components/parameters/PerPage"
          },
          {
            "$ref": "#/components/parameters/PropertyIdFilter"
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated fees",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FeeCollection"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      },
      "post": {
        "tags": [
          "Fees"
        ],
        "summary": "Create fee",
        "operationId": "createFee",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FeeCreate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created fee",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FeeResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/fees/{fee}": {
      "get": {
        "tags": [
          "Fees"
        ],
        "summary": "Get fee",
        "operationId": "getFee",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "fee",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "fee",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FeeResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      },
      "patch": {
        "tags": [
          "Fees"
        ],
        "summary": "Update fee",
        "operationId": "updateFee",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "fee",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FeeUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated fee",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FeeResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      },
      "delete": {
        "tags": [
          "Fees"
        ],
        "summary": "Delete fee",
        "operationId": "deleteFee",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "fee",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/NoContent"
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/reviews": {
      "get": {
        "tags": [
          "Reviews"
        ],
        "summary": "List reviews",
        "operationId": "listReviews",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "$ref": "#/components/parameters/PerPage"
          },
          {
            "$ref": "#/components/parameters/PropertyIdFilter"
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated reviews",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReviewCollection"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      },
      "post": {
        "tags": [
          "Reviews"
        ],
        "summary": "Create review",
        "operationId": "createReview",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReviewCreate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created review",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReviewResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/reviews/{review}": {
      "get": {
        "tags": [
          "Reviews"
        ],
        "summary": "Get review",
        "operationId": "getReview",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "review",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "review",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReviewResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      },
      "patch": {
        "tags": [
          "Reviews"
        ],
        "summary": "Update review",
        "operationId": "updateReview",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "review",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReviewUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated review",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReviewResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      },
      "delete": {
        "tags": [
          "Reviews"
        ],
        "summary": "Delete review",
        "operationId": "deleteReview",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "review",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/NoContent"
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/announcements": {
      "get": {
        "tags": [
          "Announcements"
        ],
        "summary": "List announcements",
        "operationId": "listAnnouncements",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "$ref": "#/components/parameters/PerPage"
          },
          {
            "$ref": "#/components/parameters/PropertyIdFilter"
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated announcements",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnnouncementCollection"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      },
      "post": {
        "tags": [
          "Announcements"
        ],
        "summary": "Create announcement",
        "operationId": "createAnnouncement",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AnnouncementCreate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created announcement",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnnouncementResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/announcements/{announcement}": {
      "get": {
        "tags": [
          "Announcements"
        ],
        "summary": "Get announcement",
        "operationId": "getAnnouncement",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "announcement",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "announcement",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnnouncementResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      },
      "patch": {
        "tags": [
          "Announcements"
        ],
        "summary": "Update announcement",
        "operationId": "updateAnnouncement",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "announcement",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AnnouncementUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated announcement",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnnouncementResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      },
      "delete": {
        "tags": [
          "Announcements"
        ],
        "summary": "Delete announcement",
        "operationId": "deleteAnnouncement",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "announcement",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/NoContent"
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/content-blocks": {
      "get": {
        "tags": [
          "Content Blocks"
        ],
        "summary": "List content blocks",
        "operationId": "listContentBlocks",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "$ref": "#/components/parameters/PerPage"
          },
          {
            "$ref": "#/components/parameters/PropertyIdFilter"
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated content blocks",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContentBlockCollection"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      },
      "post": {
        "tags": [
          "Content Blocks"
        ],
        "summary": "Create content block",
        "operationId": "createContentBlock",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ContentBlockCreate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created content block",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContentBlockResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/content-blocks/{content_block}": {
      "get": {
        "tags": [
          "Content Blocks"
        ],
        "summary": "Get content block",
        "operationId": "getContentBlock",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "content_block",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "content block",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContentBlockResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      },
      "patch": {
        "tags": [
          "Content Blocks"
        ],
        "summary": "Update content block",
        "operationId": "updateContentBlock",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "content_block",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ContentBlockUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated content block",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContentBlockResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      },
      "delete": {
        "tags": [
          "Content Blocks"
        ],
        "summary": "Delete content block",
        "operationId": "deleteContentBlock",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "content_block",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/NoContent"
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/faqs": {
      "get": {
        "tags": [
          "FAQs"
        ],
        "summary": "List FAQs",
        "operationId": "listFaqs",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "$ref": "#/components/parameters/PerPage"
          },
          {
            "$ref": "#/components/parameters/PropertyIdFilter"
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated FAQs",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FaqCollection"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      },
      "post": {
        "tags": [
          "FAQs"
        ],
        "summary": "Create FAQ",
        "operationId": "createFaq",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FaqCreate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created FAQ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FaqResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/faqs/{faq}": {
      "get": {
        "tags": [
          "FAQs"
        ],
        "summary": "Get FAQ",
        "operationId": "getFaq",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "faq",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "FAQ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FaqResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      },
      "patch": {
        "tags": [
          "FAQs"
        ],
        "summary": "Update FAQ",
        "operationId": "updateFaq",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "faq",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FaqUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated FAQ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FaqResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      },
      "delete": {
        "tags": [
          "FAQs"
        ],
        "summary": "Delete FAQ",
        "operationId": "deleteFaq",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "faq",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/NoContent"
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/galleries": {
      "get": {
        "tags": [
          "Galleries"
        ],
        "summary": "List galleries",
        "operationId": "listGalleries",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "$ref": "#/components/parameters/PerPage"
          },
          {
            "$ref": "#/components/parameters/PropertyIdFilter"
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated galleries",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GalleryCollection"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      },
      "post": {
        "tags": [
          "Galleries"
        ],
        "summary": "Create gallery",
        "operationId": "createGallery",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GalleryCreate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created gallery",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GalleryResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/galleries/{gallery}": {
      "get": {
        "tags": [
          "Galleries"
        ],
        "summary": "Get gallery",
        "operationId": "getGallery",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "gallery",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "gallery",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GalleryResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      },
      "patch": {
        "tags": [
          "Galleries"
        ],
        "summary": "Update gallery",
        "operationId": "updateGallery",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "gallery",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GalleryUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated gallery",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GalleryResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      },
      "delete": {
        "tags": [
          "Galleries"
        ],
        "summary": "Delete gallery",
        "operationId": "deleteGallery",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "gallery",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/NoContent"
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/neighborhood-places": {
      "get": {
        "tags": [
          "Neighborhood Places"
        ],
        "summary": "List neighborhood places",
        "operationId": "listNeighborhoodPlaces",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "$ref": "#/components/parameters/PerPage"
          },
          {
            "$ref": "#/components/parameters/PropertyIdFilter"
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated neighborhood places",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NeighborhoodPlaceCollection"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      },
      "post": {
        "tags": [
          "Neighborhood Places"
        ],
        "summary": "Create neighborhood place",
        "operationId": "createNeighborhoodPlace",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NeighborhoodPlaceCreate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created neighborhood place",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NeighborhoodPlaceResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/neighborhood-places/{neighborhood_place}": {
      "get": {
        "tags": [
          "Neighborhood Places"
        ],
        "summary": "Get neighborhood place",
        "operationId": "getNeighborhoodPlace",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "neighborhood_place",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "neighborhood place",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NeighborhoodPlaceResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      },
      "patch": {
        "tags": [
          "Neighborhood Places"
        ],
        "summary": "Update neighborhood place",
        "operationId": "updateNeighborhoodPlace",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "neighborhood_place",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NeighborhoodPlaceUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated neighborhood place",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NeighborhoodPlaceResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      },
      "delete": {
        "tags": [
          "Neighborhood Places"
        ],
        "summary": "Delete neighborhood place",
        "operationId": "deleteNeighborhoodPlace",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "neighborhood_place",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/NoContent"
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/media": {
      "get": {
        "tags": [
          "Media"
        ],
        "summary": "List media",
        "operationId": "listMedia",
        "description": "Lists media of a single kind for the account. `kind` is required.",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "kind",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "file",
                "embed"
              ]
            },
            "description": "Which media kind to list."
          },
          {
            "name": "attachable_type",
            "in": "query",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/MediaAttachableType"
            },
            "description": "Filter to media attached to this parent type (pair with attachable_id)."
          },
          {
            "name": "attachable_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "tag",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter to media whose tags contain this value."
          },
          {
            "$ref": "#/components/parameters/PerPage"
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated media",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaCollection"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      },
      "post": {
        "tags": [
          "Media"
        ],
        "summary": "Import media",
        "operationId": "importMedia",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          }
        ],
        "description": "Imports media by URL and attaches it to a parent resource. Requires the Media create permission and update rights on the target. Deduplicates (see the Media tag), so repeating a request is safe. For many items use POST /api/v2/media/batch. When the import lands on an existing shared asset, `attachments` in the response lists only the placements the caller can view.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MediaCreate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Imported media",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/media/{media}": {
      "get": {
        "tags": [
          "Media"
        ],
        "summary": "Get media",
        "operationId": "getMedia",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "media",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "media",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      },
      "patch": {
        "tags": [
          "Media"
        ],
        "summary": "Update media",
        "operationId": "updateMedia",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "media",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MediaUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated media",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      },
      "delete": {
        "tags": [
          "Media"
        ],
        "summary": "Delete media",
        "operationId": "deleteMedia",
        "description": "Deletes a file from the media library, with every placement it has, or deletes an embed. To take a file off one record and keep it everywhere else, remove that placement instead.",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "media",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "The file's id."
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/NoContent"
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/accounts": {
      "get": {
        "tags": [
          "Accounts"
        ],
        "summary": "List accounts",
        "operationId": "listAccounts",
        "parameters": [
          {
            "$ref": "#/components/parameters/PerPage"
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated accounts the authenticated user belongs to",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountCollection"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          }
        }
      },
      "post": {
        "tags": [
          "Accounts"
        ],
        "summary": "Create account",
        "operationId": "createAccount",
        "description": "Staff-only. The authenticated user is attached to the new account as an Admin. The account starts with the default neighborhood categories (see the Neighborhood Categories tag).",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AccountCreate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created account",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/accounts/{account}": {
      "get": {
        "tags": [
          "Accounts"
        ],
        "summary": "Get account",
        "operationId": "getAccount",
        "parameters": [
          {
            "name": "account",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "account",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      }
    },
    "/api/v2/connections": {
      "get": {
        "tags": [
          "Connections"
        ],
        "summary": "List connections",
        "operationId": "listConnections",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "$ref": "#/components/parameters/PerPage"
          },
          {
            "$ref": "#/components/parameters/PropertyIdFilter"
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated connections",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConnectionCollection"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      },
      "post": {
        "tags": [
          "Connections"
        ],
        "summary": "Create connection",
        "operationId": "createConnection",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConnectionCreate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created connection",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConnectionResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/connections/{connection}": {
      "get": {
        "tags": [
          "Connections"
        ],
        "summary": "Get connection",
        "operationId": "getConnection",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "connection",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "connection",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConnectionResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      },
      "patch": {
        "tags": [
          "Connections"
        ],
        "summary": "Update connection",
        "operationId": "updateConnection",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "connection",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConnectionUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated connection",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConnectionResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      },
      "delete": {
        "tags": [
          "Connections"
        ],
        "summary": "Delete connection",
        "operationId": "deleteConnection",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "connection",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/NoContent"
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/connections/{connection}/run": {
      "post": {
        "tags": [
          "Connections"
        ],
        "summary": "Run connection",
        "operationId": "runConnection",
        "description": "Queues a run for a runnable, enabled connection. Returns 202 as the work is asynchronous. Most connection types run every attached property and take no body. The internal V1 Import type is the exception: it runs one property at a time, requires `property_id`, and accepts an optional `resources` list. Running a V1 Import connection is restricted to Resi staff.",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "connection",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": false,
          "description": "Accepted only by the V1 Import connection type; any other type rejects these keys with a 422.",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "property_id": {
                    "type": "string",
                    "format": "uuid",
                    "description": "The property to import into. Required for V1 Import, and must already be attached to the connection."
                  },
                  "resources": {
                    "type": "array",
                    "description": "Which importers to run. Omit to run all fourteen. They always execute in the order listed here, not the order supplied.",
                    "items": {
                      "type": "string",
                      "enum": [
                        "property_info",
                        "forms",
                        "buildings",
                        "floor_plans",
                        "unit_type_groups",
                        "units",
                        "media",
                        "amenity_lists",
                        "faqs",
                        "panels",
                        "announcements",
                        "feedback_urls",
                        "neighborhood_places",
                        "integrations"
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Connection run queued",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    },
                    "connection_id": {
                      "type": "string",
                      "format": "uuid",
                      "description": "Present only for a V1 Import run."
                    },
                    "property_id": {
                      "type": "string",
                      "format": "uuid",
                      "description": "Present only for a V1 Import run."
                    },
                    "resources": {
                      "type": "array",
                      "description": "The importers actually queued, in execution order. Present only for a V1 Import run.",
                      "items": {
                        "type": "string"
                      }
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "message",
                    "connection_id",
                    "property_id",
                    "resources"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/connections/{connection}/properties": {
      "post": {
        "tags": [
          "Connections"
        ],
        "summary": "Attach property to connection",
        "operationId": "attachConnectionProperty",
        "description": "Links a property to the connection. Idempotent: re-attaching an already-linked property updates its pivot settings and returns 200.",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "connection",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConnectionPropertyAttach"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Property linked",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConnectionPropertyLinkResponse"
                }
              }
            }
          },
          "200": {
            "description": "Existing link updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConnectionPropertyLinkResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/connections/{connection}/properties/{propertyId}": {
      "delete": {
        "tags": [
          "Connections"
        ],
        "summary": "Detach property from connection",
        "operationId": "detachConnectionProperty",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "connection",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "propertyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Property UUID. This route does not accept a slug — it validates the UUID shape before any lookup."
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/NoContent"
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/users": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "List users",
        "operationId": "listUsers",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "$ref": "#/components/parameters/PerPage"
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated users in the current account",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserCollection"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      },
      "post": {
        "tags": [
          "Users"
        ],
        "summary": "Create user",
        "operationId": "createUser",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserCreate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created user",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/users/{user}": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "Get user",
        "operationId": "getUser",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "user",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "user",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      },
      "patch": {
        "tags": [
          "Users"
        ],
        "summary": "Update user",
        "operationId": "updateUser",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "user",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated user",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      },
      "delete": {
        "tags": [
          "Users"
        ],
        "summary": "Remove user from account",
        "operationId": "removeUser",
        "description": "Removes the user from the current account. The user record itself, and their membership of any other account, are untouched. You cannot remove yourself, and only admins can remove an admin.",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "user",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/NoContent"
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/lead-sources": {
      "get": {
        "tags": [
          "Lead Sources"
        ],
        "summary": "List lead sources",
        "operationId": "listLeadSources",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "$ref": "#/components/parameters/PerPage"
          },
          {
            "$ref": "#/components/parameters/PropertyIdFilter"
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated lead sources",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LeadSourceCollection"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      },
      "post": {
        "tags": [
          "Lead Sources"
        ],
        "summary": "Create lead source",
        "operationId": "createLeadSource",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LeadSourceCreate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created lead source",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LeadSourceResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/lead-sources/{lead_source}": {
      "get": {
        "tags": [
          "Lead Sources"
        ],
        "summary": "Get lead source",
        "operationId": "getLeadSource",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "lead_source",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "lead source",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LeadSourceResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      },
      "patch": {
        "tags": [
          "Lead Sources"
        ],
        "summary": "Update lead source",
        "operationId": "updateLeadSource",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "lead_source",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LeadSourceUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated lead source",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LeadSourceResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      }
    },
    "/api/v2/properties/{property}/settings": {
      "get": {
        "tags": [
          "Property Settings"
        ],
        "summary": "Get property settings",
        "operationId": "getPropertySettings",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "property",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Property UUID. This route does not accept a slug."
          }
        ],
        "responses": {
          "200": {
            "description": "Aggregated property settings",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PropertySettingsResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/properties/{property}/instagram-feed": {
      "get": {
        "tags": [
          "Instagram"
        ],
        "summary": "Property Instagram feed",
        "description": "The property's synced Instagram feed, newest first. Serves stored data only (requests never call Instagram). A property without an enabled Instagram connection returns connected=false with an empty feed. Media URLs prefer the Resi-hosted library asset when a post was saved to the library, falling back to the refreshed Instagram CDN URL.",
        "operationId": "getPropertyInstagramFeed",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "property",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Property UUID. This route does not accept a slug."
          },
          {
            "$ref": "#/components/parameters/PerPage"
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated Instagram posts with connection state",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InstagramFeedResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/neighborhood-categories": {
      "get": {
        "tags": [
          "Neighborhood Categories"
        ],
        "summary": "List neighborhood categories",
        "operationId": "listNeighborhoodCategories",
        "description": "Paginated, ordered by sort_order then name unless `sort` is given.",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "$ref": "#/components/parameters/PerPage"
          },
          {
            "name": "name",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Case-insensitive substring match."
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "name",
                "-name",
                "sort_order",
                "-sort_order",
                "created_at",
                "-created_at",
                "updated_at",
                "-updated_at"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated neighborhood categories",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NeighborhoodCategoryCollection"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      },
      "post": {
        "tags": [
          "Neighborhood Categories"
        ],
        "summary": "Create neighborhood category",
        "operationId": "createNeighborhoodCategory",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NeighborhoodCategoryCreate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created neighborhood category",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NeighborhoodCategoryResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/neighborhood-categories/{neighborhood_category}": {
      "get": {
        "tags": [
          "Neighborhood Categories"
        ],
        "summary": "Get neighborhood category",
        "operationId": "getNeighborhoodCategory",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "neighborhood_category",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Neighborhood category",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NeighborhoodCategoryResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      },
      "patch": {
        "tags": [
          "Neighborhood Categories"
        ],
        "summary": "Update neighborhood category",
        "operationId": "updateNeighborhoodCategory",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "neighborhood_category",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NeighborhoodCategoryUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated neighborhood category",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NeighborhoodCategoryResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      },
      "delete": {
        "tags": [
          "Neighborhood Categories"
        ],
        "summary": "Delete neighborhood category",
        "operationId": "deleteNeighborhoodCategory",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "neighborhood_category",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "description": "Refused with 409 while places still use the category.",
        "responses": {
          "204": {
            "$ref": "#/components/responses/NoContent"
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "description": "The category still has neighborhood places.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/media/batch": {
      "post": {
        "tags": [
          "Media"
        ],
        "summary": "Import media in bulk",
        "operationId": "importMediaBatch",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          }
        ],
        "description": "Imports up to 100 items in one request. Every item runs through the same validation, authorization and dedup as POST /api/v2/media, independently and in order: one failing item is reported in its result and does not roll back or stop the others, so the response is 200 whenever the envelope itself is valid. Files are downloaded while the request runs. After 40 seconds the batch cuts short any download still under way (that item fails with `422`) and returns the items it did not start with status `503` (not attempted), so a batch of many new files may need to be resent in parts; retry only those indexes. Files may come from at most 25 different hosts per batch; an item from a further host fails with `422`. Limited to 10 batches a minute.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MediaBatchCreate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Per-item results, in request order",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaBatchResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          },
          "429": {
            "description": "Too many batches; retry after the Retry-After header."
          }
        }
      }
    },
    "/api/v2/group-sets": {
      "get": {
        "tags": [
          "Groups"
        ],
        "summary": "List group sets",
        "operationId": "listGroupSets",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "$ref": "#/components/parameters/PerPage"
          },
          {
            "name": "name",
            "in": "query",
            "required": false,
            "description": "Partial match on the name.",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/PropertyIdFilter"
          },
          {
            "name": "object_type",
            "in": "query",
            "required": false,
            "description": "Only sets of this kind.",
            "schema": {
              "type": "string",
              "enum": [
                "property",
                "building",
                "floor_plan",
                "unit"
              ]
            }
          },
          {
            "name": "allows_multiple_membership",
            "in": "query",
            "required": false,
            "description": "Filter on multiple membership.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "created_at",
            "in": "query",
            "required": false,
            "description": "Exact `created_at`, or a range with `created_at[gte]`, `created_at[lte]`, `created_at[gt]` and `created_at[lt]`. Values are dates or date-times.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "updated_at",
            "in": "query",
            "required": false,
            "description": "Exact `updated_at`, or a range with `updated_at[gte]`, `updated_at[lte]`, `updated_at[gt]` and `updated_at[lt]`. Values are dates or date-times.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "description": "Sort by any filter field; prefix with `-` for descending.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated group sets",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GroupSetCollection"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      },
      "post": {
        "tags": [
          "Groups"
        ],
        "summary": "Create group set",
        "operationId": "createGroupSet",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GroupSetCreate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created group set",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GroupSetResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/group-sets/{group_set}": {
      "get": {
        "tags": [
          "Groups"
        ],
        "summary": "Get group set",
        "operationId": "getGroupSet",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "group_set",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Group set with its groups",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GroupSetResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      },
      "patch": {
        "tags": [
          "Groups"
        ],
        "summary": "Update group set",
        "operationId": "updateGroupSet",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "group_set",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GroupSetUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated group set",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GroupSetResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      },
      "delete": {
        "tags": [
          "Groups"
        ],
        "summary": "Delete group set",
        "operationId": "deleteGroupSet",
        "description": "Deletes the set, every group in it, and their memberships. The grouped records themselves are not deleted.",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "group_set",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/NoContent"
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/groups": {
      "get": {
        "tags": [
          "Groups"
        ],
        "summary": "List groups",
        "operationId": "listGroups",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "$ref": "#/components/parameters/PerPage"
          },
          {
            "name": "group_set_id",
            "in": "query",
            "required": false,
            "description": "Only groups in this set.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "parent_id",
            "in": "query",
            "required": false,
            "description": "Only direct children of this group.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "label",
            "in": "query",
            "required": false,
            "description": "Partial match on the label.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "slug",
            "in": "query",
            "required": false,
            "description": "Exact slug.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort_order",
            "in": "query",
            "required": false,
            "description": "Exact sort order, or a range with `sort_order[gte]` and the other range operators.",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "created_at",
            "in": "query",
            "required": false,
            "description": "Exact `created_at`, or a range with `created_at[gte]`, `created_at[lte]`, `created_at[gt]` and `created_at[lt]`. Values are dates or date-times.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "updated_at",
            "in": "query",
            "required": false,
            "description": "Exact `updated_at`, or a range with `updated_at[gte]`, `updated_at[lte]`, `updated_at[gt]` and `updated_at[lt]`. Values are dates or date-times.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "description": "Sort by any filter field; prefix with `-` for descending.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated groups",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GroupCollection"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      },
      "post": {
        "tags": [
          "Groups"
        ],
        "summary": "Create group",
        "operationId": "createGroup",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GroupCreate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created group",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GroupResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/groups/{group}": {
      "get": {
        "tags": [
          "Groups"
        ],
        "summary": "Get group",
        "operationId": "getGroup",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "group",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Group with its children and set",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GroupResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      },
      "patch": {
        "tags": [
          "Groups"
        ],
        "summary": "Update group",
        "operationId": "updateGroup",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "group",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GroupUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated group",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GroupResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      },
      "delete": {
        "tags": [
          "Groups"
        ],
        "summary": "Delete group",
        "operationId": "deleteGroup",
        "description": "Deletes the group, every group nested under it, and their memberships. The grouped records themselves are not deleted.",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "group",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/NoContent"
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/groups/{group}/members": {
      "post": {
        "tags": [
          "Groups"
        ],
        "summary": "Add group member",
        "operationId": "addGroupMember",
        "description": "Adds a property, building, floor plan or unit to the group. The member must match the set's `object_type`, belong to the account (and to the set's property, for a property set), and, in a set that does not allow multiple membership, not already be in another group of the set. A rule broken is a `422`; nothing is moved for you.",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "group",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GroupMemberCreate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The membership",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GroupMembershipResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/groups/{group}/members/{memberId}": {
      "delete": {
        "tags": [
          "Groups"
        ],
        "summary": "Remove group member",
        "operationId": "removeGroupMember",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "group",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "memberId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Id of the member to remove."
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/NoContent"
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/properties/{property}/social-profiles": {
      "get": {
        "tags": [
          "Instagram"
        ],
        "summary": "Get social profiles",
        "operationId": "getPropertySocialProfiles",
        "description": "The property's Instagram profile and, for a connection using the Facebook-Login flavor, its linked Facebook Page, as published. Each side has a `status`, so \"not connected\" and \"the API failed\" are never reported as missing information.",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "property",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Property UUID. This route does not accept a slug."
          },
          {
            "name": "fresh",
            "in": "query",
            "required": false,
            "description": "Read live instead of from the 15-minute cache.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The property's social profiles",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SocialProfilesResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/websites": {
      "get": {
        "tags": [
          "Websites"
        ],
        "summary": "List websites",
        "operationId": "listWebsites",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "$ref": "#/components/parameters/PerPage"
          },
          {
            "name": "name",
            "in": "query",
            "required": false,
            "description": "Partial match on the name.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "type",
            "in": "query",
            "required": false,
            "description": "Only websites of this type.",
            "schema": {
              "type": "string",
              "enum": [
                "property",
                "portfolio"
              ]
            }
          },
          {
            "name": "sub_mode",
            "in": "query",
            "required": false,
            "description": "Only portfolio websites of this kind.",
            "schema": {
              "type": "string",
              "enum": [
                "corporate",
                "centralized"
              ]
            }
          },
          {
            "name": "platform",
            "in": "query",
            "required": false,
            "description": "Only websites on this platform.",
            "schema": {
              "type": "string",
              "enum": [
                "nextjs",
                "wordpress"
              ]
            }
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "description": "Only websites in this status.",
            "schema": {
              "type": "string",
              "enum": [
                "draft",
                "live",
                "paused",
                "archived"
              ]
            }
          },
          {
            "name": "created_at",
            "in": "query",
            "required": false,
            "description": "Exact `created_at`, or a range with `created_at[gte]`, `created_at[lte]`, `created_at[gt]` and `created_at[lt]`. Values are dates or date-times.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "updated_at",
            "in": "query",
            "required": false,
            "description": "Exact `updated_at`, or a range with `updated_at[gte]`, `updated_at[lte]`, `updated_at[gt]` and `updated_at[lt]`. Values are dates or date-times.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "description": "Sort by any filter field; prefix with `-` for descending. Defaults to name.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated websites, by name",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebsiteCollection"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/websites/{website}": {
      "get": {
        "tags": [
          "Websites"
        ],
        "summary": "Get website",
        "operationId": "getWebsite",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "website",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Website with its domains",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebsiteResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/websites/{website}/content-types": {
      "get": {
        "tags": [
          "Websites"
        ],
        "summary": "List website content types",
        "operationId": "listWebsiteContentTypes",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "website",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Every content type the website carries, by singular name",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContentTypeCollection"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/websites/{website}/content-types/{contentType}": {
      "get": {
        "tags": [
          "Websites"
        ],
        "summary": "Get website content type",
        "operationId": "getWebsiteContentType",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "website",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "contentType",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The content type's key, such as `team`."
          }
        ],
        "responses": {
          "200": {
            "description": "The content type, with the schema its entries must fit",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContentTypeResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/websites/{website}/content-types/{contentType}/entries": {
      "get": {
        "tags": [
          "Websites"
        ],
        "summary": "List content entries",
        "operationId": "listContentEntries",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "website",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "contentType",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The content type's key, such as `team`."
          },
          {
            "$ref": "#/components/parameters/PerPage"
          },
          {
            "name": "include",
            "in": "query",
            "required": false,
            "description": "Add `resolved_data` to each entry.",
            "schema": {
              "type": "string",
              "enum": [
                "resolved_data"
              ]
            }
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "description": "Only entries in this status.",
            "schema": {
              "type": "string",
              "enum": [
                "draft",
                "in_review",
                "published",
                "archived"
              ]
            }
          },
          {
            "name": "slug",
            "in": "query",
            "required": false,
            "description": "Partial match on the slug.",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/PropertyIdFilter"
          },
          {
            "name": "scope",
            "in": "query",
            "required": false,
            "description": "Only shared entries, or only this website's own.",
            "schema": {
              "type": "string",
              "enum": [
                "account",
                "website"
              ]
            }
          },
          {
            "name": "published_at",
            "in": "query",
            "required": false,
            "description": "Exact `published_at`, or a range with `published_at[gte]`, `published_at[lte]`, `published_at[gt]` and `published_at[lt]`. Values are dates or date-times.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "expires_at",
            "in": "query",
            "required": false,
            "description": "Exact `expires_at`, or a range with `expires_at[gte]`, `expires_at[lte]`, `expires_at[gt]` and `expires_at[lt]`. Values are dates or date-times.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "created_at",
            "in": "query",
            "required": false,
            "description": "Exact `created_at`, or a range with `created_at[gte]`, `created_at[lte]`, `created_at[gt]` and `created_at[lt]`. Values are dates or date-times.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "updated_at",
            "in": "query",
            "required": false,
            "description": "Exact `updated_at`, or a range with `updated_at[gte]`, `updated_at[lte]`, `updated_at[gt]` and `updated_at[lt]`. Values are dates or date-times.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "description": "Sort by any filter field; prefix with `-` for descending. Defaults to slug.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated entries, by slug",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContentEntryCollection"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      },
      "post": {
        "tags": [
          "Websites"
        ],
        "summary": "Create content entry",
        "operationId": "createContentEntry",
        "description": "Creates an entry of the type. For a type shared with the account, the entry is shared too and every website carrying the type renders it; for a type authored for this website, the entry lives on this website only.",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "website",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "contentType",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The content type's key, such as `team`."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ContentEntryCreate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created entry",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContentEntryResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/websites/{website}/content-types/{contentType}/entries/{entry}": {
      "get": {
        "tags": [
          "Websites"
        ],
        "summary": "Get content entry",
        "operationId": "getContentEntry",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "website",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "contentType",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The content type's key, such as `team`."
          },
          {
            "name": "entry",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "include",
            "in": "query",
            "required": false,
            "description": "Add `resolved_data` to each entry.",
            "schema": {
              "type": "string",
              "enum": [
                "resolved_data"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The entry",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContentEntryResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      },
      "patch": {
        "tags": [
          "Websites"
        ],
        "summary": "Update content entry",
        "operationId": "updateContentEntry",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "website",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "contentType",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The content type's key, such as `team`."
          },
          {
            "name": "entry",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ContentEntryUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated entry",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContentEntryResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      },
      "delete": {
        "tags": [
          "Websites"
        ],
        "summary": "Delete content entry",
        "operationId": "deleteContentEntry",
        "description": "Moves the entry to the trash. It can be restored in the Resi app.",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "website",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "contentType",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The content type's key, such as `team`."
          },
          {
            "name": "entry",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/NoContent"
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/roles": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "List roles",
        "operationId": "listRoles",
        "description": "The roles a user can be given. Requires permission to view users. Roles are created and edited in the Resi app.",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "$ref": "#/components/parameters/PerPage"
          }
        ],
        "responses": {
          "200": {
            "description": "The account's roles, by name",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountRoleCollection"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/roles/{role}": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "Get role",
        "operationId": "getRole",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "role",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The role",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountRoleResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/connections/{connection}/logs": {
      "get": {
        "tags": [
          "Connections"
        ],
        "summary": "List connection logs",
        "operationId": "listConnectionLogs",
        "description": "The connection's run history: each sync, import or webhook, whether it succeeded, and why not. Logs are kept for 14 days. A user restricted to some groups sees the logs of properties in those groups and those not tied to a property.",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "connection",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "$ref": "#/components/parameters/PerPage"
          },
          {
            "$ref": "#/components/parameters/PropertyIdFilter"
          },
          {
            "name": "event_type",
            "in": "query",
            "required": false,
            "description": "Only logs of this event type.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "description": "Only logs with this status.",
            "schema": {
              "type": "string",
              "enum": [
                "Pending",
                "Success",
                "Warning",
                "Skipped",
                "Error"
              ]
            }
          },
          {
            "name": "created_at",
            "in": "query",
            "required": false,
            "description": "Exact `created_at`, or a range with `created_at[gte]`, `created_at[lte]`, `created_at[gt]` and `created_at[lt]`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "description": "Sort by any filter field; prefix with `-` for descending. Defaults to newest first.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated logs, newest first",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConnectionLogCollection"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/leads": {
      "get": {
        "tags": [
          "Leads"
        ],
        "summary": "List leads",
        "operationId": "listLeads",
        "description": "Leads in the account, newest first. Requires permission to view leads; a user restricted to some groups sees the leads of the properties in those groups. Poll with `created_at[gt]` set to the newest lead you hold.",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "$ref": "#/components/parameters/PerPage"
          },
          {
            "$ref": "#/components/parameters/PropertyIdFilter"
          },
          {
            "name": "form_id",
            "in": "query",
            "required": false,
            "description": "Only leads submitted through this form.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "connection_id",
            "in": "query",
            "required": false,
            "description": "Only tours booked against this connection.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "lead_source_id",
            "in": "query",
            "required": false,
            "description": "Only leads attributed to this lead source.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "email",
            "in": "query",
            "required": false,
            "description": "Partial match on the email.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "created_at",
            "in": "query",
            "required": false,
            "description": "Exact `created_at`, or a range with `created_at[gte]`, `created_at[lte]`, `created_at[gt]` and `created_at[lt]`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "description": "Sort by any filter field; prefix with `-` for descending. Defaults to newest first.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated leads, newest first",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LeadCollection"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/leads/{lead}": {
      "get": {
        "tags": [
          "Leads"
        ],
        "summary": "Get lead",
        "operationId": "getLead",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "lead",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The lead",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LeadResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/media/{media}/attachments/{attachableType}/{attachableId}": {
      "patch": {
        "tags": [
          "Media"
        ],
        "summary": "Re-order a file on a record",
        "operationId": "updateMediaAttachment",
        "description": "Sets the file's position on one record. Requires permission to update media and the record.",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "media",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "The file's id."
          },
          {
            "name": "attachableType",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/MediaAttachableType"
            },
            "description": "The kind of record the file is on."
          },
          {
            "name": "attachableId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "The record's id."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MediaAttachmentUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The file, with its placements",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      },
      "delete": {
        "tags": [
          "Media"
        ],
        "summary": "Remove a file from a record",
        "operationId": "deleteMediaAttachment",
        "description": "Takes the file off one record. The file stays in the media library and on every other record. Embeds belong to one record: delete the embed instead.",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "media",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "The file's id."
          },
          {
            "name": "attachableType",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/MediaAttachableType"
            },
            "description": "The kind of record the file is on."
          },
          {
            "name": "attachableId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "The record's id."
          },
          {
            "name": "slot",
            "in": "query",
            "required": false,
            "description": "Only the placement in this slot (for example `image` or `background_image`), when the file is on the record more than once.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/NoContent"
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/media-folders": {
      "get": {
        "tags": [
          "Media"
        ],
        "summary": "List media folders",
        "operationId": "listMediaFolders",
        "description": "The folders of the media library. Folders do not nest: each is account-wide or belongs to one property.",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "$ref": "#/components/parameters/PerPage"
          },
          {
            "$ref": "#/components/parameters/PropertyIdFilter"
          },
          {
            "name": "name",
            "in": "query",
            "required": false,
            "description": "Partial match on the name.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "description": "Sort by any filter field; prefix with `-` for descending. Defaults to name.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated folders, by name",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFolderCollection"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      },
      "post": {
        "tags": [
          "Media"
        ],
        "summary": "Create media folder",
        "operationId": "createMediaFolder",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MediaFolderCreate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created folder",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFolderResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/fee-assignments": {
      "get": {
        "tags": [
          "Fees"
        ],
        "summary": "List fee assignments",
        "operationId": "listFeeAssignments",
        "description": "Where a fee applies: a property, a floor plan or a unit, optionally narrowed to bedroom counts or floor plans and to dates, with the fee's amount, frequency or requirement overridden for that scope. The most specific assignment wins: unit, then floor plan, then property. Every change reprices the property's floor plans and units in the background, usually within seconds. Requires permission to update the fee.",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "$ref": "#/components/parameters/PerPage"
          },
          {
            "name": "fee_id",
            "in": "query",
            "required": false,
            "description": "Only assignments of this fee.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "property_id",
            "in": "query",
            "required": false,
            "description": "Only assignments on this property, its floor plans and its units.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "assignable_type",
            "in": "query",
            "required": false,
            "description": "Only assignments at this level.",
            "schema": {
              "type": "string",
              "enum": [
                "property",
                "floor_plan",
                "unit"
              ]
            }
          },
          {
            "name": "assignable_id",
            "in": "query",
            "required": false,
            "description": "Only assignments on this record.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "is_enabled",
            "in": "query",
            "required": false,
            "description": "Filter on enabled.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "created_at",
            "in": "query",
            "required": false,
            "description": "Exact `created_at`, or a range with `created_at[gte]`, `created_at[lte]`, `created_at[gt]` and `created_at[lt]`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "updated_at",
            "in": "query",
            "required": false,
            "description": "Exact `updated_at`, or a range with `updated_at[gte]`, `updated_at[lte]`, `updated_at[gt]` and `updated_at[lt]`.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated assignments",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FeeAssignmentCollection"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      },
      "post": {
        "tags": [
          "Fees"
        ],
        "summary": "Create fee assignment",
        "operationId": "createFeeAssignment",
        "description": "Where a fee applies: a property, a floor plan or a unit, optionally narrowed to bedroom counts or floor plans and to dates, with the fee's amount, frequency or requirement overridden for that scope. The most specific assignment wins: unit, then floor plan, then property. Every change reprices the property's floor plans and units in the background, usually within seconds. Requires permission to update the fee.",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FeeAssignmentCreate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created assignment",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FeeAssignmentResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    },
    "/api/v2/fee-assignments/{fee_assignment}": {
      "get": {
        "tags": [
          "Fees"
        ],
        "summary": "Get fee assignment",
        "operationId": "getFeeAssignment",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "fee_assignment",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "description": "The assignment's id. Fee assignments are the one V2 record with an integer id."
          }
        ],
        "responses": {
          "200": {
            "description": "The assignment",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FeeAssignmentResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      },
      "patch": {
        "tags": [
          "Fees"
        ],
        "summary": "Update fee assignment",
        "operationId": "updateFeeAssignment",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "fee_assignment",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "description": "The assignment's id. Fee assignments are the one V2 record with an integer id."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FeeAssignmentUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated assignment",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FeeAssignmentResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      },
      "delete": {
        "tags": [
          "Fees"
        ],
        "summary": "Delete fee assignment",
        "operationId": "deleteFeeAssignment",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountContextQuery"
          },
          {
            "name": "fee_assignment",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "description": "The assignment's id. Fee assignments are the one V2 record with an integer id."
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/NoContent"
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "Sanctum"
      }
    },
    "parameters": {
      "AccountIdQuery": {
        "name": "account_id",
        "in": "query",
        "required": true,
        "schema": {
          "type": "string",
          "format": "uuid"
        }
      },
      "AccountContextQuery": {
        "name": "account_id",
        "in": "query",
        "required": false,
        "description": "Optional account to run this request against. Defaults to the account the API token is scoped to, so callers with a single account can omit it. Must be an account the authenticated user belongs to; staff may target any account. For write requests the value may be sent in the JSON body instead of the query string. The resolved account is returned on the X-Resi-Account-Id response header.",
        "schema": {
          "type": "string",
          "format": "uuid"
        }
      },
      "PerPage": {
        "name": "per_page",
        "in": "query",
        "required": false,
        "schema": {
          "type": "integer",
          "minimum": 1,
          "maximum": 200,
          "default": 15
        }
      },
      "PropertyIdFilter": {
        "name": "property_id",
        "in": "query",
        "required": false,
        "schema": {
          "type": "string",
          "format": "uuid"
        }
      }
    },
    "responses": {
      "NoContent": {
        "description": "No content"
      },
      "Unauthenticated": {
        "description": "Unauthenticated",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "Forbidden": {
        "description": "Forbidden",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "NotFound": {
        "description": "Not found",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "ValidationError": {
        "description": "Validation failed",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ValidationError"
            }
          }
        }
      }
    },
    "schemas": {
      "Uuid": {
        "type": "string",
        "format": "uuid"
      },
      "PaginationMeta": {
        "type": "object",
        "properties": {
          "current_page": {
            "type": "integer"
          },
          "from": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Position of the first record on this page; null on an empty page."
          },
          "last_page": {
            "type": "integer"
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PaginationMetaLink"
            }
          },
          "path": {
            "type": "string"
          },
          "per_page": {
            "type": "integer",
            "maximum": 200
          },
          "to": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Position of the last record on this page; null on an empty page."
          },
          "total": {
            "type": "integer"
          }
        },
        "additionalProperties": false,
        "required": [
          "current_page",
          "from",
          "last_page",
          "links",
          "path",
          "per_page",
          "to",
          "total"
        ]
      },
      "Error": {
        "type": "object",
        "required": [
          "message"
        ],
        "properties": {
          "message": {
            "type": "string"
          }
        }
      },
      "ValidationError": {
        "type": "object",
        "required": [
          "message",
          "errors"
        ],
        "properties": {
          "message": {
            "type": "string",
            "example": "The given data was invalid."
          },
          "errors": {
            "type": "object",
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        }
      },
      "UserResponse": {
        "type": "object",
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/User"
          }
        },
        "additionalProperties": false
      },
      "User": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "email": {
            "type": "string",
            "format": "email"
          },
          "is_staff": {
            "type": "boolean"
          },
          "email_verified_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "role": {
            "type": [
              "string",
              "null"
            ],
            "description": "The user's role in the current account. The role's key: `admin`, `manager`, `member` or `viewer` for the built-in roles, or the slug of a custom role."
          },
          "role_id": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "Id of the role, stable across renames."
          },
          "role_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "The role's display name."
          },
          "created_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "updated_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          }
        },
        "description": "A member of the current account.",
        "additionalProperties": false,
        "required": [
          "id",
          "name",
          "email",
          "is_staff",
          "email_verified_at",
          "role",
          "role_id",
          "role_name",
          "created_at",
          "updated_at"
        ]
      },
      "UserAccount": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "role": {
            "type": [
              "string",
              "null"
            ],
            "description": "The role's key: `admin`, `manager`, `member` or `viewer` for the built-in roles, or the slug of a custom role."
          },
          "role_id": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "Id of the role, stable across renames."
          },
          "role_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "The role's display name."
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "name",
          "role",
          "role_id",
          "role_name"
        ]
      },
      "TokenCreate": {
        "type": "object",
        "required": [
          "name",
          "account_id"
        ],
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255
          },
          "account_id": {
            "type": "string",
            "format": "uuid"
          }
        }
      },
      "CreatedTokenResponse": {
        "type": "object",
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CreatedToken"
          }
        },
        "additionalProperties": false
      },
      "CreatedToken": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "account_id": {
            "type": "string",
            "format": "uuid"
          },
          "plain_text_token": {
            "type": "string"
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "name",
          "account_id",
          "plain_text_token"
        ]
      },
      "TokenCollection": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Token"
            }
          }
        },
        "additionalProperties": false,
        "required": [
          "data"
        ]
      },
      "Token": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "account_id": {
            "type": "string",
            "format": "uuid"
          },
          "abilities": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "last_used_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "created_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "created_by": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "name": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "email": {
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "additionalProperties": false,
            "required": [
              "id",
              "name",
              "email"
            ]
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "name",
          "account_id",
          "abilities",
          "last_used_at",
          "created_at",
          "created_by"
        ]
      },
      "MediaAsset": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "url": {
            "type": [
              "string",
              "null"
            ]
          },
          "thumb_url": {
            "type": [
              "string",
              "null"
            ]
          },
          "full_url": {
            "type": [
              "string",
              "null"
            ]
          },
          "caption": {
            "type": [
              "string",
              "null"
            ]
          },
          "alt_text": {
            "type": [
              "string",
              "null"
            ]
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "reference_url": {
            "type": [
              "string",
              "null"
            ]
          },
          "reference_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "property_id": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "The property whose media library holds the file; null for the account library."
          },
          "folder_id": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "The media library folder the file is filed in."
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "url",
          "thumb_url",
          "full_url",
          "caption",
          "alt_text",
          "tags",
          "reference_url",
          "reference_id",
          "property_id",
          "folder_id"
        ]
      },
      "EmbeddableMedia": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "type": {
            "type": "string"
          },
          "provider": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "title": {
            "type": [
              "string",
              "null"
            ]
          },
          "settings": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": true
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sort_order": {
            "type": [
              "integer",
              "null"
            ]
          },
          "image": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/MediaAsset"
              },
              {
                "type": "null"
              }
            ],
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "type",
          "provider",
          "url",
          "title",
          "settings",
          "tags",
          "sort_order",
          "image"
        ]
      },
      "PropertyWrite": {
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255
          },
          "is_enabled": {
            "type": "boolean"
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "urls": {
            "type": [
              "object",
              "array",
              "null"
            ]
          },
          "office_hours": {
            "type": [
              "object",
              "array",
              "null"
            ]
          },
          "phone_numbers": {
            "type": [
              "array",
              "null"
            ],
            "items": {}
          },
          "socials": {
            "type": [
              "object",
              "array",
              "null"
            ]
          },
          "emails": {
            "type": [
              "array",
              "null"
            ],
            "items": {}
          },
          "settings": {
            "type": [
              "object",
              "array",
              "null"
            ]
          },
          "tags": {
            "type": [
              "array",
              "null"
            ],
            "items": {}
          },
          "reference_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "domain": {
            "type": [
              "string",
              "null"
            ]
          },
          "data": {
            "type": [
              "object",
              "array",
              "null"
            ]
          },
          "address": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PropertyAddressWrite"
              },
              {
                "type": "null"
              }
            ]
          },
          "pet_policy": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PetPolicySettingsWrite"
              },
              {
                "type": "null"
              }
            ]
          },
          "leasing_settings": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/LeasingSettingsWrite"
              },
              {
                "type": "null"
              }
            ]
          },
          "pricing_display_settings": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PricingDisplaySettingsWrite"
              },
              {
                "type": "null"
              }
            ]
          },
          "office_hours_settings": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/OfficeHoursSettingsWrite"
              },
              {
                "type": "null"
              }
            ]
          },
          "slug": {
            "type": "string",
            "minLength": 5,
            "maxLength": 255,
            "pattern": "^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$",
            "description": "The record's URL slug: at least five lowercase letters, numbers and hyphens, unique among every record of its kind. Generated when omitted on create. Changing it changes the record's URLs; Resi does not redirect the old one."
          },
          "addresses": {
            "type": "array",
            "maxItems": 20,
            "items": {
              "$ref": "#/components/schemas/PropertyAddressListItemWrite"
            },
            "description": "The full address list, replacing the property's: an address sent with its `id` is updated, one without is added, and one left out is deleted. Exactly one must be primary. Send `address` or `addresses`, not both."
          },
          "amenity_ids": {
            "type": "array",
            "maxItems": 500,
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "The property's complete amenity list, in display order. Replaces the current list."
          },
          "display_settings": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/DisplaySettingsWrite"
              },
              {
                "type": "null"
              }
            ]
          },
          "website_settings": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/WebsiteSettingsWrite"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "description": "Fields the property's PMS connection syncs (name, description, website and portal links, phone numbers, emails, addresses, office hours, pet policy, amenities) are refused with a `422` naming the connection, as the next sync would overwrite them."
      },
      "BuildingCreate": {
        "required": [
          "property_id",
          "name",
          "number"
        ],
        "properties": {
          "property_id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "is_enabled": {
            "type": "boolean"
          },
          "number": {
            "type": "string",
            "maxLength": 255
          },
          "code": {
            "type": [
              "string",
              "null"
            ]
          },
          "type": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "tags": {
            "type": [
              "array",
              "null"
            ],
            "items": {}
          },
          "reference_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "external_ids": {
            "$ref": "#/components/schemas/ExternalIdsWrite"
          }
        },
        "type": "object"
      },
      "BuildingUpdate": {
        "properties": {
          "property_id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "is_enabled": {
            "type": "boolean"
          },
          "number": {
            "type": "string",
            "maxLength": 255
          },
          "code": {
            "type": [
              "string",
              "null"
            ]
          },
          "type": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "tags": {
            "type": [
              "array",
              "null"
            ],
            "items": {}
          },
          "reference_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "external_ids": {
            "$ref": "#/components/schemas/ExternalIdsWrite"
          }
        },
        "type": "object"
      },
      "FloorPlanCreate": {
        "required": [
          "property_id",
          "name"
        ],
        "properties": {
          "property_id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "is_enabled": {
            "type": "boolean"
          },
          "is_featured": {
            "type": "boolean"
          },
          "has_specials": {
            "type": "boolean"
          },
          "code": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "min_rent": {
            "type": [
              "number",
              "null"
            ],
            "description": "Total monthly leasing price: base rent plus monthly mandatory fees."
          },
          "max_rent": {
            "type": [
              "number",
              "null"
            ],
            "description": "Total monthly leasing price: base rent plus monthly mandatory fees."
          },
          "min_base_rent": {
            "type": [
              "number",
              "null"
            ],
            "description": "Base rent, before fees."
          },
          "max_base_rent": {
            "type": [
              "number",
              "null"
            ],
            "description": "Base rent, before fees."
          },
          "min_sqft": {
            "type": [
              "number",
              "null"
            ]
          },
          "max_sqft": {
            "type": [
              "number",
              "null"
            ]
          },
          "min_bed": {
            "type": [
              "number",
              "null"
            ]
          },
          "max_bed": {
            "type": [
              "number",
              "null"
            ]
          },
          "min_bath": {
            "type": [
              "number",
              "null"
            ]
          },
          "max_bath": {
            "type": [
              "number",
              "null"
            ]
          },
          "min_deposit": {
            "type": [
              "number",
              "null"
            ]
          },
          "max_deposit": {
            "type": [
              "number",
              "null"
            ]
          },
          "available_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          },
          "reference_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "sort_order": {
            "type": [
              "integer",
              "null"
            ]
          },
          "tags": {
            "type": [
              "array",
              "null"
            ],
            "items": {}
          },
          "external_ids": {
            "$ref": "#/components/schemas/ExternalIdsWrite"
          },
          "amenity_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "uniqueItems": true,
            "description": "The complete set of amenities linked to this record, in display order (the position becomes the link's sort order). Replaces the current set; `[]` clears it; omit to leave it unchanged. Each id must be an amenity in the account that the caller can view.",
            "maxItems": 200
          },
          "slug": {
            "type": "string",
            "minLength": 5,
            "maxLength": 255,
            "pattern": "^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$",
            "description": "The record's URL slug: at least five lowercase letters, numbers and hyphens, unique among every record of its kind. Generated when omitted on create. Changing it changes the record's URLs; Resi does not redirect the old one."
          }
        },
        "type": "object",
        "description": "Each rent bound has an authoritative side and a calculated one. Base rent is authoritative unless the property's PMS connection sends all-in rents (`pricing_includes_fees`). Send either side and the other is calculated from it and the monthly fees; sending both sides of one bound is a `422`. A field the property's PMS connection syncs is refused with a `422` naming the connection: the next sync would overwrite it."
      },
      "FloorPlanUpdate": {
        "properties": {
          "property_id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "is_enabled": {
            "type": "boolean"
          },
          "is_featured": {
            "type": "boolean"
          },
          "has_specials": {
            "type": "boolean"
          },
          "code": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "min_rent": {
            "type": [
              "number",
              "null"
            ],
            "description": "Total monthly leasing price: base rent plus monthly mandatory fees."
          },
          "max_rent": {
            "type": [
              "number",
              "null"
            ],
            "description": "Total monthly leasing price: base rent plus monthly mandatory fees."
          },
          "min_base_rent": {
            "type": [
              "number",
              "null"
            ],
            "description": "Base rent, before fees."
          },
          "max_base_rent": {
            "type": [
              "number",
              "null"
            ],
            "description": "Base rent, before fees."
          },
          "min_sqft": {
            "type": [
              "number",
              "null"
            ]
          },
          "max_sqft": {
            "type": [
              "number",
              "null"
            ]
          },
          "min_bed": {
            "type": [
              "number",
              "null"
            ]
          },
          "max_bed": {
            "type": [
              "number",
              "null"
            ]
          },
          "min_bath": {
            "type": [
              "number",
              "null"
            ]
          },
          "max_bath": {
            "type": [
              "number",
              "null"
            ]
          },
          "min_deposit": {
            "type": [
              "number",
              "null"
            ]
          },
          "max_deposit": {
            "type": [
              "number",
              "null"
            ]
          },
          "available_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          },
          "reference_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "sort_order": {
            "type": [
              "integer",
              "null"
            ]
          },
          "tags": {
            "type": [
              "array",
              "null"
            ],
            "items": {}
          },
          "external_ids": {
            "$ref": "#/components/schemas/ExternalIdsWrite"
          },
          "amenity_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "uniqueItems": true,
            "description": "The complete set of amenities linked to this record, in display order (the position becomes the link's sort order). Replaces the current set; `[]` clears it; omit to leave it unchanged. Each id must be an amenity in the account that the caller can view.",
            "maxItems": 200
          },
          "slug": {
            "type": "string",
            "minLength": 5,
            "maxLength": 255,
            "pattern": "^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$",
            "description": "The record's URL slug: at least five lowercase letters, numbers and hyphens, unique among every record of its kind. Generated when omitted on create. Changing it changes the record's URLs; Resi does not redirect the old one."
          }
        },
        "type": "object",
        "description": "Each rent bound has an authoritative side and a calculated one. Base rent is authoritative unless the property's PMS connection sends all-in rents (`pricing_includes_fees`). Send either side and the other is calculated from it and the monthly fees; sending both sides of one bound is a `422`. A field the property's PMS connection syncs is refused with a `422` naming the connection: the next sync would overwrite it."
      },
      "UnitCreate": {
        "required": [
          "property_id",
          "number"
        ],
        "properties": {
          "property_id": {
            "type": "string",
            "format": "uuid"
          },
          "number": {
            "type": "string"
          },
          "building_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ]
          },
          "floor_plan_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ]
          },
          "is_enabled": {
            "type": "boolean"
          },
          "floor": {
            "type": [
              "string",
              "integer",
              "null"
            ],
            "description": "The floor as a label, such as `12`, `PH` or `Garden`. A number is stored as text."
          },
          "bedrooms": {
            "type": [
              "number",
              "null"
            ]
          },
          "bathrooms": {
            "type": [
              "number",
              "null"
            ]
          },
          "interior_sqft": {
            "type": [
              "number",
              "null"
            ]
          },
          "exterior_sqft": {
            "type": [
              "number",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "application_link": {
            "type": [
              "string",
              "null"
            ]
          },
          "tour_link": {
            "type": [
              "string",
              "null"
            ]
          },
          "quote_link": {
            "type": [
              "string",
              "null"
            ]
          },
          "specials": {
            "type": [
              "string",
              "null"
            ]
          },
          "is_handicap_accessible": {
            "type": "boolean"
          },
          "is_furnished": {
            "type": "boolean"
          },
          "is_affordable": {
            "type": "boolean"
          },
          "is_model": {
            "type": "boolean"
          },
          "is_guest_suite": {
            "type": "boolean"
          },
          "is_penthouse": {
            "type": "boolean"
          },
          "is_available": {
            "type": "boolean"
          },
          "is_featured": {
            "type": "boolean"
          },
          "is_hidden": {
            "type": "boolean"
          },
          "available_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          },
          "made_ready_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          },
          "vacate_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          },
          "deposit": {
            "type": [
              "number",
              "null"
            ]
          },
          "min_rent": {
            "type": [
              "number",
              "null"
            ],
            "description": "Total monthly leasing price: base rent plus monthly mandatory fees."
          },
          "max_rent": {
            "type": [
              "number",
              "null"
            ],
            "description": "Total monthly leasing price: base rent plus monthly mandatory fees."
          },
          "min_base_rent": {
            "type": [
              "number",
              "null"
            ],
            "description": "Base rent, before fees."
          },
          "max_base_rent": {
            "type": [
              "number",
              "null"
            ],
            "description": "Base rent, before fees."
          },
          "reference_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "external_ids": {
            "$ref": "#/components/schemas/ExternalIdsWrite"
          },
          "tags": {
            "type": [
              "array",
              "null"
            ],
            "items": {}
          },
          "start_date": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          },
          "amenity_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "uniqueItems": true,
            "description": "The complete set of amenities linked to this record, in display order (the position becomes the link's sort order). Replaces the current set; `[]` clears it; omit to leave it unchanged. Each id must be an amenity in the account that the caller can view.",
            "maxItems": 200
          },
          "slug": {
            "type": "string",
            "minLength": 5,
            "maxLength": 255,
            "pattern": "^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$",
            "description": "The record's URL slug: at least five lowercase letters, numbers and hyphens, unique among every record of its kind. Generated when omitted on create. Changing it changes the record's URLs; Resi does not redirect the old one."
          }
        },
        "type": "object",
        "description": "Each rent bound has an authoritative side and a calculated one. Base rent is authoritative unless the property's PMS connection sends all-in rents (`pricing_includes_fees`). Send either side and the other is calculated from it and the monthly fees; sending both sides of one bound is a `422`. A field the property's PMS connection syncs is refused with a `422` naming the connection: the next sync would overwrite it."
      },
      "UnitUpdate": {
        "properties": {
          "property_id": {
            "type": "string",
            "format": "uuid"
          },
          "number": {
            "type": "string"
          },
          "building_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ]
          },
          "floor_plan_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ]
          },
          "is_enabled": {
            "type": "boolean"
          },
          "floor": {
            "type": [
              "string",
              "integer",
              "null"
            ],
            "description": "The floor as a label, such as `12`, `PH` or `Garden`. A number is stored as text."
          },
          "bedrooms": {
            "type": [
              "number",
              "null"
            ]
          },
          "bathrooms": {
            "type": [
              "number",
              "null"
            ]
          },
          "interior_sqft": {
            "type": [
              "number",
              "null"
            ]
          },
          "exterior_sqft": {
            "type": [
              "number",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "application_link": {
            "type": [
              "string",
              "null"
            ]
          },
          "tour_link": {
            "type": [
              "string",
              "null"
            ]
          },
          "quote_link": {
            "type": [
              "string",
              "null"
            ]
          },
          "specials": {
            "type": [
              "string",
              "null"
            ]
          },
          "is_handicap_accessible": {
            "type": "boolean"
          },
          "is_furnished": {
            "type": "boolean"
          },
          "is_affordable": {
            "type": "boolean"
          },
          "is_model": {
            "type": "boolean"
          },
          "is_guest_suite": {
            "type": "boolean"
          },
          "is_penthouse": {
            "type": "boolean"
          },
          "is_available": {
            "type": "boolean"
          },
          "is_featured": {
            "type": "boolean"
          },
          "is_hidden": {
            "type": "boolean"
          },
          "available_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          },
          "made_ready_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          },
          "vacate_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          },
          "deposit": {
            "type": [
              "number",
              "null"
            ]
          },
          "min_rent": {
            "type": [
              "number",
              "null"
            ],
            "description": "Total monthly leasing price: base rent plus monthly mandatory fees."
          },
          "max_rent": {
            "type": [
              "number",
              "null"
            ],
            "description": "Total monthly leasing price: base rent plus monthly mandatory fees."
          },
          "min_base_rent": {
            "type": [
              "number",
              "null"
            ],
            "description": "Base rent, before fees."
          },
          "max_base_rent": {
            "type": [
              "number",
              "null"
            ],
            "description": "Base rent, before fees."
          },
          "reference_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "external_ids": {
            "$ref": "#/components/schemas/ExternalIdsWrite"
          },
          "tags": {
            "type": [
              "array",
              "null"
            ],
            "items": {}
          },
          "start_date": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          },
          "amenity_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "uniqueItems": true,
            "description": "The complete set of amenities linked to this record, in display order (the position becomes the link's sort order). Replaces the current set; `[]` clears it; omit to leave it unchanged. Each id must be an amenity in the account that the caller can view.",
            "maxItems": 200
          },
          "slug": {
            "type": "string",
            "minLength": 5,
            "maxLength": 255,
            "pattern": "^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$",
            "description": "The record's URL slug: at least five lowercase letters, numbers and hyphens, unique among every record of its kind. Generated when omitted on create. Changing it changes the record's URLs; Resi does not redirect the old one."
          }
        },
        "type": "object",
        "description": "Each rent bound has an authoritative side and a calculated one. Base rent is authoritative unless the property's PMS connection sends all-in rents (`pricing_includes_fees`). Send either side and the other is calculated from it and the monthly fees; sending both sides of one bound is a `422`. A field the property's PMS connection syncs is refused with a `422` naming the connection: the next sync would overwrite it."
      },
      "AmenityCreate": {
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "is_enabled": {
            "type": "boolean"
          },
          "is_property_marketable": {
            "type": "boolean"
          },
          "code": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "type": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "community_amenity",
              "unit_amenity",
              null
            ]
          },
          "mits_amenity_type": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "24 Hour Access",
              "Basketball Court",
              "Bicycle Storage",
              "Breakfast/Coffee Concierge",
              "Business Center",
              "Cabana",
              "Car Charging Station",
              "Car Wash Area",
              "Clubhouse",
              "Community-Wide WiFi",
              "Composting",
              "Concierge",
              "Controlled Access",
              "Corporate Suites",
              "Courtyard",
              "Day Care",
              "Disposal Chutes",
              "Dock",
              "Doorman",
              "Dry Cleaning Service",
              "Elevator",
              "Fenced Lot",
              "Fitness Center",
              "Furnished Units Available",
              "Gameroom",
              "Gas Range",
              "Gated",
              "Golf Course",
              "Grill",
              "Grocery Service",
              "Guest Apartment",
              "Health Club Discount",
              "Hearing Impaired Accessible",
              "House Sitter Services",
              "Individual Locking Bedrooms",
              "Lake Access",
              "Laundry Facilities",
              "Laundry Service",
              "Lounge",
              "Maid Service",
              "Maintenance on site",
              "Meal Service",
              "Media Center/Movie Theatre",
              "Multi Use Room",
              "On-Site ATM",
              "On-Site Retail",
              "Online Services",
              "Package Service",
              "Pet Care",
              "Pet Play Area",
              "Pet Washing Station",
              "Picnic Area",
              "Planned Social Activities",
              "Playground",
              "Pond",
              "Pool",
              "Private Bathroom",
              "Property Manager on Site",
              "Public Transportation",
              "Putting Greens",
              "Racquetball Court",
              "Recycling",
              "Renters Insurance Program",
              "Roof Terrace",
              "Roommate Matching",
              "Sauna",
              "Shuttle To Campus",
              "Shuttle to Train",
              "Spa",
              "Storage Space",
              "Study Lounge",
              "Sundeck",
              "Tanning Salon",
              "Tennis Court",
              "Trash Pickup - Curbside",
              "Trash Pickup - Door to Door",
              "Video Patrol",
              "Vintage Building",
              "Vision Impaired Accessible",
              "Volleyball Court",
              "Walk To Campus",
              "Walking/Biking Trails",
              "Waterfront",
              "Wi-Fi",
              "Zen Garden",
              "Individual Leases Available",
              "Key Fob Entry",
              "Conference Rooms",
              "Hot Tub",
              "Walk-Up",
              "Dog Park",
              "Air Conditioning",
              "Attic",
              "Balcony",
              "Basement",
              "Bay Window",
              "Breakfast Nook",
              "Built-In Bookshelves",
              "Cable Ready",
              "Carpet",
              "Ceiling Fans",
              "Coffee System",
              "Crown Molding",
              "Deck",
              "Den",
              "Dining Room",
              "Dishwasher",
              "Disposal",
              "Double Pane Windows",
              "Double Vanities",
              "Eat-in Kitchen",
              "Family Room",
              "Fireplace",
              "Framed Mirrors",
              "Freezer",
              "Furnished",
              "Garden",
              "Granite Countertops",
              "Greenhouse",
              "Handrails",
              "Hardwood Floors",
              "Heating",
              "High Ceilings",
              "High Speed Internet Access",
              "Ice Maker",
              "Instant Hot Water",
              "Intercom",
              "Island Kitchen",
              "Kitchen",
              "Large Bedrooms",
              "Lawn",
              "Linen Closet",
              "Loft Layout",
              "Microwave",
              "Mother-in-law Unit",
              "Mud Room",
              "Office",
              "Oven",
              "Pantry",
              "Patio",
              "Porch",
              "Range",
              "Recreation Room",
              "Refrigerator",
              "Satellite TV",
              "Security System",
              "Skylights",
              "Smoke Free",
              "Sprinkler System",
              "Stainless Steel Appliances",
              "Sunroom",
              "Surround Sound",
              "Tile Floors",
              "Trash Compactor",
              "Tub/Shower",
              "Vacuum System",
              "Vaulted Ceiling",
              "Views",
              "Vinyl Flooring",
              "Walk-In Closets",
              "Warming Drawer",
              "Washer/Dryer",
              "Washer/Dryer Hookup",
              "Wet Bar",
              "Wheelchair Accessible (Rooms)",
              "Window Coverings",
              "Workshop",
              "Yard",
              "Floor to Ceiling Windows",
              "Quartz Countertops",
              "Other",
              null
            ],
            "description": "The MITS 5.0 amenity type ILS feeds carry (`AmenityType` in an Apartments.com feed). Null when the amenity has no MITS equivalent."
          },
          "tags": {
            "type": [
              "array",
              "null"
            ],
            "items": {}
          },
          "reference_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "property_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "uniqueItems": true,
            "description": "The complete set of properties this amenity is linked to. Replaces the current set; `[]` clears it; omit to leave it unchanged."
          },
          "unit_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "uniqueItems": true,
            "description": "The complete set of units this amenity is linked to. Replaces the current set; `[]` clears it; omit to leave it unchanged.",
            "maxItems": 2000
          },
          "floor_plan_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "uniqueItems": true,
            "description": "The complete set of floor plans this amenity is linked to. Replaces the current set; `[]` clears it; omit to leave it unchanged.",
            "maxItems": 500
          },
          "property_id": {
            "type": "string",
            "format": "uuid",
            "description": "Shorthand for a one-element `property_ids`; ignored when `property_ids` is sent."
          }
        },
        "type": "object"
      },
      "AmenityUpdate": {
        "properties": {
          "name": {
            "type": "string"
          },
          "is_enabled": {
            "type": "boolean"
          },
          "is_property_marketable": {
            "type": "boolean"
          },
          "code": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "type": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "community_amenity",
              "unit_amenity",
              null
            ]
          },
          "mits_amenity_type": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "24 Hour Access",
              "Basketball Court",
              "Bicycle Storage",
              "Breakfast/Coffee Concierge",
              "Business Center",
              "Cabana",
              "Car Charging Station",
              "Car Wash Area",
              "Clubhouse",
              "Community-Wide WiFi",
              "Composting",
              "Concierge",
              "Controlled Access",
              "Corporate Suites",
              "Courtyard",
              "Day Care",
              "Disposal Chutes",
              "Dock",
              "Doorman",
              "Dry Cleaning Service",
              "Elevator",
              "Fenced Lot",
              "Fitness Center",
              "Furnished Units Available",
              "Gameroom",
              "Gas Range",
              "Gated",
              "Golf Course",
              "Grill",
              "Grocery Service",
              "Guest Apartment",
              "Health Club Discount",
              "Hearing Impaired Accessible",
              "House Sitter Services",
              "Individual Locking Bedrooms",
              "Lake Access",
              "Laundry Facilities",
              "Laundry Service",
              "Lounge",
              "Maid Service",
              "Maintenance on site",
              "Meal Service",
              "Media Center/Movie Theatre",
              "Multi Use Room",
              "On-Site ATM",
              "On-Site Retail",
              "Online Services",
              "Package Service",
              "Pet Care",
              "Pet Play Area",
              "Pet Washing Station",
              "Picnic Area",
              "Planned Social Activities",
              "Playground",
              "Pond",
              "Pool",
              "Private Bathroom",
              "Property Manager on Site",
              "Public Transportation",
              "Putting Greens",
              "Racquetball Court",
              "Recycling",
              "Renters Insurance Program",
              "Roof Terrace",
              "Roommate Matching",
              "Sauna",
              "Shuttle To Campus",
              "Shuttle to Train",
              "Spa",
              "Storage Space",
              "Study Lounge",
              "Sundeck",
              "Tanning Salon",
              "Tennis Court",
              "Trash Pickup - Curbside",
              "Trash Pickup - Door to Door",
              "Video Patrol",
              "Vintage Building",
              "Vision Impaired Accessible",
              "Volleyball Court",
              "Walk To Campus",
              "Walking/Biking Trails",
              "Waterfront",
              "Wi-Fi",
              "Zen Garden",
              "Individual Leases Available",
              "Key Fob Entry",
              "Conference Rooms",
              "Hot Tub",
              "Walk-Up",
              "Dog Park",
              "Air Conditioning",
              "Attic",
              "Balcony",
              "Basement",
              "Bay Window",
              "Breakfast Nook",
              "Built-In Bookshelves",
              "Cable Ready",
              "Carpet",
              "Ceiling Fans",
              "Coffee System",
              "Crown Molding",
              "Deck",
              "Den",
              "Dining Room",
              "Dishwasher",
              "Disposal",
              "Double Pane Windows",
              "Double Vanities",
              "Eat-in Kitchen",
              "Family Room",
              "Fireplace",
              "Framed Mirrors",
              "Freezer",
              "Furnished",
              "Garden",
              "Granite Countertops",
              "Greenhouse",
              "Handrails",
              "Hardwood Floors",
              "Heating",
              "High Ceilings",
              "High Speed Internet Access",
              "Ice Maker",
              "Instant Hot Water",
              "Intercom",
              "Island Kitchen",
              "Kitchen",
              "Large Bedrooms",
              "Lawn",
              "Linen Closet",
              "Loft Layout",
              "Microwave",
              "Mother-in-law Unit",
              "Mud Room",
              "Office",
              "Oven",
              "Pantry",
              "Patio",
              "Porch",
              "Range",
              "Recreation Room",
              "Refrigerator",
              "Satellite TV",
              "Security System",
              "Skylights",
              "Smoke Free",
              "Sprinkler System",
              "Stainless Steel Appliances",
              "Sunroom",
              "Surround Sound",
              "Tile Floors",
              "Trash Compactor",
              "Tub/Shower",
              "Vacuum System",
              "Vaulted Ceiling",
              "Views",
              "Vinyl Flooring",
              "Walk-In Closets",
              "Warming Drawer",
              "Washer/Dryer",
              "Washer/Dryer Hookup",
              "Wet Bar",
              "Wheelchair Accessible (Rooms)",
              "Window Coverings",
              "Workshop",
              "Yard",
              "Floor to Ceiling Windows",
              "Quartz Countertops",
              "Other",
              null
            ],
            "description": "The MITS 5.0 amenity type ILS feeds carry (`AmenityType` in an Apartments.com feed). Null when the amenity has no MITS equivalent."
          },
          "tags": {
            "type": [
              "array",
              "null"
            ],
            "items": {}
          },
          "reference_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "property_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "uniqueItems": true,
            "description": "The complete set of properties this amenity is linked to. Replaces the current set; `[]` clears it; omit to leave it unchanged."
          },
          "unit_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "uniqueItems": true,
            "description": "The complete set of units this amenity is linked to. Replaces the current set; `[]` clears it; omit to leave it unchanged.",
            "maxItems": 2000
          },
          "floor_plan_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "uniqueItems": true,
            "description": "The complete set of floor plans this amenity is linked to. Replaces the current set; `[]` clears it; omit to leave it unchanged.",
            "maxItems": 500
          },
          "property_id": {
            "type": "string",
            "format": "uuid",
            "description": "Shorthand for a one-element `property_ids`; ignored when `property_ids` is sent."
          }
        },
        "type": "object"
      },
      "FeeCreate": {
        "required": [
          "code",
          "class",
          "name"
        ],
        "properties": {
          "code": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "class": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "settings": {
            "type": [
              "object",
              "array",
              "null"
            ]
          },
          "currency": {
            "type": [
              "string",
              "null"
            ]
          },
          "property_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "The complete list of properties the fee is assigned to directly. A listed property keeps its assignment unchanged, or gets a plain one; a property left out loses its property-level assignment, filters and overrides included. Floor plan and unit assignments are untouched. For filters, dates or overrides, use the fee assignments endpoints."
          }
        },
        "type": "object"
      },
      "FeeUpdate": {
        "properties": {
          "code": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "class": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "settings": {
            "type": [
              "object",
              "array",
              "null"
            ]
          },
          "currency": {
            "type": [
              "string",
              "null"
            ]
          },
          "property_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "The complete list of properties the fee is assigned to directly. A listed property keeps its assignment unchanged, or gets a plain one; a property left out loses its property-level assignment, filters and overrides included. Floor plan and unit assignments are untouched. For filters, dates or overrides, use the fee assignments endpoints."
          }
        },
        "type": "object"
      },
      "ReviewCreate": {
        "required": [
          "property_id",
          "reviewer_name",
          "rating",
          "review_date"
        ],
        "properties": {
          "property_id": {
            "type": "string",
            "format": "uuid"
          },
          "source": {
            "type": "string",
            "enum": [
              "google_business_profile"
            ]
          },
          "external_review_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "reviewer_name": {
            "type": "string"
          },
          "reviewer_photo_url": {
            "type": [
              "string",
              "null"
            ]
          },
          "review_text": {
            "type": [
              "string",
              "null"
            ]
          },
          "reply_text": {
            "type": [
              "string",
              "null"
            ]
          },
          "reply_date": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "rating": {
            "type": "integer",
            "minimum": 1,
            "maximum": 5
          },
          "review_date": {
            "type": "string",
            "format": "date-time"
          },
          "is_published": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "ReviewUpdate": {
        "properties": {
          "property_id": {
            "type": "string",
            "format": "uuid"
          },
          "source": {
            "type": "string",
            "enum": [
              "google_business_profile"
            ]
          },
          "external_review_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "reviewer_name": {
            "type": "string"
          },
          "reviewer_photo_url": {
            "type": [
              "string",
              "null"
            ]
          },
          "review_text": {
            "type": [
              "string",
              "null"
            ]
          },
          "reply_text": {
            "type": [
              "string",
              "null"
            ]
          },
          "reply_date": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "rating": {
            "type": "integer",
            "minimum": 1,
            "maximum": 5
          },
          "review_date": {
            "type": "string",
            "format": "date-time"
          },
          "is_published": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "AnnouncementCreate": {
        "required": [
          "internal_title"
        ],
        "properties": {
          "internal_title": {
            "type": "string"
          },
          "is_enabled": {
            "type": "boolean"
          },
          "is_global": {
            "type": "boolean"
          },
          "title": {
            "type": [
              "string",
              "null"
            ]
          },
          "meta": {
            "type": [
              "string",
              "null"
            ]
          },
          "text": {
            "type": [
              "string",
              "null"
            ]
          },
          "disclaimer": {
            "type": [
              "string",
              "null"
            ]
          },
          "link_primary_url": {
            "type": [
              "string",
              "null"
            ],
            "description": "An `http` or `https` URL, a relative path, an anchor or query, or a `mailto:` or `tel:` link. Any other scheme is refused, including one spelled with character references (`javascript&#58;`)."
          },
          "link_primary_text": {
            "type": [
              "string",
              "null"
            ]
          },
          "link_secondary_url": {
            "type": [
              "string",
              "null"
            ],
            "description": "An `http` or `https` URL, a relative path, an anchor or query, or a `mailto:` or `tel:` link. Any other scheme is refused, including one spelled with character references (`javascript&#58;`)."
          },
          "link_secondary_text": {
            "type": [
              "string",
              "null"
            ]
          },
          "starts_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "ends_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "period": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "start": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "date-time"
              },
              "end": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "date-time"
              }
            },
            "description": "Write alias that sets starts_at and ends_at together. Not returned; read starts_at and ends_at."
          },
          "sort_order": {
            "type": [
              "integer",
              "null"
            ]
          },
          "elements_key": {
            "type": [
              "string",
              "null"
            ]
          },
          "property_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          }
        },
        "type": "object"
      },
      "AnnouncementUpdate": {
        "properties": {
          "internal_title": {
            "type": "string"
          },
          "is_enabled": {
            "type": "boolean"
          },
          "is_global": {
            "type": "boolean"
          },
          "title": {
            "type": [
              "string",
              "null"
            ]
          },
          "meta": {
            "type": [
              "string",
              "null"
            ]
          },
          "text": {
            "type": [
              "string",
              "null"
            ]
          },
          "disclaimer": {
            "type": [
              "string",
              "null"
            ]
          },
          "link_primary_url": {
            "type": [
              "string",
              "null"
            ],
            "description": "An `http` or `https` URL, a relative path, an anchor or query, or a `mailto:` or `tel:` link. Any other scheme is refused, including one spelled with character references (`javascript&#58;`)."
          },
          "link_primary_text": {
            "type": [
              "string",
              "null"
            ]
          },
          "link_secondary_url": {
            "type": [
              "string",
              "null"
            ],
            "description": "An `http` or `https` URL, a relative path, an anchor or query, or a `mailto:` or `tel:` link. Any other scheme is refused, including one spelled with character references (`javascript&#58;`)."
          },
          "link_secondary_text": {
            "type": [
              "string",
              "null"
            ]
          },
          "starts_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "ends_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "period": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "start": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "date-time"
              },
              "end": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "date-time"
              }
            },
            "description": "Write alias that sets starts_at and ends_at together. Not returned; read starts_at and ends_at."
          },
          "sort_order": {
            "type": [
              "integer",
              "null"
            ]
          },
          "elements_key": {
            "type": [
              "string",
              "null"
            ]
          },
          "property_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          }
        },
        "type": "object"
      },
      "ContentBlockCreate": {
        "required": [
          "internal_title"
        ],
        "properties": {
          "internal_title": {
            "type": "string"
          },
          "is_enabled": {
            "type": "boolean"
          },
          "is_global": {
            "type": "boolean"
          },
          "type": {
            "type": "string",
            "enum": [
              "single",
              "multiple"
            ]
          },
          "media_type": {
            "type": "string",
            "enum": [
              "gallery",
              "virtual_tours",
              "videos"
            ]
          },
          "title": {
            "type": [
              "string",
              "null"
            ]
          },
          "subtitle": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "link_primary_url": {
            "type": [
              "string",
              "null"
            ],
            "description": "An `http` or `https` URL, a relative path, an anchor or query, or a `mailto:` or `tel:` link. Any other scheme is refused, including one spelled with character references (`javascript&#58;`)."
          },
          "link_primary_text": {
            "type": [
              "string",
              "null"
            ]
          },
          "link_secondary_url": {
            "type": [
              "string",
              "null"
            ],
            "description": "An `http` or `https` URL, a relative path, an anchor or query, or a `mailto:` or `tel:` link. Any other scheme is refused, including one spelled with character references (`javascript&#58;`)."
          },
          "link_secondary_text": {
            "type": [
              "string",
              "null"
            ]
          },
          "sort_order": {
            "type": [
              "integer",
              "null"
            ]
          },
          "elements_key": {
            "type": [
              "string",
              "null"
            ]
          },
          "internal_tags": {
            "type": [
              "array",
              "null"
            ],
            "items": {}
          },
          "property_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "content_items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContentItemWrite"
            },
            "description": "The block's items, in full. On update, an item sent with its `id` is changed in place (keeping its id and media), one without is created, and an existing item left out is deleted."
          }
        },
        "type": "object"
      },
      "ContentBlockUpdate": {
        "properties": {
          "internal_title": {
            "type": "string"
          },
          "is_enabled": {
            "type": "boolean"
          },
          "is_global": {
            "type": "boolean"
          },
          "type": {
            "type": "string",
            "enum": [
              "single",
              "multiple"
            ]
          },
          "media_type": {
            "type": "string",
            "enum": [
              "gallery",
              "virtual_tours",
              "videos"
            ]
          },
          "title": {
            "type": [
              "string",
              "null"
            ]
          },
          "subtitle": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "link_primary_url": {
            "type": [
              "string",
              "null"
            ],
            "description": "An `http` or `https` URL, a relative path, an anchor or query, or a `mailto:` or `tel:` link. Any other scheme is refused, including one spelled with character references (`javascript&#58;`)."
          },
          "link_primary_text": {
            "type": [
              "string",
              "null"
            ]
          },
          "link_secondary_url": {
            "type": [
              "string",
              "null"
            ],
            "description": "An `http` or `https` URL, a relative path, an anchor or query, or a `mailto:` or `tel:` link. Any other scheme is refused, including one spelled with character references (`javascript&#58;`)."
          },
          "link_secondary_text": {
            "type": [
              "string",
              "null"
            ]
          },
          "sort_order": {
            "type": [
              "integer",
              "null"
            ]
          },
          "elements_key": {
            "type": [
              "string",
              "null"
            ]
          },
          "internal_tags": {
            "type": [
              "array",
              "null"
            ],
            "items": {}
          },
          "property_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "content_items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContentItemWrite"
            },
            "description": "The block's items, in full. On update, an item sent with its `id` is changed in place (keeping its id and media), one without is created, and an existing item left out is deleted."
          }
        },
        "type": "object"
      },
      "FaqCreate": {
        "required": [
          "question"
        ],
        "properties": {
          "faq_topic_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ]
          },
          "is_global": {
            "type": "boolean"
          },
          "question": {
            "type": "string"
          },
          "answer": {
            "type": [
              "string",
              "null"
            ]
          },
          "sort_order": {
            "type": [
              "integer",
              "null"
            ]
          },
          "tags": {
            "type": [
              "array",
              "null"
            ],
            "items": {}
          },
          "property_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          }
        },
        "type": "object"
      },
      "FaqUpdate": {
        "properties": {
          "faq_topic_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ]
          },
          "is_global": {
            "type": "boolean"
          },
          "question": {
            "type": "string"
          },
          "answer": {
            "type": [
              "string",
              "null"
            ]
          },
          "sort_order": {
            "type": [
              "integer",
              "null"
            ]
          },
          "tags": {
            "type": [
              "array",
              "null"
            ],
            "items": {}
          },
          "property_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          }
        },
        "type": "object"
      },
      "GalleryCreate": {
        "required": [
          "internal_title"
        ],
        "properties": {
          "internal_title": {
            "type": "string"
          },
          "is_enabled": {
            "type": "boolean"
          },
          "is_global": {
            "type": "boolean"
          },
          "type": {
            "type": "string",
            "enum": [
              "image",
              "video",
              "panorama",
              "virtual_tour"
            ]
          },
          "title": {
            "type": [
              "string",
              "null"
            ]
          },
          "text": {
            "type": [
              "string",
              "null"
            ]
          },
          "sort_order": {
            "type": [
              "integer",
              "null"
            ]
          },
          "elements_key": {
            "type": [
              "string",
              "null"
            ]
          },
          "property_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          }
        },
        "type": "object"
      },
      "GalleryUpdate": {
        "properties": {
          "internal_title": {
            "type": "string"
          },
          "is_enabled": {
            "type": "boolean"
          },
          "is_global": {
            "type": "boolean"
          },
          "type": {
            "type": "string",
            "enum": [
              "image",
              "video",
              "panorama",
              "virtual_tour"
            ]
          },
          "title": {
            "type": [
              "string",
              "null"
            ]
          },
          "text": {
            "type": [
              "string",
              "null"
            ]
          },
          "sort_order": {
            "type": [
              "integer",
              "null"
            ]
          },
          "elements_key": {
            "type": [
              "string",
              "null"
            ]
          },
          "property_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          }
        },
        "type": "object"
      },
      "NeighborhoodPlaceCreate": {
        "required": [
          "property_id",
          "neighborhood_category_id",
          "name"
        ],
        "properties": {
          "property_id": {
            "type": "string",
            "format": "uuid"
          },
          "neighborhood_category_id": {
            "type": "string",
            "format": "uuid",
            "description": "A category in the account; list them with GET /api/v2/neighborhood-categories."
          },
          "name": {
            "type": "string"
          },
          "address": {
            "type": [
              "string",
              "null"
            ]
          },
          "rating": {
            "type": [
              "string",
              "null"
            ]
          },
          "lat": {
            "type": [
              "number",
              "null"
            ]
          },
          "lng": {
            "type": [
              "number",
              "null"
            ]
          },
          "url": {
            "type": [
              "string",
              "null"
            ]
          },
          "place_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "drive_time": {
            "type": [
              "string",
              "null"
            ]
          },
          "walk_time": {
            "type": [
              "string",
              "null"
            ]
          },
          "transit_time": {
            "type": [
              "string",
              "null"
            ]
          },
          "bike_time": {
            "type": [
              "string",
              "null"
            ]
          },
          "sort_order": {
            "type": [
              "integer",
              "null"
            ]
          },
          "tags": {
            "type": [
              "array",
              "null"
            ],
            "items": {}
          }
        },
        "type": "object"
      },
      "NeighborhoodPlaceUpdate": {
        "properties": {
          "property_id": {
            "type": "string",
            "format": "uuid"
          },
          "neighborhood_category_id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "address": {
            "type": [
              "string",
              "null"
            ]
          },
          "rating": {
            "type": [
              "string",
              "null"
            ]
          },
          "lat": {
            "type": [
              "number",
              "null"
            ]
          },
          "lng": {
            "type": [
              "number",
              "null"
            ]
          },
          "url": {
            "type": [
              "string",
              "null"
            ]
          },
          "place_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "drive_time": {
            "type": [
              "string",
              "null"
            ]
          },
          "walk_time": {
            "type": [
              "string",
              "null"
            ]
          },
          "transit_time": {
            "type": [
              "string",
              "null"
            ]
          },
          "bike_time": {
            "type": [
              "string",
              "null"
            ]
          },
          "sort_order": {
            "type": [
              "integer",
              "null"
            ]
          },
          "tags": {
            "type": [
              "array",
              "null"
            ],
            "items": {}
          }
        },
        "type": "object"
      },
      "ContentItemWrite": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "On update, the id of one of the block's items to change it in place. Items without an id are created."
          },
          "is_enabled": {
            "type": "boolean"
          },
          "media_type": {
            "type": "string",
            "enum": [
              "gallery",
              "virtual_tours",
              "videos"
            ]
          },
          "internal_title": {
            "type": [
              "string",
              "null"
            ]
          },
          "title": {
            "type": [
              "string",
              "null"
            ]
          },
          "meta": {
            "type": [
              "string",
              "null"
            ]
          },
          "text": {
            "type": [
              "string",
              "null"
            ]
          },
          "link_primary_url": {
            "type": [
              "string",
              "null"
            ],
            "description": "An `http` or `https` URL, a relative path, an anchor or query, or a `mailto:` or `tel:` link. Any other scheme is refused, including one spelled with character references (`javascript&#58;`)."
          },
          "link_primary_text": {
            "type": [
              "string",
              "null"
            ]
          },
          "link_secondary_url": {
            "type": [
              "string",
              "null"
            ],
            "description": "An `http` or `https` URL, a relative path, an anchor or query, or a `mailto:` or `tel:` link. Any other scheme is refused, including one spelled with character references (`javascript&#58;`)."
          },
          "link_secondary_text": {
            "type": [
              "string",
              "null"
            ]
          },
          "sort_order": {
            "type": [
              "integer",
              "null"
            ]
          }
        }
      },
      "ContentItem": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "created_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "updated_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "content_group_id": {
            "type": "string",
            "format": "uuid"
          },
          "is_enabled": {
            "type": "boolean"
          },
          "media_type": {
            "type": "string",
            "enum": [
              "gallery",
              "virtual_tours",
              "videos"
            ]
          },
          "internal_title": {
            "type": [
              "string",
              "null"
            ]
          },
          "title": {
            "type": [
              "string",
              "null"
            ]
          },
          "meta": {
            "type": [
              "string",
              "null"
            ]
          },
          "text": {
            "type": [
              "string",
              "null"
            ]
          },
          "link_primary_url": {
            "type": [
              "string",
              "null"
            ]
          },
          "link_primary_text": {
            "type": [
              "string",
              "null"
            ]
          },
          "link_secondary_url": {
            "type": [
              "string",
              "null"
            ]
          },
          "link_secondary_text": {
            "type": [
              "string",
              "null"
            ]
          },
          "sort_order": {
            "type": [
              "integer",
              "null"
            ]
          },
          "images": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MediaAsset"
            },
            "readOnly": true
          },
          "background_image": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/MediaAsset"
              },
              {
                "type": "null"
              }
            ],
            "readOnly": true
          },
          "videos": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmbeddableMedia"
            },
            "readOnly": true
          },
          "virtual_tours": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmbeddableMedia"
            },
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "created_at",
          "updated_at",
          "content_group_id",
          "is_enabled",
          "media_type",
          "internal_title",
          "title",
          "meta",
          "text",
          "link_primary_url",
          "link_primary_text",
          "link_secondary_url",
          "link_secondary_text",
          "sort_order",
          "images",
          "background_image",
          "videos",
          "virtual_tours"
        ]
      },
      "Property": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "created_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "updated_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "name": {
            "type": "string",
            "maxLength": 255
          },
          "is_enabled": {
            "type": "boolean"
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "urls": {
            "type": [
              "object",
              "array",
              "null"
            ],
            "additionalProperties": true
          },
          "office_hours": {
            "type": [
              "object",
              "array",
              "null"
            ],
            "additionalProperties": true
          },
          "phone_numbers": {
            "type": [
              "array",
              "null"
            ],
            "items": {}
          },
          "socials": {
            "type": [
              "object",
              "array",
              "null"
            ],
            "additionalProperties": true
          },
          "emails": {
            "type": [
              "array",
              "null"
            ],
            "items": {}
          },
          "settings": {
            "type": [
              "object",
              "array",
              "null"
            ],
            "additionalProperties": true
          },
          "tags": {
            "type": [
              "array",
              "null"
            ],
            "items": {}
          },
          "reference_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "domain": {
            "type": [
              "string",
              "null"
            ]
          },
          "data": {
            "type": [
              "object",
              "array",
              "null"
            ],
            "additionalProperties": true
          },
          "slug": {
            "type": [
              "string",
              "null"
            ]
          },
          "property_images": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MediaAsset"
            },
            "readOnly": true,
            "x-present-when": "Not on a property nested inside a unit, floor plan or building."
          },
          "images": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MediaAsset"
            },
            "readOnly": true,
            "x-present-when": "Not on a property nested inside a unit, floor plan or building."
          },
          "videos": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmbeddableMedia"
            },
            "readOnly": true,
            "x-present-when": "Not on a property nested inside a unit, floor plan or building."
          },
          "virtual_tours": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmbeddableMedia"
            },
            "readOnly": true,
            "x-present-when": "Not on a property nested inside a unit, floor plan or building."
          },
          "background_image": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/MediaAsset"
              },
              {
                "type": "null"
              }
            ],
            "readOnly": true,
            "x-present-when": "Not on a property nested inside a unit, floor plan or building."
          },
          "address": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PropertyAddress"
              },
              {
                "type": "null"
              }
            ]
          },
          "addresses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PropertyAddressListItem"
            },
            "description": "Every address of the property, the primary one included."
          },
          "amenity_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "The property's amenities, in the order the property lists them.",
            "x-present-when": "Only on a single-property response (show, create, update)."
          },
          "pet_policy": {
            "$ref": "#/components/schemas/PetPolicySettings"
          },
          "leasing_settings": {
            "$ref": "#/components/schemas/LeasingSettings"
          },
          "pricing_display_settings": {
            "$ref": "#/components/schemas/PricingDisplaySettings"
          },
          "office_hours_settings": {
            "$ref": "#/components/schemas/OfficeHoursSettings"
          },
          "display_settings": {
            "$ref": "#/components/schemas/DisplaySettings"
          },
          "website_settings": {
            "$ref": "#/components/schemas/WebsiteSettings"
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "created_at",
          "updated_at",
          "name",
          "is_enabled",
          "description",
          "urls",
          "office_hours",
          "phone_numbers",
          "socials",
          "emails",
          "settings",
          "tags",
          "reference_id",
          "domain",
          "data",
          "slug",
          "address",
          "addresses",
          "pet_policy",
          "leasing_settings",
          "pricing_display_settings",
          "office_hours_settings",
          "display_settings",
          "website_settings"
        ]
      },
      "PropertyResponse": {
        "description": "Unlike other v2 resources, single-property responses are returned unwrapped: the property object is the response body itself, with no `data` envelope. The top-level `data` field is the property's own data attribute.",
        "$ref": "#/components/schemas/Property"
      },
      "PropertyCollection": {
        "type": "object",
        "required": [
          "data",
          "links",
          "meta"
        ],
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Property"
            }
          },
          "links": {
            "$ref": "#/components/schemas/PaginationLinks"
          },
          "meta": {
            "$ref": "#/components/schemas/PaginationMeta"
          }
        },
        "additionalProperties": false
      },
      "Building": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "created_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "updated_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "property_id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "is_enabled": {
            "type": "boolean"
          },
          "number": {
            "type": [
              "string",
              "null"
            ]
          },
          "code": {
            "type": [
              "string",
              "null"
            ]
          },
          "type": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "tags": {
            "type": [
              "array",
              "null"
            ],
            "items": {}
          },
          "reference_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "images": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MediaAsset"
            },
            "readOnly": true,
            "x-present-when": "Not on a building nested inside a unit."
          },
          "property": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Property"
              },
              {
                "type": "null"
              }
            ],
            "readOnly": true,
            "x-present-when": "Only on `GET /api/v2/buildings/{building}`."
          },
          "external_ids": {
            "$ref": "#/components/schemas/ExternalIds",
            "x-present-when": "Not on a building nested inside a unit."
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "created_at",
          "updated_at",
          "property_id",
          "name",
          "is_enabled",
          "number",
          "code",
          "type",
          "description",
          "tags",
          "reference_id"
        ]
      },
      "BuildingResponse": {
        "type": "object",
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/Building"
          }
        },
        "additionalProperties": false
      },
      "BuildingCollection": {
        "type": "object",
        "required": [
          "data",
          "links",
          "meta"
        ],
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Building"
            }
          },
          "links": {
            "$ref": "#/components/schemas/PaginationLinks"
          },
          "meta": {
            "$ref": "#/components/schemas/PaginationMeta"
          }
        },
        "additionalProperties": false
      },
      "FloorPlan": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "created_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "updated_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "property_id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "is_enabled": {
            "type": "boolean"
          },
          "is_featured": {
            "type": "boolean"
          },
          "has_specials": {
            "type": "boolean"
          },
          "code": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "min_rent": {
            "type": [
              "number",
              "null"
            ]
          },
          "max_rent": {
            "type": [
              "number",
              "null"
            ]
          },
          "min_base_rent": {
            "type": [
              "number",
              "null"
            ]
          },
          "max_base_rent": {
            "type": [
              "number",
              "null"
            ]
          },
          "monthly_fee_total": {
            "type": [
              "number",
              "null"
            ],
            "description": "Monthly-equivalent total of mandatory fees at the minimum price."
          },
          "monthly_fee_total_max": {
            "type": [
              "number",
              "null"
            ],
            "description": "The same at the maximum price; differs when a fee is a percentage of rent."
          },
          "upfront_fee_total": {
            "type": [
              "number",
              "null"
            ],
            "description": "Total of mandatory one-time fees."
          },
          "fee_breakdown": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FeeLine"
            },
            "description": "Every resolved fee, mandatory or not, as last stored by the pricing sync."
          },
          "fees_synced_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "When the pricing sync last wrote this record's rents and fees."
          },
          "min_sqft": {
            "type": [
              "number",
              "null"
            ]
          },
          "max_sqft": {
            "type": [
              "number",
              "null"
            ]
          },
          "min_bed": {
            "type": [
              "number",
              "null"
            ]
          },
          "max_bed": {
            "type": [
              "number",
              "null"
            ]
          },
          "min_bath": {
            "type": [
              "number",
              "null"
            ]
          },
          "max_bath": {
            "type": [
              "number",
              "null"
            ]
          },
          "min_deposit": {
            "type": [
              "number",
              "null"
            ]
          },
          "max_deposit": {
            "type": [
              "number",
              "null"
            ]
          },
          "available_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          },
          "reference_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "sort_order": {
            "type": [
              "integer",
              "null"
            ]
          },
          "tags": {
            "type": [
              "array",
              "null"
            ],
            "items": {}
          },
          "slug": {
            "type": [
              "string",
              "null"
            ]
          },
          "floor_plan_2d": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MediaAsset"
            },
            "readOnly": true,
            "x-present-when": "Not on a floor plan nested inside a unit."
          },
          "floor_plan_3d": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MediaAsset"
            },
            "readOnly": true,
            "x-present-when": "Not on a floor plan nested inside a unit."
          },
          "pdfs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MediaAsset"
            },
            "readOnly": true,
            "x-present-when": "Not on a floor plan nested inside a unit."
          },
          "images": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MediaAsset"
            },
            "readOnly": true,
            "x-present-when": "Not on a floor plan nested inside a unit."
          },
          "videos": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmbeddableMedia"
            },
            "readOnly": true,
            "x-present-when": "Not on a floor plan nested inside a unit."
          },
          "virtual_tours": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmbeddableMedia"
            },
            "readOnly": true,
            "x-present-when": "Not on a floor plan nested inside a unit."
          },
          "property": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Property"
              },
              {
                "type": "null"
              }
            ],
            "readOnly": true,
            "x-present-when": "Only on `GET /api/v2/floor-plans/{floor_plan}`."
          },
          "external_ids": {
            "$ref": "#/components/schemas/ExternalIds",
            "x-present-when": "Not on a floor plan nested inside a unit."
          },
          "amenities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Amenity"
            },
            "readOnly": true,
            "description": "Linked amenities in sort order. Not rendered on the V1 floor plan payload.",
            "x-present-when": "Not on a floor plan nested inside a unit."
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "created_at",
          "updated_at",
          "property_id",
          "name",
          "is_enabled",
          "is_featured",
          "has_specials",
          "code",
          "description",
          "min_rent",
          "max_rent",
          "min_base_rent",
          "max_base_rent",
          "monthly_fee_total",
          "monthly_fee_total_max",
          "upfront_fee_total",
          "fee_breakdown",
          "fees_synced_at",
          "min_sqft",
          "max_sqft",
          "min_bed",
          "max_bed",
          "min_bath",
          "max_bath",
          "min_deposit",
          "max_deposit",
          "available_at",
          "reference_id",
          "sort_order",
          "tags",
          "slug"
        ]
      },
      "FloorPlanResponse": {
        "type": "object",
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/FloorPlan"
          }
        },
        "additionalProperties": false
      },
      "FloorPlanCollection": {
        "type": "object",
        "required": [
          "data",
          "links",
          "meta"
        ],
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FloorPlan"
            }
          },
          "links": {
            "$ref": "#/components/schemas/PaginationLinks"
          },
          "meta": {
            "$ref": "#/components/schemas/PaginationMeta"
          }
        },
        "additionalProperties": false
      },
      "Unit": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "created_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "updated_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "property_id": {
            "type": "string",
            "format": "uuid"
          },
          "number": {
            "type": "string"
          },
          "building_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ]
          },
          "floor_plan_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ]
          },
          "is_enabled": {
            "type": "boolean"
          },
          "floor": {
            "type": [
              "string",
              "null"
            ],
            "description": "The floor as a label, such as `12`, `PH` or `Garden`."
          },
          "bedrooms": {
            "type": [
              "number",
              "null"
            ]
          },
          "bathrooms": {
            "type": [
              "number",
              "null"
            ]
          },
          "interior_sqft": {
            "type": [
              "number",
              "null"
            ]
          },
          "exterior_sqft": {
            "type": [
              "number",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "application_link": {
            "type": [
              "string",
              "null"
            ]
          },
          "tour_link": {
            "type": [
              "string",
              "null"
            ]
          },
          "quote_link": {
            "type": [
              "string",
              "null"
            ]
          },
          "specials": {
            "type": [
              "string",
              "null"
            ]
          },
          "is_handicap_accessible": {
            "type": "boolean"
          },
          "is_furnished": {
            "type": "boolean"
          },
          "is_affordable": {
            "type": "boolean"
          },
          "is_model": {
            "type": "boolean"
          },
          "is_guest_suite": {
            "type": "boolean"
          },
          "is_penthouse": {
            "type": "boolean"
          },
          "is_available": {
            "type": "boolean"
          },
          "is_featured": {
            "type": "boolean"
          },
          "is_hidden": {
            "type": "boolean"
          },
          "available_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          },
          "made_ready_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          },
          "vacate_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          },
          "deposit": {
            "type": [
              "number",
              "null"
            ]
          },
          "min_rent": {
            "type": [
              "number",
              "null"
            ]
          },
          "max_rent": {
            "type": [
              "number",
              "null"
            ]
          },
          "min_base_rent": {
            "type": [
              "number",
              "null"
            ]
          },
          "max_base_rent": {
            "type": [
              "number",
              "null"
            ]
          },
          "monthly_fee_total": {
            "type": [
              "number",
              "null"
            ],
            "description": "Monthly-equivalent total of mandatory fees at the minimum price."
          },
          "monthly_fee_total_max": {
            "type": [
              "number",
              "null"
            ],
            "description": "The same at the maximum price; differs when a fee is a percentage of rent."
          },
          "upfront_fee_total": {
            "type": [
              "number",
              "null"
            ],
            "description": "Total of mandatory one-time fees."
          },
          "fee_breakdown": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FeeLine"
            },
            "description": "Every resolved fee, mandatory or not, as last stored by the pricing sync."
          },
          "fees_synced_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "When the pricing sync last wrote this record's rents and fees."
          },
          "reference_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "external_ids": {
            "$ref": "#/components/schemas/ExternalIds"
          },
          "tags": {
            "type": [
              "array",
              "null"
            ],
            "items": {}
          },
          "start_date": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          },
          "slug": {
            "type": [
              "string",
              "null"
            ]
          },
          "pdfs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MediaAsset"
            },
            "readOnly": true
          },
          "images": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MediaAsset"
            },
            "readOnly": true
          },
          "videos": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmbeddableMedia"
            },
            "readOnly": true
          },
          "virtual_tours": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmbeddableMedia"
            },
            "readOnly": true
          },
          "property": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Property"
              },
              {
                "type": "null"
              }
            ],
            "readOnly": true,
            "x-present-when": "Only on `GET /api/v2/units/{unit}`."
          },
          "building": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Building"
              },
              {
                "type": "null"
              }
            ],
            "readOnly": true,
            "x-present-when": "Only on `GET /api/v2/units/{unit}`."
          },
          "floor_plan": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/FloorPlan"
              },
              {
                "type": "null"
              }
            ],
            "readOnly": true,
            "x-present-when": "Only on `GET /api/v2/units/{unit}`."
          },
          "amenities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Amenity"
            },
            "readOnly": true,
            "description": "Linked amenities in sort order; rendered on V1 as `unitAmenities`. Returned on show, create and update, not on the list endpoint.",
            "x-present-when": "Not on the list endpoint."
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "created_at",
          "updated_at",
          "property_id",
          "number",
          "building_id",
          "floor_plan_id",
          "is_enabled",
          "floor",
          "bedrooms",
          "bathrooms",
          "interior_sqft",
          "exterior_sqft",
          "description",
          "application_link",
          "tour_link",
          "quote_link",
          "specials",
          "is_handicap_accessible",
          "is_furnished",
          "is_affordable",
          "is_model",
          "is_guest_suite",
          "is_penthouse",
          "is_available",
          "is_featured",
          "is_hidden",
          "available_at",
          "made_ready_at",
          "vacate_at",
          "deposit",
          "min_rent",
          "max_rent",
          "min_base_rent",
          "max_base_rent",
          "monthly_fee_total",
          "monthly_fee_total_max",
          "upfront_fee_total",
          "fee_breakdown",
          "fees_synced_at",
          "reference_id",
          "external_ids",
          "tags",
          "start_date",
          "slug",
          "pdfs",
          "images",
          "videos",
          "virtual_tours"
        ]
      },
      "UnitResponse": {
        "type": "object",
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/Unit"
          }
        },
        "additionalProperties": false
      },
      "UnitCollection": {
        "type": "object",
        "required": [
          "data",
          "links",
          "meta"
        ],
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Unit"
            }
          },
          "links": {
            "$ref": "#/components/schemas/PaginationLinks"
          },
          "meta": {
            "$ref": "#/components/schemas/PaginationMeta"
          }
        },
        "additionalProperties": false
      },
      "Amenity": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "created_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "updated_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "name": {
            "type": "string"
          },
          "is_enabled": {
            "type": "boolean"
          },
          "is_property_marketable": {
            "type": "boolean"
          },
          "code": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "type": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "community_amenity",
              "unit_amenity",
              null
            ]
          },
          "mits_amenity_type": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "24 Hour Access",
              "Basketball Court",
              "Bicycle Storage",
              "Breakfast/Coffee Concierge",
              "Business Center",
              "Cabana",
              "Car Charging Station",
              "Car Wash Area",
              "Clubhouse",
              "Community-Wide WiFi",
              "Composting",
              "Concierge",
              "Controlled Access",
              "Corporate Suites",
              "Courtyard",
              "Day Care",
              "Disposal Chutes",
              "Dock",
              "Doorman",
              "Dry Cleaning Service",
              "Elevator",
              "Fenced Lot",
              "Fitness Center",
              "Furnished Units Available",
              "Gameroom",
              "Gas Range",
              "Gated",
              "Golf Course",
              "Grill",
              "Grocery Service",
              "Guest Apartment",
              "Health Club Discount",
              "Hearing Impaired Accessible",
              "House Sitter Services",
              "Individual Locking Bedrooms",
              "Lake Access",
              "Laundry Facilities",
              "Laundry Service",
              "Lounge",
              "Maid Service",
              "Maintenance on site",
              "Meal Service",
              "Media Center/Movie Theatre",
              "Multi Use Room",
              "On-Site ATM",
              "On-Site Retail",
              "Online Services",
              "Package Service",
              "Pet Care",
              "Pet Play Area",
              "Pet Washing Station",
              "Picnic Area",
              "Planned Social Activities",
              "Playground",
              "Pond",
              "Pool",
              "Private Bathroom",
              "Property Manager on Site",
              "Public Transportation",
              "Putting Greens",
              "Racquetball Court",
              "Recycling",
              "Renters Insurance Program",
              "Roof Terrace",
              "Roommate Matching",
              "Sauna",
              "Shuttle To Campus",
              "Shuttle to Train",
              "Spa",
              "Storage Space",
              "Study Lounge",
              "Sundeck",
              "Tanning Salon",
              "Tennis Court",
              "Trash Pickup - Curbside",
              "Trash Pickup - Door to Door",
              "Video Patrol",
              "Vintage Building",
              "Vision Impaired Accessible",
              "Volleyball Court",
              "Walk To Campus",
              "Walking/Biking Trails",
              "Waterfront",
              "Wi-Fi",
              "Zen Garden",
              "Individual Leases Available",
              "Key Fob Entry",
              "Conference Rooms",
              "Hot Tub",
              "Walk-Up",
              "Dog Park",
              "Air Conditioning",
              "Attic",
              "Balcony",
              "Basement",
              "Bay Window",
              "Breakfast Nook",
              "Built-In Bookshelves",
              "Cable Ready",
              "Carpet",
              "Ceiling Fans",
              "Coffee System",
              "Crown Molding",
              "Deck",
              "Den",
              "Dining Room",
              "Dishwasher",
              "Disposal",
              "Double Pane Windows",
              "Double Vanities",
              "Eat-in Kitchen",
              "Family Room",
              "Fireplace",
              "Framed Mirrors",
              "Freezer",
              "Furnished",
              "Garden",
              "Granite Countertops",
              "Greenhouse",
              "Handrails",
              "Hardwood Floors",
              "Heating",
              "High Ceilings",
              "High Speed Internet Access",
              "Ice Maker",
              "Instant Hot Water",
              "Intercom",
              "Island Kitchen",
              "Kitchen",
              "Large Bedrooms",
              "Lawn",
              "Linen Closet",
              "Loft Layout",
              "Microwave",
              "Mother-in-law Unit",
              "Mud Room",
              "Office",
              "Oven",
              "Pantry",
              "Patio",
              "Porch",
              "Range",
              "Recreation Room",
              "Refrigerator",
              "Satellite TV",
              "Security System",
              "Skylights",
              "Smoke Free",
              "Sprinkler System",
              "Stainless Steel Appliances",
              "Sunroom",
              "Surround Sound",
              "Tile Floors",
              "Trash Compactor",
              "Tub/Shower",
              "Vacuum System",
              "Vaulted Ceiling",
              "Views",
              "Vinyl Flooring",
              "Walk-In Closets",
              "Warming Drawer",
              "Washer/Dryer",
              "Washer/Dryer Hookup",
              "Wet Bar",
              "Wheelchair Accessible (Rooms)",
              "Window Coverings",
              "Workshop",
              "Yard",
              "Floor to Ceiling Windows",
              "Quartz Countertops",
              "Other",
              null
            ],
            "description": "The MITS 5.0 amenity type ILS feeds carry (`AmenityType` in an Apartments.com feed). Null when the amenity has no MITS equivalent."
          },
          "tags": {
            "type": [
              "array",
              "null"
            ],
            "items": {}
          },
          "reference_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "property_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Ids of the properties the amenity is linked to, among those you can see.",
            "x-present-when": "Not on the list endpoint, or on an amenity nested inside a unit or floor plan."
          },
          "images": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MediaAsset"
            },
            "readOnly": true,
            "x-present-when": "Not on a amenity nested inside a unit or floor plan."
          },
          "videos": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmbeddableMedia"
            },
            "readOnly": true,
            "x-present-when": "Not on a amenity nested inside a unit or floor plan."
          },
          "virtual_tours": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmbeddableMedia"
            },
            "readOnly": true,
            "x-present-when": "Not on a amenity nested inside a unit or floor plan."
          },
          "unit_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Ids of the units the amenity is linked to. Returned by show, create and update; omitted from the list endpoint, where one amenity could carry thousands.",
            "x-present-when": "Not on the list endpoint, or on an amenity nested inside a unit or floor plan."
          },
          "floor_plan_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Ids of the floor plans the amenity is linked to. Returned by show, create and update; omitted from the list endpoint, where one amenity could carry thousands.",
            "x-present-when": "Not on the list endpoint, or on an amenity nested inside a unit or floor plan."
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "created_at",
          "updated_at",
          "name",
          "is_enabled",
          "is_property_marketable",
          "code",
          "description",
          "type",
          "mits_amenity_type",
          "tags",
          "reference_id"
        ]
      },
      "AmenityResponse": {
        "type": "object",
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/Amenity"
          }
        },
        "additionalProperties": false
      },
      "AmenityCollection": {
        "type": "object",
        "required": [
          "data",
          "links",
          "meta"
        ],
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Amenity"
            }
          },
          "links": {
            "$ref": "#/components/schemas/PaginationLinks"
          },
          "meta": {
            "$ref": "#/components/schemas/PaginationMeta"
          }
        },
        "additionalProperties": false
      },
      "Fee": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "property_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "The properties it is linked to, among those you can see.",
            "x-present-when": "Not on the list endpoint."
          },
          "created_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "updated_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "code": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "class": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "settings": {
            "type": [
              "object",
              "array",
              "null"
            ],
            "additionalProperties": true
          },
          "currency": {
            "type": [
              "string",
              "null"
            ]
          },
          "is_imported": {
            "type": "boolean",
            "readOnly": true,
            "description": "Whether the fee came from a PMS import."
          },
          "source": {
            "type": [
              "string",
              "null"
            ],
            "readOnly": true,
            "description": "Import source (connection type) for imported fees."
          },
          "source_reference": {
            "type": [
              "string",
              "null"
            ],
            "readOnly": true,
            "description": "The fee's id in the import source."
          },
          "last_imported_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "created_at",
          "updated_at",
          "code",
          "status",
          "class",
          "name",
          "description",
          "settings",
          "currency",
          "is_imported",
          "source",
          "source_reference",
          "last_imported_at"
        ]
      },
      "FeeResponse": {
        "type": "object",
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/Fee"
          }
        },
        "additionalProperties": false
      },
      "FeeCollection": {
        "type": "object",
        "required": [
          "data",
          "links",
          "meta"
        ],
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fee"
            }
          },
          "links": {
            "$ref": "#/components/schemas/PaginationLinks"
          },
          "meta": {
            "$ref": "#/components/schemas/PaginationMeta"
          }
        },
        "additionalProperties": false
      },
      "Review": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "created_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "updated_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "property_id": {
            "type": "string",
            "format": "uuid"
          },
          "source": {
            "type": "string",
            "enum": [
              "google_business_profile"
            ]
          },
          "external_review_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "reviewer_name": {
            "type": "string"
          },
          "reviewer_photo_url": {
            "type": [
              "string",
              "null"
            ]
          },
          "review_text": {
            "type": [
              "string",
              "null"
            ]
          },
          "reply_text": {
            "type": [
              "string",
              "null"
            ]
          },
          "reply_date": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "rating": {
            "type": "integer",
            "minimum": 1,
            "maximum": 5
          },
          "review_date": {
            "type": "string",
            "format": "date-time"
          },
          "is_published": {
            "type": "boolean"
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "created_at",
          "updated_at",
          "property_id",
          "source",
          "external_review_id",
          "reviewer_name",
          "reviewer_photo_url",
          "review_text",
          "reply_text",
          "reply_date",
          "rating",
          "review_date",
          "is_published"
        ]
      },
      "ReviewResponse": {
        "type": "object",
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/Review"
          }
        },
        "additionalProperties": false
      },
      "ReviewCollection": {
        "type": "object",
        "required": [
          "data",
          "links",
          "meta"
        ],
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Review"
            }
          },
          "links": {
            "$ref": "#/components/schemas/PaginationLinks"
          },
          "meta": {
            "$ref": "#/components/schemas/PaginationMeta"
          }
        },
        "additionalProperties": false
      },
      "Announcement": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "property_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "The properties it is linked to, among those you can see.",
            "x-present-when": "Not on the list endpoint."
          },
          "created_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "updated_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "internal_title": {
            "type": "string"
          },
          "is_enabled": {
            "type": "boolean"
          },
          "is_global": {
            "type": "boolean"
          },
          "title": {
            "type": [
              "string",
              "null"
            ]
          },
          "meta": {
            "type": [
              "string",
              "null"
            ]
          },
          "text": {
            "type": [
              "string",
              "null"
            ]
          },
          "disclaimer": {
            "type": [
              "string",
              "null"
            ]
          },
          "link_primary_url": {
            "type": [
              "string",
              "null"
            ]
          },
          "link_primary_text": {
            "type": [
              "string",
              "null"
            ]
          },
          "link_secondary_url": {
            "type": [
              "string",
              "null"
            ]
          },
          "link_secondary_text": {
            "type": [
              "string",
              "null"
            ]
          },
          "starts_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "ends_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "sort_order": {
            "type": [
              "integer",
              "null"
            ]
          },
          "elements_key": {
            "type": [
              "string",
              "null"
            ]
          },
          "status": {
            "type": [
              "string",
              "null"
            ]
          },
          "images": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MediaAsset"
            },
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "created_at",
          "updated_at",
          "internal_title",
          "is_enabled",
          "is_global",
          "title",
          "meta",
          "text",
          "disclaimer",
          "link_primary_url",
          "link_primary_text",
          "link_secondary_url",
          "link_secondary_text",
          "starts_at",
          "ends_at",
          "sort_order",
          "elements_key",
          "status",
          "images"
        ]
      },
      "AnnouncementResponse": {
        "type": "object",
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/Announcement"
          }
        },
        "additionalProperties": false
      },
      "AnnouncementCollection": {
        "type": "object",
        "required": [
          "data",
          "links",
          "meta"
        ],
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Announcement"
            }
          },
          "links": {
            "$ref": "#/components/schemas/PaginationLinks"
          },
          "meta": {
            "$ref": "#/components/schemas/PaginationMeta"
          }
        },
        "additionalProperties": false
      },
      "ContentBlock": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "property_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "The properties it is linked to, among those you can see.",
            "x-present-when": "Not on the list endpoint."
          },
          "created_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "updated_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "internal_title": {
            "type": "string"
          },
          "is_enabled": {
            "type": "boolean"
          },
          "is_global": {
            "type": "boolean"
          },
          "type": {
            "type": "string",
            "enum": [
              "single",
              "multiple"
            ]
          },
          "media_type": {
            "type": "string",
            "enum": [
              "gallery",
              "virtual_tours",
              "videos"
            ]
          },
          "title": {
            "type": [
              "string",
              "null"
            ]
          },
          "subtitle": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "link_primary_url": {
            "type": [
              "string",
              "null"
            ]
          },
          "link_primary_text": {
            "type": [
              "string",
              "null"
            ]
          },
          "link_secondary_url": {
            "type": [
              "string",
              "null"
            ]
          },
          "link_secondary_text": {
            "type": [
              "string",
              "null"
            ]
          },
          "sort_order": {
            "type": [
              "integer",
              "null"
            ]
          },
          "elements_key": {
            "type": [
              "string",
              "null"
            ]
          },
          "internal_tags": {
            "type": [
              "array",
              "null"
            ],
            "items": {}
          },
          "content_items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContentItem"
            }
          },
          "images": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MediaAsset"
            },
            "readOnly": true
          },
          "background_image": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/MediaAsset"
              },
              {
                "type": "null"
              }
            ],
            "readOnly": true
          },
          "videos": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmbeddableMedia"
            },
            "readOnly": true
          },
          "virtual_tours": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmbeddableMedia"
            },
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "created_at",
          "updated_at",
          "internal_title",
          "is_enabled",
          "is_global",
          "type",
          "media_type",
          "title",
          "subtitle",
          "description",
          "link_primary_url",
          "link_primary_text",
          "link_secondary_url",
          "link_secondary_text",
          "sort_order",
          "elements_key",
          "internal_tags",
          "content_items",
          "images",
          "background_image",
          "videos",
          "virtual_tours"
        ]
      },
      "ContentBlockResponse": {
        "type": "object",
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ContentBlock"
          }
        },
        "additionalProperties": false
      },
      "ContentBlockCollection": {
        "type": "object",
        "required": [
          "data",
          "links",
          "meta"
        ],
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContentBlock"
            }
          },
          "links": {
            "$ref": "#/components/schemas/PaginationLinks"
          },
          "meta": {
            "$ref": "#/components/schemas/PaginationMeta"
          }
        },
        "additionalProperties": false
      },
      "Faq": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "property_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "The properties it is linked to, among those you can see.",
            "x-present-when": "Not on the list endpoint."
          },
          "created_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "updated_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "faq_topic_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ]
          },
          "is_global": {
            "type": "boolean"
          },
          "question": {
            "type": "string"
          },
          "answer": {
            "type": [
              "string",
              "null"
            ]
          },
          "sort_order": {
            "type": [
              "integer",
              "null"
            ]
          },
          "tags": {
            "type": [
              "array",
              "null"
            ],
            "items": {}
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "created_at",
          "updated_at",
          "faq_topic_id",
          "is_global",
          "question",
          "answer",
          "sort_order",
          "tags"
        ]
      },
      "FaqResponse": {
        "type": "object",
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/Faq"
          }
        },
        "additionalProperties": false
      },
      "FaqCollection": {
        "type": "object",
        "required": [
          "data",
          "links",
          "meta"
        ],
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Faq"
            }
          },
          "links": {
            "$ref": "#/components/schemas/PaginationLinks"
          },
          "meta": {
            "$ref": "#/components/schemas/PaginationMeta"
          }
        },
        "additionalProperties": false
      },
      "Gallery": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "property_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "The properties it is linked to, among those you can see.",
            "x-present-when": "Not on the list endpoint."
          },
          "created_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "updated_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "internal_title": {
            "type": "string"
          },
          "is_enabled": {
            "type": "boolean"
          },
          "is_global": {
            "type": "boolean"
          },
          "type": {
            "type": "string",
            "enum": [
              "image",
              "video",
              "panorama",
              "virtual_tour"
            ]
          },
          "title": {
            "type": [
              "string",
              "null"
            ]
          },
          "text": {
            "type": [
              "string",
              "null"
            ]
          },
          "sort_order": {
            "type": [
              "integer",
              "null"
            ]
          },
          "elements_key": {
            "type": [
              "string",
              "null"
            ]
          },
          "images": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MediaAsset"
            },
            "readOnly": true
          },
          "videos": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmbeddableMedia"
            },
            "readOnly": true
          },
          "virtual_tours": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmbeddableMedia"
            },
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "created_at",
          "updated_at",
          "internal_title",
          "is_enabled",
          "is_global",
          "type",
          "title",
          "text",
          "sort_order",
          "elements_key",
          "images",
          "videos",
          "virtual_tours"
        ]
      },
      "GalleryResponse": {
        "type": "object",
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/Gallery"
          }
        },
        "additionalProperties": false
      },
      "GalleryCollection": {
        "type": "object",
        "required": [
          "data",
          "links",
          "meta"
        ],
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Gallery"
            }
          },
          "links": {
            "$ref": "#/components/schemas/PaginationLinks"
          },
          "meta": {
            "$ref": "#/components/schemas/PaginationMeta"
          }
        },
        "additionalProperties": false
      },
      "NeighborhoodPlace": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "created_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "updated_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "property_id": {
            "type": "string",
            "format": "uuid"
          },
          "neighborhood_category_id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "address": {
            "type": [
              "string",
              "null"
            ]
          },
          "rating": {
            "type": [
              "string",
              "null"
            ]
          },
          "lat": {
            "type": [
              "number",
              "null"
            ]
          },
          "lng": {
            "type": [
              "number",
              "null"
            ]
          },
          "url": {
            "type": [
              "string",
              "null"
            ]
          },
          "place_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "drive_time": {
            "type": [
              "string",
              "null"
            ]
          },
          "walk_time": {
            "type": [
              "string",
              "null"
            ]
          },
          "transit_time": {
            "type": [
              "string",
              "null"
            ]
          },
          "bike_time": {
            "type": [
              "string",
              "null"
            ]
          },
          "sort_order": {
            "type": [
              "integer",
              "null"
            ]
          },
          "tags": {
            "type": [
              "array",
              "null"
            ],
            "items": {}
          },
          "images": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MediaAsset"
            },
            "readOnly": true
          },
          "category": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "name": {
                "type": "string"
              },
              "color": {
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "additionalProperties": false,
            "required": [
              "id",
              "name",
              "color"
            ]
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "created_at",
          "updated_at",
          "property_id",
          "neighborhood_category_id",
          "name",
          "address",
          "rating",
          "lat",
          "lng",
          "url",
          "place_id",
          "drive_time",
          "walk_time",
          "transit_time",
          "bike_time",
          "sort_order",
          "tags",
          "images",
          "category"
        ]
      },
      "NeighborhoodPlaceResponse": {
        "type": "object",
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/NeighborhoodPlace"
          }
        },
        "additionalProperties": false
      },
      "NeighborhoodPlaceCollection": {
        "type": "object",
        "required": [
          "data",
          "links",
          "meta"
        ],
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NeighborhoodPlace"
            }
          },
          "links": {
            "$ref": "#/components/schemas/PaginationLinks"
          },
          "meta": {
            "$ref": "#/components/schemas/PaginationMeta"
          }
        },
        "additionalProperties": false
      },
      "MediaAttachableType": {
        "type": "string",
        "enum": [
          "property",
          "unit",
          "building",
          "floor_plan",
          "gallery",
          "amenity",
          "announcement",
          "neighborhood_place",
          "content_block",
          "content_item"
        ],
        "description": "Friendly parent-resource type the media is attached to."
      },
      "MediaAttachmentRef": {
        "type": "object",
        "description": "Where a file asset is attached. attachable_type is null when the parent is not exposed by the API.",
        "properties": {
          "attachable_type": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/MediaAttachableType"
              },
              {
                "type": "null"
              }
            ]
          },
          "attachable_id": {
            "type": "string",
            "format": "uuid"
          },
          "slot": {
            "type": [
              "string",
              "null"
            ]
          },
          "sort_order": {
            "type": "integer"
          }
        },
        "additionalProperties": false,
        "required": [
          "attachable_type",
          "attachable_id",
          "slot",
          "sort_order"
        ]
      },
      "MediaFileCreate": {
        "type": "object",
        "required": [
          "kind",
          "url",
          "attachable_type",
          "attachable_id",
          "media_type"
        ],
        "properties": {
          "kind": {
            "type": "string",
            "enum": [
              "file"
            ]
          },
          "url": {
            "type": "string",
            "format": "uri",
            "maxLength": 2048,
            "description": "Source URL; Resi downloads and stores the file. First dedup key within the account."
          },
          "attachable_type": {
            "$ref": "#/components/schemas/MediaAttachableType"
          },
          "attachable_id": {
            "type": "string",
            "format": "uuid"
          },
          "media_type": {
            "type": "string",
            "enum": [
              "image",
              "background_image",
              "video",
              "panorama",
              "virtual_tour",
              "pdf",
              "property_image",
              "floor_plan_2d",
              "floor_plan_3d",
              "fallback_image_thumb",
              "fallback_virtual_tour_thumb",
              "fallback_video_thumb"
            ],
            "description": "The attachment slot."
          },
          "caption": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 250
          },
          "alt_text": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 250
          },
          "reference_id": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 255,
            "description": "Stable id from the source system. Second dedup key after the url, within the account: a later import with the same reference_id reuses the asset even if the url changed (and replaces its file)."
          },
          "tags": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            }
          },
          "sort_order": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "default": 1
          }
        }
      },
      "MediaEmbedCreate": {
        "type": "object",
        "required": [
          "kind",
          "url",
          "attachable_type",
          "attachable_id",
          "embed_type"
        ],
        "properties": {
          "kind": {
            "type": "string",
            "enum": [
              "embed"
            ]
          },
          "url": {
            "type": "string",
            "format": "uri",
            "maxLength": 255,
            "description": "Embed URL (stored, not downloaded). With the parent and embed_type, the dedup key for embeds."
          },
          "attachable_type": {
            "$ref": "#/components/schemas/MediaAttachableType"
          },
          "attachable_id": {
            "type": "string",
            "format": "uuid"
          },
          "embed_type": {
            "type": "string",
            "enum": [
              "video",
              "virtual_tour",
              "other"
            ]
          },
          "provider": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "matterport",
              "youtube",
              "vimeo",
              "other",
              null
            ],
            "description": "Inferred from the URL when omitted."
          },
          "title": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 255
          },
          "settings": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": true
          },
          "tags": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            }
          },
          "sort_order": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "default": 0
          }
        }
      },
      "MediaCreate": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/MediaFileCreate"
          },
          {
            "$ref": "#/components/schemas/MediaEmbedCreate"
          }
        ],
        "discriminator": {
          "propertyName": "kind",
          "mapping": {
            "file": "#/components/schemas/MediaFileCreate",
            "embed": "#/components/schemas/MediaEmbedCreate"
          }
        }
      },
      "MediaUpdate": {
        "type": "object",
        "description": "Fields depend on the target kind. File media accepts caption, alt_text, tags. Embed media accepts title, url, embed_type, provider, settings, sort_order, tags. Sending a field that does not apply to the resolved kind returns 422. Updating a file changes the shared asset across every placement it is attached to.",
        "properties": {
          "caption": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 250
          },
          "alt_text": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 250
          },
          "title": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 255
          },
          "url": {
            "type": "string",
            "format": "uri",
            "maxLength": 255
          },
          "embed_type": {
            "type": "string",
            "enum": [
              "video",
              "virtual_tour",
              "other"
            ]
          },
          "provider": {
            "type": "string",
            "enum": [
              "matterport",
              "youtube",
              "vimeo",
              "other"
            ]
          },
          "settings": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": true
          },
          "sort_order": {
            "type": "integer",
            "minimum": 0
          },
          "tags": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            }
          },
          "folder_id": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "Files only: file it in one of the account's media folders, account-wide or of the file's own property. `null` takes it out of its folder."
          }
        }
      },
      "MediaFileItem": {
        "type": "object",
        "required": [
          "kind",
          "media",
          "attachments"
        ],
        "properties": {
          "kind": {
            "type": "string",
            "enum": [
              "file"
            ]
          },
          "media": {
            "$ref": "#/components/schemas/MediaAsset"
          },
          "attachments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MediaAttachmentRef"
            }
          }
        },
        "additionalProperties": false
      },
      "MediaEmbedItem": {
        "type": "object",
        "required": [
          "kind",
          "attachable_type",
          "attachable_id",
          "media"
        ],
        "properties": {
          "kind": {
            "type": "string",
            "enum": [
              "embed"
            ]
          },
          "attachable_type": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/MediaAttachableType"
              },
              {
                "type": "null"
              }
            ]
          },
          "attachable_id": {
            "type": "string",
            "format": "uuid"
          },
          "media": {
            "$ref": "#/components/schemas/EmbeddableMedia"
          }
        },
        "additionalProperties": false
      },
      "MediaItem": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/MediaFileItem"
          },
          {
            "$ref": "#/components/schemas/MediaEmbedItem"
          }
        ],
        "discriminator": {
          "propertyName": "kind",
          "mapping": {
            "file": "#/components/schemas/MediaFileItem",
            "embed": "#/components/schemas/MediaEmbedItem"
          }
        }
      },
      "MediaResponse": {
        "type": "object",
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/MediaItem"
          }
        },
        "additionalProperties": false
      },
      "MediaCollection": {
        "type": "object",
        "required": [
          "data",
          "links",
          "meta"
        ],
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MediaItem"
            }
          },
          "links": {
            "$ref": "#/components/schemas/PaginationLinks"
          },
          "meta": {
            "$ref": "#/components/schemas/PaginationMeta"
          }
        },
        "additionalProperties": false
      },
      "AccountCreate": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255
          },
          "settings": {
            "type": [
              "object",
              "array",
              "null"
            ]
          }
        }
      },
      "Account": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "settings": {
            "type": [
              "object",
              "array",
              "null"
            ],
            "additionalProperties": true
          },
          "role": {
            "type": [
              "string",
              "null"
            ],
            "description": "Your role in the account. The role's key: `admin`, `manager`, `member` or `viewer` for the built-in roles, or the slug of a custom role.",
            "x-present-when": "When the account is read through your membership. Absent when staff read an account they are not a member of."
          },
          "created_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "updated_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "role_id": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "Id of the role, stable across renames.",
            "x-present-when": "When the account is read through your membership. Absent when staff read an account they are not a member of."
          },
          "role_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "The role's display name.",
            "x-present-when": "When the account is read through your membership. Absent when staff read an account they are not a member of."
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "name",
          "settings",
          "created_at",
          "updated_at"
        ]
      },
      "AccountResponse": {
        "type": "object",
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/Account"
          }
        },
        "additionalProperties": false
      },
      "AccountCollection": {
        "type": "object",
        "required": [
          "data",
          "links",
          "meta"
        ],
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Account"
            }
          },
          "links": {
            "$ref": "#/components/schemas/PaginationLinks"
          },
          "meta": {
            "$ref": "#/components/schemas/PaginationMeta"
          }
        },
        "additionalProperties": false
      },
      "ConnectionCreate": {
        "type": "object",
        "required": [
          "type",
          "name"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "A registered connection type key (e.g. google-analytics). The category is derived from the type."
          },
          "name": {
            "type": "string",
            "maxLength": 255
          },
          "enabled": {
            "type": "boolean"
          },
          "pricing_includes_fees": {
            "type": "boolean"
          },
          "settings": {
            "type": [
              "object",
              "array",
              "null"
            ]
          }
        }
      },
      "ConnectionUpdate": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255
          },
          "enabled": {
            "type": "boolean"
          },
          "pricing_includes_fees": {
            "type": "boolean"
          },
          "settings": {
            "type": [
              "object",
              "array",
              "null"
            ],
            "description": "Merged into the stored settings: keys you send replace the stored value, keys you omit are kept, and a credential sent back as `********` keeps its stored value. Send `null` to clear every setting."
          }
        }
      },
      "Connection": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "type": {
            "type": "string"
          },
          "category": {
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "type": "string"
          },
          "enabled": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "pricing_includes_fees": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "settings": {
            "type": [
              "object",
              "array",
              "null"
            ],
            "description": "Settings for this connection type. Credentials (any key naming a password, passphrase, secret, token, API key or private key) are returned as `********` when set; they are never readable through the API.",
            "additionalProperties": true
          },
          "properties": {
            "type": [
              "array",
              "null"
            ],
            "readOnly": true,
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "name": {
                  "type": "string"
                },
                "settings": {
                  "type": [
                    "object",
                    "array",
                    "null"
                  ],
                  "description": "This property's settings for the connection. Credentials are masked as on `settings`.",
                  "additionalProperties": true
                }
              },
              "additionalProperties": false,
              "required": [
                "id",
                "name",
                "settings"
              ]
            },
            "x-present-when": "Only on `GET /api/v2/connections/{connection}`."
          },
          "latest_log": {
            "readOnly": true,
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "event_type": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "status": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "message": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "duration": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "created_at": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "format": "date-time"
                  }
                },
                "additionalProperties": false,
                "required": [
                  "id",
                  "event_type",
                  "status",
                  "message",
                  "duration",
                  "created_at"
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "created_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "updated_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "type",
          "category",
          "name",
          "enabled",
          "pricing_includes_fees",
          "settings",
          "latest_log",
          "created_at",
          "updated_at"
        ]
      },
      "ConnectionResponse": {
        "type": "object",
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/Connection"
          }
        },
        "additionalProperties": false
      },
      "ConnectionCollection": {
        "type": "object",
        "required": [
          "data",
          "links",
          "meta"
        ],
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Connection"
            }
          },
          "links": {
            "$ref": "#/components/schemas/PaginationLinks"
          },
          "meta": {
            "$ref": "#/components/schemas/PaginationMeta"
          }
        },
        "additionalProperties": false
      },
      "ConnectionPropertyAttach": {
        "type": "object",
        "required": [
          "property_id"
        ],
        "properties": {
          "property_id": {
            "type": "string",
            "format": "uuid"
          },
          "settings": {
            "type": [
              "object",
              "array",
              "null"
            ],
            "description": "This property's settings for the connection. On a property that is already attached they are merged as on a connection update, and a credential sent back as `********` keeps its stored value; omit `settings` to leave them untouched, or send `null` to clear them."
          }
        }
      },
      "ConnectionPropertyLinkResponse": {
        "type": "object",
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "connection_id": {
                "type": "string",
                "format": "uuid"
              },
              "property_id": {
                "type": "string",
                "format": "uuid"
              },
              "settings": {
                "type": [
                  "object",
                  "array",
                  "null"
                ],
                "description": "The property's settings for the connection, with credentials masked as `********`.",
                "additionalProperties": true
              }
            },
            "additionalProperties": false,
            "required": [
              "connection_id",
              "property_id",
              "settings"
            ]
          }
        },
        "additionalProperties": false
      },
      "UserCreate": {
        "type": "object",
        "required": [
          "name",
          "email"
        ],
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255
          },
          "email": {
            "type": "string",
            "format": "email",
            "maxLength": 255
          },
          "role": {
            "type": "string",
            "description": "A built-in role key (`admin`, `manager`, `member`, `viewer`), or the slug or id of one of the account's custom roles. Only admins may assign a role other than the account's default. Defaults to the account's default role."
          }
        }
      },
      "UserUpdate": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255,
            "description": "Changes the user's name everywhere. Refused with `403` for a user who also belongs to another account or is Resi staff, unless it is your own user."
          },
          "email": {
            "type": "string",
            "format": "email",
            "maxLength": 255,
            "description": "Changes the user's login email everywhere. Refused with `403` for a user who also belongs to another account or is Resi staff, unless it is your own user."
          },
          "role": {
            "type": "string",
            "description": "A built-in role key (`admin`, `manager`, `member`, `viewer`), or the slug or id of one of the account's custom roles. Only admins may assign a role other than the account's default."
          }
        }
      },
      "UserCollection": {
        "type": "object",
        "required": [
          "data",
          "links",
          "meta"
        ],
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/User"
            }
          },
          "links": {
            "$ref": "#/components/schemas/PaginationLinks"
          },
          "meta": {
            "$ref": "#/components/schemas/PaginationMeta"
          }
        },
        "additionalProperties": false
      },
      "LeadSourceCreate": {
        "type": "object",
        "required": [
          "property_id",
          "name",
          "code"
        ],
        "properties": {
          "property_id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "enum": [
              "google_organic",
              "google_paid",
              "bing_organic",
              "bing_paid",
              "yahoo_organic",
              "direct",
              "corporate_website",
              "referral_website",
              "seo_landing_page",
              "apartments_com",
              "apartment_list",
              "apartment_ratings",
              "zillow",
              "zumper",
              "hotpads",
              "trulia",
              "rent_com",
              "rentcafe_marketplace",
              "rentable",
              "forrent",
              "apartmentfinder",
              "padmapper",
              "craigslist",
              "yelp",
              "facebook_marketplace",
              "facebook",
              "instagram",
              "tiktok",
              "youtube",
              "x_twitter",
              "pinterest",
              "linkedin",
              "nextdoor",
              "email_campaign",
              "email_direct",
              "newsletter",
              "walk_in",
              "drive_by",
              "signage",
              "call_in",
              "print",
              "resident_referral",
              "employee_referral",
              "broker_locator",
              "corporate_partner",
              "locator_service",
              "event",
              "promotion",
              "open_house",
              "chatbot",
              "virtual_tour",
              "sms",
              "other",
              "unknown"
            ],
            "description": "Where the lead came from."
          },
          "code": {
            "type": "string",
            "maxLength": 255
          },
          "phone": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 255
          },
          "email": {
            "type": [
              "string",
              "null"
            ],
            "format": "email",
            "maxLength": 255
          }
        }
      },
      "LeadSourceUpdate": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "enum": [
              "google_organic",
              "google_paid",
              "bing_organic",
              "bing_paid",
              "yahoo_organic",
              "direct",
              "corporate_website",
              "referral_website",
              "seo_landing_page",
              "apartments_com",
              "apartment_list",
              "apartment_ratings",
              "zillow",
              "zumper",
              "hotpads",
              "trulia",
              "rent_com",
              "rentcafe_marketplace",
              "rentable",
              "forrent",
              "apartmentfinder",
              "padmapper",
              "craigslist",
              "yelp",
              "facebook_marketplace",
              "facebook",
              "instagram",
              "tiktok",
              "youtube",
              "x_twitter",
              "pinterest",
              "linkedin",
              "nextdoor",
              "email_campaign",
              "email_direct",
              "newsletter",
              "walk_in",
              "drive_by",
              "signage",
              "call_in",
              "print",
              "resident_referral",
              "employee_referral",
              "broker_locator",
              "corporate_partner",
              "locator_service",
              "event",
              "promotion",
              "open_house",
              "chatbot",
              "virtual_tour",
              "sms",
              "other",
              "unknown"
            ],
            "description": "Where the lead came from."
          },
          "code": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 255
          },
          "phone": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 255
          },
          "email": {
            "type": [
              "string",
              "null"
            ],
            "format": "email",
            "maxLength": 255
          }
        }
      },
      "LeadSource": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "property_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "type": [
              "string",
              "null"
            ]
          },
          "code": {
            "type": [
              "string",
              "null"
            ]
          },
          "phone": {
            "type": [
              "string",
              "null"
            ]
          },
          "email": {
            "type": [
              "string",
              "null"
            ]
          },
          "created_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "updated_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "property_id",
          "name",
          "code",
          "phone",
          "email",
          "created_at",
          "updated_at"
        ]
      },
      "LeadSourceResponse": {
        "type": "object",
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/LeadSource"
          }
        },
        "additionalProperties": false
      },
      "LeadSourceCollection": {
        "type": "object",
        "required": [
          "data",
          "links",
          "meta"
        ],
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LeadSource"
            }
          },
          "links": {
            "$ref": "#/components/schemas/PaginationLinks"
          },
          "meta": {
            "$ref": "#/components/schemas/PaginationMeta"
          }
        },
        "additionalProperties": false
      },
      "PropertySettings": {
        "type": "object",
        "properties": {
          "property_id": {
            "type": "string",
            "format": "uuid"
          },
          "attributes": {
            "type": "object",
            "description": "The JSON columns stored directly on the property.",
            "additionalProperties": true
          },
          "domain_settings": {
            "type": "object",
            "description": "Resolved domain settings, each falling back to the account-level value.",
            "additionalProperties": true
          },
          "fees": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          },
          "connections": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          }
        },
        "additionalProperties": false,
        "required": [
          "property_id",
          "attributes",
          "domain_settings",
          "fees",
          "connections"
        ]
      },
      "PropertySettingsResponse": {
        "type": "object",
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/PropertySettings"
          }
        },
        "additionalProperties": false
      },
      "InstagramPostMedia": {
        "type": "object",
        "properties": {
          "id": {
            "$ref": "#/components/schemas/Uuid"
          },
          "ig_media_id": {
            "type": "string",
            "description": "Stable Instagram media id for this child"
          },
          "position": {
            "type": "integer",
            "description": "Order within a carousel; 0 for single posts"
          },
          "type": {
            "type": "string",
            "enum": [
              "IMAGE",
              "VIDEO"
            ],
            "description": "Instagram media type of this child"
          },
          "url": {
            "type": [
              "string",
              "null"
            ],
            "description": "Playable/displayable URL. The Resi-hosted asset URL when saved to the library, otherwise the refreshed Instagram CDN URL (expires; refreshed hourly by the sync)."
          },
          "thumbnail_url": {
            "type": [
              "string",
              "null"
            ],
            "description": "Thumbnail URL (video posters; thumb conversion for saved assets)"
          },
          "media_url_missing": {
            "type": "boolean",
            "description": "True when Instagram omitted a playable URL (e.g. some licensed-audio Reels); render thumbnail_url and link to permalink"
          },
          "promoted_media_asset_id": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/Uuid"
              },
              {
                "type": "null"
              }
            ],
            "description": "MediaAsset id when this media was saved to the Resi library"
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "ig_media_id",
          "position",
          "type",
          "url",
          "thumbnail_url",
          "media_url_missing",
          "promoted_media_asset_id"
        ]
      },
      "InstagramPost": {
        "type": "object",
        "properties": {
          "id": {
            "$ref": "#/components/schemas/Uuid"
          },
          "property_id": {
            "$ref": "#/components/schemas/Uuid"
          },
          "ig_media_id": {
            "type": "string",
            "description": "Stable Instagram media id of the post"
          },
          "type": {
            "type": "string",
            "enum": [
              "IMAGE",
              "VIDEO",
              "CAROUSEL_ALBUM"
            ],
            "description": "Instagram media type of the post"
          },
          "media_product_type": {
            "type": [
              "string",
              "null"
            ],
            "description": "FEED or REELS"
          },
          "caption": {
            "type": [
              "string",
              "null"
            ]
          },
          "hashtags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Hashtags parsed from the caption, without the leading #"
          },
          "permalink": {
            "type": [
              "string",
              "null"
            ],
            "description": "Link to the original post on Instagram"
          },
          "posted_at": {
            "type": "string",
            "format": "date-time"
          },
          "synced_at": {
            "type": "string",
            "format": "date-time"
          },
          "media": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InstagramPostMedia"
            },
            "description": "Ordered media children (one for single posts, several for carousels)"
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "property_id",
          "ig_media_id",
          "type",
          "media_product_type",
          "caption",
          "hashtags",
          "permalink",
          "posted_at",
          "synced_at",
          "media"
        ]
      },
      "InstagramFeedResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InstagramPost"
            }
          },
          "meta": {
            "$ref": "#/components/schemas/PaginationMeta"
          },
          "instagram": {
            "type": "object",
            "description": "Connection state envelope",
            "properties": {
              "connected": {
                "type": "boolean",
                "description": "Whether the property has an enabled Instagram connection"
              },
              "last_synced_at": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "date-time"
              }
            },
            "additionalProperties": false,
            "required": [
              "connected",
              "last_synced_at"
            ]
          },
          "links": {
            "$ref": "#/components/schemas/PaginationLinks"
          }
        },
        "additionalProperties": false,
        "required": [
          "data",
          "meta",
          "instagram",
          "links"
        ]
      },
      "PropertyAddress": {
        "type": "object",
        "description": "The property's primary address. Coordinates are stored as sent and are what the V1 payload and the map pin read; nothing geocodes them on write (the admin panel's create wizard looks addresses up in Google Places, the API does not), so set latitude and longitude directly.",
        "required": [
          "street",
          "street_2",
          "city",
          "county",
          "state",
          "zipcode",
          "country",
          "latitude",
          "longitude",
          "timezone"
        ],
        "properties": {
          "street": {
            "type": "string"
          },
          "street_2": {
            "type": [
              "string",
              "null"
            ]
          },
          "city": {
            "type": "string"
          },
          "county": {
            "type": [
              "string",
              "null"
            ]
          },
          "state": {
            "type": "string"
          },
          "zipcode": {
            "type": "string"
          },
          "country": {
            "type": "string"
          },
          "latitude": {
            "type": [
              "number",
              "null"
            ],
            "minimum": -90,
            "maximum": 90
          },
          "longitude": {
            "type": [
              "number",
              "null"
            ],
            "minimum": -180,
            "maximum": 180
          },
          "timezone": {
            "type": "string",
            "description": "IANA timezone.",
            "example": "America/Chicago"
          }
        },
        "additionalProperties": false
      },
      "PropertyAddressWrite": {
        "type": "object",
        "additionalProperties": false,
        "description": "Creates the primary address when the property has none — street, city, state, zipcode and country are then required — otherwise updates only the keys sent. Send `address: null` to delete it.",
        "properties": {
          "street": {
            "type": "string",
            "maxLength": 255
          },
          "street_2": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 255
          },
          "city": {
            "type": "string",
            "maxLength": 255
          },
          "county": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 255
          },
          "state": {
            "type": "string",
            "maxLength": 255
          },
          "zipcode": {
            "type": "string",
            "maxLength": 255
          },
          "country": {
            "type": "string",
            "maxLength": 255
          },
          "latitude": {
            "type": [
              "number",
              "null"
            ],
            "minimum": -90,
            "maximum": 90,
            "example": 30.2672
          },
          "longitude": {
            "type": [
              "number",
              "null"
            ],
            "minimum": -180,
            "maximum": 180,
            "example": -97.7431
          },
          "timezone": {
            "type": "string",
            "description": "IANA timezone. Defaults to UTC on a new address.",
            "example": "America/Chicago"
          }
        }
      },
      "PetPolicySettings": {
        "type": "object",
        "description": "Pet policy, served on V1 as `petPolicy`. Read values are the ones in effect: the property's own override for each key it sets, the account's value for every other key.",
        "required": [
          "description",
          "restrictions"
        ],
        "properties": {
          "description": {
            "type": "string"
          },
          "restrictions": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "PetPolicySettingsWrite": {
        "type": "object",
        "additionalProperties": false,
        "description": "Pet policy override. On write, keys sent are merged into the property's override; a null key removes it so the account value applies again, and a null object removes the whole override. Unknown keys are rejected.",
        "properties": {
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "restrictions": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      },
      "LeasingSettings": {
        "type": "object",
        "description": "Leasing settings, served on V1 as `leasingSettings`. Read values are the ones in effect: the property's own override for each key it sets, the account's value for every other key.",
        "required": [
          "applicant_hold_period_days",
          "availability_window_days"
        ],
        "properties": {
          "applicant_hold_period_days": {
            "type": "integer",
            "minimum": 0
          },
          "availability_window_days": {
            "type": "integer",
            "minimum": 0
          }
        },
        "additionalProperties": false
      },
      "LeasingSettingsWrite": {
        "type": "object",
        "additionalProperties": false,
        "description": "Leasing settings override. On write, keys sent are merged into the property's override; a null key removes it so the account value applies again, and a null object removes the whole override. Unknown keys are rejected.",
        "properties": {
          "applicant_hold_period_days": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "maximum": 3650
          },
          "availability_window_days": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "maximum": 3650
          }
        }
      },
      "PricingDisplaySettings": {
        "type": "object",
        "description": "Pricing display settings, served on V1 as `pricingDisplaySettings`. Read values are the ones in effect: the property's own override for each key it sets, the account's value for every other key.",
        "required": [
          "pricing_display_mode",
          "hide_all_pricing",
          "hide_price_when_no_availability",
          "hidden_price_label",
          "no_availability_price_label",
          "no_price_label",
          "tmlp_label",
          "show_fee_breakdown",
          "fee_breakdown_behavior",
          "pricing_disclaimer_text"
        ],
        "properties": {
          "pricing_display_mode": {
            "type": "string",
            "enum": [
              "BASE_AND_TOTAL",
              "TOTAL_ONLY",
              "BASE_ONLY"
            ],
            "description": "Which rents public payloads show; enforced server-side on V1 and Algolia."
          },
          "hide_all_pricing": {
            "type": "boolean"
          },
          "hide_price_when_no_availability": {
            "type": "boolean"
          },
          "hidden_price_label": {
            "type": "string",
            "maxLength": 255
          },
          "no_availability_price_label": {
            "type": "string",
            "maxLength": 255
          },
          "no_price_label": {
            "type": "string",
            "maxLength": 255
          },
          "tmlp_label": {
            "type": "string",
            "maxLength": 255
          },
          "show_fee_breakdown": {
            "type": "boolean"
          },
          "fee_breakdown_behavior": {
            "type": "string",
            "enum": [
              "EXPANDED",
              "COLLAPSED"
            ]
          },
          "pricing_disclaimer_text": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "DisplaySettings": {
        "type": "object",
        "description": "Display settings, served on V1 as `displaySettings`. Read values are the ones in effect: the property's own override for each key it sets, the account's value for every other key.",
        "required": [
          "prepend_building_number_to_unit_number",
          "show_non_marketable_amenities",
          "hide_available_units"
        ],
        "properties": {
          "prepend_building_number_to_unit_number": {
            "type": "boolean",
            "description": "Unit numbers are served prefixed with their building number (e.g. `5-204`)."
          },
          "show_non_marketable_amenities": {
            "type": "boolean",
            "description": "Unit amenities include those not marked as marketable at the property."
          },
          "hide_available_units": {
            "type": "boolean",
            "description": "Hide the available units list, whatever the actual availability."
          }
        },
        "additionalProperties": false
      },
      "PricingDisplaySettingsWrite": {
        "type": "object",
        "additionalProperties": false,
        "description": "Pricing display override. On write, keys sent are merged into the property's override; a null key removes it so the account value applies again, and a null object removes the whole override. Unknown keys are rejected.",
        "properties": {
          "pricing_display_mode": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "BASE_AND_TOTAL",
              "TOTAL_ONLY",
              "BASE_ONLY",
              null
            ],
            "description": "Which rents public payloads show; enforced server-side on V1 and Algolia."
          },
          "hide_all_pricing": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "hide_price_when_no_availability": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "hidden_price_label": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 255
          },
          "no_availability_price_label": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 255
          },
          "no_price_label": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 255
          },
          "tmlp_label": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 255
          },
          "show_fee_breakdown": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "fee_breakdown_behavior": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "EXPANDED",
              "COLLAPSED",
              null
            ]
          },
          "pricing_disclaimer_text": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      },
      "OfficeHour": {
        "type": "object",
        "required": [
          "day",
          "time"
        ],
        "properties": {
          "day": {
            "type": "string",
            "maxLength": 50,
            "example": "Monday"
          },
          "time": {
            "type": "string",
            "maxLength": 255,
            "example": "9:00 AM - 5:00 PM"
          }
        },
        "additionalProperties": false
      },
      "OfficeHoursSettings": {
        "type": "object",
        "description": "Office hours settings, served on V1 as `officeHours` (including `disclaimer`). Distinct from the legacy `office_hours` JSON column. Read values are the ones in effect: the property's own override for each key it sets, the account's value for every other key.",
        "required": [
          "hours",
          "display_heading",
          "disclaimer"
        ],
        "properties": {
          "hours": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OfficeHour"
            }
          },
          "display_heading": {
            "type": "string"
          },
          "disclaimer": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "OfficeHoursSettingsWrite": {
        "type": "object",
        "additionalProperties": false,
        "description": "Office hours override. `hours` replaces the whole list. On write, keys sent are merged into the property's override; a null key removes it so the account value applies again, and a null object removes the whole override. Unknown keys are rejected.",
        "properties": {
          "hours": {
            "type": [
              "array",
              "null"
            ],
            "maxItems": 14,
            "items": {
              "$ref": "#/components/schemas/OfficeHour"
            }
          },
          "display_heading": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 255
          },
          "disclaimer": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      },
      "ExternalIds": {
        "type": "object",
        "description": "Ids in third-party systems keyed by connection type slug, e.g. `{\"sight-map\": \"258670\"}`. SightMap's slug is `sight-map`. Separate from `reference_id`, which the PMS import owns.",
        "additionalProperties": {
          "type": "string"
        },
        "example": {
          "sight-map": "258670"
        }
      },
      "ExternalIdsWrite": {
        "description": "Either a provider slug => id map, or a list of `{provider, id}` objects (folded into the map; numeric ids are stringified). Merge semantics: providers listed are set, a blank or null id removes that provider's id, and providers not listed are left unchanged. Provider slugs are lowercase and hyphenated (`sight-map`).",
        "oneOf": [
          {
            "type": "object",
            "additionalProperties": {
              "type": [
                "string",
                "null"
              ],
              "maxLength": 255
            },
            "example": {
              "sight-map": "258670"
            }
          },
          {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "provider",
                "id"
              ],
              "additionalProperties": false,
              "properties": {
                "provider": {
                  "type": "string",
                  "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
                  "maxLength": 255
                },
                "id": {
                  "type": [
                    "string",
                    "integer",
                    "null"
                  ]
                }
              }
            },
            "example": [
              {
                "provider": "sight-map",
                "id": "258670"
              }
            ]
          }
        ]
      },
      "NeighborhoodCategory": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "color": {
            "type": "string",
            "description": "Hex color of the map pin.",
            "example": "#a15300"
          },
          "types": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Google place types the category gathers when places are looked up."
          },
          "sort_order": {
            "type": "integer"
          },
          "places_count": {
            "type": "integer",
            "readOnly": true
          },
          "created_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "updated_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "name",
          "color",
          "types",
          "sort_order",
          "places_count",
          "created_at",
          "updated_at"
        ]
      },
      "NeighborhoodCategoryCreate": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255,
            "description": "Unique within the account."
          },
          "color": {
            "type": "string",
            "description": "Hex color. Defaults to `#9e9e9e`.",
            "example": "#2e7d32"
          },
          "types": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string",
              "description": "A Google place type, e.g. `cafe`, `park`, `transit_station`."
            },
            "uniqueItems": true
          },
          "sort_order": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          }
        }
      },
      "NeighborhoodCategoryUpdate": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255,
            "description": "Unique within the account."
          },
          "color": {
            "type": "string",
            "description": "Hex color. Defaults to `#9e9e9e`.",
            "example": "#2e7d32"
          },
          "types": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string",
              "description": "A Google place type, e.g. `cafe`, `park`, `transit_station`."
            },
            "uniqueItems": true
          },
          "sort_order": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          }
        }
      },
      "NeighborhoodCategoryResponse": {
        "type": "object",
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/NeighborhoodCategory"
          }
        },
        "additionalProperties": false
      },
      "NeighborhoodCategoryCollection": {
        "type": "object",
        "required": [
          "data",
          "links",
          "meta"
        ],
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NeighborhoodCategory"
            }
          },
          "links": {
            "$ref": "#/components/schemas/PaginationLinks"
          },
          "meta": {
            "$ref": "#/components/schemas/PaginationMeta"
          }
        },
        "additionalProperties": false
      },
      "MediaBatchCreate": {
        "type": "object",
        "required": [
          "items"
        ],
        "properties": {
          "items": {
            "type": "array",
            "minItems": 1,
            "maxItems": 100,
            "items": {
              "$ref": "#/components/schemas/MediaCreate"
            },
            "description": "Each item is exactly a POST /api/v2/media body."
          },
          "account_id": {
            "type": "string",
            "format": "uuid",
            "description": "Optional account context, as on every write."
          }
        }
      },
      "MediaBatchItemResult": {
        "type": "object",
        "required": [
          "index",
          "status"
        ],
        "description": "The outcome of one item: `status` is what POST /api/v2/media would have answered for it, with its body alongside — `data` on 201, `message` (and `errors` on 422) otherwise. `503` means the item was not attempted because the batch ran out of time; send it again.",
        "properties": {
          "index": {
            "type": "integer",
            "description": "Position of the item in the request."
          },
          "status": {
            "type": "integer",
            "enum": [
              201,
              403,
              404,
              422,
              503
            ]
          },
          "data": {
            "$ref": "#/components/schemas/MediaItem",
            "x-present-when": "When `status` is `201`."
          },
          "message": {
            "type": "string",
            "x-present-when": "When `status` is not `201`."
          },
          "errors": {
            "type": "object",
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "x-present-when": "When `status` is `422` and particular fields failed."
          }
        },
        "additionalProperties": false
      },
      "MediaBatchResponse": {
        "type": "object",
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MediaBatchItemResult"
            }
          }
        },
        "additionalProperties": false
      },
      "PaginationMetaLink": {
        "type": "object",
        "properties": {
          "url": {
            "type": [
              "string",
              "null"
            ]
          },
          "label": {
            "type": "string"
          },
          "page": {
            "type": [
              "integer",
              "null"
            ]
          },
          "active": {
            "type": "boolean"
          }
        },
        "additionalProperties": false,
        "required": [
          "url",
          "label",
          "page",
          "active"
        ]
      },
      "PaginationLinks": {
        "type": "object",
        "properties": {
          "first": {
            "type": [
              "string",
              "null"
            ]
          },
          "last": {
            "type": [
              "string",
              "null"
            ]
          },
          "prev": {
            "type": [
              "string",
              "null"
            ]
          },
          "next": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "additionalProperties": false,
        "required": [
          "first",
          "last",
          "prev",
          "next"
        ]
      },
      "CurrentUser": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "email": {
            "type": "string",
            "format": "email"
          },
          "is_staff": {
            "type": "boolean"
          },
          "email_verified_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "accounts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UserAccount"
            },
            "description": "Every account the user belongs to, with their role in each."
          }
        },
        "description": "The user the token belongs to.",
        "additionalProperties": false,
        "required": [
          "id",
          "name",
          "email",
          "is_staff",
          "email_verified_at",
          "accounts"
        ]
      },
      "CurrentUserResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CurrentUser"
          }
        },
        "additionalProperties": false,
        "required": [
          "data"
        ]
      },
      "GroupSet": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "key": {
            "type": [
              "string",
              "null"
            ],
            "description": "Stable machine key, unique in the account."
          },
          "property_id": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "Set when the set belongs to one property; null for an account-wide set."
          },
          "object_type": {
            "type": "string",
            "enum": [
              "property",
              "building",
              "floor_plan",
              "unit"
            ],
            "description": "The kind of record the set's groups hold. Every member of every group in the set is of this kind."
          },
          "allows_multiple_membership": {
            "type": "boolean",
            "description": "Whether a record may belong to more than one group in the set."
          },
          "groups_count": {
            "type": "integer",
            "x-present-when": "Not on the group set nested inside a group."
          },
          "groups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Group"
            },
            "description": "The set's top-level groups, each with its children.",
            "x-present-when": "Not on the list endpoint, or on the group set nested inside a group."
          },
          "created_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "updated_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "name",
          "key",
          "property_id",
          "object_type",
          "allows_multiple_membership",
          "created_at",
          "updated_at"
        ]
      },
      "Group": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "group_set_id": {
            "type": "string",
            "format": "uuid"
          },
          "parent_id": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "The parent group, for a nested group."
          },
          "label": {
            "type": "string"
          },
          "slug": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "color": {
            "type": [
              "string",
              "null"
            ]
          },
          "sort_order": {
            "type": [
              "integer",
              "null"
            ]
          },
          "children": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Group"
            },
            "x-present-when": "Only on a single-group response (show, create, update) and on the groups of a group set's show response; not on the list endpoint or on a nested child."
          },
          "group_set": {
            "$ref": "#/components/schemas/GroupSet",
            "x-present-when": "Only on a single-group response (show, create, update)."
          },
          "created_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "updated_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "group_set_id",
          "parent_id",
          "label",
          "slug",
          "description",
          "color",
          "sort_order",
          "created_at",
          "updated_at"
        ]
      },
      "GroupSetResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/GroupSet"
          }
        },
        "additionalProperties": false,
        "required": [
          "data"
        ]
      },
      "GroupSetCollection": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GroupSet"
            }
          },
          "links": {
            "$ref": "#/components/schemas/PaginationLinks"
          },
          "meta": {
            "$ref": "#/components/schemas/PaginationMeta"
          }
        },
        "additionalProperties": false,
        "required": [
          "data",
          "links",
          "meta"
        ]
      },
      "GroupResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/Group"
          }
        },
        "additionalProperties": false,
        "required": [
          "data"
        ]
      },
      "GroupCollection": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Group"
            }
          },
          "links": {
            "$ref": "#/components/schemas/PaginationLinks"
          },
          "meta": {
            "$ref": "#/components/schemas/PaginationMeta"
          }
        },
        "additionalProperties": false,
        "required": [
          "data",
          "links",
          "meta"
        ]
      },
      "GroupSetCreate": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255
          },
          "key": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 64,
            "description": "Letters, numbers, dashes and underscores. Generated from the name when omitted."
          },
          "property_id": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "Scope the set to one property. Omit for an account-wide set."
          },
          "object_type": {
            "type": "string",
            "enum": [
              "property",
              "building",
              "floor_plan",
              "unit"
            ],
            "description": "The kind of record the set's groups hold. Every member of every group in the set is of this kind."
          },
          "allows_multiple_membership": {
            "type": "boolean"
          }
        },
        "required": [
          "name",
          "object_type"
        ]
      },
      "GroupSetUpdate": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255
          },
          "property_id": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          },
          "object_type": {
            "type": "string",
            "enum": [
              "property",
              "building",
              "floor_plan",
              "unit"
            ],
            "description": "The kind of record the set's groups hold. Every member of every group in the set is of this kind."
          },
          "allows_multiple_membership": {
            "type": "boolean"
          }
        }
      },
      "GroupCreate": {
        "type": "object",
        "properties": {
          "group_set_id": {
            "type": "string",
            "format": "uuid"
          },
          "parent_id": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "Nest the group under another group in the same set."
          },
          "label": {
            "type": "string",
            "maxLength": 255
          },
          "slug": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 255
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "color": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 255
          },
          "sort_order": {
            "type": "integer"
          }
        },
        "required": [
          "group_set_id",
          "label"
        ]
      },
      "GroupUpdate": {
        "type": "object",
        "properties": {
          "parent_id": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "Nest the group under another group in the same set."
          },
          "label": {
            "type": "string",
            "maxLength": 255
          },
          "slug": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 255
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "color": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 255
          },
          "sort_order": {
            "type": "integer"
          }
        },
        "description": "A group cannot move to another set; sending `group_set_id` is a `422`."
      },
      "GroupMemberCreate": {
        "type": "object",
        "properties": {
          "member_id": {
            "type": "string",
            "format": "uuid",
            "description": "Id of the property, building, floor plan or unit to add, matching the set's `object_type`."
          }
        },
        "required": [
          "member_id"
        ]
      },
      "GroupMembershipResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "group_id": {
                "type": "string",
                "format": "uuid"
              },
              "member_id": {
                "type": "string",
                "format": "uuid"
              }
            },
            "additionalProperties": false,
            "required": [
              "group_id",
              "member_id"
            ]
          }
        },
        "additionalProperties": false,
        "required": [
          "data"
        ]
      },
      "SocialProfiles": {
        "type": "object",
        "properties": {
          "instagram": {
            "type": "object",
            "properties": {
              "connected": {
                "type": "boolean"
              },
              "status": {
                "type": "string",
                "enum": [
                  "ok",
                  "error",
                  "not_connected",
                  "not_authorized"
                ],
                "description": "`ok`, or why there is nothing: `not_connected` (no enabled Instagram connection, or not the Facebook-Login flavor), `not_authorized` (connected, but not authorized for this property) or `error` (the platform's API failed)."
              },
              "flavor": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Which Instagram login the connection uses."
              },
              "profile": {
                "type": [
                  "object",
                  "null"
                ],
                "additionalProperties": true,
                "description": "The Instagram profile as published: username, name, biography and website."
              },
              "error": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "fetched_at": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "date-time"
              }
            },
            "additionalProperties": false,
            "required": [
              "connected",
              "status",
              "flavor",
              "profile",
              "error",
              "fetched_at"
            ]
          },
          "facebook": {
            "type": "object",
            "properties": {
              "connected": {
                "type": "boolean"
              },
              "status": {
                "type": "string",
                "enum": [
                  "ok",
                  "error",
                  "not_connected",
                  "not_authorized"
                ],
                "description": "`ok`, or why there is nothing: `not_connected` (no enabled Instagram connection, or not the Facebook-Login flavor), `not_authorized` (connected, but not authorized for this property) or `error` (the platform's API failed)."
              },
              "page": {
                "type": [
                  "object",
                  "null"
                ],
                "additionalProperties": true,
                "description": "The linked Facebook Page's public fields: name, about, phone, website, emails, hours, location and link."
              },
              "error": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "fetched_at": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "date-time"
              }
            },
            "additionalProperties": false,
            "required": [
              "connected",
              "status",
              "page",
              "error",
              "fetched_at"
            ]
          }
        },
        "additionalProperties": false,
        "required": [
          "instagram",
          "facebook"
        ]
      },
      "SocialProfilesResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/SocialProfiles"
          }
        },
        "additionalProperties": false,
        "required": [
          "data"
        ]
      },
      "Website": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "type": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "property",
              "portfolio",
              null
            ]
          },
          "sub_mode": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "corporate",
              "centralized",
              null
            ],
            "description": "For a portfolio website: a corporate site or a centralized leasing site."
          },
          "platform": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "nextjs",
              "wordpress",
              null
            ]
          },
          "status": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "draft",
              "live",
              "paused",
              "archived",
              null
            ]
          },
          "locale": {
            "type": [
              "string",
              "null"
            ]
          },
          "primary_domain": {
            "type": [
              "string",
              "null"
            ],
            "description": "Hostname of the primary domain."
          },
          "domains": {
            "type": "array",
            "x-present-when": "Only on `GET /api/v2/websites/{website}`.",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "hostname": {
                  "type": "string"
                },
                "is_primary": {
                  "type": "boolean"
                }
              },
              "additionalProperties": false,
              "required": [
                "id",
                "hostname",
                "is_primary"
              ]
            }
          },
          "first_published_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "last_deployed_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "created_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "updated_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "name",
          "type",
          "sub_mode",
          "platform",
          "status",
          "locale",
          "primary_domain",
          "first_published_at",
          "last_deployed_at",
          "created_at",
          "updated_at"
        ]
      },
      "WebsiteResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/Website"
          }
        },
        "additionalProperties": false,
        "required": [
          "data"
        ]
      },
      "WebsiteCollection": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Website"
            }
          },
          "links": {
            "$ref": "#/components/schemas/PaginationLinks"
          },
          "meta": {
            "$ref": "#/components/schemas/PaginationMeta"
          }
        },
        "additionalProperties": false,
        "required": [
          "data",
          "links",
          "meta"
        ]
      },
      "ContentFieldDefinition": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "description": "The field's key in an entry's `data`."
          },
          "label": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "description": "The field type, such as `text`, `textarea`, `select`, `url` or `repeater`."
          },
          "required": {
            "type": "boolean"
          },
          "help": {
            "type": [
              "string",
              "null"
            ]
          },
          "options": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": {
              "type": "string"
            },
            "description": "For a choice field: stored value to label."
          },
          "conditions": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": true,
            "description": "Field values that must hold for this field to apply, keyed by field."
          },
          "fields": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/ContentFieldDefinition"
            },
            "description": "For a repeater: the fields of each row."
          }
        },
        "additionalProperties": false,
        "required": [
          "key",
          "label",
          "type",
          "required",
          "help",
          "options",
          "conditions",
          "fields"
        ]
      },
      "ContentType": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "key": {
            "type": "string",
            "description": "Stable key the type is addressed by, such as `team`."
          },
          "singular": {
            "type": "string"
          },
          "plural": {
            "type": "string"
          },
          "scope": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "account",
              "site",
              "library",
              null
            ],
            "description": "`account`: shared by every website in the account that carries it. `site`: authored for one website. `library`: a Resi library type."
          },
          "website_id": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "Set for a type authored for one website."
          },
          "url_pattern": {
            "type": [
              "string",
              "null"
            ],
            "description": "Where an entry renders on this website, with `{slug}` for the entry's slug."
          },
          "template": {
            "type": [
              "string",
              "null"
            ]
          },
          "schema_type": {
            "type": [
              "string",
              "null"
            ],
            "description": "The schema.org type entries are published as."
          },
          "requires_approval": {
            "type": "boolean",
            "description": "Whether publishing needs an approver. Entries of such a type are published from the Resi app."
          },
          "expiry_field": {
            "type": [
              "string",
              "null"
            ]
          },
          "list_columns": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "default_sort": {
            "type": [
              "string",
              "null"
            ]
          },
          "icon": {
            "type": [
              "string",
              "null"
            ]
          },
          "is_enabled": {
            "type": "boolean"
          },
          "fields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContentFieldDefinition"
            }
          },
          "json_schema": {
            "type": "object",
            "additionalProperties": true,
            "description": "A JSON Schema (2020-12) document an entry's `data` must satisfy. Validate against it before writing."
          },
          "created_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "updated_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "key",
          "singular",
          "plural",
          "scope",
          "website_id",
          "url_pattern",
          "template",
          "schema_type",
          "requires_approval",
          "expiry_field",
          "list_columns",
          "default_sort",
          "icon",
          "is_enabled",
          "fields",
          "json_schema",
          "created_at",
          "updated_at"
        ]
      },
      "ContentTypeResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ContentType"
          }
        },
        "additionalProperties": false,
        "required": [
          "data"
        ]
      },
      "ContentTypeCollection": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContentType"
            }
          }
        },
        "description": "Every content type the website carries. Not paginated.",
        "additionalProperties": false,
        "required": [
          "data"
        ]
      },
      "ContentEntry": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "slug": {
            "type": "string"
          },
          "status": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "draft",
              "in_review",
              "published",
              "archived",
              null
            ]
          },
          "content_type": {
            "type": [
              "string",
              "null"
            ],
            "description": "The content type's key."
          },
          "content_type_id": {
            "type": "string",
            "format": "uuid"
          },
          "scope": {
            "type": "string",
            "enum": [
              "account",
              "website"
            ],
            "description": "`website`: the entry lives on this website only. `account`: it is shared with the account and rendered by every website that carries its type."
          },
          "website_id": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          },
          "property_id": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          },
          "path": {
            "type": [
              "string",
              "null"
            ],
            "description": "Where the entry renders on this website."
          },
          "data": {
            "type": "object",
            "additionalProperties": true,
            "description": "The entry's field values, keyed by field. Shaped by the content type's `json_schema`."
          },
          "seo": {
            "type": "object",
            "additionalProperties": true,
            "description": "SEO overrides: `title`, `description` and `social_image`."
          },
          "resolved_data": {
            "type": "object",
            "additionalProperties": true,
            "description": "`data` as this website renders it: the website's override merged over the shared entry.",
            "x-present-when": "Only with `include=resolved_data`."
          },
          "website_override": {
            "type": [
              "object",
              "null"
            ],
            "description": "This website's override of a shared entry, or null when it has none.",
            "properties": {
              "is_excluded": {
                "type": "boolean",
                "description": "Whether this website hides the entry."
              },
              "data": {
                "type": "object",
                "additionalProperties": true,
                "description": "Field values this website overrides."
              },
              "seo": {
                "type": "object",
                "additionalProperties": true,
                "description": "SEO values this website overrides."
              }
            },
            "additionalProperties": false,
            "required": [
              "is_excluded",
              "data",
              "seo"
            ]
          },
          "approved_by": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          },
          "created_by": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          },
          "published_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "expires_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "created_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "updated_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "slug",
          "status",
          "content_type",
          "content_type_id",
          "scope",
          "website_id",
          "property_id",
          "path",
          "data",
          "seo",
          "website_override",
          "approved_by",
          "created_by",
          "published_at",
          "expires_at",
          "created_at",
          "updated_at"
        ]
      },
      "ContentEntryResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ContentEntry"
          }
        },
        "additionalProperties": false,
        "required": [
          "data"
        ]
      },
      "ContentEntryCollection": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContentEntry"
            }
          },
          "links": {
            "$ref": "#/components/schemas/PaginationLinks"
          },
          "meta": {
            "$ref": "#/components/schemas/PaginationMeta"
          }
        },
        "additionalProperties": false,
        "required": [
          "data",
          "links",
          "meta"
        ]
      },
      "ContentEntryCreate": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string",
            "maxLength": 255,
            "description": "One path segment: no slashes or spaces. Unique among the type's entries in the same scope."
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "in_review",
              "published",
              "archived"
            ],
            "description": "Defaults to `draft`. An entry of a type that `requires_approval` cannot be published through the API."
          },
          "property_id": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "Tie the entry to one property."
          },
          "expires_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "seo": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "title": {
                "type": [
                  "string",
                  "null"
                ],
                "maxLength": 255
              },
              "description": {
                "type": [
                  "string",
                  "null"
                ],
                "maxLength": 1000
              },
              "social_image": {
                "type": [
                  "string",
                  "null"
                ],
                "maxLength": 2048
              }
            }
          },
          "data": {
            "type": "object",
            "additionalProperties": true,
            "description": "Field values keyed by field, validated against the content type's `json_schema`."
          }
        },
        "required": [
          "slug"
        ]
      },
      "ContentEntryUpdate": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string",
            "maxLength": 255,
            "description": "One path segment: no slashes or spaces. Unique among the type's entries in the same scope."
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "in_review",
              "published",
              "archived"
            ],
            "description": "Defaults to `draft`. An entry of a type that `requires_approval` cannot be published through the API."
          },
          "property_id": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "Tie the entry to one property."
          },
          "expires_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "seo": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "title": {
                "type": [
                  "string",
                  "null"
                ],
                "maxLength": 255
              },
              "description": {
                "type": [
                  "string",
                  "null"
                ],
                "maxLength": 1000
              },
              "social_image": {
                "type": [
                  "string",
                  "null"
                ],
                "maxLength": 2048
              }
            }
          },
          "data": {
            "type": "object",
            "additionalProperties": true,
            "description": "Field values keyed by field, validated against the content type's `json_schema`."
          }
        },
        "description": "Only the keys you send change. `data` is merged into the stored values: a field you omit is kept, and a field sent as `null` is cleared."
      },
      "FeeLine": {
        "type": "object",
        "description": "One resolved fee, as stored by the pricing sync.",
        "properties": {
          "fee_id": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          },
          "code": {
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "class": {
            "type": [
              "string",
              "null"
            ]
          },
          "currency": {
            "type": [
              "string",
              "null"
            ]
          },
          "requirement": {
            "type": [
              "string",
              "null"
            ],
            "description": "`Mandatory`, `Optional` or `Situational`."
          },
          "frequency": {
            "type": [
              "string",
              "null"
            ],
            "description": "How often it is charged, such as `Monthly` or `One-time`."
          },
          "lifecycle": {
            "type": [
              "string",
              "null"
            ]
          },
          "basis": {
            "type": [
              "string",
              "null"
            ]
          },
          "refundability": {
            "type": [
              "string",
              "null"
            ]
          },
          "calculated_amount": {
            "type": [
              "number",
              "null"
            ]
          },
          "calculated_amount_max": {
            "type": [
              "number",
              "null"
            ]
          },
          "monthly_equivalent": {
            "type": [
              "number",
              "null"
            ],
            "description": "The amount per month: annual fees ÷ 12, quarterly ÷ 3; null for an upfront fee."
          },
          "monthly_equivalent_max": {
            "type": [
              "number",
              "null"
            ]
          },
          "included_in_tmlp": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether the fee counts toward the total monthly leasing price (`min_rent`/`max_rent` when base rent is authoritative)."
          },
          "is_variable": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "term_restricted": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "source_scope": {
            "type": [
              "string",
              "null"
            ],
            "description": "Where the winning assignment sits: property, floor plan or unit."
          },
          "unit_types": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            }
          },
          "floor_plans": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "fee_id",
          "code",
          "name",
          "description",
          "class",
          "currency",
          "requirement",
          "frequency",
          "lifecycle",
          "basis",
          "refundability",
          "calculated_amount",
          "calculated_amount_max",
          "monthly_equivalent",
          "monthly_equivalent_max",
          "included_in_tmlp",
          "is_variable",
          "term_restricted",
          "source_scope",
          "unit_types",
          "floor_plans"
        ],
        "additionalProperties": false
      },
      "AccountRole": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "key": {
            "type": "string",
            "description": "What a user's `role` reads as, and a value writing `role` accepts: the built-in key (`admin`, `manager`, `member`, `viewer`) or the custom role's slug."
          },
          "name": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "system_key": {
            "type": [
              "string",
              "null"
            ],
            "description": "Set on the built-in roles."
          },
          "is_default": {
            "type": "boolean",
            "description": "The role a new user gets when none is given."
          },
          "is_protected": {
            "type": "boolean",
            "description": "A built-in role that cannot be deleted."
          },
          "permissions": {
            "type": "object",
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "What the role may do, by resource: `{\"units\": [\"view\", \"update\"]}`."
          },
          "created_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "updated_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "key",
          "name",
          "slug",
          "system_key",
          "is_default",
          "is_protected",
          "permissions",
          "created_at",
          "updated_at"
        ],
        "additionalProperties": false
      },
      "AccountRoleResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/AccountRole"
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "AccountRoleCollection": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AccountRole"
            }
          },
          "links": {
            "$ref": "#/components/schemas/PaginationLinks"
          },
          "meta": {
            "$ref": "#/components/schemas/PaginationMeta"
          }
        },
        "required": [
          "data",
          "links",
          "meta"
        ],
        "additionalProperties": false
      },
      "ConnectionLog": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "connection_id": {
            "type": "string",
            "format": "uuid"
          },
          "property_id": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "The property the run was for, when it was for one."
          },
          "event_type": {
            "type": [
              "string",
              "null"
            ],
            "description": "What ran, such as an import, a sync or a webhook."
          },
          "status": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "Pending",
              "Success",
              "Warning",
              "Skipped",
              "Error",
              null
            ]
          },
          "message": {
            "type": [
              "string",
              "null"
            ],
            "description": "What happened, as the Resi app shows it; on a failure, why."
          },
          "duration": {
            "type": [
              "number",
              "null"
            ],
            "description": "Seconds the run took."
          },
          "metadata": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": true,
            "description": "Run details, such as counts and what triggered it. Credential-shaped keys are masked."
          },
          "created_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "connection_id",
          "property_id",
          "event_type",
          "status",
          "message",
          "duration",
          "metadata",
          "created_at"
        ],
        "additionalProperties": false
      },
      "ConnectionLogCollection": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ConnectionLog"
            }
          },
          "links": {
            "$ref": "#/components/schemas/PaginationLinks"
          },
          "meta": {
            "$ref": "#/components/schemas/PaginationMeta"
          }
        },
        "required": [
          "data",
          "links",
          "meta"
        ],
        "additionalProperties": false
      },
      "PropertyAddressListItem": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "label": {
            "type": [
              "string",
              "null"
            ],
            "description": "What the address is for, such as `Leasing office`."
          },
          "is_primary": {
            "type": "boolean",
            "description": "The primary address is also returned as `address`."
          },
          "street": {
            "type": "string"
          },
          "street_2": {
            "type": [
              "string",
              "null"
            ]
          },
          "city": {
            "type": "string"
          },
          "county": {
            "type": [
              "string",
              "null"
            ]
          },
          "state": {
            "type": "string"
          },
          "zipcode": {
            "type": "string"
          },
          "country": {
            "type": "string"
          },
          "latitude": {
            "type": [
              "number",
              "null"
            ],
            "minimum": -90,
            "maximum": 90
          },
          "longitude": {
            "type": [
              "number",
              "null"
            ],
            "minimum": -180,
            "maximum": 180
          },
          "timezone": {
            "type": "string",
            "description": "IANA timezone.",
            "example": "America/Chicago"
          }
        },
        "required": [
          "id",
          "label",
          "is_primary",
          "street",
          "street_2",
          "city",
          "county",
          "state",
          "zipcode",
          "country",
          "latitude",
          "longitude",
          "timezone"
        ],
        "additionalProperties": false
      },
      "PropertyAddressListItemWrite": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "One of the property's addresses, to update it in place. Omit to add an address."
          },
          "label": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 255
          },
          "is_primary": {
            "type": "boolean"
          },
          "street": {
            "type": "string",
            "maxLength": 255
          },
          "street_2": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 255
          },
          "city": {
            "type": "string",
            "maxLength": 255
          },
          "county": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 255
          },
          "state": {
            "type": "string",
            "maxLength": 255
          },
          "zipcode": {
            "type": "string",
            "maxLength": 255
          },
          "country": {
            "type": "string",
            "maxLength": 255
          },
          "latitude": {
            "type": [
              "number",
              "null"
            ],
            "minimum": -90,
            "maximum": 90,
            "example": 30.2672
          },
          "longitude": {
            "type": [
              "number",
              "null"
            ],
            "minimum": -180,
            "maximum": 180,
            "example": -97.7431
          },
          "timezone": {
            "type": "string",
            "description": "IANA timezone. Defaults to UTC on a new address.",
            "example": "America/Chicago"
          }
        },
        "required": [
          "street",
          "city",
          "state",
          "zipcode",
          "country"
        ]
      },
      "WebsiteSettings": {
        "type": "object",
        "properties": {
          "permalink_base_url": {
            "type": [
              "string",
              "null"
            ],
            "description": "Base URL for public floor plan and unit links. Null uses the property website URL."
          },
          "property_single_path": {
            "type": [
              "string",
              "null"
            ],
            "description": "Path segment of a single property URL. Null uses `property`."
          },
          "property_archive_path": {
            "type": [
              "string",
              "null"
            ],
            "description": "Path of the property archive. Null uses the single path or `properties`."
          },
          "floor_plan_single_path": {
            "type": [
              "string",
              "null"
            ],
            "description": "Null uses `floor-plan`."
          },
          "floor_plan_archive_path": {
            "type": [
              "string",
              "null"
            ],
            "description": "Null uses the single path or `floor-plans`."
          },
          "unit_single_path": {
            "type": [
              "string",
              "null"
            ],
            "description": "Null uses `unit`."
          },
          "unit_archive_path": {
            "type": [
              "string",
              "null"
            ],
            "description": "Null uses the single path or `units`."
          },
          "unit_slug_template": {
            "type": "string",
            "description": "How new unit slugs are built, from static text and placeholders such as `{unit.number}`."
          },
          "floor_plan_slug_template": {
            "type": "string",
            "description": "How new floor plan slugs are built, such as `{floor_plan.name}`."
          }
        },
        "description": "Website URL settings: how this property's public URLs and slugs are built. Read values are the ones in effect: the property's own override for each key it sets, the account's value for every other key.",
        "required": [
          "permalink_base_url",
          "property_single_path",
          "property_archive_path",
          "floor_plan_single_path",
          "floor_plan_archive_path",
          "unit_single_path",
          "unit_archive_path",
          "unit_slug_template",
          "floor_plan_slug_template"
        ],
        "additionalProperties": false
      },
      "WebsiteSettingsWrite": {
        "type": "object",
        "properties": {
          "permalink_base_url": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri",
            "maxLength": 2048
          },
          "property_single_path": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 255
          },
          "property_archive_path": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 255
          },
          "floor_plan_single_path": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 255
          },
          "floor_plan_archive_path": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 255
          },
          "unit_single_path": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 255
          },
          "unit_archive_path": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 255
          },
          "unit_slug_template": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 255
          },
          "floor_plan_slug_template": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 255
          }
        },
        "description": "Keys to override on this property. A key sent as `null` stops overriding it, so the account's value applies again; `null` for the whole object removes every override."
      },
      "DisplaySettingsWrite": {
        "type": "object",
        "properties": {
          "prepend_building_number_to_unit_number": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "show_non_marketable_amenities": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "hide_available_units": {
            "type": [
              "boolean",
              "null"
            ]
          }
        },
        "description": "Keys to override on this property. A key sent as `null` stops overriding it; `null` for the whole object removes every override."
      },
      "Lead": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "property_id": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          },
          "form_id": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "The form it was submitted through."
          },
          "connection_id": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "The connection a tour was booked against."
          },
          "lead_source_id": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The lead source it was attributed to."
          },
          "email": {
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "type": [
              "string",
              "null"
            ],
            "description": "The full name, from `name` or `first_name` and `last_name` as submitted."
          },
          "phone": {
            "type": [
              "string",
              "null"
            ]
          },
          "message": {
            "type": [
              "string",
              "null"
            ]
          },
          "move_in_date": {
            "type": [
              "string",
              "null"
            ],
            "format": "date",
            "description": "The desired move-in date, as `YYYY-MM-DD`, when one was given and could be read."
          },
          "tour": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "date": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "time": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "type": {
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "date",
              "time",
              "type"
            ],
            "additionalProperties": false,
            "description": "The tour requested, for a tour booking."
          },
          "submission": {
            "type": "object",
            "additionalProperties": true,
            "description": "Everything submitted, as submitted: standard fields, custom form fields and attribution."
          },
          "created_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "updated_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "property_id",
          "form_id",
          "connection_id",
          "lead_source_id",
          "email",
          "name",
          "phone",
          "message",
          "move_in_date",
          "tour",
          "submission",
          "created_at",
          "updated_at"
        ],
        "additionalProperties": false
      },
      "LeadResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/Lead"
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "LeadCollection": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Lead"
            }
          },
          "links": {
            "$ref": "#/components/schemas/PaginationLinks"
          },
          "meta": {
            "$ref": "#/components/schemas/PaginationMeta"
          }
        },
        "required": [
          "data",
          "links",
          "meta"
        ],
        "additionalProperties": false
      },
      "MediaAttachmentUpdate": {
        "type": "object",
        "properties": {
          "sort_order": {
            "type": "integer",
            "minimum": 0,
            "description": "The file's position among the record's media in the same slot."
          },
          "slot": {
            "type": "string",
            "description": "Only change the placement in this slot, when the file is on the record more than once."
          }
        },
        "required": [
          "sort_order"
        ]
      },
      "MediaFolder": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "property_id": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "The property the folder belongs to; null for an account-wide folder."
          },
          "created_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "updated_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "name",
          "property_id",
          "created_at",
          "updated_at"
        ],
        "additionalProperties": false
      },
      "MediaFolderResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/MediaFolder"
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "MediaFolderCollection": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MediaFolder"
            }
          },
          "links": {
            "$ref": "#/components/schemas/PaginationLinks"
          },
          "meta": {
            "$ref": "#/components/schemas/PaginationMeta"
          }
        },
        "required": [
          "data",
          "links",
          "meta"
        ],
        "additionalProperties": false
      },
      "MediaFolderCreate": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255,
            "description": "Unique among the folders of the same property (or among the account-wide folders)."
          },
          "property_id": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "Make it one property's folder. Omit for an account-wide folder."
          }
        },
        "required": [
          "name"
        ]
      },
      "FeeAssignment": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "fee_id": {
            "type": "string",
            "format": "uuid"
          },
          "assignable_type": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "property",
              "floor_plan",
              "unit",
              null
            ],
            "description": "The kind of record the fee is assigned to."
          },
          "assignable_id": {
            "type": "string",
            "format": "uuid"
          },
          "is_enabled": {
            "type": "boolean"
          },
          "effective_start": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          },
          "effective_end": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          },
          "priority": {
            "type": "integer",
            "description": "When the same fee is assigned more than once at the same level, the highest priority wins."
          },
          "unit_types": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "Studio",
                "1 Bedroom",
                "2 Bedroom",
                "3 Bedroom",
                "4 Bedroom",
                "5 Bedroom"
              ]
            },
            "description": "Only units with these bedroom counts (`5 Bedroom` means five or more). Empty applies to every unit."
          },
          "floor_plan_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Only these floor plans of the property, and their units. Empty applies to every floor plan. Combined with `unit_types`, both must match."
          },
          "settings": {
            "type": "object",
            "additionalProperties": true,
            "description": "This assignment's overrides of the fee's `frequency`, `lifecycle`, `requirement`, `amount_model`, `refundability` and `term_rules`. A key it does not set uses the fee's."
          },
          "created_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "updated_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "fee_id",
          "assignable_type",
          "assignable_id",
          "is_enabled",
          "effective_start",
          "effective_end",
          "priority",
          "unit_types",
          "floor_plan_ids",
          "settings",
          "created_at",
          "updated_at"
        ],
        "additionalProperties": false
      },
      "FeeAssignmentResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/FeeAssignment"
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "FeeAssignmentCollection": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FeeAssignment"
            }
          },
          "links": {
            "$ref": "#/components/schemas/PaginationLinks"
          },
          "meta": {
            "$ref": "#/components/schemas/PaginationMeta"
          }
        },
        "required": [
          "data",
          "links",
          "meta"
        ],
        "additionalProperties": false
      },
      "FeeAssignmentCreate": {
        "type": "object",
        "properties": {
          "fee_id": {
            "type": "string",
            "format": "uuid"
          },
          "assignable_type": {
            "type": "string",
            "enum": [
              "property",
              "floor_plan",
              "unit"
            ],
            "description": "The kind of record the fee is assigned to."
          },
          "assignable_id": {
            "type": "string",
            "format": "uuid",
            "description": "The property, floor plan or unit."
          },
          "is_enabled": {
            "type": "boolean"
          },
          "effective_start": {
            "type": [
              "string",
              "null"
            ],
            "format": "date",
            "description": "The assignment applies from this date. Null for no start."
          },
          "effective_end": {
            "type": [
              "string",
              "null"
            ],
            "format": "date",
            "description": "The assignment applies until this date. Null for no end."
          },
          "priority": {
            "type": "integer"
          },
          "unit_types": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string",
              "enum": [
                "Studio",
                "1 Bedroom",
                "2 Bedroom",
                "3 Bedroom",
                "4 Bedroom",
                "5 Bedroom"
              ]
            },
            "description": "Only units with these bedroom counts (`5 Bedroom` means five or more). Empty applies to every unit."
          },
          "floor_plan_ids": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Only these floor plans of the property, and their units. Empty applies to every floor plan. Combined with `unit_types`, both must match. Every floor plan must belong to the assignment's property."
          },
          "settings": {
            "type": [
              "object",
              "null"
            ],
            "properties": {},
            "description": "Overrides of the fee's settings for this scope, validated as on a fee. Replaces the assignment's overrides."
          }
        },
        "required": [
          "fee_id",
          "assignable_type",
          "assignable_id"
        ]
      },
      "FeeAssignmentUpdate": {
        "type": "object",
        "properties": {
          "is_enabled": {
            "type": "boolean"
          },
          "effective_start": {
            "type": [
              "string",
              "null"
            ],
            "format": "date",
            "description": "The assignment applies from this date. Null for no start."
          },
          "effective_end": {
            "type": [
              "string",
              "null"
            ],
            "format": "date",
            "description": "The assignment applies until this date. Null for no end."
          },
          "priority": {
            "type": "integer"
          },
          "unit_types": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string",
              "enum": [
                "Studio",
                "1 Bedroom",
                "2 Bedroom",
                "3 Bedroom",
                "4 Bedroom",
                "5 Bedroom"
              ]
            },
            "description": "Only units with these bedroom counts (`5 Bedroom` means five or more). Empty applies to every unit."
          },
          "floor_plan_ids": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Only these floor plans of the property, and their units. Empty applies to every floor plan. Combined with `unit_types`, both must match. Every floor plan must belong to the assignment's property."
          },
          "settings": {
            "type": [
              "object",
              "null"
            ],
            "properties": {},
            "description": "Overrides of the fee's settings for this scope, validated as on a fee. Replaces the assignment's overrides."
          }
        },
        "description": "The fee and the record it is assigned to cannot change: delete the assignment and create another."
      }
    }
  }
}
