{
  "openapi": "3.1.0",
  "info": {
    "title": "AINA Translate · AIN-TRANSLATE-OMEGA Sovereign API",
    "version": "2.1.0",
    "description": "API soberana de traducción neuronal multimodal en tiempo real (256 idiomas, 11 macrorregiones, 39 escrituras Unicode, 6 registros de dominio, escudo PII GDPR, glosario inmutable, documentos JSON/SRT/VTT/MD/HTML/CSV, lector web anti-SSRF y recibo criptográfico Ed25519) sin rastreo ni terceros Google/MyMemory."
  },
  "servers": [
    {
      "url": "https://translate.ain-tech.cloud",
      "description": "Producción Soberana AINA Translate"
    },
    {
      "url": "http://127.0.0.1:4790",
      "description": "Desarrollo Local L6/L0"
    }
  ],
  "paths": {
    "/healthz": {
      "get": {
        "summary": "Estado de salud del servicio y kernel WASM",
        "responses": {
          "200": {
            "description": "Servicio operativo"
          }
        }
      }
    },
    "/api/v1/translate": {
      "post": {
        "summary": "Traducir texto con preservación de código, redacción PII GDPR y recibo Ed25519",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": ["text", "to"],
                "properties": {
                  "text": { "type": "string" },
                  "from": { "type": "string", "default": "auto" },
                  "to": { "type": "string", "default": "es" },
                  "domain": { "type": "string", "enum": ["standard", "executive", "legal", "scientific", "technical", "colloquial"] },
                  "formality": { "type": "string", "default": "auto" },
                  "privacyMode": { "type": "string", "enum": ["local_strict", "sovereign_auto", "hybrid_eu"] },
                  "preserveCode": { "type": "boolean", "default": true },
                  "redactPii": { "type": "boolean", "default": false },
                  "glossary": { "type": "array", "items": { "type": "object" } },
                  "includeDictionary": { "type": "boolean", "default": true },
                  "includeBackTranslation": { "type": "boolean", "default": false },
                  "includeReceipt": { "type": "boolean", "default": true }
                }
              }
            }
          }
        },
        "responses": {
          "200": { "description": "Traducción soberana con recibo Ed25519" }
        }
      }
    },
    "/api/v1/translate/detect": {
      "post": {
        "summary": "Detectar idioma fuente por Unicode y trigramas",
        "responses": { "200": { "description": "Idioma detectado" } }
      }
    },
    "/api/v1/translate/languages": {
      "get": {
        "summary": "Listar los 256 idiomas (11 macrorregiones) y 6 registros de dominio soportados",
        "responses": { "200": { "description": "Catálogo de idiomas y dominios" } }
      }
    },
    "/api/v1/translate/dictionary": {
      "post": {
        "summary": "Consultar diccionario lexicográfico contextual",
        "responses": { "200": { "description": "Entrada lexicográfica" } }
      }
    },
    "/api/v1/translate/document": {
      "post": {
        "summary": "Traducir documentos estructurados (.json, .srt, .vtt, .md, .html, .csv, .txt)",
        "responses": { "200": { "description": "Documento traducido con recibo" } }
      }
    },
    "/api/v1/translate/web": {
      "post": {
        "summary": "Traducir URL pública tras protección Anti-SSRF (AIN-SHIELD)",
        "responses": {
          "200": { "description": "Contenido web limpio y traducido" },
          "403": { "description": "Destino bloqueado por Anti-SSRF" }
        }
      }
    },
    "/api/v1/translate/receipt": {
      "post": {
        "summary": "Verificar autenticidad criptográfica Ed25519 de un recibo de traducción",
        "responses": {
          "200": { "description": "Recibo Ed25519 válido" },
          "400": { "description": "Recibo inválido o alterado" }
        }
      }
    },
    "/api/v1/translate/synergy": {
      "get": {
        "summary": "Metadatos de interconexión entre AIN-TRANSLATE-OMEGA, AIN-SEEKER-OMEGA, PF-AINCORE-TRANSLATE y MCP",
        "responses": { "200": { "description": "Mapa de sinergias activo" } }
      }
    },
    "/api/v1/translate/store": {
      "get": {
        "summary": "Estadísticas de Translation Memory, glosario corporativo, cadena WORM y autochequeo WASM",
        "responses": { "200": { "description": "Estado del almacén local" } }
      }
    },
    "/api/v1/translate/glossary": {
      "get": {
        "summary": "Listar términos del glosario corporativo persistente",
        "responses": { "200": { "description": "Glosario actual" } }
      },
      "post": {
        "summary": "Añadir o actualizar término en glosario persistente",
        "responses": { "200": { "description": "Glosario actualizado" } }
      },
      "delete": {
        "summary": "Eliminar término del glosario persistente",
        "responses": { "200": { "description": "Término eliminado" } }
      }
    },
    "/api/v1/translate/dictionary-deep": {
      "get": {
        "summary": "Consultar diccionario profundo, acepciones, falsos amigos y conjugación verbal completa",
        "responses": { "200": { "description": "Ficha lingüística profunda y tabla verbal" } }
      },
      "post": {
        "summary": "Consultar diccionario profundo y conjugación verbal por JSON",
        "responses": { "200": { "description": "Ficha lingüística profunda y tabla verbal" } }
      }
    },
    "/api/v1/translate/sworn-prepare": {
      "post": {
        "summary": "Preparar expediente oficial pre-jurado con cotejo numerado, preservación de sellos/apostilla, auditoría de cifras y borrador de certificación",
        "responses": { "200": { "description": "Dossier bilingüe preparatorio y auditoría numérica" } }
      }
    },
    "/api/v1/translate/audit": {
      "post": {
        "summary": "Auditar cifras adaptadas por idioma, fechas, identificadores y paridad de párrafos",
        "responses": { "200": { "description": "Resultado de auditoría numérica y estructural" } }
      }
    },
    "/api/v1/translate/rewrite": {
      "post": {
        "summary": "Pulir o reescribir texto en 5 modos (corrección, ejecutivo, formal usted, claro, puntos clave)",
        "responses": { "200": { "description": "Texto pulido y métricas de variación" } }
      }
    },
    "/api/v1/translate/phrasebook": {
      "get": {
        "summary": "Obtener guía esencial de frases sin conexión por situación e idioma",
        "responses": { "200": { "description": "Categorías y frases bilingües" } }
      },
      "post": {
        "summary": "Obtener guía esencial de frases sin conexión por JSON",
        "responses": { "200": { "description": "Categorías y frases bilingües" } }
      }
    },
    "/api/v1/translate/interp-minutes": {
      "post": {
        "summary": "Compilar acta bilingüe de interpretación en Markdown y subtítulos sincronizados SRT/VTT con cifras detectadas",
        "responses": { "200": { "description": "Acta Markdown bilingüe, subtítulos SRT/VTT y auditoría de cifras" } }
      }
    },
    "/api/v1/translate/cat-exchange": {
      "get": {
        "summary": "Exportar glosario/memoria CAT en TMX, TBX, CSV o JSON o buscar coincidencias difusas (fuzzy)",
        "responses": { "200": { "description": "Documento CAT exportado o coincidencias fuzzy" } }
      },
      "post": {
        "summary": "Importar o exportar memorias/glosarios CAT (TMX, TBX, XLIFF, PO, CSV, JSON) y buscar fuzzy matches",
        "responses": { "200": { "description": "Resultado de intercambio CAT o coincidencias fuzzy" } }
      }
    },
    "/api/v1/translate/offline-packs": {
      "get": {
        "summary": "Consultar estado de paquetes neuronales locales sin conexión (Bergamot / OPUS-MT / CTranslate2 Int8)",
        "responses": { "200": { "description": "Inventario de modelos neuronales locales y runtime AINET L6" } }
      }
    },
    "/livez": {
      "get": {
        "summary": "Sonda ligera de liveness del proceso (N-0318)",
        "responses": { "200": { "description": "Proceso activo" } }
      }
    },
    "/readyz": {
      "get": {
        "summary": "Sonda profunda de readiness: kernel WASM, cadena WORM y estado Kill-Switch (N-0318)",
        "responses": {
          "200": { "description": "Listo para recibir tráfico" },
          "503": { "description": "No listo o Kill-Switch activo" }
        }
      }
    },
    "/metrics": {
      "get": {
        "summary": "Métricas SRE en formato Prometheus text exposition 0.0.4 sin PII (N-0461)",
        "responses": { "200": { "description": "Métricas operativas" } }
      }
    },
    "/api/v1/translate/telemetry": {
      "get": {
        "summary": "Telemetría empírica agregada post-entrega sin PII: p50/p95/p99 y tasa de acierto TM (N-0543)",
        "responses": { "200": { "description": "Resumen telemétrico agregado" } }
      }
    },
    "/api/v1/translate/flags": {
      "get": {
        "summary": "Estado de Feature Flags separando despliegue de activación funcional/comercial (N-0845)",
        "responses": { "200": { "description": "Mapa de Feature Flags" } }
      }
    },
    "/api/v1/translate/capabilities": {
      "get": {
        "summary": "Catálogo de capacidades HTTP y MCP separando lectura R0 de efectos R1..R3 (N-1111)",
        "responses": { "200": { "description": "Catálogo R0..R3" } }
      }
    },
    "/api/v1/translate/admin/kill-switch": {
      "get": {
        "summary": "Consultar estado del Kill-Switch operativo PANIC.lock (N-1288)",
        "responses": { "200": { "description": "Estado actual del Kill-Switch" } }
      },
      "post": {
        "summary": "Activar o rearmar Kill-Switch (requiere Bearer AIN_TRANSLATE_ADMIN_TOKEN cerrado por defecto)",
        "responses": {
          "200": { "description": "Kill-Switch conmutado en <1 s" },
          "401": { "description": "Credencial inválida" },
          "403": { "description": "Cerrado por defecto cuando el token administrativo no está configurado" }
        }
      }
    }
  }
}
