Ir para o conteúdo

Importação CSV ​

Importação em lote de pessoas, alunos e atividades, com simulação antes de gravar.

Importa pessoas (equipe e alunos) por CSV ​

POST /instituicoes/{instituicaoId}/importacoes/pessoas

O CSV vai como texto no campo csv (máx. 500 linhas e 90 000 caracteres). Use modo: simular para ver o relatório antes de aplicar. A importação é idempotente: quem já existe volta como JA_EXISTE.

Acesso: Exige a capacidade ADMINISTRAR sobre instituição (params.instituicaoId). Limite: até 20 chamadas a cada 60 s por origem. Status de sucesso: 200.

Parâmetros de caminho

ParâmetroTipoObrigatórioRestriçõesDescrição
instituicaoIdstring (uuid)simId da instituição.

Corpo da requisição (ImportacaoEntrada)

CampoTipoObrigatórioRestriçõesDescrição
csvstringsim1–90000 caracteres
modo"simular" | "aplicar"simsimular só valida e mostra o que aconteceria; aplicar grava tudo ou nada (a menos que parcial).
parcialbooleannãoModo parcial (com travas): importa só as linhas válidas e devolve as ignoradas na resposta. simular com parcial devolve hashConteudo; aplicar com parcial exige o mesmo hashConteudo (ausente ou diferente = 409 CONFLICT). Ausente ou false = tudo ou nada.
hashConteudostringnão^[0-9a-f]{64}$Hash devolvido pela simulação parcial do mesmo conteúdo (SHA-256 do conteúdo normalizado, 64 caracteres hexadecimais).

Resposta

ImportacaoRelatorio

CampoTipoObrigatórioRestriçõesDescrição
tipo"pessoas" | "alunos" | "atividades"sim
modo"simular" | "aplicar"sim
aplicadobooleansimNo aplicar: true = gravou; false = alguma linha com erro, nada foi gravado. No simular, sempre false.
erroArquivo"empty" | "too_many_lines" | "unterminated_quote" | "too_large" | "missing_column" ou nulosimErro do arquivo como um todo (vazio, grande demais, coluna obrigatória ausente).
colunaAusentestring ou nulosim
resumoobjectsim
linhaslista de LinhaRelatoriosim
convitesinteger ou nulosim0…Convites que vão sair (contas novas). null = não informado (o simular não revela se o e-mail já tem conta).
parcialbooleannãoSó no modo parcial. true = o pedido foi parcial.
hashConteudostringnãoSó no simular parcial: SHA-256 do conteúdo normalizado (tipo, destino e linhas lidas), que o aplicar parcial devolve.
contagensobjectnãoSó no modo parcial: importadas = linhas válidas (CRIADA, INCLUIDA, REATIVADA ou JA_EXISTE, detalhadas em resumo); ignoradas = linhas com ERRO. Importadas + ignoradas = linhas lidas. No simular, é a previsão.
contagens.importadasintegersim0…
contagens.ignoradasintegersim0…Só no aplicar parcial: as linhas que ficaram de fora (linha, campo e motivo). Existe apenas nesta resposta: não é gravado.
ignoradaslista de LinhaRelatorionãoSó no aplicar parcial: as linhas que ficaram de fora (linha, campo e motivo). Existe apenas nesta resposta: não é gravado.

Em caso de erro: modelo ErroApi.

Exemplo

bash
curl -X POST "$API/instituicoes/{instituicaoId}/importacoes/pessoas" -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" -d '{"csv":"texto","modo":"simular"}'

Importa alunos da turma por CSV ​

POST /turmas/{turmaId}/importacoes/alunos

O CSV vai como texto no campo csv (máx. 500 linhas e 90 000 caracteres). Use modo: simular antes de aplicar. Repetir a importação não duplica matrículas.

Acesso: Exige a capacidade CADASTRAR sobre turma (params.turmaId). Limite: até 20 chamadas a cada 60 s por origem. Status de sucesso: 200.

Parâmetros de caminho

ParâmetroTipoObrigatórioRestriçõesDescrição
turmaIdstring (uuid)simId da turma.

Corpo da requisição (ImportacaoEntrada)

CampoTipoObrigatórioRestriçõesDescrição
csvstringsim1–90000 caracteres
modo"simular" | "aplicar"simsimular só valida e mostra o que aconteceria; aplicar grava tudo ou nada (a menos que parcial).
parcialbooleannãoModo parcial (com travas): importa só as linhas válidas e devolve as ignoradas na resposta. simular com parcial devolve hashConteudo; aplicar com parcial exige o mesmo hashConteudo (ausente ou diferente = 409 CONFLICT). Ausente ou false = tudo ou nada.
hashConteudostringnão^[0-9a-f]{64}$Hash devolvido pela simulação parcial do mesmo conteúdo (SHA-256 do conteúdo normalizado, 64 caracteres hexadecimais).

Resposta

ImportacaoRelatorio

