Importar
8 funções do TermoLeads para importar.
// npm install termo_core --save-exact
import * as leads from "termo_core/leads";
// ou: import { leads } from "termo_core";| Função | Rota | O que faz |
|---|---|---|
cancelar_importar | POST /api/importar/cancelar | Cancela a importação em andamento |
iniciar_importar | POST /api/importar/iniciar | Inicia a importação da base CNPJ da Receita Federal |
relatorios_importar | GET /api/importar/relatorios | Lista o histórico das importações |
sincronizar_importar | POST /api/importar/sincronizar | Envia a base CNPJ local para sandbox ou production |
sincronizar_cancelar_importar | POST /api/importar/sincronizar/cancelar | Cancela a sincronização em andamento |
sincronizar_pontos_importar | GET /api/importar/sincronizar/pontos | Lista os pontos de retomada salvos |
sincronizar_status_importar | GET /api/importar/sincronizar/status | Mostra o progresso da sincronização |
status_importar | GET /api/importar/status | Mostra o progresso da importação |
cancelar_importar
POST/api/importar/cancelar Exige credencial
Cancela a importação em andamento
Exige o usuário master (token do TermoAuth com isMaster) e só roda no localhost (APP_ENV=development); em sandbox e production responde 403. Pede o cancelamento da importação em andamento; ela para no próximo ponto seguro e a base em uso não é alterada. Não tem corpo. Sem importação em andamento, ou com o cancelamento já pedido, não faz nada. Devolve o progresso atual, com cancelando em true quando o pedido foi aceito.
function cancelar_importar(
credencial_de_acesso: CredencialDeAcesso,
opcoes_da_chamada?: OpcoesDaChamada,
): Promise<tipos.ImportProgress>import { CredencialDeAcesso } from "termo_core";
import { cancelar_importar } from "termo_core/leads";
const credencial_de_acesso = CredencialDeAcesso.token_do_usuario_logado(token_do_usuario);
const resposta = await cancelar_importar(credencial_de_acesso);Argumentos
Nome
Tipo
Retorno: Promise<tipos.ImportProgress> · Rust: Result<tipos::ImportProgress, ErroAoChamarServico> · veja ImportProgress.
iniciar_importar
POST/api/importar/iniciar Exige credencial
Inicia a importação da base CNPJ da Receita Federal
Exige o usuário master (token do TermoAuth com isMaster) e só roda no localhost (APP_ENV=development); em sandbox e production responde 403. Dispara em segundo plano a importação completa da base CNPJ: baixa o mês mais recente publicado pela Receita, monta a base nova e só no fim troca a base em uso, que continua respondendo durante todo o processo. Operação pesada, que leva horas. Não tem corpo. Se já houver uma importação em andamento, não começa outra e devolve o progresso dela. A resposta é o progresso no momento do pedido; o andamento se acompanha em GET /api/importar/status.
function iniciar_importar(
credencial_de_acesso: CredencialDeAcesso,
opcoes_da_chamada?: OpcoesDaChamada,
): Promise<tipos.ImportProgress>import { CredencialDeAcesso } from "termo_core";
import { iniciar_importar } from "termo_core/leads";
const credencial_de_acesso = CredencialDeAcesso.token_do_usuario_logado(token_do_usuario);
const resposta = await iniciar_importar(credencial_de_acesso);Argumentos
Nome
Tipo
Retorno: Promise<tipos.ImportProgress> · Rust: Result<tipos::ImportProgress, ErroAoChamarServico> · veja ImportProgress.
relatorios_importar
GET/api/importar/relatorios Exige credencial
Lista o histórico das importações
Exige o usuário master (token do TermoAuth com isMaster) e só roda no localhost (APP_ENV=development); em sandbox e production responde 403. Devolve as últimas 50 importações registradas, da mais recente para a mais antiga, sem paginação: mês importado, status (executando, concluido, concluido_com_falhas, erro ou cancelado), início e fim (data e hora em RFC 3339), arquivos processados, total de linhas e o erro, se houve. Se o banco falhar, devolve a lista vazia.
function relatorios_importar(
credencial_de_acesso: CredencialDeAcesso,
opcoes_da_chamada?: OpcoesDaChamada,
): Promise<Array<tipos.ImportResumo>>import { CredencialDeAcesso } from "termo_core";
import { relatorios_importar } from "termo_core/leads";
const credencial_de_acesso = CredencialDeAcesso.token_do_usuario_logado(token_do_usuario);
const resposta = await relatorios_importar(credencial_de_acesso);Argumentos
Nome
Tipo
Retorno: Promise<Array<tipos.ImportResumo>> · Rust: Result<Vec<tipos::ImportResumo>, ErroAoChamarServico>
sincronizar_importar
POST/api/importar/sincronizar Exige credencial
Envia a base CNPJ local para sandbox ou production
Exige o usuário master e só roda no localhost (APP_ENV=development). Lê a tabela cnpj local em lotes (padrão 1.000 linhas, SINCRONIZAR_LOTE) e manda cada um, um por vez, para POST /api/micro_servico/cnpj/lote do ambiente escolhido, com a chave GLOBAL_SECRET_API_MICRO_SERVICE do .env local. Falha de rede ou 5xx tenta de novo até 6 vezes. Com retomarDe (14 dígitos), continua depois daquele CNPJ. Cada lote confirmado grava o último CNPJ no banco local (GET /api/importar/sincronizar/pontos), que é apagado quando a sincronização termina com sucesso. Não começa durante uma importação; se já houver uma sincronização em andamento, devolve o progresso dela.
function sincronizar_importar(
credencial_de_acesso: CredencialDeAcesso,
corpo_da_requisicao: tipos.SincronizarCnpjInput,
opcoes_da_chamada?: OpcoesDaChamada,
): Promise<tipos.SincronizacaoProgress>import { CredencialDeAcesso } from "termo_core";
import { sincronizar_importar } from "termo_core/leads";
const credencial_de_acesso = CredencialDeAcesso.token_do_usuario_logado(token_do_usuario);
const resposta = await sincronizar_importar(credencial_de_acesso, corpo_da_requisicao);Argumentos
Nome
Tipo
Retorno: Promise<tipos.SincronizacaoProgress> · Rust: Result<tipos::SincronizacaoProgress, ErroAoChamarServico> · veja SincronizacaoProgress.
sincronizar_cancelar_importar
POST/api/importar/sincronizar/cancelar Exige credencial
Cancela a sincronização em andamento
Exige o usuário master e só roda no localhost. Para depois do lote que está sendo enviado; ultimoCnpj fica como ponto de retomada. Não tem corpo.
function sincronizar_cancelar_importar(
credencial_de_acesso: CredencialDeAcesso,
opcoes_da_chamada?: OpcoesDaChamada,
): Promise<tipos.SincronizacaoProgress>import { CredencialDeAcesso } from "termo_core";
import { sincronizar_cancelar_importar } from "termo_core/leads";
const credencial_de_acesso = CredencialDeAcesso.token_do_usuario_logado(token_do_usuario);
const resposta = await sincronizar_cancelar_importar(credencial_de_acesso);Argumentos
Nome
Tipo
Retorno: Promise<tipos.SincronizacaoProgress> · Rust: Result<tipos::SincronizacaoProgress, ErroAoChamarServico> · veja SincronizacaoProgress.
sincronizar_pontos_importar
GET/api/importar/sincronizar/pontos Exige credencial
Lista os pontos de retomada salvos
Exige o usuário master e só roda no localhost. Devolve, por ambiente, o último CNPJ confirmado pelo destino, gravado no banco local a cada lote. Sobrevive a um reinício do backend local; some quando a sincronização daquele ambiente termina com sucesso.
function sincronizar_pontos_importar(
credencial_de_acesso: CredencialDeAcesso,
opcoes_da_chamada?: OpcoesDaChamada,
): Promise<Array<tipos.PontoSincronizacao>>import { CredencialDeAcesso } from "termo_core";
import { sincronizar_pontos_importar } from "termo_core/leads";
const credencial_de_acesso = CredencialDeAcesso.token_do_usuario_logado(token_do_usuario);
const resposta = await sincronizar_pontos_importar(credencial_de_acesso);Argumentos
Nome
Tipo
Retorno: Promise<Array<tipos.PontoSincronizacao>> · Rust: Result<Vec<tipos::PontoSincronizacao>, ErroAoChamarServico>
sincronizar_status_importar
GET/api/importar/sincronizar/status Exige credencial
Mostra o progresso da sincronização
Exige o usuário master e só roda no localhost. Devolve o destino, as linhas enviadas e gravadas, os lotes, o último CNPJ confirmado, o erro e as últimas 200 linhas do log.
function sincronizar_status_importar(
credencial_de_acesso: CredencialDeAcesso,
opcoes_da_chamada?: OpcoesDaChamada,
): Promise<tipos.SincronizacaoProgress>import { CredencialDeAcesso } from "termo_core";
import { sincronizar_status_importar } from "termo_core/leads";
const credencial_de_acesso = CredencialDeAcesso.token_do_usuario_logado(token_do_usuario);
const resposta = await sincronizar_status_importar(credencial_de_acesso);Argumentos
Nome
Tipo
Retorno: Promise<tipos.SincronizacaoProgress> · Rust: Result<tipos::SincronizacaoProgress, ErroAoChamarServico> · veja SincronizacaoProgress.
status_importar
GET/api/importar/status Exige credencial
Mostra o progresso da importação
Exige o usuário master (token do TermoAuth com isMaster) e só roda no localhost (APP_ENV=development); em sandbox e production responde 403. Devolve o progresso da importação da execução atual do servidor: etapa (vazia antes da primeira importação, depois preparando, baixando, importando, montagem, indices ou concluido), running, finalizado, cancelando, o mês importado em mes (AAAA-MM), o download dos arquivos, os arquivos processados com linhas lidas e descartadas, a montagem por faixas, as falhas, o erro final e as últimas 200 linhas do log. Sem importação desde que o servidor subiu, os campos vêm vazios ou zerados.
function status_importar(
credencial_de_acesso: CredencialDeAcesso,
opcoes_da_chamada?: OpcoesDaChamada,
): Promise<tipos.ImportProgress>import { CredencialDeAcesso } from "termo_core";
import { status_importar } from "termo_core/leads";
const credencial_de_acesso = CredencialDeAcesso.token_do_usuario_logado(token_do_usuario);
const resposta = await status_importar(credencial_de_acesso);Argumentos
Nome
Tipo
Retorno: Promise<tipos.ImportProgress> · Rust: Result<tipos::ImportProgress, ErroAoChamarServico> · veja ImportProgress.
Tipos
Tipos usados pelas funções desta página. O nome é o mesmo nos dois pacotes.
ArquivoStatus
Estado de um arquivo individual no lote.
import type { ArquivoStatus } from "termo_core/leads";
export interface ArquivoStatus {
/**
* Bytes baixados
*/
bytes: number;
/**
* `pendente`, `baixando`, `concluido` ou `falha`
*/
estado: string;
/**
* Nome do arquivo
*/
nome: string;
/**
* Tamanho do arquivo em bytes, quando conhecido
*/
total?: number | null;
}DownloadProgress
Progresso do download, serializado para o frontend dentro do progresso da importação.
import type { DownloadProgress } from "termo_core/leads";
export interface DownloadProgress {
/**
* Situação do download de cada arquivo
*/
arquivos: Array<ArquivoStatus>;
/**
* Quantidade de arquivos já baixados
*/
arquivosConcluidos: number;
/**
* Total de bytes baixados
*/
bytesBaixados: number;
/**
* Total de bytes a baixar, quando conhecido
*/
bytesTotal?: number | null;
/**
* Mensagens dos arquivos cujo download falhou
*/
falhas: Array<string>;
/**
* Quantidade de arquivos a baixar
*/
totalArquivos: number;
}ImportArquivo
Estado de um arquivo individual no lote de importação.
import type { ImportArquivo } from "termo_core/leads";
export interface ImportArquivo {
/**
* Bytes já lidos
*/
bytesLidos: number;
/**
* Tamanho do arquivo descompactado, em bytes
*/
bytesTotal: number;
/**
* Registros malformados descartados
*/
descartadas: number;
/**
* Erro do arquivo, quando falhou
*/
erro?: string | null;
/**
* `pendente`, `importando`, `concluido` ou `falha`
*/
estado: string;
/**
* Linhas lidas
*/
linhas: number;
/**
* Nome do arquivo
*/
nome: string;
/**
* Destino dos dados do arquivo
*/
tabela: string;
}ImportProgress
Estado global da importação, serializado para o frontend.
import type { ImportProgress } from "termo_core/leads";
export interface ImportProgress {
/**
* Situação de cada arquivo processado
*/
arquivos: Array<ImportArquivo>;
/**
* Quantidade de arquivos já processados
*/
arquivosConcluidos: number;
/**
* `true` depois que o cancelamento foi pedido
*/
cancelando: boolean;
/**
* Progresso do download dos arquivos da Receita
*/
download: DownloadProgress;
/**
* Erro que interrompeu a importação, quando houve
*/
erro?: string | null;
/**
* Etapa atual: vazia antes da primeira importação, depois `preparando`, `baixando`, `importando`, `montagem`, `indices` ou `concluido`
*/
etapa: string;
/**
* Faixa em montagem
*/
faixaAtual: number;
/**
* Quantidade de faixas da montagem da base
*/
faixasTotal: number;
/**
* Mensagens dos arquivos que falharam
*/
falhas: Array<string>;
/**
* `true` quando a última importação terminou, com sucesso, erro ou cancelamento
*/
finalizado: boolean;
/**
* Total de registros malformados descartados
*/
linhasDescartadasTotal: number;
/**
* Total de linhas lidas
*/
linhasTotal: number;
/**
* Últimas 200 linhas do log da importação
*/
log: Array<string>;
/**
* Mês da base importada, no formato AAAA-MM, conhecido depois do download
*/
mes?: string | null;
/**
* Quantidade de estabelecimentos já montados
*/
montagemFeitas: number;
/**
* Quantidade de estabelecimentos a montar
*/
montagemTotal: number;
/**
* `true` enquanto a importação está em andamento
*/
running: boolean;
/**
* Quantidade de arquivos a processar
*/
totalArquivos: number;
}ImportResumo
Resumo de uma execução de importação para o relatório no frontend.
import type { ImportResumo } from "termo_core/leads";
export interface ImportResumo {
/**
* Quantidade de arquivos processados sem falha
*/
arquivosOk: number;
/**
* Erro da execução, quando houve
*/
erro?: string | null;
/**
* Fim da execução, data e hora em RFC 3339; nulo enquanto executa
*/
finalizadoEm?: string | null;
/**
* Id da execução (UUID)
*/
id: string;
/**
* Início da execução, data e hora em RFC 3339
*/
iniciadoEm?: string | null;
/**
* Total de linhas lidas
*/
linhasTotal: number;
/**
* Mês da base importada, no formato AAAA-MM
*/
mes?: string | null;
/**
* `executando`, `concluido`, `concluido_com_falhas`, `erro` ou `cancelado`
*/
status: string;
/**
* Quantidade de arquivos da importação
*/
totalArquivos: number;
}PontoSincronizacao
Ponto de retomada salvo de um ambiente.
import type { PontoSincronizacao } from "termo_core/leads";
export interface PontoSincronizacao {
/**
* Destino: `sandbox` ou `production`
*/
ambiente: string;
/**
* Quando o ponto foi gravado, data e hora em RFC 3339
*/
atualizadoEm: string;
/**
* Último CNPJ confirmado pelo destino, salvo no banco local
*/
ultimoCnpj: string;
}SincronizacaoProgress
import type { SincronizacaoProgress } from "termo_core/leads";
export interface SincronizacaoProgress {
/**
* Destino: `sandbox` ou `production`
*/
ambiente: string;
/**
* `true` depois que o cancelamento foi pedido
*/
cancelando: boolean;
/**
* URL base do backend de destino
*/
destino: string;
/**
* Linhas enviadas e confirmadas pelo destino nesta execução
*/
enviados: number;
/**
* Erro que interrompeu a sincronização, quando houve
*/
erro?: string | null;
/**
* `true` quando a última sincronização terminou, com sucesso, erro ou cancelamento
*/
finalizado: boolean;
/**
* Linhas que o destino inseriu ou alterou
*/
gravados: number;
/**
* Linhas da tabela local até o CNPJ de retomada, enviadas numa execução anterior; zero quando começa do início
*/
jaSincronizados: number;
/**
* Últimas 200 linhas do log da sincronização
*/
log: Array<string>;
/**
* Lotes enviados
*/
lotes: number;
/**
* `true` enquanto a sincronização está em andamento
*/
running: boolean;
/**
* Total aproximado de linhas da tabela `cnpj` local
*/
totalEstimado: number;
/**
* Último CNPJ confirmado pelo destino, ponto de retomada
*/
ultimoCnpj?: string | null;
}SincronizarCnpjInput
import type { SincronizarCnpjInput } from "termo_core/leads";
export interface SincronizarCnpjInput {
/**
* Destino da sincronização: `sandbox` ou `production`
*/
ambiente: string;
/**
* Continua depois deste CNPJ (retomada de uma sincronização interrompida); vazio começa do início
*/
retomarDe?: string | null;
}