{
  "openapi": "3.1.0",
  "info": {
    "title": "Nashville Venue Rentals API",
    "description": "Public, read-only API for 665+ Greater Nashville event venues with real Google ratings, AI-summarized review insights, pricing estimates, capacity, amenities, and location. Free for AI agents and developers with attribution.",
    "version": "1.0.0",
    "contact": { "url": "https://nashvillevenuerentals.com/developers" }
  },
  "servers": [ { "url": "https://nashvillevenuerentals.com/api" } ],
  "paths": {
    "/venues": {
      "get": {
        "operationId": "searchVenues",
        "summary": "Search Nashville event venues by type, area, county, rating, capacity, or keyword.",
        "parameters": [
          { "name": "category", "in": "query", "description": "Exact venue category, e.g. 'Wedding Venue', 'Rooftop', 'Barn / Rustic', 'Hotel Ballroom'.", "schema": { "type": "string" } },
          { "name": "area", "in": "query", "description": "Nashville neighborhood, e.g. 'Downtown', 'The Gulch', 'East Nashville', 'Germantown'.", "schema": { "type": "string" } },
          { "name": "county", "in": "query", "description": "County: Davidson, Williamson, Rutherford, Sumner, or Wilson.", "schema": { "type": "string", "enum": ["Davidson","Williamson","Rutherford","Sumner","Wilson"] } },
          { "name": "min_rating", "in": "query", "description": "Minimum Google rating (0-5).", "schema": { "type": "number" } },
          { "name": "min_capacity", "in": "query", "description": "Minimum guest capacity.", "schema": { "type": "integer" } },
          { "name": "q", "in": "query", "description": "Free-text keyword search over name and description.", "schema": { "type": "string" } },
          { "name": "limit", "in": "query", "description": "Results per page (max 50).", "schema": { "type": "integer", "default": 20 } },
          { "name": "offset", "in": "query", "schema": { "type": "integer", "default": 0 } }
        ],
        "responses": { "200": { "description": "Matching venues", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VenueSearchResult" } } } } }
      }
    },
    "/venues/{slug}": {
      "get": {
        "operationId": "getVenue",
        "summary": "Get full detail for a single venue including review insights, pricing, amenities, and FAQs.",
        "parameters": [ { "name": "slug", "in": "path", "required": true, "schema": { "type": "string" } } ],
        "responses": { "200": { "description": "Venue detail" }, "404": { "description": "Not found" } }
      }
    },
    "/categories": { "get": { "operationId": "listCategories", "summary": "List all venue categories with counts.", "responses": { "200": { "description": "Categories" } } } },
    "/neighborhoods": { "get": { "operationId": "listNeighborhoods", "summary": "List Nashville neighborhoods with venue counts and average ratings.", "responses": { "200": { "description": "Neighborhoods" } } } },
    "/stats": { "get": { "operationId": "getStats", "summary": "Directory-wide statistics (venue count, total reviews, average rating).", "responses": { "200": { "description": "Stats" } } } }
  },
  "components": {
    "schemas": {
      "VenueSearchResult": {
        "type": "object",
        "properties": {
          "count": { "type": "integer" },
          "results": { "type": "array", "items": { "$ref": "#/components/schemas/Venue" } }
        }
      },
      "Venue": {
        "type": "object",
        "properties": {
          "name": { "type": "string" },
          "slug": { "type": "string" },
          "url": { "type": "string" },
          "categories": { "type": "array", "items": { "type": "string" } },
          "neighborhood": { "type": "string", "nullable": true },
          "city": { "type": "string" },
          "county": { "type": "string" },
          "capacity": { "type": "integer", "nullable": true },
          "google_rating": { "type": "number", "nullable": true },
          "review_count": { "type": "integer" },
          "price_tier": { "type": "string", "description": "$, $$, or $$$" },
          "price_estimate_per_guest": { "type": "object", "properties": { "low": { "type": "integer" }, "high": { "type": "integer" }, "currency": { "type": "string" } } },
          "image": { "type": "string", "nullable": true }
        }
      }
    }
  }
}
