{"openapi":"3.0.3","info":{"title":"LoteScan — Inteligência FEFO • GS1 / ANVISA (ERP Integration REST API)","version":"3.0.0","description":"API REST padronizada da plataforma LoteScan para controle de validade FEFO, leitura GS1/ANVISA DataMatrix, OCR, Relatório de Perdas e Auditoria de Estoque."},"authentication":{"type":"Bearer Token (HMAC-SHA256)","header":"Authorization: Bearer <token>","roles":["ADMIN (Farmacêutico / Gestor)","FUNCIONARIO (Balconista / Conferente)"]},"endpoints":[{"method":"POST","path":"/api/auth/login","access":"Público","description":"Autentica usuário e retorna token Bearer e perfil (ADMIN ou FUNCIONARIO)."},{"method":"GET","path":"/api/produtos","access":"Autenticado","description":"Lista lotes ordenados pela fila FEFO com filtros (?dias=7|15|30|60|90|vencidos&q=termo)."},{"method":"POST","path":"/api/produtos","access":"Autenticado","description":"Cadastra novo lote ou soma entrada usando chave composta (Produto/GTIN + Lote) e grava trilha de auditoria."},{"method":"PUT","path":"/api/produtos/:id","access":"Autenticado","description":"Edita dados cadastrais de um lote registrando quem alterou na auditoria."},{"method":"POST","path":"/api/produtos/:id/movimentar","access":"Autenticado","description":"Registra ENTRADA, SAIDA (FEFO) ou BAIXA_VENCIMENTO impedindo estoque negativo."},{"method":"DELETE","path":"/api/produtos/:id","access":"ADMIN","description":"Exclui definitivamente um registro de lote (restrito ao Administrador)."},{"method":"GET","path":"/api/lotes/search","access":"Autenticado","description":"Busca instantânea por código de Lote e Chave Composta (?q=LOTE&gtin=GTIN)."},{"method":"GET","path":"/api/gtin/:gtin","access":"Autenticado","description":"Consulta catálogo de medicamento por GTIN/EAN e seus lotes FEFO."},{"method":"POST","path":"/api/ocr/extract","access":"Autenticado","description":"Extrai Lote, Validade e GTIN de imagem Base64 de embalagem via Tesseract.js."},{"method":"GET","path":"/api/relatorios/perdas","access":"Autenticado","description":"Retorna KPIs financeiros de perdas, baixas por vencimento, capital em risco (30d) e gráfico por categoria."},{"method":"POST","path":"/api/import/planilha","access":"Autenticado","description":"Importação em massa de planilhas CSV ou Excel (.xlsx)."},{"method":"POST","path":"/api/sync/offline","access":"Autenticado","description":"Sincroniza fila de bipagens e movimentações realizadas offline via PWA IndexedDB."},{"method":"GET","path":"/api/auditoria","access":"Autenticado","description":"Lista trilha de auditoria completa (quem cadastrou, editou ou deu baixa, com data e hora)."},{"method":"GET","path":"/api/admin/backup","access":"ADMIN","description":"Exporta snapshot JSON completo do banco SQLite para backup externo."},{"method":"POST","path":"/api/admin/restore","access":"ADMIN","description":"Restaura o banco de dados a partir de um arquivo de backup JSON."}],"_ls_fp":"446bec0c11014e61a842ac0bbc6fc26b68949642bb9e2a88e3369848d2b74dd0"}