Guia de Início Rápido

Este guia mostra o caminho completo desde a criação do tenant até a assinatura do primeiro documento.

1. Solicitar um Tenant

Entre em contato com a equipe Rubrix para solicitar a criação do seu tenant. Você receberá um e-mail com as credenciais do usuário Owner.

A partir da interface web do Rubrix, o Owner pode convidar outros usuários e atribuir papéis (OWNER, ADMIN, USER).

2. Fazer Login

Autentique-se para obter um token JWT:

POST /auth/login
Content-Type: application/json
{
  "email": "owner@suaempresa.com",
  "password": "sua-senha"
}

Resposta (200):

{
  "token": "eyJ0eXAiOiJKV1Qi...",
  "user": {
    "id": 42,
    "name": "Fulano de Tal",
    "email": "owner@suaempresa.com"
  },
  "tenants": [
    {
      "id": "27192214-56d9-46f0-96f4-868c49b8cf4e",
      "company_name": "Sua Empresa",
      "role": "OWNER"
    }
  ],
  "selected_tenant_id": "27192214-56d9-46f0-96f4-868c49b8cf4e",
  "expires_in": 3600
}

Use o token retornado em todas as requisições subsequentes:

Authorization: Bearer eyJ0eXAiOiJKV1Qi...

Para verificar que a autenticação está funcionando:

curl --location 'https://rubrix.lat/core/api/auth/me' \
  --header 'Authorization: Bearer <SEU_TOKEN>'

3. Criar uma API Key (opcional)

Para integrações via aplicação, crie uma API Key que pode ser usada como alternativa ao JWT em qualquer endpoint autenticado:

POST /api-keys
Content-Type: application/json
Authorization: Bearer {token}
{
  "name": "integracao-erp",
  "expires_at": "2027-12-31T23:59:59Z"
}

A API Key retornada deve ser enviada no header X-Api-Key. Exemplo:

curl --location 'https://rubrix.lat/core/api/auth/me' \
  --header 'X-Api-Key: <SUA_API_KEY>'

Warning

Guarde o valor da API Key retornado. Ele não será exibido novamente.

Tip

Ambos os métodos são intercambiáveis: onde a documentação mostra Authorization: Bearer {token}, você pode substituir por X-Api-Key: {apiKey}.

4. Criar um Fluxo de Assinatura

Envie o PDF como upload binário no campo file e a lista de pools de signatários como JSON serializado no campo pools (texto), usando multipart/form-data:

curl --location 'https://rubrix.lat/core/api/flow/init' \
  --header 'Authorization: Bearer {token}' \
  --form 'file=@"./contrato_servicos.pdf"' \
  --form 'webhook="https://api.suaempresa.com/callback"' \
  --form 'pools=[
    {
      "alias": "Jurídico",
      "priority": 1,
      "signers": [
        { "email": "advogado@suaempresa.com", "document": "12345678900" }
      ]
    },
    {
      "alias": "Diretoria",
      "priority": 2,
      "signers": [
        { "email": "diretor@suaempresa.com", "document": "98765432100" }
      ]
    }
  ]'

Note

O campo pools é enviado como texto contendo JSON dentro do multipart, e usa nomes em snake_case (quorum_required, allowed_providers, etc.).

Resposta (201):

{
  "flowId": "550e8400-e29b-41d4-a716-446655440000",
  "status": "WAITING",
  "currentSigners": [
    {
      "document": "12345678900",
      "email": "advogado@suaempresa.com",
      "signUrl": "https://rubrix.lat/sign/..."
    }
  ]
}

Os signatários do pool com priority: 1 recebem o e-mail automaticamente. Ao concluírem, os signatários do priority: 2 são notificados.

Tip

Configure o campo webhook para receber o documento final assinado automaticamente, permitindo integração direta com seu ERP, CRM ou ferramenta de automação.

5. Acompanhar o Status

GET /flow/status/{flowId}
Authorization: Bearer {token}

Resposta (200):

{
  "flow_id": "550e8400-e29b-41d4-a716-446655440000",
  "status": "WAITING",
  "current_signers": ["12345678900"],
  "document": "https://s3.rubrix.local/temp-url..."
}

Valores possíveis para status: CREATED, WAITING, SIGNED.

6. Receber o Documento Final via Webhook

Quando todas as assinaturas forem concluídas, a API envia automaticamente o documento assinado para a URL de webhook configurada:

POST {sua-url-de-webhook}
Content-Type: application/pdf
X-Flow-Id: 550e8400-e29b-41d4-a716-446655440000

[binário do PDF assinado]