# QI Tech — Lending-as-a-Service › Gerenciamento de notificações

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

Índice:
- Não me perturbe (/documentation/emissao_de_divida/nao_me_perturbe)
- Configuração de notificação (/documentation/notificacoes/configuracao_de_notificacao)
- Configuração de template (/documentation/notificacoes/configuracao_template)
- Gerenciamento de Notificações Personalizadas (/documentation/notificacoes/introducao)
- Templates (/documentation/notificacoes/template)
- Eventos (/documentation/notificacoes/tipos_de_evento)

---

# Não me perturbe

URL: /documentation/emissao_de_divida/nao_me_perturbe

O "Não Me Perturbe" é uma plataforma criada pelas operadoras de telecomunicações que permite aos consumidores registrarem seus números de telefone para não receberem chamadas de telemarketing. No contexto do crédito consignado, sua utilização foi incorporada como uma das diretrizes da Autoregulação do Crédito Consignado, promovida por entidades como a Febraban, ABBC e CNF, com o objetivo de aumentar a proteção do consumidor e coibir práticas abusivas na oferta de crédito.

Como instituição financeira aderente ao "Não Me Perturbe", implementamos um mecanismo de verificação prévia para garantir que não sejam realizadas ligações ativas para números de telefone cadastrados na lista de bloqueio. Por meio desta API, é possível consultar se um número específico está inscrito na base do "Não Me Perturbe" antes de iniciar qualquer tentativa de contato com o tomador de crédito.

Essa checagem é essencial para assegurar o cumprimento das boas práticas de conduta comercial e o respeito à privacidade dos consumidores.

:::caution Atenção
É necessário realizar a consulta antes de realizar a ligação com o tomador.
:::

## Como usar

Para realizar a consulta, é necessário enviar o número de telefone do tomador para o endpoint abaixo.

ENDPOINT /do_not_disturb?phone_number=11999999999
MÉTODO GET

:::caution Atenção
O número de telefone deve ser enviado no formato DDD + Número, por exemplo: 11999999999.
:::

### Response

STATUS 200 - Número encontrado na lista do "Não me perturbe"
STATUS 404 - Número não encontrado na lista do "Não me perturbe"

:::caution Atenção
Caso o número seja encontrado na lista do "Não me perturbe", a ligação não deverá ser realizada.
:::

---

# Configuração de notificação

URL: /documentation/notificacoes/configuracao_de_notificacao

Aqui demostraremos como você poderá escolher quais tipos de eventos serão notificados e por quais meios a notificação ocorrerá.

:::warning Aviso
Caso não exista uma configuração de notificação para um evento, você não receberá notificações do mesmo.
::: 

## Criação de configuração de notificação

## Request

ENDPOINT /notification/notification_configuration
MÉTODO POST

Request Body

```json
{
    "callback": true,
    "email": true,
    "event_type": "account_transaction",
    "sms": true
}
```

## Response

STATUS 201

Response Body

```json
{"notification_configuration_key":  "69850ae3-28bc-4779-a871-e73e1e883413"}
```

## Listando configurações de notificação

## Request

ENDPOINT /notification/notification_configurations
MÉTODO GET

## Response

STATUS 200

Response Body

```json
{
  "data": [{
    "event_type": "account_request",
    "sms_template": "b35ed5fc-fdda-4618-84e6-b49876dabf23",
    "template_configuration_key": "480521cc-b0c9-4938-bd11-0000be11c66b"
  }],
  "pagination": {
        "current_page": 1,
        "next_page": null,
        "rows_per_page": 1
    }
}
```

## Atualização de configuração de notificação

## Request

ENDPOINT /notification/notification_configuration/ NOTIFICATION_CONFIGURATION_KEY
MÉTODO PUT

Request Body

```json
{
    "callback": true,
    "email": true,
    "event_type": "account_transaction",
    "sms": false
}
```

## Response

STATUS 200

Response Body

```json
{}
```

STATUS 4XX

Response Body: Error

```json
{
  "title": "titulo",
  "description": "description in English",
  "translation": "descrição em portugues",
  "code": "codigo",
  "extra_fields": {}
}
```

