Primeira integração

Implemente o fluxo mínimo: configure o cliente, autorize uma conexão, crie um trabalho, acompanhe o status e leia o resultado.

Nesta página
  1. Prepare o cliente
  2. Crie a conexão
  3. Crie o trabalho
  4. Acompanhe
  5. Leia o resultado

1. Prepare o cliente

Defina a URL base entregue para seu ambiente e mantenha a chave no backend.

Variáveis de ambientetext
DISTRISYNC_BASE_URL=<URL_BASE>
DISTRISYNC_API_KEY=<SUA_CHAVE>

2. Crie uma conexão

POST/api/v1/connections/authorize

CELESC aceita um e-mail válido. COPEL aceita CPF ou CNPJ com dígitos verificadores válidos, sem pontuação nem espaços. Para atualizar credenciais, envie o connectionId atual.

JavaScriptjavascript
const response = await fetch(`${BASE_URL}/connections/authorize`, {
  method: "POST",
  headers: {
    "X-API-Key": process.env.DISTRISYNC_API_KEY,
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    dist: "CELESC",
    username: "integracao@exemplo.com.br",
    password: process.env.DISTRIBUIDORA_PASSWORD
  })
});
const connection = await response.json();

3. Crie um trabalho

POST/api/v1/jobs200 ou 202

HTTP 202 significa que o trabalho foi aceito e deve ser acompanhado. HTTP 200 significa que o resultado já está completo. Trate os dois como sucesso.

Sincronizar a fatura mais recentejavascript
const jobResponse = await fetch(`${BASE_URL}/jobs`, {
  method: "POST",
  headers,
  body: JSON.stringify({
    type: "invoice_sync_latest",
    dist: "CELESC",
    connectionId: connection.connectionId,
    uc: "154026601110",
    count: 1,
    getPdfData: false,
    forceRefresh: false
  })
});
let job = await jobResponse.json();

4. Acompanhe até o estado terminal

GET/api/v1/jobs/{jobId}?limit=50&offset=0
Pollingjavascript
const waiting = new Set(["queued", "running", "cancelling"]);
while (waiting.has(job.status)) {
  await new Promise(resolve => setTimeout(resolve, 2000));
  const response = await fetch(
    `${BASE_URL}/jobs/${job.jobId}?limit=50&offset=0`,
    { headers }
  );
  job = await response.json();
}

5. Leia resultado e erro separadamente

Resultado terminaljavascript
if (job.status === "completed" || job.status === "partial_success") {
  for (const invoice of job.result?.items ?? []) {
    console.log(invoice.invoice.id, invoice.invoice.amount);
  }
}

if (job.error) {
  console.error(job.error.code, job.error.message);
}

partial_success pode conter itens úteis e também um erro. Processe result.items e registre error para decidir se a parte ausente deve ser solicitada novamente.

Digite para buscar em guias, referências, schemas e erros.