Tabela de conteúdos

Integração IAGO × eTCE — Criação de Peças/Minutas

1. Objetivo

Este documento descreve a integração utilizada pelo IAGO para criação automática de peças no eTCE-GO, incluindo:

A finalidade do endpoint é permitir que uma peça produzida com apoio de Inteligência Artificial seja criada no eTCE e vinculada ao último andamento do processo no setor informado.

Importante: a peça criada pelo IAGO deve ser considerada uma minuta sujeita à revisão de um servidor.
O uso do usuário de serviço BOTMINUTA permite identificar a origem automatizada do documento.

2. Repositório da aplicação

Código-fonte do backend do eTCE:

Repositório tce.etce.backend


3. Ambientes

Homologação

Swagger:

Swagger eTCE - Homologação

Endpoint:

POST https://api-etce.tce.gti.br/api/v1/Documento/iago

Produção

Swagger:

Swagger eTCE - Produção

Endpoint:

POST https://api-etce.tce.go.gov.br/api/v1/Documento/iago

4. Endpoint

POST /api/v1/Documento/iago

Descrição

Cria o documento gerado pelo IAGO no eTCE e vincula o documento ao último andamento do processo, considerando o processo, o setor informado e o usuário autenticado.

O endpoint centraliza as validações necessárias para a criação da peça.


5. Autenticação

A integração utiliza autenticação via OpenID Connect / Keycloak, com obtenção prévia de um token Bearer.

5.1. Produção

curl --location 'https://auth.tce.go.gov.br/realms/tce-go/protocol/openid-connect/token' \
  --header 'Content-Type: application/x-www-form-urlencoded' \
  --data-urlencode 'client_id=iago-web' \
  --data-urlencode 'username=BOTMINUTA' \
  --data-urlencode 'password=<SENHA>' \
  --data-urlencode 'grant_type=password'

5.2. Homologação

curl --location 'https://auth-hom.tce.go.gov.br/realms/tce-go/protocol/openid-connect/token' \
  --header 'Content-Type: application/x-www-form-urlencoded' \
  --data-urlencode 'client_id=iago-web' \
  --data-urlencode 'username=botminuta' \
  --data-urlencode 'password=<SENHA>' \
  --data-urlencode 'grant_type=password'

O token retornado deve ser enviado ao endpoint:

Authorization: Bearer <TOKEN>
Content-Type: application/json

Retornos relacionados à autenticação

HTTP Situação
401 Unauthorized Requisição realizada sem autenticação/token válido.
403 Forbidden Usuário autenticado, porém sem autorização para utilização do endpoint.

6. Usuário de serviço

O usuário recomendado para criação das peças geradas pelo IAGO é:

BOTMINUTA

O uso desse usuário permite identificar que o documento foi produzido por meio da integração com Inteligência Artificial e que deve passar por revisão de um servidor antes da continuidade do fluxo.

6.1. Regra de lotação

Uma das principais regras da integração é:

O usuário autenticado precisa estar vinculado ao setor informado na requisição.

Além disso, o processo precisa estar no setor informado para que o documento possa ser efetivamente criado e vinculado ao andamento correspondente.

Atualmente existem vinculações do usuário de serviço aos seguintes setores:

Setor Descrição Usuário/vinculação
DI-TI Diretoria de Tecnologia da Informação BOTMINUTA
GPCCR Gabinete do Procurador de Contas Carlos Gustavo Silva Rodrigues BOTMINUTA_GPCCR
Importante: caso a funcionalidade seja disponibilizada para novos setores, será necessário incluir o usuário de serviço no setor correspondente antes de utilizar o endpoint.

7. Contrato da requisição

Request Body

{
  "setorGeralId": 26,
  "codigoProcesso": 202400047002057,
  "tipoDocumento": "DP",
  "corpoDocumento": "<p>Conteúdo da minuta...</p>",
  "ementa": "Ementa opcional da peça"
}

Campos

Campo Obrigatório Descrição
setorGeralId Sim Identificador do setor no qual o processo deverá estar e ao qual o usuário autenticado deverá estar vinculado.
codigoProcesso Sim Código do processo onde a peça será criada.
tipoDocumento Sim Indicador do tipo de documento. Na primeira versão da integração deve ser utilizado DP, correspondente a Parecer.
corpoDocumento Sim Conteúdo da peça em HTML simples.
ementa Não Ementa que será associada ao documento. Quando informada, será utilizada na criação da peça; quando omitida, a API utiliza a ementa cadastrada na autuação do processo.

