{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/bookthetee-com/json-schema/bookthetee-com-course-schema.json",
  "title": "Course",
  "x-generated": "2026-11-03",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/bookthetee-com-openapi.json#/components/schemas/Course",
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    },
    "slug": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "lat": {
      "type": [
        "number",
        "null"
      ]
    },
    "lng": {
      "type": [
        "number",
        "null"
      ]
    },
    "geocode_source": {
      "type": [
        "string",
        "null"
      ]
    },
    "address": {
      "type": "object",
      "properties": {
        "locality": {
          "type": "string"
        },
        "region": {
          "type": "string"
        },
        "country": {
          "type": "string"
        },
        "full": {
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "region": {
      "type": "string"
    },
    "rank": {
      "type": "integer"
    },
    "rank_sources": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "source": {
            "type": "string"
          },
          "year": {
            "type": [
              "integer",
              "null"
            ]
          },
          "list": {
            "type": "string"
          },
          "position": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      }
    },
    "summary": {
      "type": "string"
    },
    "approx_distance_mi_manhattan": {
      "type": "number"
    },
    "holes": {
      "type": [
        "integer",
        "null"
      ]
    },
    "par": {
      "type": [
        "integer",
        "null"
      ]
    },
    "yardage": {
      "type": [
        "integer",
        "null"
      ]
    },
    "green_fee_min": {
      "type": [
        "number",
        "null"
      ]
    },
    "green_fee_max": {
      "type": [
        "number",
        "null"
      ]
    },
    "currency": {
      "type": [
        "string",
        "null"
      ]
    },
    "fee_note": {
      "type": "string"
    },
    "website": {
      "type": "string"
    },
    "booking_url": {
      "type": [
        "string",
        "null"
      ]
    },
    "booking_method": {
      "type": "string",
      "enum": [
        "online",
        "phone"
      ]
    },
    "booking_platform": {
      "type": [
        "string",
        "null"
      ]
    },
    "phone": {
      "type": [
        "string",
        "null"
      ]
    },
    "walking_allowed": {
      "type": [
        "string",
        "null"
      ]
    },
    "resident_rules": {
      "type": [
        "string",
        "null"
      ]
    },
    "caveats": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "booking_notes": {
      "type": "string"
    },
    "booking_verified": {
      "type": "boolean"
    },
    "booking_url_status": {
      "type": [
        "integer",
        "null"
      ]
    },
    "last_verified": {
      "type": [
        "string",
        "null"
      ]
    },
    "page_url": {
      "type": "string"
    },
    "source_urls": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "last_updated": {
      "type": "string"
    }
  },
  "required": [
    "id",
    "slug",
    "name",
    "lat",
    "lng",
    "geocode_source",
    "address",
    "region",
    "rank",
    "rank_sources",
    "summary",
    "approx_distance_mi_manhattan",
    "holes",
    "par",
    "yardage",
    "green_fee_min",
    "green_fee_max",
    "currency",
    "fee_note",
    "website",
    "booking_url",
    "booking_method",
    "booking_platform",
    "phone",
    "walking_allowed",
    "resident_rules",
    "caveats",
    "booking_notes",
    "booking_verified",
    "booking_url_status",
    "last_verified",
    "page_url",
    "source_urls",
    "last_updated"
  ]
}