norma.ai API

Referência da API v1 do Firm Suite para integração programática.

Autenticação

Todas as requisições devem incluir um token de API no header Authorization.

Authorization: Bearer nrmk_a1b2c3d4e5f6...

Tokens são gerados em Configurações → Chaves de API. O token é exibido apenas uma vez na criação.

Base URL

https://usenorma.ai/api/firm/v1

Rate Limits

100 requisições/minuto por chave de API. Quando excedido, a API retorna 401.

Modelo de Scopes

read

Listar deals, templates, documentos e audit log.

generate

Criar deals, fazer upload de templates, gerar documentos.

admin

Gerenciar membros, chaves de API. Inclui todos os scopes.

Endpoints

POST/api/firm/v1/dealsscope: generate

Criar um novo deal

Request body:

{"name": "FIDC Alpha", "product_type": "FIDC"}

Response:

{"data": {"id": "uuid", "name": "FIDC Alpha", "product_type": "FIDC", "status": "active"}}
GET/api/firm/v1/dealsscope: read

Listar deals do escritório

Response:

{"data": [{"id": "uuid", "name": "FIDC Alpha", "product_type": "FIDC", "status": "active"}]}
POST/api/firm/v1/deals/:id/generatescope: generate

Gerar documento para um deal

Request body:

{"template_id": "uuid", "deal_inputs": {"fund_name": "FIDC Alpha"}}

Response:

{"message": "Geração aceita", "deal_id": "uuid", "status": "processing"}
GET/api/firm/v1/deals/:id/documentsscope: read

Listar documentos gerados de um deal

Response:

{"data": [{"id": "uuid", "version": 1, "review_status": "draft"}]}
GET/api/firm/v1/documents/:id/downloadscope: read

Download de documento DOCX gerado

Response:

Binary DOCX file
POST/api/firm/v1/templates/:id/analyzescope: generate

Iniciar análise de um template enviado

Response:

{"message": "Análise iniciada", "status": "calibrating"}
GET/api/firm/v1/templates/:idscope: read

Obter schema de slots e formatação do template

Response:

{"data": {"id": "uuid", "slot_schema": [...], "formatting_schema": {...}}}
GET/api/firm/v1/audit-logscope: read

Audit log paginado (query params: page, limit, action, decision)

Response:

{"data": [...], "pagination": {"page": 1, "limit": 20, "total": 150, "pages": 8}}

Exemplo: Integração com iManage

Pseudocódigo para automatizar geração de documentos a partir do iManage:

// 1. Quando um novo deal é criado no iManage
const deal = await fetch('https://usenorma.ai/api/firm/v1/deals', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer nrmk_sua_chave_aqui',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    name: 'FIDC Alpha - Série 1',
    product_type: 'FIDC',
  }),
}).then(r => r.json());

// 2. Gerar documento usando template calibrado
const gen = await fetch(
  `https://usenorma.ai/api/firm/v1/deals/${deal.data.id}/generate`,
  {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer nrmk_sua_chave_aqui',
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      template_id: 'uuid-do-template',
      deal_inputs: {
        fund_name: 'FIDC Alpha',
        administradora: 'XP Investimentos',
        valor_emissao: '100.000.000,00',
      },
    }),
  }
).then(r => r.json());

// 3. Baixar DOCX gerado e arquivar no iManage
const docx = await fetch(
  `https://usenorma.ai/api/firm/v1/documents/${gen.document_id}/download`,
  { headers: { 'Authorization': 'Bearer nrmk_sua_chave_aqui' } }
);
const blob = await docx.blob();
// → iManage.upload(workspace, blob, 'regulamento-fidc-alpha.docx');