CampoTipoObrigatórioRestriçõesDescrição
tipo"pessoas" | "alunos" | "atividades"sim
modo"simular" | "aplicar"sim
aplicadobooleansimNo aplicar: true = gravou; false = alguma linha com erro, nada foi gravado. No simular, sempre false.
erroArquivo"empty" | "too_many_lines" | "unterminated_quote" | "too_large" | "missing_column" ou nulosimErro do arquivo como um todo (vazio, grande demais, coluna obrigatória ausente).
colunaAusentestring ou nulosim
resumoobjectsim
linhaslista de LinhaRelatoriosim
convitesinteger ou nulosim0…Convites que vão sair (contas novas). null = não informado (o simular não revela se o e-mail já tem conta).
parcialbooleannãoSó no modo parcial. true = o pedido foi parcial.
hashConteudostringnãoSó no simular parcial: SHA-256 do conteúdo normalizado (tipo, destino e linhas lidas), que o aplicar parcial devolve.
contagensobjectnãoSó no modo parcial: importadas = linhas válidas (CRIADA, INCLUIDA, REATIVADA ou JA_EXISTE, detalhadas em resumo); ignoradas = linhas com ERRO. Importadas + ignoradas = linhas lidas. No simular, é a previsão.
contagens.importadasintegersim0…
contagens.ignoradasintegersim0…Só no aplicar parcial: as linhas que ficaram de fora (linha, campo e motivo). Existe apenas nesta resposta: não é gravado.
ignoradaslista de LinhaRelatorionãoSó no aplicar parcial: as linhas que ficaram de fora (linha, campo e motivo). Existe apenas nesta resposta: não é gravado.

Em caso de erro: modelo ErroApi.

Exemplo

bash
curl -X POST "$API/turmas/{turmaId}/importacoes/alunos" -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" -d '{"csv":"texto","modo":"simular"}'

Importa atividades da turma por CSV ​

POST /turmas/{turmaId}/importacoes/atividades

Uma atividade é reconhecida pela data, hora de início e descrição; a importação só cria, nunca altera nem apaga. Use modo: simular antes de aplicar.

Acesso: Exige a capacidade CADASTRAR sobre turma (params.turmaId). Limite: até 20 chamadas a cada 60 s por origem. Status de sucesso: 200.

Parâmetros de caminho

ParâmetroTipoObrigatórioRestriçõesDescrição
turmaIdstring (uuid)simId da turma.

Corpo da requisição (ImportacaoEntrada)

CampoTipoObrigatórioRestriçõesDescrição
csvstringsim1–90000 caracteres
modo"simular" | "aplicar"simsimular só valida e mostra o que aconteceria; aplicar grava tudo ou nada (a menos que parcial).
parcialbooleannãoModo parcial (com travas): importa só as linhas válidas e devolve as ignoradas na resposta. simular com parcial devolve hashConteudo; aplicar com parcial exige o mesmo hashConteudo (ausente ou diferente = 409 CONFLICT). Ausente ou false = tudo ou nada.
hashConteudostringnão^[0-9a-f]{64}$Hash devolvido pela simulação parcial do mesmo conteúdo (SHA-256 do conteúdo normalizado, 64 caracteres hexadecimais).

Resposta

ImportacaoRelatorio

CampoTipoObrigatórioRestriçõesDescrição
tipo"pessoas" | "alunos" | "atividades"sim
modo"simular" | "aplicar"sim
aplicadobooleansimNo aplicar: true = gravou; false = alguma linha com erro, nada foi gravado. No simular, sempre false.
erroArquivo"empty" | "too_many_lines" | "unterminated_quote" | "too_large" | "missing_column" ou nulosimErro do arquivo como um todo (vazio, grande demais, coluna obrigatória ausente).
colunaAusentestring ou nulosim
resumoobjectsim
linhaslista de LinhaRelatoriosim
convitesinteger ou nulosim0…Convites que vão sair (contas novas). null = não informado (o simular não revela se o e-mail já tem conta).
parcialbooleannãoSó no modo parcial. true = o pedido foi parcial.
hashConteudostringnãoSó no simular parcial: SHA-256 do conteúdo normalizado (tipo, destino e linhas lidas), que o aplicar parcial devolve.
contagensobjectnãoSó no modo parcial: importadas = linhas válidas (CRIADA, INCLUIDA, REATIVADA ou JA_EXISTE, detalhadas em resumo); ignoradas = linhas com ERRO. Importadas + ignoradas = linhas lidas. No simular, é a previsão.
contagens.importadasintegersim0…
contagens.ignoradasintegersim0…Só no aplicar parcial: as linhas que ficaram de fora (linha, campo e motivo). Existe apenas nesta resposta: não é gravado.
ignoradaslista de LinhaRelatorionãoSó no aplicar parcial: as linhas que ficaram de fora (linha, campo e motivo). Existe apenas nesta resposta: não é gravado.

Em caso de erro: modelo ErroApi.

Exemplo

bash
curl -X POST "$API/turmas/{turmaId}/importacoes/atividades" -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" -d '{"csv":"texto","modo":"simular"}'

contato@presente.app.br