API REST · JSON

Documentação da API MyREPORT

Integre o seu software de contabilidade com o MyREPORT para sincronizar balancetes, extratos e informação por centro de custo.

URL base https://myreport.lainnovatis.com

Esta documentação é pública. Os endpoints de dados continuam protegidos por autenticação.

Começar

Introdução

A API recebe e devolve JSON através de HTTPS. Envie sempre o cabeçalho Content-Type: application/json. A referência da empresa pode ser o NIF ou o código da empresa registado no MyREPORT, desde que essa empresa esteja associada ao utilizador autenticado.

Formatos comuns
  • Datas: AAAA-MM-DD, por exemplo 2026-04-10.
  • Data e hora: ISO 8601, por exemplo 2026-04-10T09:30:00Z.
  • Valores decimais: strings com ponto decimal, por exemplo "125.50".
  • Período principal: ano igual ou superior a 2000 e mes entre 1 e 12.

Segurança

Autenticação

A API utiliza JWT. Obtenha um token de acesso com as credenciais da conta MyREPORT e envie-o em todos os endpoints de dados:

Cabeçalho HTTP
Authorization: Bearer SEU_TOKEN_DE_ACESSO
Content-Type: application/json

Não inclua tokens, palavras-passe ou dados reais de clientes em logs públicos ou repositórios de código.

POST /api/token/

Obter tokens de acesso

Autentica o utilizador e devolve um token de acesso e um token de renovação.

Pedido JSON

application/json
{
  "username": "integracao@empresa.pt",
  "password": "A_SUA_PALAVRA_PASSE"
}

Resposta 200

application/json
{
  "refresh": "TOKEN_DE_RENOVACAO",
  "access": "TOKEN_DE_ACESSO"
}
POST /api/token/refresh/

Renovar o token de acesso

Obtém um novo token de acesso sem voltar a enviar a palavra-passe.

Pedido JSON

application/json
{
  "refresh": "TOKEN_DE_RENOVACAO"
}

Resposta 200

application/json
{
  "access": "NOVO_TOKEN_DE_ACESSO"
}
POST /api/trial-balance/

Sincronizar balancete

Cria ou atualiza o balancete da empresa para o ano e mês indicados. As linhas existentes desse período são substituídas pelas linhas enviadas.

Campos das linhas

Obrigatórios: conta (máx. 45), descricao (máx. 350) e saldo (máx. 2 casas decimais).

Pedido JSON

application/json
{
  "empresa": "501000999",
  "ano": 2026,
  "mes": 3,
  "linhas": [
    {
      "conta": "6111",
      "descricao": "Compras",
      "saldo": "125.50"
    },
    {
      "conta": "7111",
      "descricao": "Vendas",
      "saldo": "-125.50"
    }
  ]
}

Resposta 200

application/json
{
  "success": true,
  "detail": "Balancete criado com sucesso!",
  "empresas_atualizadas": 1,
  "syncs_remaining_today": 59
}

Limite: 60 sincronizações bem-sucedidas por dia e por empresa.

POST /api/trial-balance-cc/

Sincronizar balancete por centro de custo

Cria ou atualiza as linhas do balancete discriminadas por centro de custo. As linhas existentes desse período são substituídas.

Campos das linhas

Obrigatórios: conta, descricao_conta, centro_custo, descricao_centro_custo e saldo.

Pedido JSON

application/json
{
  "empresa": "501234567",
  "ano": 2026,
  "mes": 3,
  "linhas": [
    {
      "conta": "6111",
      "descricao_conta": "Compras",
      "centro_custo": "CC01",
      "descricao_centro_custo": "Lisboa",
      "saldo": "125.50"
    },
    {
      "conta": "7111",
      "descricao_conta": "Vendas",
      "centro_custo": "CC02",
      "descricao_centro_custo": "Porto",
      "saldo": "-125.50"
    }
  ]
}

Resposta 200

application/json
{
  "success": true,
  "detail": "Balancete por centro de custo criado com sucesso!",
  "empresas_atualizadas": 1,
  "syncs_remaining_today": 58
}
POST /api/journal-entries/

Sincronizar extrato contabilístico

Substitui o extrato contabilístico da empresa para o ano e mês indicados pelas linhas enviadas.

Campos das linhas

Obrigatórios: transaction_date e gl_posting_date. Os restantes campos apresentados no exemplo são opcionais e podem ser null quando aplicável.

Pedido JSON

application/json
{
  "empresa": "509111222",
  "ano": 2026,
  "mes": 4,
  "linhas": [
    {
      "journalid": "VND",
      "journal_desc": "Vendas",
      "transactionid": "TRX-1",
      "period": 4,
      "transaction_date": "2026-04-10",
      "sourceid": "SRC-1",
      "description": "Fatura cliente",
      "transaction_type": "N",
      "gl_posting_date": "2026-04-10",
      "docarchivalnumber": "FT 1",
      "supplier_id": null,
      "customer_id": "C001",
      "record_id": "1",
      "accountid": "2111",
      "source_document_id": "FT-1",
      "sys_entry_date": "2026-04-10T09:30:00Z",
      "line_desc": "Cliente A",
      "credit_amount": "100.00",
      "debit_amount": "0.00"
    },
    {
      "transactionid": "TRX-1",
      "period": 4,
      "transaction_date": "2026-04-10",
      "gl_posting_date": "2026-04-10",
      "accountid": "7111",
      "line_desc": "Venda",
      "credit_amount": "0.00",
      "debit_amount": "100.00"
    }
  ]
}

Resposta 200

application/json
{
  "success": true,
  "detail": "Extrato criado com sucesso!",
  "empresas_atualizadas": 1
}

Referência

Códigos de resposta

Código Significado Ação recomendada
200 Pedido processado com sucesso. Confirme success: true.
400 JSON inválido, campos em falta ou dados incompatíveis. Consulte o objeto detail da resposta.
401 Token ausente, inválido ou expirado. Renove o token e repita o pedido.
403 A empresa não pertence à conta autenticada. Confirme o NIF/código e os acessos no MyREPORT.
409 Já existe uma sincronização da empresa em curso. Aguarde alguns segundos antes de repetir.
429 Limite diário de balancetes atingido. Retome a sincronização no dia seguinte.
Exemplo de erro de validação
{
  "success": false,
  "detail": {
    "mes": [
      "Certifique-se de que este valor é menor ou igual a 12."
    ]
  }
}