{"openapi":"3.1.0","info":{"title":"MSC Tracker API","version":"1.0.0","description":"API pública para tracking MSC. Autenticación por X-Api-Key con tokens msc_..."},"servers":[{"url":"https://msc-vercel-supabase.vercel.app/msc-api","description":"Producción Vercel"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-Api-Key","description":"API token msc_... creado desde Usuarios → API tokens"}},"schemas":{"TrackResponse":{"type":"object","properties":{"json":{"type":"object","description":"Tracking parseado por el worker MSC","additionalProperties":true},"screenshot":{"type":["string","null"],"description":"Screenshot PNG en base64. Puede ser null si viene de cache o si no se solicitó.","contentEncoding":"base64"},"screenshot_format":{"type":["string","null"],"examples":["png"]},"_cached":{"type":"boolean","description":"Indica si el payload viene de cache cuando aplica."}},"additionalProperties":true},"LlmContext":{"type":"object","properties":{"service":{"type":"string","examples":["MSC Tracker"]},"base_url":{"type":"string","examples":["https://msc-vercel-supabase.vercel.app/msc-api"]},"auth":{"type":"object"},"available_actions":{"type":"array","items":{"type":"object"}},"operational_rules":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"ErrorResponse":{"type":"object","properties":{"detail":{"type":"string"}},"additionalProperties":true}}},"paths":{"/track/{container}":{"get":{"operationId":"trackContainer","summary":"Trackear container MSC","description":"Consulta tracking MSC al momento. Devuelve JSON parseado y screenshot PNG base64 opcional.","security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"container","in":"path","required":true,"description":"Código del container","schema":{"type":"string","pattern":"^[A-Z0-9]{4,20}$"},"examples":{"ejemplo":{"value":"MEDU9730548"}}}],"responses":{"200":{"description":"Tracking exitoso","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrackResponse"}}}},"400":{"description":"Container inválido","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"API key ausente, inválida, revocada o sin scope track","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Error llamando al worker/MSC","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/llm/context":{"get":{"operationId":"getLlmContext","summary":"Contexto para IA/agentes","description":"Devuelve metadata machine-readable para que una IA entienda cómo usar la API. Requiere scope context.","security":[{"ApiKeyAuth":[]}],"responses":{"200":{"description":"Contexto de API para IA/agente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LlmContext"}}}},"401":{"description":"API key ausente, inválida, revocada o sin scope context","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/openapi.json":{"get":{"operationId":"getOpenApiSpec","summary":"OpenAPI schema","security":[],"responses":{"200":{"description":"OpenAPI JSON"}}}}}}