Observações sobre o contrato


8. Regra da ementa

O campo ementa é opcional.

Quando a ementa é informada

A ementa do documento será gerada utilizando o conteúdo enviado na própria requisição:

{
  "ementa": "Análise da prestação de contas..."
}

8. Regra da ementa

O campo ementa da requisição é opcional.

Durante o processamento, a API também considera a ementa cadastrada na autuação do processo.

A definição da ementa do documento ocorre da seguinte forma:

Para que a criação do documento seja concluída, o processo deve possuir ementa cadastrada na autuação.

Caso essa informação não esteja preenchida, a API retorna:

{
  "title": "Processo sem ementa.",
  "detail": "O documento não pode ser criado pois a EMENTA do PROCESSO deve ser cadastrada, entre em contato com Serviço de PROTOCOLO.",
  "typeDetail": "text/plain",
  "status": "Error",
  "type": "Conflict",
  "instance": null,
  "code": "409"
}
Campo ementa no endpoint Ementa utilizada no documento
Informado Conteúdo enviado na requisição
Não informado Ementa cadastrada na autuação

—-

9. Tipo de documento permitido

Na primeira versão da integração foi implementada a criação de Parecer.

O valor esperado é:

{
  "tipoDocumento": "DP"
}

DP corresponde ao tipo documental Parecer.

Não devem ser enviados outros tipos documentais enquanto não forem explicitamente habilitados para a integração.

Tipo não permitido para integração com o IAGO

{
  "title": "Tipo de documento não permitido.",
  "detail": "Tipo de documento não permitido para integração com o Iago.",
  "typeDetail": "text/plain",
  "status": "Error",
  "type": "Conflict",
  "instance": null,
  "code": "409"
}

Tipo inexistente ou indisponível para o setor

Também pode ocorrer validação relacionada ao cadastro ou habilitação do tipo documental para o setor informado:

{
  "title": "Parâmetro inválido",
  "detail": "Não existe o tipo de documento com o indicador DP informado.",
  "typeDetail": "text/plain",
  "status": "Error",
  "type": "BadRequest",
  "instance": null,
  "code": "400"
}

10. Fluxo da operação

De forma simplificada, o endpoint executa o seguinte fluxo:

  1. Recebe a requisição.
  2. Valida a autenticação.
  3. Valida a autorização para utilização da API.
  4. Valida os campos da requisição.
  5. Valida a vinculação do usuário ao setor.
  6. Valida a existência do processo.
  7. Valida as condições do processo e do andamento.
  8. Valida o tipo documental.
  9. Valida as regras de segurança do processo.
  10. Valida a existência e o estado de documentos anteriores.
  11. Cria uma nova peça ou substitui uma peça anterior quando permitido.
  12. Cria ou atualiza o documento no TCE-Docs.
  13. Vincula o documento ao último andamento do processo.
  14. Atualiza os dados relacionados ao documento no andamento.
  15. Retorna os dados da operação.

11. Regras de negócio

RN01 — Processo existente

O processo informado precisa existir.

Caso contrário, a operação é interrompida.

{
  "title": "Parâmetro inválido",
  "detail": "Processo informado não existe.",
  "typeDetail": "text/plain",
  "status": "Error",
  "type": "BadRequest",
  "instance": null,
  "code": "400"
}

RN02 — Usuário vinculado ao setor

O usuário autenticado precisa estar vinculado ao setorGeralId informado.

{
  "title": "Objeto informado está inválido.",
  "detail": "{\r\n   \"Validacoes\" : [ \r\n      {\r\n         \"SetorInvalido\" :  \"O usuário autenticado não está vinculado ao setor informado.\"\r\n      }\r\n   ] \r\n}\r\n",
  "typeDetail": "application/json",
  "status": "Validation",
  "type": "Validation",
  "instance": null,
  "code": "422"
}

Essa regra é válida tanto para processos comuns quanto reservados.


RN03 — Processo no setor informado

O processo deve estar no setor informado na requisição, permitindo que a peça seja vinculada ao andamento correto.

Não é permitido utilizar a integração para incluir uma peça em processo pertencente a setor para o qual o usuário de serviço não esteja devidamente vinculado.


RN04 — Processos sigilosos

Não é permitida a criação de documentos por este endpoint em processos classificados como sigilosos, mesmo que o usuário possua acesso ao processo.

