{
  "openapi": "3.1.0",
  "info": {
    "title": "Thailand Formats API",
    "description": "Free API for Thai public holidays, real-time alcohol sales status, date information, unit conversions, working day calculations, and ID card validation.",
    "version": "1.0.0",
    "contact": {
      "name": "Thailand Formats",
      "url": "https://thailandformats.com/api"
    }
  },
  "servers": [
    {
      "url": "https://thailandformats.com/api/v1"
    }
  ],
  "paths": {
    "/holidays/{year}": {
      "get": {
        "operationId": "getHolidays",
        "summary": "Get Thai public holidays for a year",
        "description": "Returns all official Thai public holidays for the given year, including Buddhist holidays with alcohol bans and substitute days.",
        "parameters": [
          {
            "name": "year",
            "in": "path",
            "required": true,
            "schema": { "type": "integer", "minimum": 1900, "maximum": 2100 }
          }
        ],
        "responses": {
          "200": { "description": "List of holidays" }
        }
      }
    },
    "/alcohol": {
      "get": {
        "operationId": "getAlcoholStatus",
        "summary": "Can you buy alcohol in Thailand right now?",
        "description": "Real-time check combining daily time restrictions (midnight-11AM) and Buddhist holiday bans. Includes the 2025-2026 afternoon ban trial status.",
        "responses": {
          "200": { "description": "Current alcohol purchase status" }
        }
      }
    },
    "/date/{date}": {
      "get": {
        "operationId": "getDateInfo",
        "summary": "Get Thai date information",
        "description": "Returns Thai year (Buddhist Era), day of week, Thai day name, day colour, and any holidays for the given date.",
        "parameters": [
          {
            "name": "date",
            "in": "path",
            "required": true,
            "schema": { "type": "string", "format": "date" }
          }
        ],
        "responses": {
          "200": { "description": "Date information" }
        }
      }
    },
    "/working-days": {
      "get": {
        "operationId": "getWorkingDays",
        "summary": "Calculate Thai business days",
        "description": "Calculates working days between two dates or adds N business days from a start date, excluding weekends and Thai public holidays.",
        "parameters": [
          {
            "name": "start_date",
            "in": "query",
            "required": true,
            "schema": { "type": "string", "format": "date" }
          },
          {
            "name": "end_date",
            "in": "query",
            "schema": { "type": "string", "format": "date" }
          },
          {
            "name": "add_days",
            "in": "query",
            "schema": { "type": "integer" }
          }
        ],
        "responses": {
          "200": { "description": "Working days calculation" }
        }
      }
    },
    "/convert/area": {
      "get": {
        "operationId": "convertArea",
        "summary": "Convert Thai area units",
        "description": "Convert between Thai (Rai, Ngan, Wah) and international (sqm, acre, hectare) area units.",
        "parameters": [
          { "name": "amount", "in": "query", "schema": { "type": "number" } },
          { "name": "from", "in": "query", "required": true, "schema": { "type": "string", "enum": ["rai", "ngan", "wah", "sqm", "acre", "hectare", "sqmile"] } },
          { "name": "to", "in": "query", "required": true, "schema": { "type": "string", "enum": ["rai", "ngan", "wah", "sqm", "acre", "hectare", "sqmile"] } }
        ],
        "responses": {
          "200": { "description": "Conversion result" }
        }
      }
    },
    "/convert/distance": {
      "get": {
        "operationId": "convertDistance",
        "summary": "Convert Thai distance units",
        "description": "Convert between Thai (Wa, Sen, Yot) and international (m, km, mile) distance units.",
        "parameters": [
          { "name": "amount", "in": "query", "schema": { "type": "number" } },
          { "name": "from", "in": "query", "required": true, "schema": { "type": "string", "enum": ["wa", "sen", "yot", "cm", "m", "km", "in", "ft", "mile"] } },
          { "name": "to", "in": "query", "required": true, "schema": { "type": "string", "enum": ["wa", "sen", "yot", "cm", "m", "km", "in", "ft", "mile"] } }
        ],
        "responses": {
          "200": { "description": "Conversion result" }
        }
      }
    },
    "/validate/idcard/{number}": {
      "get": {
        "operationId": "validateIdCard",
        "summary": "Validate a Thai ID card number",
        "description": "Validates a 13-digit Thai ID card number using the official checksum algorithm.",
        "parameters": [
          {
            "name": "number",
            "in": "path",
            "required": true,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": { "description": "Validation result" }
        }
      }
    }
  }
}