| Código HTTP | Código QI<br/>`code` | Título<br/>`title`                    | Descrição (eng)<br/>`Description`               | Descrição (ptbr)<br/>`translation`                                   |
|-------------|----------------------|---------------------------------------|-------------------------------------------------|----------------------------------------------------------------------|
| 400         | PMB000026            | Invalid notification for event type   | Invalid notification method for event type      | Método de notificação inválido para tipo de evento                   |

---

# Configuração de template

URL: /documentation/notificacoes/configuracao_template

Esta configuração permite definir templates de SMS e e-mail para um evento.

## Criação de configuração de template

## Request

ENDPOINT /notification/template_configuration
MÉTODO POST

Request Body

```json
{
    "event_type": "bank_slip",
    "email_template_key": "e5c337db-dacc-4f1d-8a3e-919628640dd5"
}
``` 

## Response

STATUS 201

Response Body

```json
{"template_configuration_key": "e5c337db-dacc-4f1d-8a3e-919628640d51"}
```

Response Body: Error

```json
{
  "title": "titulo",
  "description": "description in English",
  "translation": "descrição em portugues",
  "code": "codigo",
  "extra_fields": {}
}
```

| Código HTTP | Código QI<br/>`code` | Título<br/>`title` | Descrição (eng)<br/>`Description`                                       | Descrição (ptbr)<br/>`translation`                                 |
|-------------|----------------------|--------------------|-------------------------------------------------------------------------|--------------------------------------------------------------------|
| 400         | PMB000023            | Bad Request        | Already exists an template configuration to this person and event type  | Já existe um template configuration para essa pessoa e event type  |

## Listagem de configuração de template

## Request

ENDPOINT /notification/template_configurations
MÉTODO GET

## Response

STATUS 200

Response Body

```json
{
    "data": [
        {
            "event_type": "bank_slip",
            "sms_template": null,
            "template_configuration_key": "e5c337db-dacc-4f1d-8a3e-919628640d51",
            "email_template": "e5c337db-dacc-4f1d-8a3e-919628640dd5"
        },
        {
            "event_type": "account_transaction",
            "sms_template": null,
            "template_configuration_key": "e5c337db-dacc-4f1d-8a3e-919628640ds1",
            "email_template": "e5c337db-dacc-4f1d-8a3e-919628640dd5"
        }
    ],
    "pagination": {
        "current_page": 0,
        "next_page": null,
        "rows_per_page": 10
    }
}
```

## Atualização de configuração de template

## Request

ENDPOINT /notification/template_configuration/ TEMPLATE_CONFIGURATION_KEY
MÉTODO PUT

Request Body

```json
{
    "event_type": "bank_slip",
    "email_template_key": "e5c337db-dacc-4f1d-8a3e-919628640dd5"
}
``` 

## Response

STATUS 201

Response Body

```json
{}
```

STATUS 4XX

Response Body: Error

```json
{
  "title": "titulo",
  "description": "description in English",
  "translation": "descrição em portugues",
  "code": "codigo",
  "extra_fields": {}
}
```

| Código HTTP | Código QI<br/>`code` | Título<br/>`title` | Descrição (eng)<br/>`Description`        | Descrição (ptbr)<br/>`translation`                     |
|-------------|----------------------|--------------------|------------------------------------------|--------------------------------------------------------|
| 400         | PMB000022            | Bad Request        | The event type (event type) is not valid | O tipo de evento (tipo de evento) enviado não é válido |
| 404         | PMB000024            | Not Found          | Template configuration not found         | Configuração de template não encontrada                |

---

# Gerenciamento de Notificações Personalizadas

URL: /documentation/notificacoes/introducao

Nossa plataforma oferece uma gama abrangente de opções de notificação, incluindo e-mails, mensagens SMS e webhooks, permitindo que os usuários escolham o canal que melhor se adapta às suas necessidades e preferências. Além disso, proporcionamos a capacidade de personalização por meio de templates para e-mails e SMS, garantindo que as notificações estejam alinhadas com a identidade e estilo de comunicação do usuário.