{
  "title": "Processo Sigiloso.",
  "detail": "Não é permitida a criação de documentos no processo (2013100280472), pois ele possui caráter sigiloso.",
  "typeDetail": "text/plain",
  "status": "Error",
  "type": "Conflict",
  "instance": null,
  "code": "409"
}

O número do processo apresentado na mensagem varia conforme o processo informado.


RN05 — Processos reservados

A criação é permitida em processo reservado desde que:

Caso o usuário não esteja vinculado ao setor informado, a requisição é rejeitada com 422.


RN06 — Ementa

A ementa utilizada no documento segue a seguinte prioridade:

  1. ementa informada no body da requisição;
  2. ementa cadastrada na autuação do processo.

Caso não exista uma ementa válida disponível, a criação é interrompida.


RN07 — Responsável pelo setor

Deve existir responsável cadastrado para o setor do processo.

Caso não exista responsável cadastrado, a criação da minuta será interrompida.


RN08 — Documento assinado ou aguardando assinatura

Não é permitida a substituição quando o processo já possui documento assinado ou aguardando assinatura.

{
  "title": "Documento Assinado/Aguardando assinatura.",
  "detail": "O processo atual já possui um documento assinado ou aguardando assinatura e não pode ser alterado.",
  "typeDetail": "text/plain",
  "status": "Error",
  "type": "Conflict",
  "instance": null,
  "code": "409"
}

RN09 — Documento aberto para edição no Word

Não é permitida a substituição automática quando o documento está aberto para edição.

{
  "title": "Substituição automática não permitida.",
  "detail": "O documento já se encontra aberto para edição no Word. A substituição automática não é permitida.",
  "typeDetail": "text/plain",
  "status": "Error",
  "type": "Conflict",
  "instance": null,
  "code": "409"
}

RN10 — Substituição de documento criado pelo IAGO

Um documento criado anteriormente pelo IAGO pode ser automaticamente substituído somente quando não tiver sofrido alteração por usuário.

Nesse cenário, o endpoint retorna sucesso e:

{
  "acaoExecutada": "Substituicao"
}

RN11 — Documento criado pelo IAGO e alterado por usuário

Se um documento criado pelo IAGO tiver sido posteriormente alterado por um usuário, a substituição automática não é permitida.

{
  "title": "Substituição automática não permitida.",
  "detail": "O documento existente foi criado pelo IAGO e possui alterações realizadas por um usuário. A substituição automática não é permitida.",
  "typeDetail": "text/plain",
  "status": "Error",
  "type": "Conflict",
  "instance": null,
  "code": "409"
}

RN12 — Documento criado por usuário

Documentos originalmente criados por usuário não podem ser substituídos automaticamente pela integração.

{
  "title": "Substituição automática não permitida.",
  "detail": "O documento existente foi criado por um usuário. A substituição automática não é permitida.",
  "typeDetail": "text/plain",
  "status": "Error",
  "type": "Conflict",
  "instance": null,
  "code": "409"
}

RN13 — Corpo do documento obrigatório

corpoDocumento é obrigatório e precisa conter conteúdo válido.

Não são aceitos:

Para valor vazio ou null:

{
  "title": "Parâmetro inválido",
  "detail": "O corpo do documento deve ser informado.",
  "typeDetail": "text/plain",
  "status": "Error",
  "type": "BadRequest",
  "instance": null,
  "code": "400"
}

Para HTML inválido ou contendo somente tags vazias:

{
  "title": "Parâmetro inválido",
  "detail": "O corpo do documento informado está em um formato inválido.",
  "typeDetail": "text/plain",
  "status": "Error",
  "type": "BadRequest",
  "instance": null,
  "code": "400"
}

RN14 — Um processo por requisição

O endpoint deve ser utilizado para inclusão de documento em um processo por vez.

Não deve ser enviada uma lista de processos no campo codigoProcesso.


RN15 — Atualização do andamento

Após a criação do documento, o endpoint atualiza o andamento do processo, incluindo os dados utilizados para referenciar o documento gerado no TCE-Docs.

Entre os dados relacionados ao documento estão:

ID_DOCUMENT_N
TIPO_DOCUMENT_A

12. Campos obrigatórios e mensagens de validação

setorGeralId

Quando não informado:

{
  "title": "Parâmetro inválido",
  "detail": "O setor geral do usuário deve ser informado.",
  "typeDetail": "text/plain",
  "status": "Error",
  "type": "BadRequest",
  "instance": null,
  "code": "400"
}

codigoProcesso

Quando não informado:

