{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/cityoftrees-house/json-schema/cityoftrees-house-property-schema.json",
  "title": "Property",
  "x-generated": "2026-11-04",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/cityoftrees-house-openapi.json#/components/schemas/Property",
  "type": "object",
  "properties": {
    "propertySlug": {
      "type": "string",
      "const": "city-of-trees-house"
    },
    "name": {
      "type": "string",
      "const": "City of Trees House"
    },
    "entityId": {
      "type": "string",
      "const": "https://cityoftrees.house/#vacation-rental"
    },
    "url": {
      "type": "string",
      "const": "https://cityoftrees.house/"
    },
    "bookingUrl": {
      "type": "string",
      "const": "https://cityoftrees.house/#book"
    },
    "operator": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "const": "Good Reviews Only"
        },
        "url": {
          "type": "string",
          "const": "https://www.goodreviewsonly.com"
        }
      },
      "required": [
        "name",
        "url"
      ],
      "additionalProperties": false
    },
    "timezone": {
      "type": "string",
      "const": "America/Los_Angeles"
    },
    "currency": {
      "type": "string",
      "const": "USD"
    },
    "location": {
      "type": "object",
      "properties": {
        "locality": {
          "type": "string",
          "const": "West Sacramento"
        },
        "region": {
          "type": "string",
          "const": "California"
        },
        "country": {
          "type": "string",
          "const": "US"
        }
      },
      "required": [
        "locality",
        "region",
        "country"
      ],
      "additionalProperties": false
    },
    "occupancyMax": {
      "type": "number",
      "const": 10
    },
    "bedrooms": {
      "type": "number",
      "const": 3
    },
    "bathrooms": {
      "type": "number",
      "const": 2
    },
    "layout": {
      "type": "string",
      "const": "single-level (one story), with a step up at the front entrance and a step down into the game room"
    },
    "sutterHealthParkTrip": {
      "type": "string",
      "const": "about a mile from Sutter Health Park, a 5-minute drive or about a 30-minute walk"
    },
    "bookingType": {
      "type": "string",
      "const": "whole"
    },
    "petsMax": {
      "type": "number",
      "const": 2
    },
    "maxStayNights": {
      "type": "number",
      "const": 28
    },
    "bookingHorizonDays": {
      "type": "number",
      "const": 366
    },
    "bookingHorizonMonths": {
      "type": "number",
      "const": 12
    },
    "amenities": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "policyUrl": {
      "type": "string",
      "const": "https://cityoftrees.house/terms"
    },
    "factsUpdatedAt": {
      "type": "string",
      "const": "2026-10-29T00:00:00Z"
    },
    "rating": {
      "type": "object",
      "additionalProperties": false,
      "description": "Public Airbnb listing score for listing 15435008, captured on asOf. Not a site-collected rating.",
      "required": [
        "value",
        "scale",
        "count",
        "sourcePlatform",
        "sourceListingUrl",
        "sourceReviewsUrl",
        "onSiteReviewsUrl",
        "asOf",
        "label"
      ],
      "properties": {
        "value": {
          "type": "number",
          "minimum": 0,
          "maximum": 5
        },
        "scale": {
          "type": "number",
          "const": 5
        },
        "count": {
          "type": "integer",
          "minimum": 0
        },
        "sourcePlatform": {
          "type": "string",
          "const": "airbnb"
        },
        "sourceListingUrl": {
          "type": "string",
          "format": "uri"
        },
        "sourceReviewsUrl": {
          "type": "string",
          "format": "uri"
        },
        "onSiteReviewsUrl": {
          "type": "string",
          "format": "uri"
        },
        "asOf": {
          "type": "string",
          "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
        },
        "label": {
          "type": "string"
        }
      }
    },
    "minStay": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "minNightsFloor",
        "variesByDate",
        "rule",
        "source",
        "authoritativeIn",
        "note"
      ],
      "properties": {
        "minNightsFloor": {
          "type": "integer",
          "const": 1
        },
        "variesByDate": {
          "type": "boolean",
          "const": true
        },
        "rule": {
          "type": "string",
          "const": "check_in_night"
        },
        "source": {
          "type": "string",
          "const": "pricelabs"
        },
        "authoritativeIn": {
          "type": "string",
          "const": "quote.minStayNights"
        },
        "note": {
          "type": "string"
        }
      }
    },
    "apiVersion": {
      "type": "string",
      "const": "1"
    },
    "apiDocumentationUrl": {
      "type": "string",
      "const": "https://cityoftrees.house/agents"
    }
  },
  "required": [
    "propertySlug",
    "name",
    "entityId",
    "url",
    "bookingUrl",
    "operator",
    "timezone",
    "currency",
    "location",
    "occupancyMax",
    "bedrooms",
    "bathrooms",
    "layout",
    "sutterHealthParkTrip",
    "bookingType",
    "petsMax",
    "maxStayNights",
    "bookingHorizonDays",
    "bookingHorizonMonths",
    "amenities",
    "policyUrl",
    "factsUpdatedAt",
    "rating",
    "minStay",
    "apiVersion",
    "apiDocumentationUrl"
  ],
  "additionalProperties": false
}