Um dos aspectos mais notáveis do nosso sistema é a capacidade de os usuários definirem quando desejam receber notificações para eventos específicos. Essa flexibilidade permite uma gestão mais eficiente do fluxo de informações, garantindo que os usuários recebam apenas as notificações mais relevantes no momento mais oportuno.

Nesta seção de documentação, detalharemos os diferentes aspectos do Gerenciamento de Notificações Personalizadas, desde a configuração inicial até a personalização avançada, proporcionando aos usuários uma compreensão abrangente de como aproveitar ao máximo essa funcionalidade essencial em nossa plataforma.

---

# Templates

URL: /documentation/notificacoes/template

Aqui veremos como criar templates do tipo e-mail e sms, esses templates permitirão personalizar as mensagens de texto e email enviados em cada tipo de evento.

Caso não seja configurado e a configuração esteja habilitada será enviado o template padrão da nossa plataforma.

Obs: onde você desejar inserir uma variável customizada basta adicionar no texto '[nome_da_variável]' 

## Criação de template SMS

## Request

ENDPOINT /notification/template
MÉTODO POST

Request Body

```json
{
    "template_type": "sms",
    "template": "Olá seu token e [name]"
}
```

### Body Params

| Campo | Tipo | Descrição | Caracteres |
|---|---| ---| ---|
| `template_type` *|  string | Tipo do template -> Valor default `sms` | - | |
| `template` * |  string | Texto do sms | 160 |

## Response

STATUS 201

Response Body

```json
{
    "template_key": "17f49953-29a1-439c-a6be-db37a32e2746"
}
```

## Criação de template E-mail

:::warning Aviso
O template de email se trata de um documento HTML compátivel com html para email.

O mesmo deve ser encodado em base64.
::: 

## Request

ENDPOINT /notification/template
MÉTODO POST

Request Body