{
  "title": "Parâmetro inválido",
  "detail": "O código do processo deve ser informado.",
  "typeDetail": "text/plain",
  "status": "Error",
  "type": "BadRequest",
  "instance": null,
  "code": "400"
}

corpoDocumento

Quando vazio ou null:

{
  "title": "Parâmetro inválido",
  "detail": "O corpo do documento deve ser informado.",
  "typeDetail": "text/plain",
  "status": "Error",
  "type": "BadRequest",
  "instance": null,
  "code": "400"
}

conversaId

O campo não é obrigatório.

São permitidos:


13. Exemplo de requisição

Homologação

curl --location 'https://api-etce.tce.gti.br/api/v1/Documento/iago' \
  --header 'Authorization: Bearer <TOKEN>' \
  --header 'Content-Type: application/json' \
  --data '{
    "setorGeralId": 26,
    "conversaId": 0,
    "codigoProcesso": 202400047002057,
    "tipoDocumento": "DP",
    "corpoDocumento": "<p>Conteúdo da minuta gerada pelo IAGO.</p>",
    "ementa": "Ementa da peça gerada pelo IAGO"
  }'

Para produção utilizar:

https://api-etce.tce.go.gov.br/api/v1/Documento/iago

14. Retorno de sucesso

Criação de novo documento

{
  "documentoId": 6255658,
  "codigoProcesso": 201800047000443,
  "tipoDocumento": "Parecer",
  "dataHora": "2026-07-17T11:29:34.724411-03:00",
  "nomeUsuario": "BOTMINUTA",
  "acaoExecutada": "CriacaoNova"
}

Substituição permitida

{
  "documentoId": 6255660,
  "codigoProcesso": 201800047000443,
  "tipoDocumento": "Parecer",
  "dataHora": "2026-07-17T11:41:00.2380878-03:00",
  "nomeUsuario": "BOTMINUTA",
  "acaoExecutada": "Substituicao"
}

Campos do retorno

Campo Descrição
documentoId Identificador do documento criado/atualizado no TCE-Docs.
codigoProcesso Processo relacionado à operação.
tipoDocumento Descrição do tipo documental criado.
dataHora Data e hora da operação.
nomeUsuario Usuário responsável pela criação via integração.
acaoExecutada Informa se houve CriacaoNova ou Substituicao.

15. Códigos HTTP

HTTP Situação
200 OK Documento criado ou substituído com sucesso.
400 Bad Request Campos ou parâmetros inválidos, processo inexistente, conteúdo obrigatório ausente, tipo cadastral inexistente etc.
401 Unauthorized Ausência de autenticação válida.
403 Forbidden Usuário autenticado sem autorização para utilizar o endpoint.
409 Conflict Regra de negócio impede a criação ou substituição.
422 Unprocessable Entity Falha de validação ou vínculo, como usuário não vinculado ao setor informado.
500 Internal Server Error Erro interno da aplicação.

16. Resumo das principais validações

Validação Resultado
Usuário sem autenticação 401
Usuário sem permissão 403
setorGeralId ausente 400
Usuário não vinculado ao setor 422
codigoProcesso ausente 400
Processo inexistente 400
Processo sigiloso 409
Processo reservado no mesmo setor Permitido, se as demais regras forem atendidas
Processo reservado fora do setor 422
Processo sem ementa disponível 409
Tipo diferente do permitido para integração 409
Documento assinado/aguardando assinatura 409
Documento em edição no Word 409
Documento IAGO sem alteração humana Substituição permitida
Documento IAGO alterado por usuário 409
Documento criado por usuário 409
corpoDocumento vazio ou null 400
HTML inválido/tags vazias 400
conversaId ausente Permitido
conversaId = 0 Permitido

17. Considerações para expansão da funcionalidade

Para habilitar a criação automática de peças em novos setores, deve-se verificar no mínimo:

  1. lotação/vinculação do usuário de serviço no novo setor;
  2. permissão do usuário para utilização do endpoint;
  3. disponibilidade do tipo documental para o setor;
  4. existência de responsável cadastrado para o setor;
  5. regras específicas do tipo documental;
  6. necessidade de habilitar novos indicadores além de DP;
  7. adequação das regras de segurança e substituição;
  8. validação em ambiente de homologação antes da liberação em produção.

Enquanto não houver ampliação formal da integração, deve-se considerar a primeira versão restrita à criação de Parecer (DP).


18. Recomendações para consumo pelo IAGO

Antes de enviar a requisição: