const API_KEY = process.env.NOVAGESTAO_API_KEY;
const ORG_SLUG = 'slug-da-sua-org';
const ACCOUNT_ID = 'uuid-da-sua-conta';
async function criarPrimeiraImportacao() {
const endpoint = 'https://api.novagestao.xyz/graphql';
const headers = {
'Content-Type': 'application/json',
'Authorization': `Bearer ${API_KEY}`,
'X-ORGANIZATION-SLUG': ORG_SLUG,
};
// Passo 1: Validação dry run
const dryRunResponse = await fetch(endpoint, {
method: 'POST',
headers,
body: JSON.stringify({
query: `
mutation DryRunImport($data: [JSON!]!, $accountId: ID!) {
importCreate(input: {
data: $data
entityType: TRANSACTION
accountId: $accountId
dryRun: true
}) {
success
validRecords
invalidRecords
warnings
}
}
`,
variables: {
data: [{
transaction_date: '2025-10-01',
amount: '150.00',
description: 'Transação de teste',
external_id: 'TEST-001',
}],
accountId: ACCOUNT_ID,
},
}),
});
const dryRun = await dryRunResponse.json();
if (dryRun.data.importCreate.invalidRecords > 0) {
console.error('❌ Validação falhou');
return;
}
console.log('✓ Validação aprovada');
// Passo 2: Criar importação real
const importResponse = await fetch(endpoint, {
method: 'POST',
headers,
body: JSON.stringify({
query: `
mutation CreateImport($data: [JSON!]!, $accountId: ID!) {
importCreate(input: {
data: $data
entityType: TRANSACTION
accountId: $accountId
dryRun: false
}) {
success
import {
id
status
}
}
}
`,
variables: {
data: [{
transaction_date: '2025-10-01',
amount: '150.00',
description: 'Transação de teste',
external_id: 'TEST-001',
}],
accountId: ACCOUNT_ID,
},
}),
});
const importResult = await importResponse.json();
const importId = importResult.data.importCreate.import.id;
console.log(`✓ Importação criada: ${importId}`);
// Passo 3: Consultar até conclusão
let status = 'pending';
while (status === 'pending' || status === 'processing') {
await sleep(2000); // Aguardar 2 segundos
const statusResponse = await fetch(endpoint, {
method: 'POST',
headers,
body: JSON.stringify({
query: `
query GetImport($id: ID!) {
import(id: $id) {
status
progress
recordsCreated
recordsFailed
}
}
`,
variables: { id: importId },
}),
});
const statusResult = await statusResponse.json();
const importData = statusResult.data.import;
status = importData.status;
console.log(`Status: ${status} (${importData.progress}%)`);
}
console.log('✓ Importação concluída!');
}
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
// Executar
criarPrimeiraImportacao();