{
  "openapi": "3.1.0",
  "info": {
    "title": "Amusement Park Community Real-Time Intelligence API",
    "description": "Public real-time news wire, coaster telemetry, queue times, and trip reports across 48+ premier theme parks.",
    "version": "1.0.0",
    "contact": {
      "name": "Amusement Park Community Intelligence Network",
      "url": "https://amusementparkcommunity.com"
    }
  },
  "servers": [
    {
      "url": "https://amusementparkcommunity.com",
      "description": "Production Live Server"
    }
  ],
  "paths": {
    "/api/news": {
      "get": {
        "summary": "Query Real-Time Theme Park & Coaster News",
        "description": "Returns chronologically aggregated breaking news articles, POV videos, park expansions, and ride leak dispatches.",
        "operationId": "getNewsDispatches",
        "parameters": [
          {
            "name": "park",
            "in": "query",
            "description": "Filter by park name (e.g. 'Cedar Point', 'Universal Epic Universe', 'Disney World', 'Six Flags Great Adventure', or 'All')",
            "required": false,
            "schema": {
              "type": "string",
              "default": "All"
            }
          },
          {
            "name": "category",
            "in": "query",
            "description": "Filter by category ('Coasters', 'Park Expansions', 'POV & Videos', 'Leaks & Rumors', 'Ticket Deals', 'Industry & Tech', or 'All')",
            "required": false,
            "schema": {
              "type": "string",
              "default": "All"
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "Free text search query across titles and descriptions",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Pagination page number",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of articles per page (max 50)",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 18
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful news query response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "total": {
                      "type": "integer"
                    },
                    "page": {
                      "type": "integer"
                    },
                    "limit": {
                      "type": "integer"
                    },
                    "total_pages": {
                      "type": "integer"
                    },
                    "hero_article": {
                      "type": "object"
                    },
                    "articles": {
                      "type": "array"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/live-queue-ticker": {
      "get": {
        "summary": "Get Real-Time Roller Coaster Wait Times",
        "description": "Returns current operational status, estimated wait times, speed tier, and coaster specs across flagship attractions.",
        "operationId": "getLiveQueueTimes",
        "responses": {
          "200": {
            "description": "Live queue telemetry array",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "total_rides": {
                      "type": "integer"
                    },
                    "coasters": {
                      "type": "array"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/trip-reports": {
      "get": {
        "summary": "Get Community Trip Reports & Field Intel",
        "description": "Returns crowd level evaluations, wait time summaries, top coasters ridden, and field ratings from verified park riders.",
        "operationId": "getTripReports",
        "parameters": [
          {
            "name": "park",
            "in": "query",
            "description": "Filter reports by park name",
            "required": false,
            "schema": {
              "type": "string",
              "default": "All"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Array of verified trip reports",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "total": {
                      "type": "integer"
                    },
                    "reports": {
                      "type": "array"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/stats": {
      "get": {
        "summary": "Get Intelligence Network Statistics",
        "description": "Returns total articles indexed, VIP rider count, park distribution, and category breakdowns.",
        "operationId": "getNetworkStats",
        "responses": {
          "200": {
            "description": "Network statistics summary",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    }
  }
}