{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/casaintelligence-com-au/json-schema/casaintelligence-com-au-preliminary-checkout-request-schema.json",
  "title": "PreliminaryCheckoutRequest",
  "x-generated": "2026-11-03",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/casaintelligence-com-au-openapi.json#/components/schemas/PreliminaryCheckoutRequest",
  "properties": {
    "email": {
      "type": "string",
      "format": "email",
      "title": "Email"
    },
    "property_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Property Id",
      "description": "UUID of ci_properties row, if already resolved"
    },
    "address": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Address",
      "description": "SEQ address — resolved server-side if property_id absent"
    },
    "dev_type": {
      "type": "string",
      "title": "Dev Type",
      "default": "kdr_single"
    },
    "unit_count": {
      "type": "integer",
      "maximum": 500.0,
      "minimum": 1.0,
      "title": "Unit Count",
      "default": 1
    },
    "works_intent": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Works Intent"
    },
    "address_label": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Address Label"
    },
    "user_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "User Id"
    },
    "org_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Org Id"
    },
    "success_url": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Success Url"
    },
    "cancel_url": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Cancel Url"
    },
    "utm": {
      "anyOf": [
        {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "title": "Utm",
      "description": "Marketing attribution pairs (utm_source/utm_medium/utm_campaign/utm_term/utm_content/referrer). Sanitized server-side."
    },
    "free_check_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Free Check Id",
      "description": "ci_free_checks id this purchase originated from, for conversion linkage"
    },
    "ga_client_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Ga Client Id",
      "description": "GA4 client id from the buyer's _ga cookie, for server-side purchase events"
    },
    "phone": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 60
        },
        {
          "type": "null"
        }
      ],
      "title": "Phone",
      "description": "Optional, and it stays optional. Baymard measured 14 per cent of shoppers refusing to give a phone number to an online store, so a required field costs buyers and returns junk from some who stay. Travels to the desk so a person can call about the property when the buyer wants that."
    },
    "neighbour_property_ids": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array",
          "maxItems": 12
        },
        {
          "type": "null"
        }
      ],
      "title": "Neighbour Property Ids",
      "description": "Adjoining lot UUIDs to amalgamate with the subject into one combined-site report. Validated (contiguous + uniform controls) before charging; mixed-control selections are blocked at checkout."
    }
  },
  "type": "object",
  "required": [
    "email"
  ]
}