# QI Tech — CertifiQI

Documentação da QI Tech em texto corrido, para colar em um LLM.
Fonte: https://docs.qitech.com.br
17 página(s).

Índice:
- Ambientes (/documentation/certifiqi/ambientes)
- Arquivos Zip (/documentation/certifiqi/arquivo_zip)
- Assinatura Automática (/documentation/certifiqi/assinatura_automatica)
- Criação de Perfil de Acesso (/documentation/certifiqi/cadastro)
- Cancelar um Evento de Assinatura (/documentation/certifiqi/cancelar_batch_group_de_assinatura)
- Consultar Evento de Assinatura (/documentation/certifiqi/consultar_evento)
- Consultar URLs dos documentos (/documentation/certifiqi/consultar_url)
- Criar Evento de Assinatura (/documentation/certifiqi/criar_batch_group)
- Criar Evento de Assinatura para Notificar o Fromtis (/documentation/certifiqi/criar_batch_group_fromtis)
- Enviar para Assinatura (/documentation/certifiqi/enviar_para_assinatura)
- Estrutura (/documentation/certifiqi/estrutura)
- Forma de Autenticação (/documentation/certifiqi/forma_de_autenticacao)
- Início (/documentation/certifiqi/inicio)
- Permissão do usuário (/documentation/certifiqi/permissoes)
- Upload de Documentos em CNAB (/documentation/certifiqi/upload_documentos_cnab_assincrono)
- Upload de Documentos em PDF (/documentation/certifiqi/upload_documentos_pdf)
- Webhook (/documentation/certifiqi/webhook)

---

# Ambientes

URL: /documentation/certifiqi/ambientes

Possuímos o ambiente de produção e o de sandbox.

