{
  "openapi": "3.1.0",
  "info": {
    "title": "PropCheck AU — Property Due Diligence API",
    "version": "1.0.0",
    "description": "Agent-friendly Australian 19-point property due diligence API covering hazards, planning/zoning, easements, transport/nuisance, and ABS Census data."
  },
  "servers": [
    {
      "url": "https://no-ai.com.au"
    }
  ],
  "paths": {
    "/api/check": {
      "get": {
        "operationId": "runPropertyCheckGet",
        "summary": "Run a 19-point property due diligence check via query parameters",
        "parameters": [
          {
            "name": "address",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "detail",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "summary",
                "flagged",
                "full"
              ],
              "default": "full"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "markdown"
              ],
              "default": "json"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "19-point due diligence report in JSON or Markdown"
          },
          "400": {
            "description": "Invalid or missing address"
          }
        }
      },
      "post": {
        "operationId": "runPropertyCheck",
        "summary": "Run a 19-point property due diligence check",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "address"
                ],
                "properties": {
                  "address": {
                    "type": "string",
                    "description": "Australian residential street address"
                  },
                  "detail": {
                    "type": "string",
                    "enum": [
                      "summary",
                      "flagged",
                      "full"
                    ],
                    "default": "full",
                    "description": "Control token size: summary, flagged (non-CLEAR only), or full (all 19)"
                  },
                  "format": {
                    "type": "string",
                    "enum": [
                      "json",
                      "markdown"
                    ],
                    "default": "json"
                  },
                  "email": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "19-point due diligence report"
          },
          "400": {
            "description": "Invalid address or payload"
          }
        }
      }
    },
    "/api/compare": {
      "post": {
        "operationId": "compareProperties",
        "summary": "Compare 2 to 5 Australian properties side-by-side",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "addresses"
                ],
                "properties": {
                  "addresses": {
                    "type": "array",
                    "minItems": 2,
                    "maxItems": 5,
                    "items": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Side-by-side property comparison matrix"
          },
          "400": {
            "description": "Need at least 2 valid addresses"
          }
        }
      }
    },
    "/api/suggest": {
      "get": {
        "operationId": "suggestAddresses",
        "summary": "Autocomplete or validate Australian residential addresses",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of matching Australian addresses"
          }
        }
      }
    },
    "/api/domain-check": {
      "get": {
        "operationId": "checkDomainAvailability",
        "summary": "Check domain availability via GoDaddy API v3 (requires GODADDY_PAT)",
        "parameters": [
          {
            "name": "domain",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "GoDaddy domain availability response"
          },
          "400": {
            "description": "Invalid domain"
          },
          "500": {
            "description": "GODADDY_PAT not configured"
          }
        }
      }
    },
    "/api/lead": {
      "post": {
        "operationId": "submitBuyerLead",
        "summary": "Submit a buyer pre-purchase review or overlay alert request",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "email"
                ],
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "email": {
                    "type": "string"
                  },
                  "address": {
                    "type": "string"
                  },
                  "intent": {
                    "type": "string",
                    "enum": [
                      "conveyancer-review",
                      "building-pest",
                      "mortgage-preapproval",
                      "overlay-alerts"
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Lead request recorded with confirmation ID"
          },
          "400": {
            "description": "Valid email is required"
          }
        }
      }
    }
  }
}