{
  "openapi": "3.1.0",
  "info": {
    "title": "Magical Waxing Public API",
    "version": "1.0.0",
    "summary": "Read-only catalog of Magical Waxing locations, services, and press mentions.",
    "description": "Public, unauthenticated endpoints serving Schema.org Datasets in JSON. Suitable for AI agents, directories, and aggregators. License: CC-BY-4.0.",
    "contact": {
      "name": "Magical Waxing",
      "email": "hello@magicalwaxing.com",
      "url": "https://magicalwaxing.com"
    },
    "license": {
      "name": "CC-BY-4.0",
      "url": "https://creativecommons.org/licenses/by/4.0/"
    }
  },
  "servers": [
    { "url": "https://magicalwaxing.com", "description": "Production" }
  ],
  "tags": [
    { "name": "locations", "description": "Salon locations (NAP, hours, geo)." },
    { "name": "services", "description": "Service catalog with pricing." },
    { "name": "press", "description": "Verified press / media mentions." },
    { "name": "discovery", "description": "Agent discovery files." }
  ],
  "paths": {
    "/data/locations.json": {
      "get": {
        "tags": ["locations"],
        "operationId": "getLocations",
        "summary": "All 6 Magical Waxing locations",
        "responses": {
          "200": {
            "description": "Schema.org Dataset of locations.",
            "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LocationsDataset" } } }
          }
        }
      }
    },
    "/data/services.json": {
      "get": {
        "tags": ["services"],
        "operationId": "getServices",
        "summary": "All services with starting pricing and duration",
        "responses": {
          "200": {
            "description": "Schema.org Dataset of services.",
            "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ServicesDataset" } } }
          }
        }
      }
    },
    "/data/press.json": {
      "get": {
        "tags": ["press"],
        "operationId": "getPress",
        "summary": "Verified press mentions",
        "responses": { "200": { "description": "JSON array of press mentions." } }
      }
    },
    "/llms.txt": {
      "get": {
        "tags": ["discovery"],
        "operationId": "getLlmsIndex",
        "summary": "LLM-optimized index (markdown)",
        "responses": { "200": { "description": "text/markdown index file." } }
      }
    },
    "/llms-full.txt": {
      "get": {
        "tags": ["discovery"],
        "operationId": "getLlmsFull",
        "summary": "Full LLM knowledge base (markdown)",
        "responses": { "200": { "description": "text/markdown full knowledge base." } }
      }
    },
    "/sitemap-index.xml": {
      "get": {
        "tags": ["discovery"],
        "operationId": "getSitemapIndex",
        "summary": "Sitemap index referencing all shards",
        "responses": { "200": { "description": "XML sitemap index." } }
      }
    }
  },
  "components": {
    "schemas": {
      "Coordinates": {
        "type": "object",
        "properties": {
          "latitude": { "type": "number" },
          "longitude": { "type": "number" }
        }
      },
      "Location": {
        "type": "object",
        "properties": {
          "slug": { "type": "string" },
          "name": { "type": "string" },
          "city": { "type": "string" },
          "state": { "type": "string" },
          "address": { "type": "string" },
          "streetAddress": { "type": "string" },
          "postalCode": { "type": "string" },
          "phone": { "type": "string" },
          "telephone": { "type": "string" },
          "coordinates": { "$ref": "#/components/schemas/Coordinates" },
          "googlePlaceId": { "type": "string" },
          "googleMapsUrl": { "type": "string", "format": "uri" },
          "url": { "type": "string", "format": "uri" },
          "hours": {
            "type": "object",
            "properties": {
              "weekday": { "type": "string" },
              "sunday": { "type": "string" }
            }
          }
        }
      },
      "Service": {
        "type": "object",
        "properties": {
          "slug": { "type": "string" },
          "name": { "type": "string" },
          "category": { "type": "string" },
          "priceFrom": { "type": "number" },
          "currency": { "type": "string" },
          "durationMinutes": { "type": "integer" },
          "url": { "type": "string", "format": "uri" }
        }
      },
      "LocationsDataset": {
        "type": "object",
        "properties": {
          "@context": { "type": "string" },
          "@type": { "type": "string" },
          "name": { "type": "string" },
          "license": { "type": "string", "format": "uri" },
          "data": { "type": "array", "items": { "$ref": "#/components/schemas/Location" } }
        }
      },
      "ServicesDataset": {
        "type": "object",
        "properties": {
          "@context": { "type": "string" },
          "@type": { "type": "string" },
          "name": { "type": "string" },
          "license": { "type": "string", "format": "uri" },
          "services": { "type": "array", "items": { "$ref": "#/components/schemas/Service" } }
        }
      }
    }
  }
}
