{
  "openapi": "3.1.0",
  "info": {
    "title": "Another Vector Content API",
    "version": "1.0.0",
    "summary": "Catálogo público de servicios, sectores, artículos y preguntas frecuentes.",
    "description": "API de solo lectura sobre el contenido publicado en anothervector.com.\n\nNo requiere autenticación ni registro. No acepta escrituras. No expone\ndatos personales ni información comercial que no esté ya en la web.\n\nExiste para que un agente pueda responder preguntas sobre Another Vector\nsin tener que interpretar HTML. El equivalente humano de cada recurso\nestá siempre en su campo `url`.",
    "contact": {
      "name": "Another Vector",
      "url": "https://anothervector.com/contacto/"
    },
    "license": {
      "name": "Contenido propiedad de Another Vector",
      "url": "https://anothervector.com/aviso-legal/"
    }
  },
  "servers": [
    {
      "url": "https://anothervector.com/api/v1",
      "description": "Producción"
    }
  ],
  "paths": {
    "/index.json": {
      "get": {
        "operationId": "getRoot",
        "summary": "Índice de la API",
        "description": "Punto de entrada: lista los recursos disponibles y sus totales.",
        "tags": [
          "meta"
        ],
        "responses": {
          "200": {
            "description": "Índice de recursos"
          }
        }
      }
    },
    "/status.json": {
      "get": {
        "operationId": "getStatus",
        "summary": "Estado del servicio",
        "tags": [
          "meta"
        ],
        "responses": {
          "200": {
            "description": "La API está sirviendo"
          }
        }
      }
    },
    "/organization.json": {
      "get": {
        "operationId": "getOrganization",
        "summary": "Datos de la organización",
        "description": "Identidad, competencias, perfiles externos y cobertura declarada.",
        "tags": [
          "meta"
        ],
        "responses": {
          "200": {
            "description": "Organización"
          }
        }
      }
    },
    "/services.json": {
      "get": {
        "operationId": "listServices",
        "summary": "Catálogo de servicios",
        "description": "Los servicios de las dos líneas: Growth (captación) y Labs (sistemas).",
        "tags": [
          "services"
        ],
        "responses": {
          "200": {
            "description": "Catálogo de servicios",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "count": {
                      "type": "integer"
                    },
                    "items": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ServiceSummary"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/services/{slug}.json": {
      "get": {
        "operationId": "getServicesBySlug",
        "summary": "Detalle de un recurso de services",
        "tags": [
          "services"
        ],
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "description": "Identificador del recurso, el mismo que usa la URL de la web.",
            "schema": {
              "type": "string",
              "enum": [
                "sistema-de-captacion",
                "meta-ads",
                "landing-y-conversion",
                "crm-y-seguimiento",
                "autoridad-comercial",
                "diagnostico-operativo",
                "optimizacion-de-procesos",
                "ia-y-automatizacion",
                "integraciones-y-sistemas",
                "operacion-y-mejora-continua",
                "infraestructura-segura"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Recurso encontrado",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Service"
                }
              }
            }
          },
          "404": {
            "description": "No existe ningún recurso con ese identificador"
          }
        }
      }
    },
    "/sectors.json": {
      "get": {
        "operationId": "listSectors",
        "summary": "Sectores atendidos",
        "description": "Sectores con material propio: fricciones habituales y qué se puede hacer en cada uno.",
        "tags": [
          "sectors"
        ],
        "responses": {
          "200": {
            "description": "Sectores atendidos",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "count": {
                      "type": "integer"
                    },
                    "items": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/SectorSummary"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/sectors/{slug}.json": {
      "get": {
        "operationId": "getSectorsBySlug",
        "summary": "Detalle de un recurso de sectors",
        "tags": [
          "sectors"
        ],
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "description": "Identificador del recurso, el mismo que usa la URL de la web.",
            "schema": {
              "type": "string",
              "enum": [
                "servicios-tecnicos-e-instalaciones",
                "inmobiliario-y-gestion-de-activos",
                "automocion-y-movilidad",
                "seguridad-facilities-y-parkings",
                "servicios-profesionales"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Recurso encontrado",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Sector"
                }
              }
            }
          },
          "404": {
            "description": "No existe ningún recurso con ese identificador"
          }
        }
      }
    },
    "/areas.json": {
      "get": {
        "operationId": "listAreas",
        "summary": "Cobertura geográfica",
        "description": "Zonas con página propia: Murcia y Levante, Andorra y el resto de España.",
        "tags": [
          "areas"
        ],
        "responses": {
          "200": {
            "description": "Cobertura geográfica",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "count": {
                      "type": "integer"
                    },
                    "items": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Area"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/insights.json": {
      "get": {
        "operationId": "listInsights",
        "summary": "Artículos",
        "description": "Artículos con una respuesta directa y citable en el campo `answer`.",
        "tags": [
          "insights"
        ],
        "responses": {
          "200": {
            "description": "Artículos",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "count": {
                      "type": "integer"
                    },
                    "items": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/InsightSummary"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/insights/{slug}.json": {
      "get": {
        "operationId": "getInsightsBySlug",
        "summary": "Detalle de un recurso de insights",
        "tags": [
          "insights"
        ],
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "description": "Identificador del recurso, el mismo que usa la URL de la web.",
            "schema": {
              "type": "string",
              "enum": [
                "cuando-no-usar-ia",
                "automatizacion-rpa-agente-o-software",
                "medir-un-proceso-antes-de-automatizarlo"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Recurso encontrado",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Insight"
                }
              }
            }
          },
          "404": {
            "description": "No existe ningún recurso con ese identificador"
          }
        }
      }
    },
    "/faqs.json": {
      "get": {
        "operationId": "listFaqs",
        "summary": "Preguntas frecuentes",
        "description": "Todos los pares pregunta/respuesta del sitio, con su página de origen.",
        "tags": [
          "faqs"
        ],
        "responses": {
          "200": {
            "description": "Preguntas frecuentes",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "count": {
                      "type": "integer"
                    },
                    "items": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Faq"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/pages.json": {
      "get": {
        "operationId": "listPages",
        "summary": "Índice de páginas",
        "description": "Todas las páginas indexables con su título, descripción y versión Markdown.",
        "tags": [
          "pages"
        ],
        "responses": {
          "200": {
            "description": "Índice de páginas",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "count": {
                      "type": "integer"
                    },
                    "items": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Page"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/bundle.json": {
      "get": {
        "operationId": "getBundle",
        "summary": "Todo el catálogo en una sola respuesta",
        "description": "Servicios, sectores, cobertura, artículos, preguntas frecuentes y páginas juntos. Pensado para agentes que prefieren una petición a veintinueve.",
        "tags": [
          "meta"
        ],
        "responses": {
          "200": {
            "description": "Catálogo completo"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Faq": {
        "type": "object",
        "required": [
          "question",
          "answer"
        ],
        "properties": {
          "question": {
            "type": "string"
          },
          "answer": {
            "type": "string"
          },
          "source": {
            "type": "string",
            "description": "Título de la página donde aparece."
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "kind": {
            "type": "string"
          }
        }
      },
      "ServiceSummary": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string"
          },
          "line": {
            "type": "string",
            "enum": [
              "growth",
              "labs"
            ]
          },
          "name": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "detail": {
            "type": "string",
            "format": "uri"
          }
        }
      },
      "Service": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ServiceSummary"
          },
          {
            "type": "object",
            "properties": {
              "markdown": {
                "type": "string",
                "format": "uri"
              },
              "sections": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "areaServed": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "audience": {
                "type": "object",
                "properties": {
                  "description": {
                    "type": "string"
                  },
                  "employeesMin": {
                    "type": "integer"
                  },
                  "employeesMax": {
                    "type": "integer"
                  }
                }
              },
              "faqs": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Faq"
                }
              }
            }
          }
        ]
      },
      "SectorSummary": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "detail": {
            "type": "string",
            "format": "uri"
          }
        }
      },
      "Sector": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SectorSummary"
          },
          {
            "type": "object",
            "properties": {
              "markdown": {
                "type": "string",
                "format": "uri"
              },
              "sections": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "faqs": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Faq"
                }
              }
            }
          }
        ]
      },
      "Area": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "format": "uri"
          }
        }
      },
      "InsightSummary": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "answer": {
            "type": "string",
            "description": "Respuesta directa a la pregunta del título, redactada para citarse."
          },
          "datePublished": {
            "type": "string",
            "format": "date"
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "detail": {
            "type": "string",
            "format": "uri"
          }
        }
      },
      "Insight": {
        "allOf": [
          {
            "$ref": "#/components/schemas/InsightSummary"
          },
          {
            "type": "object",
            "properties": {
              "markdown": {
                "type": "string",
                "format": "uri"
              },
              "sections": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "faqs": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Faq"
                }
              }
            }
          }
        ]
      },
      "Page": {
        "type": "object",
        "properties": {
          "route": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "kind": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "heading": {
            "type": "string"
          },
          "markdown": {
            "type": "string",
            "format": "uri"
          }
        }
      }
    }
  },
  "tags": [
    {
      "name": "meta",
      "description": "Índice, estado y organización."
    },
    {
      "name": "services",
      "description": "Catálogo de servicios."
    },
    {
      "name": "sectors",
      "description": "Sectores atendidos."
    },
    {
      "name": "areas",
      "description": "Cobertura geográfica."
    },
    {
      "name": "insights",
      "description": "Artículos."
    },
    {
      "name": "faqs",
      "description": "Preguntas frecuentes."
    },
    {
      "name": "pages",
      "description": "Índice de páginas."
    }
  ]
}