# Hub API - Aprova

O Hub API é uma plataforma de abstração de APIs projetada para padronizar e simplificar a integração de sistemas de parceiros terceiros com o Aprova. O principal objetivo é criar um ponto de entrada único e seguro para as funcionalidades do Aprova. Utilizamos um sistema de autenticação robusto para garantir que o uso dos nossos serviços por terceiros seja seguro, controlado e intuitivo. Isso facilita o trabalho de desenvolvedores externos e reduz a complexidade da integração.

## Como Obter sua Chave API
Para começar a usar o Hub API, siga os passos abaixo para habilitar a funcionalidade e gerar suas chaves de acesso:

**Passo 1: Ative a Permissão de Administrador**
- Navegue até: *Outros > Administração Geral > Permissões > Todas as Permissões*
- Ative a permissão `hubapi:admin`
- Vincule essa permissão a um grupo de usuários administradores
- Saia do sistema e entre novamente

**Passo 2: Acesse o Gerenciador de Chaves**
- Após ativar a permissão, um novo menu aparecerá
- Navegue até: *Outros > Administração Geral > Gerenciar Ambiente > Chaves API - Hub API*

**Passo 3: Crie sua Chave API**
- Clique em **Criar Chave API**
- Defina um nome único para identificar a chave
- Copie e salve a chave exibida imediatamente

**IMPORTANTE:**
A chave API será exibida por completo apenas **uma vez**.
Após sair da tela, por motivos de segurança, a chave completa **não será mostrada novamente**.
Certifique-se de armazená-la em um local seguro.



## Servers

```
https://api.producao.aprova.com.br
```

## Security

### Authorization

Authorization

Type: apiKey
In: header
Name: Authorization

### InternalAuth

Internal Authentication Key

Type: apiKey
In: header
Name: x-api-key

## Download OpenAPI description

[Hub API - Aprova](https://hubapi.aprova.com.br/_bundle/aprovahubapi.yaml)

## Process

Operações relacionadas à consulta de processos

### Consulta um processo por np e codvalid

 - [POST /hub-api/process/get-by-np](https://hubapi.aprova.com.br/aprovahubapi/process/consultprocessv1http.md): Este endpoint permite consultar um processo específico utilizando o número do processo (nP) e o código validador (codValid).

### Cria um processo sem validação de regras de formulário

 - [POST /hub-api/process/create](https://hubapi.aprova.com.br/aprovahubapi/process/createprocessv1http.md): Cria um processo sem validação de regras de formulário (salva a version da forma que recebeu). Este endpoint permite criar processos diretamente sem passar pelas validações padrão do sistema.

### Retorna o JSON cru de um processo ou formulário

 - [GET /hub-api/document/json](https://hubapi.aprova.com.br/aprovahubapi/process/getdocumentjsonv1http.md): Retorna o JSON completo (sem transformações) de um processo ou formulário
diretamente do MongoDB, a partir do ObjectId do documento.

Controle de acesso por nível de permissão da API Key:
- tenant — retorna o documento somente se o city_id do documento
  corresponder ao município vinculado à API Key. Caso contrário, retorna 403.
- support — acesso irrestrito, retorna qualquer documento
  independentemente do município.

## Dispatch

Operações relacionadas à criação e edição de despachos

### Cria um despacho

 - [POST /hub-api/blueprint-post](https://hubapi.aprova.com.br/aprovahubapi/dispatch/createblueprintpostv1http.md): Cria um novo despacho a partir de um formulário Formly.

Controle de acesso por nível de permissão da API Key:
- tenant — o despacho é vinculado ao município da API Key; o campo cityId é ignorado.
- support — o campo cityId é obrigatório e define o município ao qual o despacho pertence.

### Edita um despacho por UUID

 - [PUT /hub-api/blueprint-post/{id}](https://hubapi.aprova.com.br/aprovahubapi/dispatch/updateblueprintpostv1http.md): Atualiza os dados de um despacho existente a partir do seu UUID.
Ao menos um dos campos name ou form deve ser fornecido.

## Type

Operações relacionadas a assuntos (types)

### Cria um novo assunto

 - [POST /hub-api/type/create](https://hubapi.aprova.com.br/aprovahubapi/type/createtypev1http.md): Cria um novo assunto associado à cidade do tenant identificado pela API Key. Para keys com permissionLevel support, o campo cityId deve ser informado no body.

### Atualiza um assunto com validação

 - [PATCH /hub-api/type/edit/{typeId}](https://hubapi.aprova.com.br/aprovahubapi/type/updatetypevalidationv1http.md): Atualiza os campos config e/ou form de um assunto existente. Apenas esses dois campos são aceitos no body — qualquer outro campo será rejeitado com erro 400.

## Template

Operações relacionadas a templates de processos

### Retorna o HTML de um template pelo nome

 - [GET /hub-api/template](https://hubapi.aprova.com.br/aprovahubapi/template/gettemplatev1http.md): Retorna o conteúdo HTML de um template de processo a partir do seu nome.
O nome do template segue o padrão {Cidade}/{NomeArquivo}.html (ex: MogidascruzesSP/Alvara_Aprovacao_Execucao_Projetos.html).

Seleção da versão:
- Usa a versão ativa (actual_version) quando existir e tiver HTML válido
- Caso contrário, utiliza a última versão (maior índice) com HTML válido
- Permite fallback quando actual_version está ausente ou aponta para versão sem conteúdo

Validação de HTML:
- Retorna 404 quando o HTML está vazio, nulo ou contém apenas espaços em branco

Possíveis erros 404:
- Template não encontrado no banco
- Template sem versões
- Template sem HTML válido (vazio ou inexistente) em nenhuma versão

## Users

Operações relacionadas à consulta de usuários

### Consulta informações de um usuário

 - [GET /hub-api/users](https://hubapi.aprova.com.br/aprovahubapi/users/getuserv1http.md): Consulta dados detalhados de um usuário a partir do identificador do Aut0.

