{
 "openapi": "3.1.0",
 "info": {
  "title": "PowderCow API",
  "version": "1.0.0",
  "description": "Live and historical ski-resort snow conditions for 337 resorts worldwide, scored 0-11 by the Powder-o-Meter. Snowfall and temperature are read at each resort's mid-mountain elevation. Free to use with attribution. An MCP server is available at https://powdercow.com/mcp for AI agents.",
  "license": {
   "name": "CC BY 4.0",
   "url": "https://creativecommons.org/licenses/by/4.0/"
  },
  "contact": {
   "url": "https://powdercow.com"
  }
 },
 "servers": [
  {
   "url": "https://powdercow.com"
  }
 ],
 "paths": {
  "/api/v1/conditions": {
   "get": {
    "summary": "Current conditions for every resort scoring above zero",
    "operationId": "getConditions",
    "responses": {
     "200": {
      "description": "The live board"
     }
    }
   }
  },
  "/api/v1/resorts": {
   "get": {
    "summary": "All 337 tracked resorts with coordinates, elevation and terrain score",
    "operationId": "listResorts",
    "responses": {
     "200": {
      "description": "The resort table"
     }
    }
   }
  },
  "/api/v1/snow-days": {
   "get": {
    "summary": "Every archived day on which a resort received 10 cm or more",
    "operationId": "listSnowDays",
    "responses": {
     "200": {
      "description": "Day index"
     }
    }
   }
  },
  "/api/v1/snow/{date}": {
   "get": {
    "summary": "One archived day",
    "operationId": "getSnowDay",
    "parameters": [
     {
      "name": "date",
      "in": "path",
      "required": true,
      "schema": {
       "type": "string",
       "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "That day's resorts"
     },
     "404": {
      "description": "No record"
     }
    }
   }
  },
  "/api/v1/export/snow.csv": {
   "get": {
    "summary": "The whole archive as CSV",
    "operationId": "exportCsv",
    "responses": {
     "200": {
      "description": "CSV"
     }
    }
   }
  },
  "/api/v1/export/snow.jsonl": {
   "get": {
    "summary": "The whole archive as newline-delimited JSON",
    "operationId": "exportJsonl",
    "responses": {
     "200": {
      "description": "JSONL"
     }
    }
   }
  }
 }
}