Objetivo
A API permite excluir um modelo de aprovação existente no ContractPlus.
A exclusão remove o modelo e toda a sua estrutura relacionada, incluindo:
- Faixas de aprovação;
- Sequências;
- Níveis;
- Aprovadores vinculados.
A operação somente poderá ser concluída quando o modelo não estiver sendo utilizado por um fluxo de aprovação.
Quando o modelo estiver vinculado à ApprovalFlow, a exclusão será bloqueada para preservar a integridade dos processos existentes.
Aplicação da API
A API pode ser utilizada para excluir modelos vinculados aos locais de aprovação disponíveis no ContractPlus.
placeId | Local de aprovação |
|---|---|
0 | Não Definido |
1 | Contrato |
3 | Medição |
5 | Aditivo do Contrato |
6 | Requisição de Compra |
7 | Cotação de Compra |
8 | Distrato do Contrato |
9 | Documentos da Medição |
10 | Alteração Contratual |
O modelo será identificado exclusivamente pelo parâmetro id informado na rota.
Endpoint
DELETE /api/approvalPattern/{id}
Exemplo:
DELETE /api/approvalPattern/605
Autenticação
A requisição exige um token de autenticação válido.
Authorization: Bearer {{token}}
Quando a requisição for enviada sem autenticação, o comportamento esperado é:
401 Unauthorized
Nenhum modelo deverá ser excluído.
Cabeçalhos
Accept: application/json Authorization: Bearer {{token}}
Como a operação utiliza apenas o identificador informado na rota, não é necessário enviar corpo na requisição.
Parâmetro de rota
Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | Inteiro | Sim | Identificador do modelo de aprovação que será excluído. |
O identificador deve:
- Estar em formato numérico;
- Corresponder a um modelo existente;
- Pertencer a um modelo que não esteja vinculado a um fluxo de aprovação.
Como utilizar
- Consulte os modelos cadastrados por meio do endpoint:
GET /api/approvalPattern
- Localize o campo
Iddo modelo desejado. - Confirme que o modelo não está sendo utilizado por um fluxo de aprovação.
- Envie a requisição:
DELETE /api/approvalPattern/{id}
- Analise a resposta da operação.
- Quando necessário, realize uma nova consulta para confirmar que o modelo não está mais disponível.
Exclusão de modelo sem vínculos
Quando o modelo existe e não está vinculado a um fluxo de aprovação, a exclusão será realizada normalmente.
Exemplo:
DELETE /api/approvalPattern/605
Resposta esperada:
{ "Success": true, "Message": "Modelo de aprovação excluído com sucesso" }
Após a exclusão:
- O modelo não poderá mais ser localizado;
- As faixas vinculadas serão removidas;
- As sequências serão removidas;
- Os aprovadores vinculados serão removidos;
- Nenhum registro órfão deverá permanecer.
A exclusão completa de modelos com estrutura hierárquica foi validada nos testes.
Exclusão de modelo sem estrutura filha
Modelos que não possuem faixas, sequências ou aprovadores também podem ser excluídos.
Exemplo de resposta:
{ "Success": true, "Message": "Modelo de aprovação excluído com sucesso" }
A ausência de registros filhos não impede a operação.
Exclusão de modelo com estrutura completa
Quando o modelo possuir faixas, níveis e aprovadores, a API deverá excluir toda a estrutura relacionada na mesma operação.
A exclusão deve remover:
- Os vínculos dos aprovadores;
- As sequências ou níveis;
- As faixas;
- O modelo principal.
A ordem interna do processamento é responsabilidade da API, mas o resultado final não poderá deixar dependências sem vínculo.
Modelo vinculado a um fluxo de aprovação
Um modelo utilizado por um registro da ApprovalFlow não poderá ser excluído.
Essa validação evita que documentos em aprovação ou processos históricos percam a referência do modelo utilizado.
Exemplo de resposta:
{ "Success": false, "Message": "Modelo não pode ser excluído pois está vinculado a um fluxo de aprovação" }
Nesse caso:
- O modelo permanece cadastrado;
- Suas faixas permanecem inalteradas;
- As sequências permanecem inalteradas;
- Os aprovadores permanecem vinculados;
- Nenhuma exclusão parcial deverá ocorrer.
O bloqueio de modelos vinculados à ApprovalFlow foi validado nos testes.
Modelo inexistente
Quando o identificador informado não corresponder a um modelo cadastrado, a API deverá retornar:
{ "Success": false, "Message": "Modelo de Aprovação não encontrado" }
Exemplo:
DELETE /api/approvalPattern/99999
Nenhum outro modelo deverá ser alterado ou excluído.
Identificador em formato inválido
O parâmetro id deve ser numérico.
Exemplo inválido:
DELETE /api/approvalPattern/abc
Resposta esperada:
{ "Success": false, "Message": "Id do modelo inválido." }
Nenhum registro deverá ser afetado.
Chamadas repetidas para o mesmo modelo
Depois que um modelo for excluído com sucesso, uma nova tentativa de exclusão utilizando o mesmo identificador deverá retornar que o modelo não foi encontrado.
Primeira chamada:
{ "Success": true, "Message": "Modelo de aprovação excluído com sucesso" }
Segunda chamada:
{ "Success": false, "Message": "Modelo de Aprovação não encontrado" }
A repetição da operação não deverá afetar outros modelos.
Esse comportamento foi validado nos testes.
Integridade da operação
A exclusão deve ser transacional.
Caso ocorra uma falha durante o processamento:
- O modelo principal não deverá ser excluído isoladamente;
- As faixas não deverão ser removidas parcialmente;
- As sequências não deverão ficar sem vínculo;
- Os aprovadores não deverão permanecer órfãos;
- A estrutura anterior deverá ser preservada integralmente.
A operação deverá ser concluída por completo ou não produzir nenhuma alteração.
Resposta de sucesso
Status esperado
200 OK
Corpo da resposta
{ "Success": true, "Message": "Modelo de aprovação excluído com sucesso" }
Campo | Tipo | Descrição |
|---|---|---|
Success | Booleano | Indica se a exclusão foi concluída. |
Message | Texto | Mensagem descritiva da operação. |
Respostas esperadas
Situação | Status | Retorno |
|---|---|---|
Modelo excluído com sucesso | 200 | Retorna sucesso e mensagem de exclusão |
Modelo sem estruturas filhas | 200 | O modelo é excluído normalmente |
Modelo com faixas, sequências e aprovadores | 200 | Toda a estrutura é excluída |
Modelo vinculado à ApprovalFlow | Erro de negócio | A exclusão é bloqueada |
Modelo inexistente | Erro da API | Informa que o modelo não foi encontrado |
Identificador não numérico | Erro da API | Informa que o identificador é inválido |
Token ausente ou inválido | 401 | Nenhum modelo é excluído |
Segunda exclusão do mesmo identificador | Erro da API | Informa que o modelo não foi encontrado |
Falha durante a exclusão | Erro da API | A estrutura anterior deve ser preservada |
Comportamento esperado
Modelo disponível para exclusão
O modelo e toda a sua estrutura relacionada serão removidos.
Modelo em uso
A exclusão será bloqueada e o modelo permanecerá inalterado.
Modelo inexistente
A API retornará uma mensagem de recurso não encontrado.
Identificador inválido
A API rejeitará a requisição sem afetar outros registros.
Estrutura hierárquica
Faixas, sequências e aprovadores não deverão permanecer na base após uma exclusão bem-sucedida.
Falha de processamento
Nenhuma exclusão parcial deverá ocorrer.
Pontos de atenção
- O identificador deve ser numérico.
- O modelo precisa existir.
- Modelos vinculados à
ApprovalFlownão podem ser excluídos. - A exclusão remove toda a estrutura relacionada ao modelo.
- O processo não deverá deixar faixas, sequências ou aprovadores órfãos.
- A operação não utiliza corpo na requisição.
- O token Bearer é obrigatório.
- Uma segunda tentativa para o mesmo modelo retornará que o registro não foi encontrado.
- Nenhum outro modelo deve ser afetado por um identificador inexistente ou inválido.
- A exclusão deve ser integral e transacional.
- Antes de excluir, é recomendado confirmar se o modelo não está sendo utilizado em fluxos de aprovação.
- Para preservar histórico ou substituir uma configuração em uso, deve ser criado um novo modelo em vez de excluir o modelo atual.
- O tempo de resposta pode variar conforme a quantidade de faixas, sequências e aprovadores vinculados ao modelo.
- Modelos com maior volume de estruturas filhas podem exigir mais tempo para concluir a exclusão.