```json
{
    "template_type": "email",
    "subject": "Título do email",
    "template": "PCFET0NUWVBFIGh0bWw+CjxodG1sIHhtbG5zOnY9InVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206dm1sIiB4bWxuczpvPSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOm9mZmljZTpvZmZpY2UiIGxhbmc9ImVuIj4KICA8aGVhZD4KICAgIDx0aXRsZT48L3RpdGxlPgogICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgogICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAiPgogICAgPCEtLVtpZiBtc29dPgoJCQkJPHhtbD4KCQkJCQk8bzpPZmZpY2VEb2N1bWVudFNldHRpbmdzPgoJCQkJCQk8bzpQaXhlbHNQZXJJbmNoPjk2PC9vOlBpeGVsc1BlckluY2g+CgkJCQkJCTxvOkFsbG93UE5HLz4KCQkJCQk8L286T2ZmaWNlRG9jdW1lbnRTZXR0aW5ncz4KCQkJCTwveG1sPgoJCQkJPCFbZW5kaWZdLS0+CiAgICA8IS0tW2lmICFtc29dPgoJCQkJPCEtLT4KICAgIDxsaW5rIGhyZWY9Imh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT1Nb250c2VycmF0IiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KICAgIDwhLS0KCQkJCQk8IVtlbmRpZl0tLT4KICAgIDxzdHlsZT4KICAgICAgKiB7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgfQoKICAgICAgYm9keSB7CiAgICAgICAgbWFyZ2luOiAwOwogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgIH0KCiAgICAgIGFbeC1hcHBsZS1kYXRhLWRldGVjdG9yc10gewogICAgICAgIGNvbG9yOiBpbmhlcml0ICFpbXBvcnRhbnQ7CiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBpbmhlcml0ICFpbXBvcnRhbnQ7CiAgICAgIH0KCiAgICAgICNNZXNzYWdlVmlld0JvZHkgYSB7CiAgICAgICAgY29sb3I6IGluaGVyaXQ7CiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICB9CgogICAgICBwIHsKICAgICAgICBsaW5lLWhlaWdodDogaW5oZXJpdAogICAgICB9CgogICAgICBAbWVkaWEgKG1heC13aWR0aDo2MjBweCkgewogICAgICAgIC5yb3ctY29udGVudCB7CiAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLnN0YWNrIC5jb2x1bW4gewogICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICBkaXNwbGF5OiB3aXRoOwogICAgICAgIH0KICAgICAgfQogICAgPC9zdHlsZT4KICA8L2hlYWQ+CiAgPGJvZHkgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IG1hcmdpbjogMDsgcGFkZGluZzogMDsgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiBub25lOyB0ZXh0LXNpemUtYWRqdXN0OiBub25lOyI+CiAgICA8dGFibGUgY2xhc3M9Im5sLWNvbnRhaW5lciIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiByb2xlPSJwcmVzZW50YXRpb24iIHN0eWxlPSJtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsiPgogICAgICA8dGJvZHk+CiAgICAgICAgPHRyPgogICAgICAgICAgPHRkPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InJvdyByb3ctMSIgYWxpZ249ImNlbnRlciIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiByb2xlPSJwcmVzZW50YXRpb24iIHN0eWxlPSJtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsiPgogICAgICAgICAgICAgIDx0Ym9keT4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0icm93LWNvbnRlbnQgc3RhY2siIGFsaWduPSJjZW50ZXIiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiByb2xlPSJwcmVzZW50YXRpb24iIHN0eWxlPSJtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgY29sb3I6ICMwMDAwMDA7IHdpZHRoOiA2MDBweDsiIHdpZHRoPSI2MDAiPgogICAgICAgICAgICAgICAgICAgICAgPHRib2R5PgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2x1bW4iIHdpZHRoPSIxMDAlIiBzdHlsZT0ibXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IGZvbnQtd2VpZ2h0OiA0MDA7IHRleHQtYWxpZ246IGxlZnQ7IHZlcnRpY2FsLWFsaWduOiB0b3A7IHBhZGRpbmctdG9wOiA1cHg7IHBhZGRpbmctYm90dG9tOiA1cHg7IGJvcmRlci10b3A6IDBweDsgYm9yZGVyLXJpZ2h0OiAwcHg7IGJvcmRlci1ib3R0b206IDBweDsgYm9yZGVyLWxlZnQ6IDBweDsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJpbWFnZV9ibG9jayIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjIwIiBjZWxsc3BhY2luZz0iMCIgcm9sZT0icHJlc2VudGF0aW9uIiBzdHlsZT0ibXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgYWxpZ249ImNlbnRlciIgc3R5bGU9ImxpbmUtaGVpZ2h0OjEwcHgiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly85bzM3Lm1qdC5sdS90cGxpbWcvOW8zNy9iLzF5ejdpL2hrM3NwLnBuZyIgc3R5bGU9ImRpc3BsYXk6IGJsb2NrOyBoZWlnaHQ6IGF1dG87IGJvcmRlcjogMDsgd2lkdGg6IDEyMHB4OyBtYXgtd2lkdGg6IDEwMCU7IiB3aWR0aD0iMTIwIiBhbHQ9InBsYWNlaG9sZGVyIGxvZ28iIHRpdGxlPSJwbGFjZWhvbGRlciBsb2dvIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0icm93IHJvdy0yIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHJvbGU9InByZXNlbnRhdGlvbiIgc3R5bGU9Im1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyI+CiAgICAgICAgICAgICAgPHRib2R5PgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJyb3ctY29udGVudCBzdGFjayIgYWxpZ249ImNlbnRlciIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHJvbGU9InByZXNlbnRhdGlvbiIgc3R5bGU9Im1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBjb2xvcjogIzAwMDAwMDsgd2lkdGg6IDYwMHB4OyIgd2lkdGg9IjYwMCI+CiAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbHVtbiIgd2lkdGg9IjEwMCUiIHN0eWxlPSJtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgZm9udC13ZWlnaHQ6IDQwMDsgdGV4dC1hbGlnbjogbGVmdDsgdmVydGljYWwtYWxpZ246IHRvcDsgcGFkZGluZy10b3A6IDVweDsgcGFkZGluZy1ib3R0b206IDVweDsgYm9yZGVyLXRvcDogMHB4OyBib3JkZXItcmlnaHQ6IDBweDsgYm9yZGVyLWJvdHRvbTogMHB4OyBib3JkZXItbGVmdDogMHB4OyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9ImhlYWRpbmdfYmxvY2siIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgcm9sZT0icHJlc2VudGF0aW9uIiBzdHlsZT0ibXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT0icGFkZGluZy1ib3R0b206MjBweDtwYWRkaW5nLWxlZnQ6MjBweDtwYWRkaW5nLXJpZ2h0OjIwcHg7cGFkZGluZy10b3A6NjBweDt0ZXh0LWFsaWduOmNlbnRlcjt3aWR0aDoxMDAlOyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDEgc3R5bGU9Im1hcmdpbjogMDsgY29sb3I6ICMwMDAwMDA7IGRpcmVjdGlvbjogbHRyOyBmb250LWZhbWlseTogTW9udHNlcnJhdCwgVHJlYnVjaGV0IE1TLCBMdWNpZGEgR3JhbmRlLCBMdWNpZGEgU2FucyBVbmljb2RlLCBMdWNpZGEgU2FucywgVGFob21hLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDI1cHg7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IGxpbmUtaGVpZ2h0OiAxMjAlOyB0ZXh0LWFsaWduOiBjZW50ZXI7IG1hcmdpbi10b3A6IDA7IG1hcmdpbi1ib3R0b206IDA7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz5NQU5VVEVOw4fDg08gUFJPR1JBTUFEQTwvc3Ryb25nPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0ZXh0X2Jsb2NrIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHJvbGU9InByZXNlbnRhdGlvbiIgc3R5bGU9Im1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyB3b3JkLWJyZWFrOiBicmVhay13b3JkOyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9InBhZGRpbmctYm90dG9tOjgwcHg7cGFkZGluZy1sZWZ0OjIwcHg7cGFkZGluZy1yaWdodDoyMHB4O3BhZGRpbmctdG9wOjYwcHg7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0iZm9udC1zaXplOiAxNnB4OyBtc28tbGluZS1oZWlnaHQtYWx0OiAxNi44cHg7IGNvbG9yOiAjMDAwMDAwOyBsaW5lLWhlaWdodDogMS4yOyBmb250LWZhbWlseTogTW9udHNlcnJhdCwgVHJlYnVjaGV0IE1TLCBMdWNpZGEgR3JhbmRlLCBMdWNpZGEgU2FucyBVbmljb2RlLCBMdWNpZGEgU2FucywgVGFob21hLCBzYW5zLXNlcmlmOyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgc3R5bGU9Im1hcmdpbjogMDsgZm9udC1zaXplOiAxOHB4OyB0ZXh0LWFsaWduOiBsZWZ0OyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnI+SW5mb3JtYW1vcyBxdWUgbm8gZGlhIDxiPjE4IGRlIGZldmVyZWlybyAoZG9taW5nbyk8L2I+LCBhIFFJIFRlY2ggcmVhbGl6YXLDoSB1bWEgbWFudXRlbsOnw6NvIGdlcmFsIGVtIHRvZG9zIG9zIHNldXMgc2lzdGVtYXMgZSBzZXJ2acOnb3MuIEVzdGEgbWFudXRlbsOnw6NvIHRlcsOhIHVtYSBkdXJhw6fDo28gZGUgdHLDqnMgaG9yYXMsIHRlbmRvIHNldSA8c3Ryb25nPmluw61jaW8gw6BzIDAyOjAwICgyQU0pPC9zdHJvbmc+IGUgc2V1IDxzdHJvbmc+dMOpcm1pbm8gw6BzIDA1OjAwICg1QU0pPC9zdHJvbmc+LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT0ibWFyZ2luOiAwOyBmb250LXNpemU6IDE4cHg7IHRleHQtYWxpZ246IGxlZnQ7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxicj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+IFNlcnZpw6dvcyA8c3Ryb25nPmluZGlzcG9uw612ZWlzPC9zdHJvbmc+IGR1cmFudGUgYSBtYW5udXRlbsOnw6NvOiA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPlRvZG9zIHNlcnZpw6dvcyByZWxhY2lvbmFkb3MgYW8gUGl4W25hbWVdPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT5QbGF0YWZvcm1hIDxzdHJvbmc+cWl0ZWNoLmFwcDwvc3Ryb25nPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+VG9kYXMgYXMgQVBJczwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+QVBQIFFpIENvbnRhPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIHN0eWxlPSJtYXJnaW46IDA7IGZvbnQtc2l6ZTogMTZweDsgdGV4dC1hbGlnbjogbGVmdDsgbXNvLWxpbmUtaGVpZ2h0LWFsdDogMTYuOHB4OyI+Jm5ic3A7PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIHN0eWxlPSJtYXJnaW46IDA7IGZvbnQtc2l6ZTogMTZweDsgdGV4dC1hbGlnbjogbGVmdDsiPkF0ZW5jaW9zYW1lbnRlLDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InJvdyByb3ctMyIgYWxpZ249ImNlbnRlciIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiByb2xlPSJwcmVzZW50YXRpb24iIHN0eWxlPSJtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsiPgogICAgICAgICAgICAgIDx0Ym9keT4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0icm93LWNvbnRlbnQgc3RhY2siIGFsaWduPSJjZW50ZXIiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiByb2xlPSJwcmVzZW50YXRpb24iIHN0eWxlPSJtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgY29sb3I6ICNmZmY7IHdpZHRoOiA2MDBweDsiIHdpZHRoPSI2MDAiPgogICAgICAgICAgICAgICAgICAgICAgPHRib2R5PgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2x1bW4iIHdpZHRoPSIxMDAlIiBzdHlsZT0ibXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IGZvbnQtd2VpZ2h0OiA0MDA7IHRleHQtYWxpZ246IGxlZnQ7IHZlcnRpY2FsLWFsaWduOiB0b3A7IHBhZGRpbmctbGVmdDogMjBweDsgcGFkZGluZy1yaWdodDogMjBweDsgcGFkZGluZy10b3A6IDBweDsgcGFkZGluZy1ib3R0b206IDEwcHg7IGJvcmRlci10b3A6IDBweDsgYm9yZGVyLXJpZ2h0OiAwcHg7IGJvcmRlci1ib3R0b206IDBweDsgYm9yZGVyLWxlZnQ6IDBweDsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJpbWFnZV9ibG9jayIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiByb2xlPSJwcmVzZW50YXRpb24iIHN0eWxlPSJtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJ3aWR0aDoxMDAlO3BhZGRpbmctcmlnaHQ6MHB4O3BhZGRpbmctbGVmdDowcHg7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgYWxpZ249ImNlbnRlciIgc3R5bGU9ImxpbmUtaGVpZ2h0OjEwcHgiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly85bzM3Lm1qdC5sdS90cGxpbWcvOW8zNy9iLzF5ejdpL2hrM3NwLnBuZyIgc3R5bGU9ImRpc3BsYXk6IGJsb2NrOyBoZWlnaHQ6IGF1dG87IGJvcmRlcjogMDsgd2lkdGg6IDEyNnB4OyBtYXgtd2lkdGg6IDEwMCU7IiB3aWR0aD0iMTI2Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0icm93IHJvdy00IiBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHJvbGU9InByZXNlbnRhdGlvbiIgc3R5bGU9Im1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyI+CiAgICAgICAgICAgICAgPHRib2R5PgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJyb3ctY29udGVudCBzdGFjayIgYWxpZ249ImNlbnRlciIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHJvbGU9InByZXNlbnRhdGlvbiIgc3R5bGU9Im1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBjb2xvcjogI2ZmZjsgd2lkdGg6IDYwMHB4OyIgd2lkdGg9IjYwMCI+CiAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbHVtbiIgd2lkdGg9IjEwMCUiIHN0eWxlPSJtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgZm9udC13ZWlnaHQ6IDQwMDsgdGV4dC1hbGlnbjogbGVmdDsgdmVydGljYWwtYWxpZ246IHRvcDsgcGFkZGluZy10b3A6IDVweDsgcGFkZGluZy1ib3R0b206IDVweDsgYm9yZGVyLXRvcDogMHB4OyBib3JkZXItcmlnaHQ6IDBweDsgYm9yZGVyLWJvdHRvbTogMHB4OyBib3JkZXItbGVmdDogMHB4OyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9Imh0bWxfYmxvY2siIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgcm9sZT0icHJlc2VudGF0aW9uIiBzdHlsZT0ibXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5Ok1vbnRzZXJyYXQsIFRyZWJ1Y2hldCBNUywgTHVjaWRhIEdyYW5kZSwgTHVjaWRhIFNhbnMgVW5pY29kZSwgTHVjaWRhIFNhbnMsIFRhaG9tYSwgc2Fucy1zZXJpZjt0ZXh0LWFsaWduOmNlbnRlcjsiIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJoZWlnaHQ6MzBweDsiPiZuYnNwOzwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgIDwvdGQ+CiAgICAgICAgPC90cj4KICAgICAgPC90Ym9keT4KICAgIDwvdGFibGU+CiAgICA8IS0tIEVuZCAtLT4KICAgIDxkaXYgc3R5bGU9ImJhY2tncm91bmQ6I2ZmZmZmZjtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7bWFyZ2luOjBweCBhdXRvO21heC13aWR0aDo2MDBweDsiPgogICAgICA8dGFibGUgYWxpZ249ImNlbnRlciIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHJvbGU9InByZXNlbnRhdGlvbiIgc3R5bGU9ImJhY2tncm91bmQ6I2ZmZmZmZjtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7d2lkdGg6MTAwJTsiPgogICAgICAgIDx0Ym9keT4KICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkIHN0eWxlPSJib3JkZXI6MHB4IHNvbGlkICNmZmZmZmY7ZGlyZWN0aW9uOmx0cjtmb250LXNpemU6MHB4O3BhZGRpbmc6MHB4IDMwcHggMjVweCAzMHB4O3BhZGRpbmctYm90dG9tOjI1cHg7cGFkZGluZy1sZWZ0OjMwcHg7cGFkZGluZy1yaWdodDozMHB4O3BhZGRpbmctdG9wOjBweDt0ZXh0LWFsaWduOmNlbnRlcjsiPgogICAgICAgICAgICAgIDwhLS1baWYgbXNvIHwgSUVdPgoJCQkJCQkJCQkJCQkJCQk8dGFibGUgcm9sZT0icHJlc2VudGF0aW9uIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CgkJCQkJCQkJCQkJCQkJCQk8dHI+CgkJCQkJCQkJCQkJCQkJCQkJPHRkIGNsYXNzPSIiIHN0eWxlPSJ2ZXJ0aWNhbC1hbGlnbjp0b3A7d2lkdGg6NTQwcHg7IiA+CgkJCQkJCQkJCQkJCQkJCQkJCTwhW2VuZGlmXS0tPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1qLWNvbHVtbi1wZXItMTAwIG1qLW91dGxvb2stZ3JvdXAtZml4IiBzdHlsZT0iZm9udC1zaXplOjBweDt0ZXh0LWFsaWduOmxlZnQ7ZGlyZWN0aW9uOmx0cjtkaXNwbGF5OmlubGluZS1ibG9jazt2ZXJ0aWNhbC1hbGlnbjp0b3A7d2lkdGg6MTAwJTsiPgogICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiByb2xlPSJwcmVzZW50YXRpb24iIHN0eWxlPSJ2ZXJ0aWNhbC1hbGlnbjp0b3A7IiB3aWR0aD0iMTAwJSI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHN0eWxlPSJmb250LXNpemU6MHB4O3BhZGRpbmc6MTBweCAyNXB4O3BhZGRpbmctdG9wOjBweDtwYWRkaW5nLWJvdHRvbTowcHg7d29yZC1icmVhazpicmVhay13b3JkOyI+CiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJmb250LWZhbWlseTpBcmlhbCwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtsZXR0ZXItc3BhY2luZzpub3JtYWw7bGluZS1oZWlnaHQ6MTt0ZXh0LWFsaWduOmxlZnQ7Y29sb3I6IzAwMDAwMDsiPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0idGV4dC1idWlsZC1jb250ZW50IiBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyBtYXJnaW46IDEwcHggMDsgbWFyZ2luLXRvcDogMTBweDsiIGRhdGEtdGVzdGlkPSIyNFlfYk1SSW9JIj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT0iY29sb3I6IzE5MjQ3RTtmb250LWZhbWlseTpSb2JvdG87Zm9udC1zaXplOjE0cHg7Ij48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InRleHQtYnVpbGQtY29udGVudCIgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsgbWFyZ2luOiAxMHB4IDA7IG1hcmdpbi1ib3R0b206IDEwcHg7IiBkYXRhLXRlc3RpZD0iMjRZX2JNUklvSSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImNvbG9yOiMxOTI0N0U7Zm9udC1mYW1pbHk6Um9ib3RvO2ZvbnQtc2l6ZToxNHB4OyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbW1VOU1VCX0xJTktfRU5dXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwhLS1baWYgbXNvIHwgSUVdPgoJCQkJCQkJCQkJCQkJCQkJCTwvdGQ+CgkJCQkJCQkJCQkJCQkJCQk8L3RyPgoJCQkJCQkJCQkJCQkJCQk8L3RhYmxlPgoJCQkJCQkJCQkJCQkJCQk8IVtlbmRpZl0tLT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgPC90Ym9keT4KICAgICAgPC90YWJsZT4KICAgIDwvZGl2PgogICAgPCEtLVtpZiBtc28gfCBJRV0+CgkJCQkJCQkJCTwvdGQ+CgkJCQkJCQkJPC90cj4KCQkJCQkJCTwvdGFibGU+CgkJCQkJCQk8IVtlbmRpZl0tLT4KICA8L2JvZHk+CjwvaHRtbD4="
}
```