### URL para API e Plataforma
- Sandbox:
    - plataforma:  https://sandbox.certifiqi.com.br/
    - api: [https://api.sandbox.certifiqi.com.br](https://api.sandbox.certifiqi.com.br/)
- Produção:
    - plataforma: https://certifiqi.com.br/
    - api [https://api.certifiqi.com.br](https://api.sandbox.certifiqi.com.br/)

:::danger Aviso Importante!
Não devem ser usados dados reais de pessoas físicas e/ou jurídicas nos ambientes de Sandbox da QI Tech.  
:::

---

# Arquivos Zip

URL: /documentation/certifiqi/arquivo_zip

Todo evento de assinatura, ao ser concluído, gera pelo menos um arquivo ZIP. Em alguns casos, um mesmo evento pode conter mais de um arquivo ZIP, pois cada arquivo possui o **limite máximo de 500 documentos**. 

Para acessar o ZIP, utilize a consulta por URL disponível no tópico 4.5.  

### Arquivos por Documento Disponíveis no ZIP
- **CAdES**:   
  - **PDF original** com uma **página de assinatura informativa** 
  - Arquivo de assinatura **`.p7s`**.  
- **PAdES**: 
  - **PDF assinado**.

---

# Assinatura Automática

URL: /documentation/certifiqi/assinatura_automatica

## Funcionamento

A assinatura automática é um recurso que visa agilizar e otimizar o processo de assinatura de documentos na certificadora. Com o cadastro prévio do assinante, ao criar um evento, a certificadora identifica e assina o documento de maneira automática, eliminando a necessidade do usuário acessar e executar o processo manualmente.

## Cadastro

Para habilitar a assinatura automática em nossa certificadora, é necessário assinar um termo para a geração dos certificados privados, específicos para assinatura dos documentos da operação. Após assinatura do contrato, vamos realizar a geração dos certificados privados de cada assinante e instalaremos os certificados em nossa certificadora para assinatura automática dos pretendidos documentos.

Para efetuarmos o cadastro e passarmos o termo é necessário enviar um e-mail para certifiqi@qitech.com.br, contendo as seguintes informações:
- Modelo do(s) documento(s) que serão assinados automaticamente
- Nome completo, e-mail, CPF, celular e data de nascimento de todos os assinantes deste(s) referido(s) documento(s), para geração dos certificados privados.

Com isso, nossa equipe técnica poderá finalizar a instalação do certificado privado e fornecer as devidas orientações para a conclusão desse processo.

---

# Criação de Perfil de Acesso

URL: /documentation/certifiqi/cadastro

1. Enviar solicitação de criação de acesso para o e-mail certifiqi@qitech.com.br informando os seguintes dados:
   1. CNPJ da empresa
   2. Nome completo do usuário Master
   3. CPF do usuário Master
   4. E-mail do usuário Master
2. Após a criação do acesso pelo time da QI Tech, o usuário Master receberá um e-mail com um link para acesso a plataforma da Certifiqi para efetuar o cadastro.
3. Ao realizar o primeiro acesso à plataforma, o usuário Master pode convidar os demais usuários para que também tenham acesso à plataforma.

---

# Cancelar um Evento de Assinatura

URL: /documentation/certifiqi/cancelar_batch_group_de_assinatura

Essa requisição efetua o cancelamento de um evento pendente.

## Request

ENDPOINT /batch_group/batch_group_key/cancel_signature
MÉTODO PUT

### Path Params

| Campo | Descrição |
|---|---|
| `batch_group_key` | Chave única de identificação do evento de assinatura. |

Response Body

```json
{
    "batch_group_key": "c0394fb2-34f6-4d70-be70-776022fe15b8",
    "name": "Teste",
    "main_related_party": "ba",
    "number_of_documents": 1,
    "total_value": 0.0,
    "all_files_url": "",
    "send_to_fund_administrator": 0,
    "signature_expiration_date": null,
    "webhook_key": null,
    "client_key": "5aaf98d2-0264-48dd-8167-eab859ce5a75",
    "requester_key": null,
    "signature_status": "pending",
    "internal_status": "pending",
    "attached_document_number": "74766848000162",
    "current_signature_position": "1",
    "control_number": "Control Number",
    "internal_webhook_key": "ac73c564-989d-4c53-932b-d8f96b007584",
    "created_at": "2023-05-15 23:54:35",
    "batch_group_type": "icp_signature",
    "requester_identifier": null,
    "send_emails": false,
    "batches": [
        {
            "document_batch_key": "cd65292e-6748-4c1a-9520-de019f2f341b",
            "name": "Termo de Endosso",
            "document_type": "term_of_endorsement",
            "signature_type": "cades",
            "signature_status": "pending",
            "created_at": "2023-05-15 23:54:35",
            "related_parties": [
                {
                    "related_party_key": "41cf4d2a-fa9a-4cd1-93a0-5a1847b14fb3",
                    "name": "nome da empresa ",
                    "role": "assignor",
                    "signature_status": "pending",
                    "signature_position": "1",
                    "created_at": "2023-05-15 23:54:35",
                    "auto_signature": 0,
                    "signer_groups": [
                        {
                            "id": 38586,
                            "expiration": null,
                            "minimum_required_signers": 1,
                            "signable_limit": null,
                            "signature_status": "pending",
                            "created_at": "2023-05-15 23:54:35",
                            "signers": [
                                {
                                    "id": 65062,
                                    "signer_control_number": "1",
                                    "signature_timestamp": null,
                                    "signature_status": "pending",
                                    "name": "João",
                                    "is_group_mandatory": true,
                                    "email": "teste@qitech.com.br",
                                    "document_number": "85653681067",
                                    "created_at": "2023-05-15 23:54:35"
                                }
                            ]
                        }
                    ]
                }
            ],
            "documents": [
                {
                    "document_key": "19f3c0ib-3926-4274-b2ab-720014b35f53",
                    "control_number": "96a8cd68-76b4-4abf-8180-7d8ebe39567e",
                    "file_size": 1681,
                    "file_url": "https://storage.googleapis.com/certifier-api-storage-sandbox/093f1aef-437e-405b-9ef9-51efd73dbd57/teste_of_original.pdf",
                    "name": "teste_of.pdf",
                    "original_file_url": "https://storage.googleapis.com/certifier-api-storage-sandbox/093f1aef-437e-405b-9ef9-51efd73dbd57/teste_of_original.pdf",
                    "status": "pending",
                    "signed_file_url": null,
                    "created_at": "2023-05-15 23:54:35",
                    "signatures": []
                }
            ]
        }
    ],
    "watcher_clients": []
}
```

---

# Consultar Evento de Assinatura

URL: /documentation/certifiqi/consultar_evento

Essa requisição retorna os dados de um evento de assinatura.

## Request

ENDPOINT /batch_group/batch_group_key
MÉTODO GET

### Path Params

| Campo | Descrição |
|---|---|
| `batch_group_key` | Chave única de identificação do evento de assinatura. |

## Response Body Params

STATUS 200

Response Body

```json
{
    "batch_group_key": "c0394fb2-34f6-4d70-be70-776022fe15b8",
    "name": "Teste",
    "main_related_party": "ba",
    "number_of_documents": 1,
    "total_value": 0.0,
    "all_files_url": "",
    "send_to_fund_administrator": 0,
    "signature_expiration_date": null,
    "webhook_key": "ac73c564-989d-4c53-932b-d8f96b007585",
    "client_key": "5aaf98d2-0264-48dd-8167-eab859ce5a75",
    "requester_key": null,
    "signature_status": "pending",
    "internal_status": "pending",
    "attached_document_number": "74766848000162",
    "current_signature_position": "1",
    "internal_webhook_key": "ac73c564-989d-4c53-932b-d8f96b007584",
    "created_at": "2023-05-15 23:54:35",
    "batch_group_type": "icp_signature",
    "requester_identifier": null,
    "send_emails": false,
    "batches": [
        {
            "document_batch_key": "cd65292e-6748-4c1a-9520-de019f2f341b",
            "name": "Termo de Endosso",
            "document_type": "term_of_endorsement",
            "signature_type": "cades",
            "signature_status": "pending",
            "created_at": "2023-05-15 23:54:35",
            "related_parties": [
                {
                    "related_party_key": "41cf4d2a-fa9a-4cd1-93a0-5a1847b14fb3",
                    "name": "nome da empresa ",
                    "role": "assignor",
                    "signature_status": "pending",
                    "signature_position": "1",
                    "created_at": "2023-05-15 23:54:35",
                    "auto_signature": 0,
                    "notify_to": [],
                    "signer_groups": [
                        {
                            "id": 38586,
                            "expiration": null,
                            "minimum_required_signers": 1,
                            "signable_limit": null,
                            "signature_status": "pending",
                            "created_at": "2023-05-15 23:54:35",
                            "signers": [
                                {
                                    "id": 65062,
                                    "signer_control_number": "1",
                                    "signature_timestamp": null,
                                    "signature_status": "pending",
                                    "name": "João",
                                    "is_group_mandatory": true,
                                    "email": "teste@qitech.com.br",
                                    "document_number": "85653681067",
                                    "created_at": "2023-05-15 23:54:35"
                                }
                            ]
                        }
                    ]
                }
            ],
            "documents": [
                {
                    "document_key": "19f3c0ib-3926-4274-b2ab-720014b35f53",
                    "control_number": "96a8cd68-76b4-4abf-8180-7d8ebe39567e",
                    "file_size": 1681,
                    "file_url": "https://storage.googleapis.com/certifier-api-storage-sandbox/093f1aef-437e-405b-9ef9-51efd73dbd57/teste_of_original.pdf",
                    "name": "teste_of.pdf",
                    "original_file_url": "https://storage.googleapis.com/certifier-api-storage-sandbox/093f1aef-437e-405b-9ef9-51efd73dbd57/teste_of_original.pdf",
                    "status": "pending",
                    "signed_file_url": null,
                    "created_at": "2023-05-15 23:54:35",
                    "signatures": []
                }
            ]
        }
    ],
    "watcher_clients": [],
    "zip_file_keys_list": [
        "a1a8cd68-aab4-csbf-1180-dd8ebe395612",
        "cda8cd68-7331-qebf-1280-fw8ebe395676"
    ]
}

```

| Campo | Tipo | Descrição |
|---|---|---|
| `main_related_party` | string | Nome da parte principal responsável por assinar o evento |
| `name` | string | Nome do evento. |
| `batch_group_key` | string | Chave do evento de assinatura. |
| `signature_status` | string | Status da assinatura. |
| `internal_status` | string | Status geral do evento. |
| `total_value` | string | Valor total dos documentos do evento. |
| `client_key` | string | Chave de identificação do cliente. |
| `send_emails` | booleano | Indica se os e-mails de assinatura devem ser enviados para este evento. |
| `attached_document_number` | string | CNPJ do cedente. |
| `batches` | lista | Lista dos diferentes tipos de documentos e suas respectivas partes relacionadas. |
| `webhook_url` | string | Link para onde será enviado o webhook. |
| `webhook_url_list` | lista | Lista de links para onde será enviado o webhook. |
| `zip_file_keys_list` | lista | Chave de identificação dos arquivos ZIP. |

### Objeto Batches 

| Campo | Tipo | Descrição |
|---|---|---|
| `related_parties` | lista | Lista das partes relacionadas envolvidas na assinatura de uma lista de documentos. |
| `documents` | lista | Lista de documentos. |
| `name` | string | Nome do batch. |
| `signature_type` | enum | Tipo de assinatura. |
| `document_type` | enum | Tipo de documento. |

### Objeto Related Parties

| Campo | Tipo | Descrição |
|---|---|---|
| `role` | enum | Papel desempenhado pelos assinantes. |
| `name` | string | Nome da parte relacionada. |
| `signature_position` | inteiro | Posição de assinatura. |
| `signer_groups` | lista | Lista dos grupos de assinantes. |

### Objeto Signer Groups

| Campo | Tipo |Descrição | 
|---|---| ---|
| `minimum_required_signers` | inteiro |  Número mínimo de assinantes que devem ter assinado para que as assinaturas do grupo sejam consideradas concluídas. |
| `signers` | lista | Lista dos assinantes que compõem o grupo de assinantes.  | 

### Objeto Signer

| Campo | Tipo |Descrição |
|---|---| ---|
| `name` | string |  Nome do assinante. |
| `document_number` | string | CPF do assinante.  | 
| `email` | string | Email do assinante.  | 
| `is_group_mandatory` | booleano | indicar se o assinante é obrigatório assinar para que o grupo de assinantes ao qual pertence seja considerado concluído.  |
|`signer_control_number` | string | Campo livre que pode ser utilizado para fins de controle ou referência externa.  |
|`signature_timestamp` | date | data da assinatura.

### Objeto Documents

| Campo | Tipo | Descrição |
|---|---|---|
| `name` | string | Nome do documento. |
| `control_number` | string | Campo livre que pode ser utilizado para fins de controle ou referência externa. |
| `file_size` | float | Tamanho do documento. |
| `url` | string | URL do documento. |
| `document_key` | string | Chave de identificação do documento. |
| `original_file_url` | string | URL do documento original. |
| `signed_file_url` | string | URL do documento com página de assinatura. |
| `file_url` | string | URL do arquivo de assinatura. |

---

# Consultar URLs dos documentos

URL: /documentation/certifiqi/consultar_url

Para consultar os links de eventos de assinatura já criados é possível pelas requisições abaixo.

# Consulta de URLs do Evento de Assinatura
### Request

ENDPOINT /batch_group/batch_group_key/url
MÉTODO GET

### Path Params

| Campo              | Descrição                                             |
|--------------------|-------------------------------------------------------|
| `batch_group_key`  | Chave única de identificação do evento de assinatura. |

Response Body

```json
{
	"all_files_url": "https://google.com",
	"expiration_datetime": "2024-05-01T01:00:00.000Z"
	"batches":[
		{
			"document_batch_key": "121",
			"documents": [
				{
					"document_key": "222",
					"original_file_url": "https://google2.com",
					"signed_file_url": "https://google3.com",
					"file_url": "https://google4.com"
				}
			]
		}
]
}
```

### Body Params

| Campo                 | Tipo     | Descrição                                                    |  
|-----------------------|----------|--------------------------------------------------------------| 
| `batch_group_key`     | string   | Chave única de identificação do evento de assinatura.        |
| `all_files_url`       | string   | URL do arquivo zip que contém o PDF original e p7s.          |
| `batches`             | string   | Lista de diferentes tipos de documentos.                     |
| `document_batch_key`  | string   | Chave única de identificação do lote de documentos.          |          |
| `documents`           | Array    | Lista de objetos dos documentos.                             |           |
| `document_key`        | string   | Chave única de identificação do documento.                   | 
| `original_file_url`   | string   | URL do documento original.                                   |         |
| `signed_file_url`     | string   | URL do documento com página de assinatura.                   |         |
| `file_url`            | string   | URL do arquivo p7s.                                          |         |
| `expiration_datetime` | string   | Data e hora do momento em que ocorrerá a expiração das urls. |         |

# Consulta de URLs de um Documento
### Request

ENDPOINT /document/document_key/url
MÉTODO GET

### Path Params

| Campo          | Descrição                                  |
|----------------|--------------------------------------------|
| `document_key` | Chave única de identificação do documento  |

Response Body

```json
{
    "document_key": "222",
    "original_file_url": "https://google2.com",
    "signed_file_url": "https://google3.com",
    "file_url": "https://google4.com",
    "expiration_datetime": "2024-05-01T01:00:00.000Z"
}
```

### Body Params

| Campo                 | Tipo     | Descrição                                                    |  
|-----------------------|----------|--------------------------------------------------------------| 
| `document_key`        | string   | Chave única de identificação do documento.                   | 
| `original_file_url`   | string   | URL do documento original.                                   |         |
| `signed_file_url`     | string   | URL do documento com página de assinatura.                   |         |
| `file_url`            | string   | URL do arquivo p7s.                                          |         |
| `expiration_datetime` | string   | Data e hora do momento em que ocorrerá a expiração das urls. |         |

# Consulta de URLs de um Arquivo ZIP
### Request

ENDPOINT /certifier/zip_file/zip_file_key/url
MÉTODO GET

### Path Params

| Campo          | Descrição                                  |
|----------------|--------------------------------------------|
| `zip_file_key` | Chave de identificação do arquivo ZIP.     |

Response Body

```json
{
    "zip_file_key": "222",
    "signed_url": "https://google3.com",
    "expiration_datetime": "2024-05-01T01:00:00.000Z"
}
```

### Body Params

| Campo                 | Tipo     | Descrição                                                    |  
|-----------------------|----------|--------------------------------------------------------------| 
| `zip_file_key`        | string   | Chave de identificação do arquivo ZIP.                       | 
| `expiration_datetime` | date     | Data e hora do momento em que ocorrerá a expiração das urls. |
| `signed_url`          | string   | link do arquivo ZIP.   												  |

---

# Criar Evento de Assinatura

URL: /documentation/certifiqi/criar_batch_group

Este endpoint deve ser utilizado para o envio do evento de assinatura, que inclui os documentos e os respectivos assinantes, agrupados em um objeto denominado **batch_group**.

## Definições

### Request

ENDPOINT /batch_group
MÉTODO POST

Request Body

```json
{
    "main_related_party": "ba",
    "webhook_url": "google.com.br",
    "send_to_fund_administrator": false,
    "is_asynchronous": false,
    "name": "Teste",
    "total_value": 0,
    "webhook_url_list": [
        "https://google.com",
        "https://google2.com"
    ],
    "attached_document_number": "74766848000162",
    "send_emails": false,
    "batches": [{
        "signature_type": "cades",
        "document_type": "term_of_endorsement",
        "name": "Termo de Endosso",
        "related_parties":[
    {
            "name": "nome da empresa ",
            "role": "assignor",
            "signature_position":1,
            "signer_groups": [
                    {
                        "minimum_required_signers": 1,
                        "signers":[
                            {
                                "name": "João",
                                "document_number": "85653681067",
                                "email": "teste@qitech.com.br",
                                "is_group_mandatory": true,
                                "signer_control_number": "1"
                            }
                        ]
                    }
                ]
            }
        ],
        "documents": [{
            "name": "teste_of.pdf",
            "control_number": null,
            "url": "https://storage.googleapis.com/certifier-api-storage-sandbox/093f1aef-437e-405b-9ef9-51efd73dbd57/teste_of_original.pdf",
            "document_key": "19f3c0ib-3926-4274-b2ab-720014b35f53",
            "file_size": 1681
        }]
    }]
}

```

STATUS 200

Response Body

```json

```json
{
    "batch_group_key": "c0394fb2-34f6-4d70-be70-776022fe15b8",
    "name": "Teste",
    "main_related_party": "ba",
    "number_of_documents": 1,
    "total_value": 0.0,
    "all_files_url": "",
    "send_to_fund_administrator": 0,
    "signature_expiration_date": null,
    "webhook_key": "ac73c564-989d-4c53-932b-d8f96b007585",
    "requester_key": null,
    "signature_status": "pending",
    "internal_status": "pending",
    "attached_document_number": "74766848000162",
    "current_signature_position": "1",
    "internal_webhook_key": "ac73c564-989d-4c53-932b-d8f96b007584",
    "created_at": "2023-05-15 23:54:35",
    "batch_group_type": "icp_signature",
    "requester_identifier": null,
    "send_emails": false,
    "is_asynchronous": false,
    "batches": [
        {
            "document_batch_key": "cd65292e-6748-4c1a-9520-de019f2f341b",
            "name": "Termo de Endosso",
            "document_type": "term_of_endorsement",
            "signature_type": "cades",
            "signature_status": "pending",
            "created_at": "2023-05-15 23:54:35",
            "related_parties": [
                {
                    "related_party_key": "41cf4d2a-fa9a-4cd1-93a0-5a1847b14fb3",
                    "name": "nome da empresa ",
                    "role": "assignor",
                    "signature_status": "pending",
                    "signature_position": "1",
                    "created_at": "2023-05-15 23:54:35",
                    "auto_signature": 0,
                    "notify_to": [],
                    "signer_groups": [
                        {
                            "id": 38586,
                            "expiration": null,
                            "minimum_required_signers": 1,
                            "signable_limit": null,
                            "signature_status": "pending",
                            "created_at": "2023-05-15 23:54:35",
                            "signers": [
                                {
                                    "id": 65062,
                                    "signer_control_number": "1",
                                    "signature_timestamp": null,
                                    "signature_status": "pending",
                                    "name": "João",
                                    "is_group_mandatory": true,
                                    "email": "teste@qitech.com.br",
                                    "document_number": "85653681067",
                                    "created_at": "2023-05-15 23:54:35"
                                }
                            ]
                        }
                    ]
                }
            ],
            "documents": [
                {
                    "document_key": "19f3c0ib-3926-4274-b2ab-720014b35f53",
                    "control_number": "96a8cd68-76b4-4abf-8180-7d8ebe39567e",
                    "file_size": 1681,
                    "file_url": "https://storage.googleapis.com/certifier-api-storage-sandbox/093f1aef-437e-405b-9ef9-51efd73dbd57/teste_of_original.pdf",
                    "name": "teste_of.pdf",
                    "original_file_url": "https://storage.googleapis.com/certifier-api-storage-sandbox/093f1aef-437e-405b-9ef9-51efd73dbd57/teste_of_original.pdf",
                    "status": "pending",
                    "signed_file_url": null,
                    "created_at": "2023-05-15 23:54:35",
                    "signatures": []
                }
            ]
        }
    ],
    "watcher_clients": []
}

```
</div>
</details>

## Request Body Params

| Campo | Tipo |Descrição | Obrigatório |
|---|---| ---|  ---| 
| `main_related_party` |  string | Nome da parte principal responsável por assinar o evento. | SIM | 
| `name` | string | Nome do evento de assinatura. | SIM
| `total_value`| string | Valor total dos documentos do evento. | SIM
| `send_emails` |  booleano | Indica se os e-mails de assinatura devem ser enviados para este evento. Caso o valor seja **FALSE**, nenhum e-mail será enviado em nenhuma etapa do processo. | SIM
 `attached_document_number`  | string | CNPJ do cedente, utilizado quando o documento estiver relacionado a um cedente específico. | NÃO
| `batches` | lista | Lista dos diferentes tipos de documentos e suas respectivas partes relacionadas. | SIM
| `webhook_url`  | string | URL para a qual o webhook de notificação será enviado. | NÃO
| `webhook_url_list`  | lista | Lista de URLs para as quais os webhooks de notificação serão enviados. | NÃO
| `is_asynchronous` | booleano   | O evento inclui um documento gerado de forma assíncrona. | NÃO 
| `send_to_fund_administrador` | booleano   | Após a assinatura, o evento deve notificar via SOAP uma administradora que utiliza o software Fromtis. | NÃO

:::info
- Os campos **webhook_url** ou **webhook_url_list** devem ser enviados somente se houver interesse no recebimento de webhooks. Além disso, apenas uma dessas opções deve ser informada por requisição.
- O campo **is_asynchronous** deve ser informado como **True** quando o evento contiver um documento criado de forma assíncrona.
:::

### Objeto Batches 

| Campo | Tipo |Descrição | Obrigatório |
|---|---| ---|  ---|
| `related_parties` | lista | Lista das partes relacionadas envolvidas na assinatura de uma lista de documentos. | SIM
| `documents` | lista |lista de documentos. | SIM
| `name` |  string |Nome do batch. |   SIM
| `signature_type` | enum | Tipo de assinatura. | SIM
| `document_type` | enum |  Tipo de documento. | SIM

<details>
  <summary>Enumeradores para os tipos de assinatura (signature_type)</summary>

**cades**: Cades  
**pades**: Pades  

</details>

<details>
  <summary>Enumeradores para os tipos de documentos (document_type)</summary>

**endorsement**: Endosso  
**other**: Outros  
**contract**: Contrato  
**term_of_assignment**: Termo de cessão  
**term_of_endorsement**: Termo de Endosso  
**promissory_note**: Nota promissória  
**rural_term_of_assignment**: Termo de cessão  
**term_of_fomentation**: Termo de Fomento  
**cpr**: CPR  
**cprf**: CPRF  
**trade_bill**: Duplicata  
**subscription_note**: Boletim de Subscrição  
**adhesion_term**: Termo de Adesão  
**limited_liability_term**: Termo de responsabilidade limitada  
**account_request_document**: Contrato de abertura de conta  
**ccb_post_sac_cdi**: CCB Pós-SAC CDI  
**ccb_post_sac_ipca**: CCB Pós-SAC IPCA  
**ccb_post_sac_igpm**: CCB Pós-SAC IGPM  
**ccb_post_price_cdi**: CCB Pós-Price CDI  
**ccb_post_price_ipca**: CCB Pós-Price IPCA  
**ccb_post_price_igpm**: CCB Pós-Price IGPM  
**ccb_post_price_days_cdi**: CCB Pós-Price Days CDI  
**ccb_post_price_days_ipca**: CCB Pós-Price Days IPCA  
**ccb_post_price__days_igpm**: CCB Pós-Price Days IGPM  
**ncom_pre_sac**: Nota Comercial Pré-Sac  
**ncom_pre_price**: Nota Comercial Pré Price  
**ncom_pre_sac_days**: Nota Comercial Pré-Price Days  
**ncom_post_sac_cdi**: Nota Comercial Pós-SAC CDI  
**ncom_post_sac_ipca**: Nota Comercial Pós-SAC IPCA  
**ncom_post_sac_igpm**: Nota Comercial Pós-SAC IGPM  
**ncom_post_price_cdi**: Nota Comercial Pós-Price CDI  
**ncom_post_price_ipca**: Nota Comercial Pós-Price IPCA  
**ncom_post_price_igpm**: Nota Comercial Pós-Price IGPM  
**ncom_post_price_days_cdi**: Nota Comercial Pós-Price Days CDI  
**ncom_post_price_days_ipca**: Nota Comercial Pós-Price Days IPCA  
**ncom_post_price__days_igpm**: Nota Comercial Pós-Price Days IGPM  
**ccb_cdi_perc**: CCB CDI Perc  
**ccb_cdi_plus**: CCB CDI+  
**ccb_pre_price**: CCB Pré-Price  
**ccb_pre_sac**: CCB (pre-sac)  
**cce_cdi_perc**: CCE CDI Perc  
**cce_cdi_plus**: CCE CDI+  
**cce_pre_price**: CCE Pré-Price  
**cce_pre_sac**: CCE Pré-Sac  
**cce_post_sac_cdi**: CCE Pós-SAC CDI  
**cce_post_sac_ipca**: CCE Pós-SAC IPCA  
**cce_post_sac_igpm**: CCE Pós-SAC IGPM  
**cce_post_price_cdi**: CCE Pós-Price CDI  
**cce_post_price_ipca**: CCE Pós-Price IPCA  
**cce_post_price_igpm**: CCE Pós-Price IGPM  
**cce_post_price_days_cdi**: CCE Pós-Price Days CDI  
**cce_post_price_days_ipca**: CCE Pós-Price Days IPCA  
**cce_post_price_daysigpm**: CCE Pós-Price Days IGPM  
**cci_cdi_perc**: CCI CDI Perc  
**cci_cdi_plus**: CCI CDI+  
**cci_pre_price**: CCI Pré-Price  
**cci_pre_sac**: CCI Pré-Sac  
**cci_post_sac_cdi**: CCI Pós-SAC CDI  
**cci_post_sac_ipca**: CCI Pós-SAC IPCA  
**cci_post_sac_igpm**: CCI Pós-SAC IGPM  
**cci_post_price_cdi**: CCI Pós-Price CDI  
**cci_post_price_ipca**: CCI Pós-Price IPCA  
**cci_post_price_igpm**: CCI Pós-Price IGPM  
**cci_post_price_days_cdi**: CCI Pós-Price Days CDI  
**cci_post_price_days_ipca**: CCI Pós-Price Days IPCA  
**cci_post_price_days_igpm**: CCI Pós-Price Days IGPM  
**nce_cdi_perc**: NCE CDI Perc  
**nce_cdi_plus**: NCE CDI+  
**nce_pre_price**: NCE Pré-Price  
**nce_pre_sac**: NCE Pré-Sac  
**nce_post_sac**: NCE Pós-SAC  
**nce_post_price**: NCE Pós-Price  
**nce_post_price_days**: NCE Pós-Price Days  

</details>

### Objeto Related Parties

| Campo | Tipo |Descrição | Obrigatório |
|---|---| ---|  ---|
| `role` | enum |  Papel desempenhado pelos assinantes. | SIM
| `name` | string | Nome da parte relacionada.  | SIM
| `signature_position` | inteiro | Posição da assinatura, deve ser informada quando houver ordem de assinatura entre as partes relacionadas. A ordem segue uma sequência crescente. | NÃO 
| `signer_groups` | lista | Lista dos grupos de assinantes. | SIM 

<details>
  <summary>Enumeradores que representam os papéis das partes relacionadas (role)</summary>

**assignor**: Cedente  
**manager**: Gestor  
**underwriter**: Subscritor  
**issuer**: Emissor  
**intervening_discharger**: Interveniente Quitante  
**investor**: Cotista  
**debtor**: Devedor  
**secretary**: Secretário  
**intervening_consentor**: Interveniente Anuente  
**guarantor**: Fiador  
**fund_representative**: Representante do Fundo  
**company_representative**: Representante da Empresa  
**solidary_debtor**: Devedor Solidário  
**attestant**: Testemunha  
**bestowal**: Outorga Uxória  
**owner**: Titular  
**attorney**: Procurador  
**associate**: Sócio  
**co_issuer**: Co-emissor  
**fiduciary_agent**: Agente Fiduciário  
**guest**: Convidado  
**spouse**: Cônjuge  
**intervening_guarantor**: Interveniente Fiador  
**fiduciary_debtor**: Devedor Fiduciário  
**bonafide_depositary**: Fiel Depositário  
**faithful_depositary**: Fiel Depositário  
**president**: Presidente  
**endorser**: Endossante  
**fund_administrator**: Administrador do Fundo  
**cosigner**: Avalista  
**consulting**: Consultor  
**fund_manager**: Gestor do Fundo  
**director**: Diretor  

</details>

### Objeto Signer Groups

| Campo | Tipo |Descrição | Obrigatório |
|---|---| ---|  ---|
| `minimum_required_signers` | inteiro |  Número mínimo de assinantes que devem ter assinado para que as assinaturas do grupo sejam consideradas concluídas. | SIM
| `signers` | lista | Lista dos assinantes que compõem o grupo de assinantes.  | SIM

### Objeto Signer

| Campo | Tipo |Descrição | Obrigatório |
|---|---| ---|  ---|
| `name` | string |  Nome do assinante. | SIM
| `document_number` | string | CPF do assinante.  | SIM
| `email` | string | Email do assinante.  | SIM|
| `is_group_mandatory` | booleano | Informe **TRUE** para indicar que o assinante é obrigatório assinar para que o grupo de assinantes ao qual pertence seja considerado concluído.  | SIM
|`signer_control_number` | string | Campo livre que pode ser utilizado para fins de controle ou referência externa.  | SIM

### Objeto Documents

:::info Importante
O campo documents deve ser populado com a resposta da requisição /document.
:::

| Campo | Tipo |Descrição | Obrigatório |
|---|---| ---|  ---|
| `name` | string | Nome do documento. | SIM
| `control_number` | string | Campo livre que pode ser utilizado para fins de controle ou referência externa. Na integração com o Fromtis envolvendo duplicatas, o valor deste campo deve ser mantido igual ao recebido no endpoint de geração de documentos de forma assíncrona.| SIM
| `file_size` | float |Tamanho do documento. |SIM
| `url` | string  |URL do documento. |SIM
| `document_key` | string |Chave de identificação do documento.| SIM

## Response Body Params

| Campo | Tipo |Descrição |
|---|---| ---|
| `batch_group_key` |  string | Chave de identificação do evento de assinatura.
| `signature_status` | string | Status da assinatura. 
| `internal_status`| string | Status geral do evento.                                           
| `original_file_url`   | string   | URL do documento original.                                   
| `signed_file_url`     | string   | URL do documento com página de assinatura.                   
| `file_url`            | string   | URL do arquivo de assinatura.
| `signature_timestamp` | date   | Data da assinatura.
| `webhook_key` | string   | Chave de identificação do webhook.

---

# Criar Evento de Assinatura para Notificar o Fromtis

URL: /documentation/certifiqi/criar_batch_group_fromtis

A Certifiqi oferece a opção de enviar notificações via SOAP para administradoras que utilizam o software Fromtis. Para que a notificação seja realizada corretamente, é necessário seguir alguns passos específicos. Caso algum desses passos não seja cumprido, os eventos de assinatura ficarão pendentes de notificação, pois não foi possível encontrar uma cessão passada pelo Fromtis.

A notificação da assinatura será enviada após a conclusão da assinatura de todos os documentos necessários.

## Evento com Duplicatas

1. Envio dos documentos
   1. Enviar o CNAB das duplicatas de forma assíncrona conforme o tópico 4.2.3.
   2. Enviar em PDF o termo de cessão
2. Criação do evento
    1. Enviar no body o campo is_asynchronous como True
    2. Enviar no body o campo send_to_fund_administrator como True
    3. Enviar no body o campo total_value com o valor liquido da cessão
    4. Enviar no body o document type correspondente a duplicata e seus documentos
    5. Enviar no body o document type correspondente ao termo de cessão e seu respectivo documento

## Evento com Outros Tipos de Ativos

1. Envio dos documentos
   1. Enviar em PDF o termo de cessão
2. Criação do evento
    1. Enviar no body o campo send_to_fund_administrator como True
    2. Enviar no body o campo total_value com o valor liquido da cessão
    3. Enviar no body o document type correspondente ao termo de cessão e seu respectivo documento

---

# Enviar para Assinatura

URL: /documentation/certifiqi/enviar_para_assinatura

## Request

Essa requisição envia um e-mail para os assinantes. O destinatário deve ser informado na criação do evento de assinatura.

ENDPOINT /batch_group/batch_group_key/send_to_signature
MÉTODO PUT

### Path params

| Campo | Tipo | Descrição |
|---|---|---|
| `batch_group_key`|  string | Chave única de identificação do evento de assinatura. |

Response Body

```json
{}

```

---

# Estrutura

URL: /documentation/certifiqi/estrutura

A Certifiqi possui eventos de assinatura (batch_group) que engloba diferentes documentos e seus assinantes. Abaixo será apresentado algumas nomenclaturas importantes para o entendimento do funcionamento da plataforma.

### Related Party

Representa uma pessoa física ou jurídica (empresa) associada à assinatura de documentos. Pode incluir um ou mais grupos de assinantes.

### Signer Group

Grupo de assinantes que compõem uma parte relacionada. Caso qualquer um dos grupos configurados seja satisfeito (número mínimo de assinaturas ou valor representado), a parte relacionada será considerada como assinada. Permite flexibilidade na configuração de regras de assinatura para empresas.

### Signer

Um assinante pertencente a um grupo. É possível definir se sua assinatura é obrigatória dentro do grupo para que a condição do grupo seja atendida.

### Document

Documento que deverá ser assinado.

### Document Batch	

Conjunto de documentos de um determinado tipo que deve ser assinado por uma ou mais partes relacionadas. Um evento de assinatura pode conter múltiplos batches, representando diferentes categorias de documentos.

### Batch Group	

Evento de assinatura que agrupa diversos lotes (Document Batch) de documentos a serem assinados.

## Diagrama da estrutura

## Exemplo de Uso

### Diagrama

O evento de assinatura contém dois elementos do tipo Document Batch: um para Duplicatas e outro para o Termo de Cessão.

### Document Batch – Duplicata

- Contém dois documentos: Duplicata 1 e Duplicata 2.

- Está associado a uma Related Party, que representa o Cedente.

- Essa Related Party possui dois Signer Groups:

    - Signer Group 1: composto por dois assinantes (Signer 1 e Signer 2).

    - Signer Group 2: composto por um assinante (Signer 3).

Para que a Related Party seja considerada como tendo assinado, basta que um dos Signer Groups seja satisfeito. Isso pode ocorrer de duas formas:

    - Opção 1: Signer 1 e Signer 2 realizam a assinatura, satisfazendo o Signer Group 1.

    - Opção 2: Apenas o Signer 3 assina, satisfazendo o Signer Group 2.

Uma vez que a Related Party é satisfeita por qualquer uma dessas opções, o Document Batch de Duplicatas será considerado como assinado.

### Document Batch – Termo de Cessão

- Contém um documento: Termo de cessão.
- Possui duas Related Party:
    - Cedente
    - Administrador do fundo
- Cada Related Party possui um grupo de assinante
- A Related Party da consultoria possui um Signer Group com dois assinantes, assim é necessário que os assinantes assinem para concluir a parte relacionada da consultoria.
- A Related Party do administrador do fundo possui um Signer Group com um assinante, assim é necessário que o assinante assine para concluir a parte relacionada da administradora do fundo.

Uma vez que as Related Partys são satisfeitas, o Document Batch de Termo de Cessão será considerado como assinado.

---

# Forma de Autenticação

URL: /documentation/certifiqi/forma_de_autenticacao

Para realizar uma requisição em nossa plataforma, é necessário incluir a chave de API no header da solicitação, utilizando o campo x-api-token , conforme o exemplo abaixo:

Header

```json

{"x-api-token": "\<EXAMPLE-OF-API-KEY\>"}

```

Essa chave é exclusiva para cada cliente e pode ser solicitada por e-mail, enviando sua solicitação para certifiqi@qitech.com.br.

---

# Início

URL: /documentation/certifiqi/inicio

A plataforma Certifiqi tem como objetivo efetuar assinaturas através de certificados dentro do padrão ICP-Brasil. Além disso, as assinaturas são feitas em poucos segundos para um alto volume de documentos.
Para mais informações acesse:

https://qitech.com.br

# Métodos de Assinatura

### Cades
- Forma de assinatura digital em que o arquivo da assinatura fica em um arquivo separado. 
- Arquivo no formato p7s.

### Pades
- Forma de assinatura digital em que a assinatura fica contida dentro do próprio PDF.
- Arquivo no formato PDF.

---

# Permissão do usuário

URL: /documentation/certifiqi/permissoes

Os usuários na plataforma são divididos em três categorias de acesso, sendo master, assinante e observador.

### Master: 
- Consegue editar e criar eventos.
- Visualiza todos os documentos.
- Pode alterar as permissões dos usuários.

### Assinante: 
- Consegue assinar documentos na plataforma.
- Visualiza os documentos que estiver como assinante.

### Observador
- Consegue visualizar os documentos na plataforma.

---

# Upload de Documentos em CNAB

URL: /documentation/certifiqi/upload_documentos_cnab_assincrono

#  Utilização
Esse método é utilizado para converter cada linha de um CNAB 444 em um arquivo PDF de forma assíncrona. 

O evento pode ser criado antes de finalizar a criação dos documentos.

:::warning Aviso Importante!
O campo `is_asynchronous` deve ser passado como TRUE na criação do evento. Os documentos estarão disponíveis para assinar depois de finalizar a geração dos documentos
:::

## Request

ENDPOINT /certifier/document/trade_bill/asynchronous
MÉTODO POST

### Request Body Params

Deverão ser enviados os seguintes dados, como form-data , no body da request:

| Campo | Tipo | Descrição                              | Obrigatório |
|---|---|----------------------------------------|---|
| `file` | file | Binário com o documento a ser enviado. | SIM |
|`assignor_address`| string | Endereço do cedente                    | SIM |
|`assignor_address_number`| string | Número do endereço do cedente          | SIM |
|`assignor_city`| string | Cidade dp cedente                      | SIM |
|`assignor_state`| string | Estado do cedente                      | SIM |
|`assignor_CEP`| string | CEP do cedente                         | SIM |
|`assignor_neighborhood `|string | Bairro do cedente                           | SIM |

### Response

STATUS 200

Response Body

```json
[
    {
        "control_number": "1123",
        "document_key": "d559e3dc-d19c-494e-b02e-b7199e5325ea",
        "file_size": 1679,
        "name": "trade_bill_1.pdf",
        "url": "https://storage.googleapis.com/certifier-api-storage-sandbox/d559e3dc-d19c-494e-b02e-b7199e5325ea/teste_of_original.pdf"
    },
    {
        "control_number": "1123",
        "document_key": "d559e3dc-d19c-494e-b02e-b7199e5325ea",
        "file_size": 1679,
        "name": "trade_bill_2.pdf",
        "url": "https://storage.googleapis.com/certifier-api-storage-sandbox/d559e3dc-d19c-494e-b02e-b7199e5325ea/teste_of_original.pdf"
    },
    {
        "control_number": "1123",
        "document_key": "d559e3dc-d19c-494e-b02e-b7199e5325ea",
        "file_size": 1679,
        "name": "trade_bill_3.pdf",
        "url": "https://storage.googleapis.com/certifier-api-storage-sandbox/d559e3dc-d19c-494e-b02e-b7199e5325ea/teste_of_original.pdf"
    }
]

```

STATUS 400

Response Body

```json
{
    "title": "Bad Request",
    "description": "Document size larger than 20 MB"
}
```

## Request de Exemplo
```shell
curl --location 'https://api.sandbox.certifiqi.com.br/document' \
--header 'x-api-token: chave de api' \
--form 'file=@"/seu_cnab.txt"' \
--form 'assignor_address="Rua"' \
--form 'assignor_address_number="1111"' \
--form 'assignor_city="São Paulo"' \
--form 'assignor_state="São Paulo"' \
--form 'assignor_CEP="123456789113"' \
--form 'assignor_neighborhood="Teste"'
```

---

# Upload de Documentos em PDF

URL: /documentation/certifiqi/upload_documentos_pdf

#  Utilização
Esse método deve ser utilizado para enviar os documentos no formato PDF.

## Request

ENDPOINT /document
MÉTODO POST

### Request Body Params

Deverão ser enviados os seguintes dados, como form-data , no body da request:

| Campo | Tipo | Descrição | Obrigatório| 
|---|---|---|---|
| `file` | file | Binário com o documento a ser enviado. | SIM |
| `control_number` | string | Campo livre que pode ser utilizado para fins de controle ou referência externa.  | NÃO |
|`endorsement_page` | booleano |  Caso seja passado como true será adicionado uma Página de Endosso  | NÃO |
|`endorser_name` | string |  Nome do Endossatário na página de endosso  | NÃO |
|`endorser_document_number` | string |  Número do documento do endossatário  na página de endosso  | NÃO |
|`receiver_name`| string |   Nome do recebedor   na página de endosso| NÃO |
|`receiver_document_number`| string |  Número do documento do recebedor  na página de endosso   | NÃO |
| `document_identifier` |string | Identificador do documento na página de endosso | NÃO |     
| `document_type` |string | Tipo do documento na página de endosso | NÃO |     

## Response

STATUS 200

Response Body

```json
[
    {
        "control_number": "1123",
        "document_key": "d559e3dc-d19c-494e-b02e-b7199e5325ea",
        "file_size": 1679,
        "name": "document.pdf",
        "url": "https://storage.googleapis.com/certifier-api-storage-sandbox/d559e3dc-d19c-494e-b02e-b7199e5325ea/teste_of_original.pdf"
    },
]

```

STATUS 400

Response Body

```json
{
    "title": "Bad Request",
    "description": "Document size larger than 20 MB"
}
```

Response Body

```json
{
    "title": "Bad Request",
    "description": "PDF has editable format fields"
}
```

Response Body

```json
{
    "title": "Bad Request",
    "description": "PDF file can't have a password."
}
```

## Request de Exemplo
```shell
curl --location 'https://api.certifiqi.com.br/document' \
--header 'x-api-token: chave de api' \
--form 'file=@"/seu_arquivo.pdf"' \
--form 'endorsement_page="true"' \
--form 'endorser_name="Endorser"' \
--form 'endorser_document_number="123456789112"' \
--form 'receiver_name="Receiver"' \
--form 'receiver_document_number="123456789113"' \
--form 'document_type="Termo de Cessão"' \
--form 'document_identifier="1234"' \
--form 'control_number="999"'
```

## Adição da Página de Endosso

Para adicionar uma página de endosso em preto ao final do PDF enviado, os seguintes campos devem ser informados:

- endorsement_page como True
- endorser_name
- endorser_document_number
- receiver_name
- receiver_document_number
- document_identifier
- document_type

Tendo esses campos enviados, o texto adicionado do endosso seguirá o seguinte formato: 

A instituição endorser_name , inscrita no CNPJ sob o nº endorser_document_number ,
endossa este(a) document_type de nº document_identifier para o(a)
receiver_name , inscrito no CNPJ
sob o nº receiver_document_number , nos termos da legislação aplicável, em especial do
parágrafo 1º do artigo 29 da Lei nº 10.931, de 02 de agosto de 2004, com o objetivo de transferir a propriedade plena para
a instituição ora indicada. O presente endosso é realizado em formato eletrônico, sendo que as
partes, desde já, concordam e reconhecem a validade de sua assinatura eletrônica, nos termos do
parágrafo 2º do artigo 10, da Medida Provisória nº 2.200, de 24 de agosto de 2001, ou norma que
venha a substituí-la.

---

# Webhook

URL: /documentation/certifiqi/webhook

Todas as notificações do evento de assinatura serão enviadas para o endereço registrado na criação do evento. Em todas as chamadas de webhook, o payload conterá os dados de batch_group, batches, related_parties, signer_groups e signer.

A notificação será enviada sempre que ocorrer a conclusão de uma das seguintes etapas: partes relacionadas, inicio da criação dos arquivos ZIP ou finalização do evento de assinatura.

## Notificação da Parte Relacionada Assinada

Nesse caso, o campo **signature_status** da parte relacionada, do grupo de assinantes e dos assinantes estarão com o valor **signed**. Já o campo **internal_status** estará com o valor **pending**.

### Exemplos de Webhook

Response Body

```json
{
  "batch_group_key": "d445060c-7ecf-4a18-870a-feebaadf2618",
  "name": "aaa",
  "main_related_party": "aaa",
  "number_of_documents": 1,
  "total_value": 0,
  "all_files_url": "",
  "send_to_fund_administrator": 0,
  "signature_expiration_date": null,
  "webhook_key": "e4bbb09d-97d0-4cd7-b4fc-71ed7368a650",
  "client_key": "5aaf98d2-0264-48dd-8167-eab859ce5a75",
  "requester_key": null,
  "signature_status": "pending",
  "internal_status": "pending",
  "attached_document_number": "59860422000180",
  "current_signature_position": "1",
  "control_number": null,
  "internal_webhook_key": null,
  "created_at": "2023-05-18 00:02:49",
  "batch_group_type": "icp_signature",
  "requester_identifier": null,
  "send_emails": true,
  "batches": [
    {
      "document_batch_key": "a34bd069-9ae9-4baf-8204-7559e84e6947",
      "name": "Outros",
      "document_type": "other",
      "signature_type": "cades",
      "signature_status": "pending",
      "created_at": "2023-05-18 00:02:49",
      "related_parties": [
        {
          "related_party_key": "b972beb3-7659-40ac-8999-8574cfe42191",
          "name": "Savio",
          "role": "assignor",
          "signature_status": "signed",
          "signature_position": "1",
          "created_at": "2023-05-18 00:02:49",
          "auto_signature": 0,
          "notify_to": [],
          "signer_groups": [
            {
              "id": 38598,
              "expiration": null,
              "minimum_required_signers": 1,
              "signable_limit": null,
              "signature_status": "signed",
              "created_at": "2023-05-18 00:02:49",
              "signers": [
                {
                  "id": 65095,
                  "signer_control_number": "1",
                  "signature_timestamp": "2023-05-18 00:06:08",
                  "signature_status": "signed",
                  "name": "Savio",
                  "is_group_mandatory": true,
                  "email": "savio.gama@qitech.com.br",
                  "document_number": "43141581827",
                  "created_at": "2023-05-18 00:02:49"
                }
              ]
            }
          ]
        },
        {
          "related_party_key": "e19d038e-5c60-47db-aa44-d4d948592705",
          "name": "Turing",
          "role": "guarantor",
          "signature_status": "pending",
          "signature_position": "1",
          "created_at": "2023-05-18 00:02:49",
          "auto_signature": 0,
          "notify_to": [],
          "signer_groups": [
            {
              "id": 38599,
              "expiration": null,
              "minimum_required_signers": 1,
              "signable_limit": null,
              "signature_status": "pending",
              "created_at": "2023-05-18 00:02:49",
              "signers": [
                {
                  "id": 65096,
                  "signer_control_number": "1",
                  "signature_timestamp": null,
                  "signature_status": "pending",
                  "name": "Turing",
                  "is_group_mandatory": true,
                  "email": "teste@gmail.com",
                  "document_number": "56072386105",
                  "created_at": "2023-05-18 00:02:49"
                }
              ]
            }
          ]
        }
      ],
      "documents": [
        {
          "document_key": "40c0940a-3db5-489b-86d6-ebf2717e0a9c",
          "control_number": "9f907aef-04b5-4adb-9f4e-e2c53293c4d7",
          "file_size": 1669,
          "file_url": "https://storage.googleapis.com/certifier-api-storage-sandbox/40c0940a-3db5-489b-86d6-ebf2717e0a9c/teste_of_original.pdf",
          "name": "teste_of.pdf",
          "original_file_url": "https://storage.googleapis.com/certifier-api-storage-sandbox/40c0940a-3db5-489b-86d6-ebf2717e0a9c/teste_of_original.pdf",
          "status": "pending",
          "signed_file_url": null,
          "created_at": "2023-05-18 00:02:49",
          "signatures": [
            {
              "signer": {
                "id": 65095,
                "signer_control_number": "1",
                "signature_timestamp": "2023-05-18 00:06:08",
                "signature_status": "signed",
                "name": "Savio",
                "is_group_mandatory": true,
                "email": "savio.gama@qitech.com.br",
                "document_number": "43141581827",
                "created_at": "2023-05-18 00:02:49"
              },
              "signed_hash": "ldp+t2F5MpgLtA++sIaFxEKXxsVJGnXeco2+cN7v3KSlsvxIwm2xMwQ4JjE8Mm3s93swB0dYBb5m/BBmCuRhzRsopQtVVRgRkdhKSwa5JBWVIgEd7gsb/CMIQqmG4wZLM9XZNUrx60LwfrdAnyjDEg8/JBdoeks3whOeQ1eai04dZyBAHkd6yplnFvi89PhEjLNU93C2CqyjCaSVr5HviLQovlpTxmiPYfRR+cqzlljbYLMqat2LXvjaW2T6AvtYWQRmL3HJ5GmDQytjNXsHBOQFKQ+Nyu+KnEnxg2ofqmNXlhID78YaGFpmZVLT9aLeFflJIFazaHWq6wPq8M5Hqg==",
              "signature_timestamp": "2023-05-18 00:06:08",
              "signature_status": "signed",
              "role": "assignor",
              "created_at": "2023-05-18 00:06:13"
            }
          ]
        }
      ]
    }
  ],
  "watcher_clients": [],
  "zip_file_keys_list": []
}

```

## Finalização do evento

Para a finalização do evento, será enviado primeiramente um webhook informando que todas as partes relacionadas já assinaram. Nesse momento, o campo **internal_status** estará com o valor **waiting_zip_files_creation**. O link para os documentos assinados já estará disponível.

Após o webhook mencionado anteriormente, será enviado um novo webhook informando a finalização completa do evento. Nesse momento, o campo **internal_status** estará com o valor **finished** e o evento será complementado com o arquivo ZIP que pode ser consultado através das chaves contidas em  **zip_file_keys_list**. O arquivo ZIP contém todos os documentos e o arquivo de assinatura.

Para entender como consultar o arquivo ZIP acesse o trecho 4.5. Consultar URL.

### Exemplos de Webhook Aguardando geração do ZIP

Response Body

```json
{
  "batch_group_key": "d445060c-7ecf-4a18-870a-feebaadf2618",
  "name": "aaa",
  "main_related_party": "aaa",
  "number_of_documents": 1,
  "total_value": 0,
  "all_files_url": null,
  "send_to_fund_administrator": 0,
  "signature_expiration_date": null,
  "webhook_key": "e4bbb09d-97d0-4cd7-b4fc-71ed7368a650",
  "client_key": "5aaf98d2-0264-48dd-8167-eab859ce5a75",
  "requester_key": null,
  "signature_status": "signed",
  "internal_status": "waiting_zip_files_creation",
  "attached_document_number": "59860422000180",
  "current_signature_position": "1",
  "control_number": null,
  "internal_webhook_key": null,
  "created_at": "2023-05-18 00:02:49",
  "batch_group_type": "icp_signature",
  "requester_identifier": null,
  "send_emails": true,
  "batches": [
    {
      "document_batch_key": "a34bd069-9ae9-4baf-8204-7559e84e6947",
      "name": "Outros",
      "document_type": "other",
      "signature_type": "cades",
      "signature_status": "signed",
      "created_at": "2023-05-18 00:02:49",
      "related_parties": [
        {
          "related_party_key": "b972beb3-7659-40ac-8999-8574cfe42191",
          "name": "Savio",
          "role": "assignor",
          "signature_status": "signed",
          "signature_position": "1",
          "created_at": "2023-05-18 00:02:49",
          "auto_signature": 0,
          "notify_to": [],
          "signer_groups": [
            {
              "expiration": null,
              "minimum_required_signers": 1,
              "signable_limit": null,
              "signature_status": "signed",
              "created_at": "2023-05-18 00:02:49",
              "signers": [
                {
                  "signer_control_number": "1",
                  "signature_timestamp": "2023-05-18 00:06:08",
                  "signature_status": "signed",
                  "name": "Savio",
                  "is_group_mandatory": true,
                  "email": "savio.gama@qitech.com.br",
                  "document_number": "43141581827",
                  "created_at": "2023-05-18 00:02:49"
                }
              ]
            }
          ]
        },
        {
          "related_party_key": "e19d038e-5c60-47db-aa44-d4d948592705",
          "name": "Turing",
          "role": "guarantor",
          "signature_status": "signed",
          "signature_position": "1",
          "created_at": "2023-05-18 00:02:49",
          "auto_signature": 0,
          "notify_to": [],
          "signer_groups": [
            {
              "expiration": null,
              "minimum_required_signers": 1,
              "signable_limit": null,
              "signature_status": "signed",
              "created_at": "2023-05-18 00:02:49",
              "signers": [
                {
                  "signer_control_number": "1",
                  "signature_timestamp": "2023-05-18 00:09:44",
                  "signature_status": "signed",
                  "name": "Turing",
                  "is_group_mandatory": true,
                  "email": "teste@gmail.com",
                  "document_number": "56072386105",
                  "created_at": "2023-05-18 00:02:49"
                }
              ]
            }
          ]
        }
      ],
      "documents": [
        {
          "document_key": "40c0940a-3db5-489b-86d6-ebf2717e0a9c",
          "control_number": "9f907aef-04b5-4adb-9f4e-e2c53293c4d7",
          "file_size": 1669,
          "file_url": "https://storage.googleapis.com/certifier-api-storage-sandbox/40c0940a-3db5-489b-86d6-ebf2717e0a9c/teste_of_signed.p7s",
          "name": "teste_of.pdf",
          "original_file_url": "https://storage.googleapis.com/certifier-api-storage-sandbox/40c0940a-3db5-489b-86d6-ebf2717e0a9c/teste_of_original.pdf",
          "status": "signed",
          "signed_file_url": "https://storage.googleapis.com/certifier-api-storage-sandbox/40c0940a-3db5-489b-86d6-ebf2717e0a9c/teste_of_signed.pdf",
          "created_at": "2023-05-18 00:02:49",
          "signatures": [
            {
              "signer": {
                "signer_control_number": "1",
                "signature_timestamp": "2023-05-18 00:06:08",
                "signature_status": "signed",
                "name": "Savio",
                "is_group_mandatory": true,
                "email": "savio.gama@qitech.com.br",
                "document_number": "43141581827",
                "created_at": "2023-05-18 00:02:49"
              },
              "signed_hash": "ldp+t2F5MpgLtA++sIaFxEKXxsVJGnXeco2+cN7v3KSlsvxIwm2xMwQ4JjE8Mm3s93swB0dYBb5m/BBmCuRhzRsopQtVVRgRkdhKSwa5JBWVIgEd7gsb/CMIQqmG4wZLM9XZNUrx60LwfrdAnyjDEg8/JBdoeks3whOeQ1eai04dZyBAHkd6yplnFvi89PhEjLNU93C2CqyjCaSVr5HviLQovlpTxmiPYfRR+cqzlljbYLMqat2LXvjaW2T6AvtYWQRmL3HJ5GmDQytjNXsHBOQFKQ+Nyu+KnEnxg2ofqmNXlhID78YaGFpmZVLT9aLeFflJIFazaHWq6wPq8M5Hqg==",
              "signature_timestamp": "2023-05-18 00:06:08",
              "signature_status": "signed",
              "role": "assignor",
              "created_at": "2023-05-18 00:06:13"
            },
            {
              "signer": {
                "signer_control_number": "1",
                "signature_timestamp": "2023-05-18 00:09:44",
                "signature_status": "signed",
                "name": "Turing",
                "is_group_mandatory": true,
                "email": "teste@gmail.com",
                "document_number": "56072386105",
                "created_at": "2023-05-18 00:02:49"
              },
              "signed_hash": "Djc8YDrgdrHdhpyfP6rmp/6HIPfA1NdzSU3gov1A0PbhrJhW1toOOGZ5VHCM82EHT77fB5G7gmJSIaufU9+Mz9o3pzWqY3GRQe3g9vqO01ejonIf1HOEpkx5Q/9bB23L/OlnzGfrQ2JCzsuExpTzkmG65zKMzNdHFdmz3PtdpssTl3kQNIG00piKxHE5GiRC67uYcZyFDWQbHEeNSczrCodIlKVCtfc7V8dzsfIr+4u6vtkQYhj6GTRYIxcJjgtYJfHnMlgsQUstl0Vyt3tQzfkAq021HmvlMtf/N3WZRZGThLTb1NczEEVnD/AXllQvW08mtOHQKBnVkxB8xQikEw==",
              "signature_timestamp": "2023-05-18 00:09:44",
              "signature_status": "signed",
              "role": "guarantor",
              "created_at": "2023-05-18 00:09:45"
            }
          ]
        }
      ]
    }
  ],
  "watcher_clients": [],
  "zip_file_keys_list": []
}

```

### Exemplos de Webhook Evento finalizado

Response Body

```json
{
  "batch_group_key": "d445060c-7ecf-4a18-870a-feebaadf2618",
  "name": "aaa",
  "main_related_party": "aaa",
  "number_of_documents": 1,
  "total_value": 0,
  "all_files_url": "https://storage.googleapis.com/certifier-worker-storage-sandbox/d445060c-7ecf-4a18-870a-feebaadf2618/d445060c-7ecf-4a18-870a-feebaadf2618.zip",
  "send_to_fund_administrator": 0,
  "signature_expiration_date": null,
  "webhook_key": "e4bbb09d-97d0-4cd7-b4fc-71ed7368a650",
  "client_key": "5aaf98d2-0264-48dd-8167-eab859ce5a75",
  "requester_key": null,
  "signature_status": "signed",
  "internal_status": "finished",
  "attached_document_number": "59860422000180",
  "current_signature_position": "1",
  "control_number": null,
  "internal_webhook_key": null,
  "created_at": "2023-05-18 00:02:49",
  "batch_group_type": "icp_signature",
  "requester_identifier": null,
  "send_emails": true,
  "batches": [
    {
      "document_batch_key": "a34bd069-9ae9-4baf-8204-7559e84e6947",
      "name": "Outros",
      "document_type": "other",
      "signature_type": "cades",
      "signature_status": "signed",
      "created_at": "2023-05-18 00:02:49",
      "related_parties": [
        {
          "related_party_key": "b972beb3-7659-40ac-8999-8574cfe42191",
          "name": "Savio",
          "role": "assignor",
          "signature_status": "signed",
          "signature_position": "1",
          "created_at": "2023-05-18 00:02:49",
          "auto_signature": 0,
          "notify_to": [],
          "signer_groups": [
            {
              "expiration": null,
              "minimum_required_signers": 1,
              "signable_limit": null,
              "signature_status": "signed",
              "created_at": "2023-05-18 00:02:49",
              "signers": [
                {
                  "signer_control_number": "1",
                  "signature_timestamp": "2023-05-18 00:06:08",
                  "signature_status": "signed",
                  "name": "Savio",
                  "is_group_mandatory": true,
                  "email": "savio.gama@qitech.com.br",
                  "document_number": "43141581827",
                  "created_at": "2023-05-18 00:02:49"
                }
              ]
            }
          ]
        },
        {
          "related_party_key": "e19d038e-5c60-47db-aa44-d4d948592705",
          "name": "Turing",
          "role": "guarantor",
          "signature_status": "signed",
          "signature_position": "1",
          "created_at": "2023-05-18 00:02:49",
          "auto_signature": 0,
          "notify_to": [],
          "signer_groups": [
            {
              "expiration": null,
              "minimum_required_signers": 1,
              "signable_limit": null,
              "signature_status": "signed",
              "created_at": "2023-05-18 00:02:49",
              "signers": [
                {
                  "signer_control_number": "1",
                  "signature_timestamp": "2023-05-18 00:09:44",
                  "signature_status": "signed",
                  "name": "Turing",
                  "is_group_mandatory": true,
                  "email": "teste@gmail.com",
                  "document_number": "56072386105",
                  "created_at": "2023-05-18 00:02:49"
                }
              ]
            }
          ]
        }
      ],
      "documents": [
        {
          "document_key": "40c0940a-3db5-489b-86d6-ebf2717e0a9c",
          "control_number": "9f907aef-04b5-4adb-9f4e-e2c53293c4d7",
          "file_size": 1669,
          "file_url": "https://storage.googleapis.com/certifier-api-storage-sandbox/40c0940a-3db5-489b-86d6-ebf2717e0a9c/teste_of_signed.p7s",
          "name": "teste_of.pdf",
          "original_file_url": "https://storage.googleapis.com/certifier-api-storage-sandbox/40c0940a-3db5-489b-86d6-ebf2717e0a9c/teste_of_original.pdf",
          "status": "signed",
          "signed_file_url": "https://storage.googleapis.com/certifier-api-storage-sandbox/40c0940a-3db5-489b-86d6-ebf2717e0a9c/teste_of_signed.pdf",
          "created_at": "2023-05-18 00:02:49",
          "signatures": [
            {
              "signer": {
                "signer_control_number": "1",
                "signature_timestamp": "2023-05-18 00:06:08",
                "signature_status": "signed",
                "name": "Savio",
                "is_group_mandatory": true,
                "email": "savio.gama@qitech.com.br",
                "document_number": "43141581827",
                "created_at": "2023-05-18 00:02:49"
              },
              "signed_hash": "ldp+t2F5MpgLtA++sIaFxEKXxsVJGnXeco2+cN7v3KSlsvxIwm2xMwQ4JjE8Mm3s93swB0dYBb5m/BBmCuRhzRsopQtVVRgRkdhKSwa5JBWVIgEd7gsb/CMIQqmG4wZLM9XZNUrx60LwfrdAnyjDEg8/JBdoeks3whOeQ1eai04dZyBAHkd6yplnFvi89PhEjLNU93C2CqyjCaSVr5HviLQovlpTxmiPYfRR+cqzlljbYLMqat2LXvjaW2T6AvtYWQRmL3HJ5GmDQytjNXsHBOQFKQ+Nyu+KnEnxg2ofqmNXlhID78YaGFpmZVLT9aLeFflJIFazaHWq6wPq8M5Hqg==",
              "signature_timestamp": "2023-05-18 00:06:08",
              "signature_status": "signed",
              "role": "assignor",
              "created_at": "2023-05-18 00:06:13"
            },
            {
              "signer": {
                "signer_control_number": "1",
                "signature_timestamp": "2023-05-18 00:09:44",
                "signature_status": "signed",
                "name": "Turing",
                "is_group_mandatory": true,
                "email": "teste@gmail.com",
                "document_number": "56072386105",
                "created_at": "2023-05-18 00:02:49"
              },
              "signed_hash": "Djc8YDrgdrHdhpyfP6rmp/6HIPfA1NdzSU3gov1A0PbhrJhW1toOOGZ5VHCM82EHT77fB5G7gmJSIaufU9+Mz9o3pzWqY3GRQe3g9vqO01ejonIf1HOEpkx5Q/9bB23L/OlnzGfrQ2JCzsuExpTzkmG65zKMzNdHFdmz3PtdpssTl3kQNIG00piKxHE5GiRC67uYcZyFDWQbHEeNSczrCodIlKVCtfc7V8dzsfIr+4u6vtkQYhj6GTRYIxcJjgtYJfHnMlgsQUstl0Vyt3tQzfkAq021HmvlMtf/N3WZRZGThLTb1NczEEVnD/AXllQvW08mtOHQKBnVkxB8xQikEw==",
              "signature_timestamp": "2023-05-18 00:09:44",
              "signature_status": "signed",
              "role": "guarantor",
              "created_at": "2023-05-18 00:09:45"
            }
          ]
        }
      ]
    }
  ],
  "watcher_clients": [],
  "zip_file_keys_list": [
    "a1a8cd68-aab4-csbf-1180-dd8ebe395612",
    "cda8cd68-7331-qebf-1280-fw8ebe395676"
  ]
}

```