{
  "openapi": "3.1.1",
  "info": {
    "title": "Lakefront Okeechobee Report Public Data API",
    "version": "1.0.0",
    "description": "Public, read-only JSON and CSV exports of the reporting on this website. No registration, API key, OAuth, or payment is required. These are complete static datasets, with no server-side filters or pagination. Preserve source dates, evidence status, and citation URLs.",
    "termsOfService": "https://lakefrontokeechobee.com/terms/",
    "license": {
      "name": "Public reporting reuse and attribution",
      "url": "https://lakefrontokeechobee.com/copyright/#reuse"
    }
  },
  "servers": [
    {
      "url": "https://lakefrontokeechobee.com"
    }
  ],
  "security": [],
  "externalDocs": {
    "description": "Usage, fields, and citation examples",
    "url": "https://lakefrontokeechobee.com/data/api/"
  },
  "paths": {
    "/exports/claims.json": {
      "get": {
        "operationId": "getClaimsJSON",
        "summary": "Dated claims and figures (JSON)",
        "description": "Claim text, values, units, dates, evidence status, interpretations, source IDs, and superseded records. Returns the entire published dataset. Filter records locally.",
        "externalDocs": {
          "url": "https://lakefrontokeechobee.com/data/api/#claims-json"
        },
        "responses": {
          "200": {
            "description": "The complete public dataset.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClaimsExport"
                }
              }
            }
          },
          "304": {
            "description": "The representation has not changed when a conditional request is used; no response body."
          }
        }
      }
    },
    "/exports/claims.csv": {
      "get": {
        "operationId": "getClaimsCSV",
        "summary": "Dated claims and figures (CSV)",
        "description": "Claim text, values, units, dates, evidence status, interpretations, source IDs, and superseded records. Returns the entire published dataset. Filter records locally.",
        "externalDocs": {
          "url": "https://lakefrontokeechobee.com/data/api/#claims-csv"
        },
        "responses": {
          "200": {
            "description": "The complete public dataset.",
            "content": {
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "The representation has not changed when a conditional request is used; no response body."
          }
        }
      }
    },
    "/exports/sources.json": {
      "get": {
        "operationId": "getSourcesJSON",
        "summary": "Source bibliography (JSON)",
        "description": "Document titles, record dates, source types, public URLs where available, and stable citation links. Source documents are not republished. Returns the entire published dataset. Filter records locally.",
        "externalDocs": {
          "url": "https://lakefrontokeechobee.com/data/api/#sources-json"
        },
        "responses": {
          "200": {
            "description": "The complete public dataset.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SourcesExport"
                }
              }
            }
          },
          "304": {
            "description": "The representation has not changed when a conditional request is used; no response body."
          }
        }
      }
    },
    "/exports/timeline.csv": {
      "get": {
        "operationId": "getTimelineCSV",
        "summary": "Project timeline (CSV)",
        "description": "Dated events, topic categories, evidence status, and source IDs for the Lakefront project chronology. Returns the entire published dataset. Filter records locally.",
        "externalDocs": {
          "url": "https://lakefrontokeechobee.com/data/api/#timeline-csv"
        },
        "responses": {
          "200": {
            "description": "The complete public dataset.",
            "content": {
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "The representation has not changed when a conditional request is used; no response body."
          }
        }
      }
    },
    "/exports/relationships.csv": {
      "get": {
        "operationId": "getRelationshipsCSV",
        "summary": "Company and role relationships (CSV)",
        "description": "Sourced company membership interests and project roles. Company interests are not personal ownership percentages. Returns the entire published dataset. Filter records locally.",
        "externalDocs": {
          "url": "https://lakefrontokeechobee.com/data/api/#relationships-csv"
        },
        "responses": {
          "200": {
            "description": "The complete public dataset.",
            "content": {
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "The representation has not changed when a conditional request is used; no response body."
          }
        }
      }
    },
    "/exports/closings.csv": {
      "get": {
        "operationId": "getClosingsCSV",
        "summary": "Recorded home closing ledger (CSV)",
        "description": "Confirmed deeds in the public ledger. County records verified through 2026-09-24; an empty ledger does not establish that no sale occurred. Buyer identities and financing are excluded. Returns the entire published dataset. Filter records locally.",
        "externalDocs": {
          "url": "https://lakefrontokeechobee.com/data/api/#closings-csv"
        },
        "responses": {
          "200": {
            "description": "The complete public dataset.",
            "content": {
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "The representation has not changed when a conditional request is used; no response body."
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Claim": {
        "type": "object",
        "required": [
          "id",
          "claim",
          "status",
          "interpretation",
          "source_ids",
          "citation_url"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "claim": {
            "type": "string"
          },
          "value": {
            "type": [
              "number",
              "string"
            ],
            "description": "A numeric value or a textual range; not always present."
          },
          "unit": {
            "type": "string"
          },
          "display": {
            "type": "string"
          },
          "as_of": {
            "type": "string",
            "description": "The period the figure describes, not a promise of current availability."
          },
          "status": {
            "type": "string",
            "enum": [
              "public-record",
              "official-offering-document",
              "sec-filing",
              "company-statement",
              "developer-reported",
              "derived",
              "secondary-report",
              "unverified-lead",
              "conflicting-sources",
              "superseded",
              "needs-reconciliation"
            ]
          },
          "interpretation": {
            "type": "string",
            "enum": [
              "other",
              "size",
              "plan",
              "ownership",
              "maximum-principal",
              "outstanding-balance",
              "amount-sold",
              "offering-size",
              "authorization",
              "issued-debt",
              "reported-spend",
              "estimate",
              "future-advance-ceiling",
              "listing-price",
              "closing-price"
            ]
          },
          "source_ids": {
            "type": "array",
            "minItems": 1,
            "items": {
              "type": "string"
            },
            "description": "Join these IDs to the source bibliography."
          },
          "notes": {
            "type": "string"
          },
          "supersedes": {
            "type": "string",
            "description": "ID of the historical claim replaced by this record, when present."
          },
          "superseded_by": {
            "type": "string",
            "description": "ID of the claim that replaced this historical record, when present."
          },
          "citation_url": {
            "type": "string",
            "format": "uri"
          }
        }
      },
      "Source": {
        "type": "object",
        "required": [
          "id",
          "title",
          "url",
          "source_type",
          "date",
          "primary",
          "citation_url"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "url": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri",
            "description": "Original public source URL, or null if no public URL is available."
          },
          "source_type": {
            "type": "string"
          },
          "date": {
            "type": "string"
          },
          "primary": {
            "type": "boolean"
          },
          "page_or_section": {
            "type": "string"
          },
          "notes": {
            "type": "string"
          },
          "citation_url": {
            "type": "string",
            "format": "uri"
          }
        }
      },
      "ClaimsExport": {
        "type": "object",
        "required": [
          "publisher",
          "website",
          "coverage_through",
          "records_verified_through",
          "methodology",
          "reuse",
          "qualification",
          "records",
          "sources"
        ],
        "properties": {
          "publisher": {
            "type": "string"
          },
          "website": {
            "type": "string",
            "format": "uri"
          },
          "coverage_through": {
            "type": "string",
            "description": "Coverage cutoff, not the modification date of each record."
          },
          "records_verified_through": {
            "type": "string",
            "description": "County index verification cutoff."
          },
          "methodology": {
            "type": "string",
            "format": "uri"
          },
          "reuse": {
            "type": "string",
            "format": "uri"
          },
          "qualification": {
            "type": "string"
          },
          "records": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Claim"
            }
          },
          "sources": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Source"
            }
          }
        }
      },
      "SourcesExport": {
        "type": "object",
        "required": [
          "publisher",
          "website",
          "coverage_through",
          "records_verified_through",
          "methodology",
          "reuse",
          "qualification",
          "records"
        ],
        "properties": {
          "publisher": {
            "type": "string"
          },
          "website": {
            "type": "string",
            "format": "uri"
          },
          "coverage_through": {
            "type": "string",
            "description": "Coverage cutoff, not the modification date of each record."
          },
          "records_verified_through": {
            "type": "string",
            "description": "County index verification cutoff."
          },
          "methodology": {
            "type": "string",
            "format": "uri"
          },
          "reuse": {
            "type": "string",
            "format": "uri"
          },
          "qualification": {
            "type": "string"
          },
          "records": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Source"
            }
          }
        }
      }
    }
  }
}