### Body Params

| Campo | Tipo | Descrição | Caracteres |
|---|---| ---| ---|
| `template_type` *|  string | Tipo do template -> Valor default `email` | - | |
| `template` * |  string | base64 do template | - |
| `subject` * |  string | Título do email | 80 |

## Response

STATUS 201

Response Body

```json
{
    "template_key": "17f49953-29a1-439c-a6be-db37a32e2746"
}
```

## Listando templates

## Request

ENDPOINT /notification/templates
MÉTODO GET

## Response

STATUS 200

Response Body

```json
{
  "data": [{
    "template_key": "b35ed5fc-fdda-4618-84e6-b49876dabf24",
    "template_type": "sms",
    "template_status": "480521cc-b0c9-4938-bd11-0000be11c66b",
    "template": "Seu código é [code]"
  }],
  "pagination": {
        "current_page": 1,
        "next_page": null,
        "rows_per_page": 1
    }
}
```

---

# Eventos

URL: /documentation/notificacoes/tipos_de_evento

Os Eventos disparam notificações, com a listagem de eventos você adiquire o conhecimento sobre quais tipos de notificação poderá receber e quais os meios de recebimento (webhook, e-mail e sms).

Os eventos posssuem os attributos allowed_sms, allowed_email e allowed_callback que indicam a possibilidade de envio de sms, e-mail ou callback respetivamente, além disso no caso de possibilidade de envio de email e sms podem conter o allowed_custom_vars que indicam as variáveis que podem ser substituidas no template utilizando o formato '[allowed_custom_var]' que será substituido pelo seu valor correspondente no envio.

## Consulta de eventos

## Request

ENDPOINT /notification/event_types
MÉTODO GET

### Query Params

| Campo       | Tipo   | Descrição                                    |
|-------------|--------|----------------------------------------------|
| `page`      | number | Página a ser recuperada, valor defaul 0      |
| `page_size` | number | Número de itens a ser recuperado, default 10 |

## Response

STATUS 200

Response Body: Lista de tipos de eventos

```json
{
    "data": [
        {
            "event_type": "incoming_ted",
            "allow_sms": false,
            "allow_email": true,
            "allow_callback": true,
            "allowed_custom_vars": ["total_amount", "target_account_number", "target_document_number"]
        },
        {
            "event_type": "outgoing_ted",
            "allow_sms": true,
            "allow_email": true,
            "allow_callback": false,
            "allowed_custom_vars": null
        }
    ],
    "pagination": {
        "current_page": 1,
        "next_page": 2,
        "rows_per_page": 2
    }
}

```