{
  "openapi": "3.1.0",
  "info": {
    "title": "AYA Quiet Luxury Boutique Agent API",
    "description": "API oficial para agentes autónomos de IA, navegadores inteligentes y asistentes de compras (ChatGPT, Claude, Perplexity, Gemini). Permite consultar el catálogo técnico de AYA, especificaciones de microfibra de 240g/m², calcular recomendaciones precisas de talla anatómica (confección desde la talla S), y generar enlaces de compra pre-cargados de Shopify.",
    "version": "1.0.0"
  },
  "servers": [
    {
      "url": "https://ayayoga.co",
      "description": "Servidor de Producción AYA"
    }
  ],
  "paths": {
    "/api/agent/v1/catalog": {
      "get": {
        "operationId": "searchCatalog",
        "summary": "Buscar y filtrar el catálogo técnico de productos",
        "description": "Devuelve productos filtrados por categoría, palabra clave o disponibilidad. Cada prenda incluye precio, variantes de talla, colores, nivel de compresión y opacidad 100% squat-proof.",
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "required": false,
            "description": "Palabra clave de búsqueda (ej. 'mono', 'leggings', 'bra', 'noir')",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "category",
            "in": "query",
            "required": false,
            "description": "Categoría de producto",
            "schema": {
              "type": "string",
              "enum": ["tops", "bras", "bottoms", "dresses", "rompers", "accessories"]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Número máximo de resultados (máx 250)",
            "schema": {
              "type": "integer",
              "default": 60
            }
          },
          {
            "name": "in_stock_only",
            "in": "query",
            "required": false,
            "description": "Filtrar únicamente productos con stock activo",
            "schema": {
              "type": "boolean",
              "default": true
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Listado de productos devuelto con éxito",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": { "type": "string" },
                    "brand": { "type": "string" },
                    "currency": { "type": "string" },
                    "shipping": { "type": "object" },
                    "total": { "type": "integer" },
                    "products": { "type": "array" }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/agent/v1/product/{handle}": {
      "get": {
        "operationId": "getProductDetails",
        "summary": "Obtener ficha técnica completa y variantes de un producto",
        "description": "Devuelve la información detallada de la prenda: composición textil, gramaje 240g/m², nivel de compresión, guía de medidas en plano en centímetros, referencia de modelo anatómica y lista de identificadores Shopify Variant ID físicos.",
        "parameters": [
          {
            "name": "handle",
            "in": "path",
            "required": true,
            "description": "Handle o slug del producto (ej. 'womens-u-neck-yoga-romper-black')",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Detalle técnico de la prenda",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": { "type": "string" },
                    "product": { "type": "object" }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Producto no encontrado"
          }
        }
      }
    },
    "/api/agent/v1/size": {
      "post": {
        "operationId": "recommendSize",
        "summary": "Calcular recomendación algorítmica de talla anatómica",
        "description": "Evalúa las medidas anatómicas del usuario (pecho, cintura, cadera en cm o pulgadas) y devuelve la talla AYA óptima. AYA confecciona exclusivamente a partir de la talla S (EU 36 / US 4-6) y no dispone de XXS ni XS.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "bust": { "type": "number", "description": "Contorno de pecho (cm o pulgadas)" },
                  "underbust": { "type": "number", "description": "Contorno de bajo pecho (cm o pulgadas)" },
                  "waist": { "type": "number", "description": "Contorno de cintura (cm o pulgadas)" },
                  "hip": { "type": "number", "description": "Contorno de cadera (cm o pulgadas)" },
                  "height": { "type": "number", "description": "Altura en cm" },
                  "weight": { "type": "number", "description": "Peso en kg" },
                  "unit": { "type": "string", "enum": ["cm", "in"], "default": "cm" },
                  "category": { "type": "string", "enum": ["tops", "bras", "bottoms", "dresses", "rompers"], "default": "bottoms" },
                  "fitPreference": { "type": "string", "enum": ["tighter", "regular", "relaxed"], "default": "regular" },
                  "productHandle": { "type": "string", "description": "Handle del producto para ajuste de compresión específico" }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Recomendación calculada con éxito",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": { "type": "string" },
                    "recommendation": { "type": "object" },
                    "policyRule": { "type": "object" }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/agent/v1/checkout": {
      "post": {
        "operationId": "createCheckoutCart",
        "summary": "Generar enlace directo pre-cargado de Shopify Checkout",
        "description": "Crea una cesta consolidada en Shopify Storefront y devuelve la URL directa de pago para que el usuario humano complete la compra en 1 clic.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": ["items"],
                "properties": {
                  "items": {
                    "type": "array",
                    "description": "Lista de variantes a comprar",
                    "items": {
                      "type": "object",
                      "required": ["variantId"],
                      "properties": {
                        "variantId": { "type": "string", "description": "Shopify GID o ID numérico de la variante" },
                        "quantity": { "type": "integer", "default": 1 }
                      }
                    }
                  },
                  "discountCode": { "type": "string", "default": "DESCUENTO", "description": "Código de descuento (ej. DESCUENTO para 10% de cortesía)" },
                  "buyerCountry": { "type": "string", "default": "ES", "description": "Código ISO del país del comprador (ES, FR, GB, US)" }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Enlace de checkout generado exitosamente",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": { "type": "string" },
                    "checkoutUrl": { "type": "string" },
                    "totalQuantity": { "type": "integer" }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}
