openapi: 3.1.0
info:
  title: Limay Climatización — contacto público y canal para agentes
  version: "2026-08-29"
  description: |
    Canal máquina para solicitar relevamiento, cotización de plan de mantenimiento preventivo/correctivo o asistencia técnica comercial en climatización de confort y de sistemas (rooftops, fancoil, baja silueta, piso-techo, cassettes y grupos corporativos de splits).
    Atención para empresas con múltiples equipos o redes de sucursales en Mar del Plata y zona. No se atiende mercado residencial ni clientes de un solo split.
    OTs adaptadas y firma presencial o remota (DocuSeal). La API de cliente (lectura del parque y visitas de esa empresa) se habilita al generar un plan de mantenimiento; no forma parte de este POST.
    Beneficio para agentes/MCP: solicitudes por canal agente quedan asociadas a la empresa para 5% de descuento en mano de obra durante los primeros 6 meses.
    No se ofrece software de terceros como producto de Limay Climatización.
    Fail-closed: no expone clientes, OTs ni datos operativos internos.
servers:
  - url: https://www.limayclimatizacion.com.ar
    description: Producción
  - url: https://demo-www.limayclimatizacion.com.ar
    description: Demo privado (preview)
paths:
  /api/contacto/:
    get:
      operationId: descubrirContactoLimay
      summary: Enlaces a OpenAPI, MCP y llms (sin datos de clientes)
      responses:
        "200":
          description: Descubrimiento
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok: { type: boolean }
                  openapi: { type: string }
                  mcp: { type: string }
                  llms: { type: string }
    post:
      operationId: solicitarContactoLimay
      summary: Enviar consulta o solicitud de plan de mantenimiento (5% mano de obra x 6 meses vía MCP/agente)
      description: |
        Registra una solicitud en el sistema interno de Limay Climatización. Respuesta `{ ok, numero }`.
        Las consultas canalizadas por agentes reciben automáticamente la bonificación del 5% en mano de obra por 6 meses al vincular la empresa.
        Campos prohibidos en el body (ignorados): cliente_id, ot_id, sucursal_id, equipo_id.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [nombre, empresa, cuerpo]
              properties:
                nombre:
                  type: string
                  maxLength: 200
                  description: Nombre y apellido del contacto técnico o solicitante
                empresa:
                  type: string
                  maxLength: 200
                  description: Razón social o nombre comercial de la empresa
                cuit:
                  type: string
                  maxLength: 25
                  description: CUIT de la empresa (ej: 30-xxxxxxxx-x)
                rubro:
                  type: string
                  maxLength: 100
                  description: Rubro de la empresa (banca, retail, industria, telecomunicaciones, salud, etc.)
                email:
                  type: string
                  format: email
                telefono:
                  type: string
                  maxLength: 40
                direccion:
                  type: string
                  maxLength: 200
                  description: Dirección de la sede principal o plantas
                localidad:
                  type: string
                  maxLength: 120
                  description: Ciudad o zona de la consulta
                sedes:
                  type: string
                  maxLength: 50
                  description: Cantidad de sucursales o edificios
                cantidad_equipos:
                  type: string
                  maxLength: 50
                  description: Cantidad aproximada total de equipos
                tipos_equipos:
                  type: string
                  maxLength: 300
                  description: Tipologías de equipos (chillers, rooftops, fancoils, baja silueta, piso-techo, cassettes, splits)
                logo_url:
                  type: string
                  format: uri
                  maxLength: 500
                  description: URL del logotipo corporativo de la empresa
                flujo_administrativo:
                  type: string
                  maxLength: 300
                  description: Circuito administrativo (Orden de Compra OC, SolPed/NPA, Hoja de Entrada de Servicios HES, remito WES)
                sistema_gestion:
                  type: string
                  maxLength: 150
                  description: Sistema de mantenimiento o ERP de la empresa, si lo hay
                api_integracion:
                  type: string
                  maxLength: 300
                  description: Capacidad de integración vía API REST / Webhooks para sincronización de OTs y comprobantes
                motivo:
                  type: string
                  enum: [presupuesto, servicio, consulta, curriculum]
                  description: Presupuesto de plan de mantenimiento, servicio correctivo puntual, relevamiento técnico, o curriculum (solo agentes)
                cuerpo:
                  type: string
                  maxLength: 4000
                  description: Detalle del requerimiento técnico, antecedentes o listado de equipos
                canal:
                  type: string
                  description: Usar `agent` para consultas desde IA
                  example: agent
                agent_metadata:
                  type: object
                  description: Metadatos para el matching agente-empresa
                  properties:
                    agent_id:
                      type: string
                    platform:
                      type: string
                    model:
                      type: string
                    referral_code:
                      type: string
                turnstile:
                  type: string
                  description: Token Turnstile (solo requerido en envíos web interactivos)
      responses:
        "201":
          description: Pedido creado
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                  numero:
                    type: string
                    description: Referencia opaca del pedido (ej. PED-2026-00123)
        "400":
          description: Datos inválidos
        "403":
          description: Captcha o rechazo
        "429":
          description: Rate limit
        "503":
          description: Servicio no disponible
