Limites e retenção
Quanto tempo guardamos o quê, e onde estão os tectos.
Retenção
| O quê | Quanto tempo | Configurável |
|---|---|---|
| Conteúdo da mensagem | O que estiver em Definições, em dias e em número de mensagens | Sim |
| Cronologia de eventos | 30 dias | Não |
| Linha da mensagem | Fica | Não |
| Entregas de webhooks | 30 dias | Não |
| Registo de auditoria | Fica | Não |
O conteúdo tem dois limites e fica guardado só enquanto estiver dentro dos dois: um número de dias, e um número de mensagens. Guardamos o conteúdo das mais recentes até esse número, 50 no máximo, que é também o valor por omissão.
São dois porque dizem coisas diferentes. Os dias dizem durante quanto tempo e nunca quanto: uma conta que envie facturas com PDF anexado pode pôr dez gigabytes por semana em disco sem passar dos sete dias. O número de mensagens é um tecto no espaço, e é também a pergunta que o suporte recebe de facto, que é sempre sobre a mensagem que acabou de sair.
Pôr o número de mensagens a zero quer dizer não guardar nada depois de a mensagem sair. Se o que envias são recuperações de password, códigos de uso único ou links mágicos, é o que deves escolher: um corpo guardado é um link que continua a funcionar para quem conseguir ler a base de dados.
O prazo em dias é fixado em cada mensagem quando ela é criada. Mudar a definição não apaga nada do que já enviaste, e também não prolonga o que já estava marcado para desaparecer. É a única forma de a definição ser previsível: baixar o número não pode apagar retroactivamente o que alguém precisa hoje. O número de mensagens é diferente: baixá-lo é um pedido para guardar menos, e esse aplica-se ao que está guardado.
Enquanto está guardado, o conteúdo está cifrado na base de dados. Isso não nos impede de o ler, impede quem tenha uma cópia da base sem ter a chave: uma cópia de segurança, um dump. É por isso que a resposta a "e se vos roubarem a base de dados?" é esta e não só o prazo.
Quando o prazo passa, o corpo da mensagem é apagado e fica registado que isso aconteceu. A linha, o estado e a cronologia ficam, por isso continuas a poder responder a "esta mensagem foi entregue?" muito depois de o conteúdo ter desaparecido.
Limites da API
| Pedidos por minuto, por chave | 600 |
| Mensagens por hora, por conta | 2 000 |
| Mensagens por dia, por conta | 20 000 |
| Onde vês o que falta | Resumo do painel, GET /v1/me, cabeçalhos de cada 202 |
Tamanho de uma mensagem em raw |
25 MB |
| Destinatários por mensagem | 1 |
| Cabeçalhos por mensagem | sem limite fixo, 998 caracteres cada |
Linhas por página (limit) |
200, 50 por omissão |
O limite de 25 MB é o mesmo que quase todos os destinos praticam. Uma mensagem maior passaria aqui para ser recusada lá, depois de já ter gasto a tentativa.
Limites das supressões
| Linhas por importação | 50 000 |
| Tamanho do ficheiro | 10 MB |
| Endereços na lista | sem limite |
Webhooks
| Tentativas por evento | 7, ao longo de ~33 horas |
| Tempo de espera por resposta | 10 segundos |
| Falhas seguidas até desactivar | 10 |
| Resposta guardada | primeiros 4 KB |
Guardamos só os primeiros 4 KB da resposta do teu endpoint. Um endpoint avariado que devolva uma página de erro em HTML a cada tentativa encheria a tabela sem acrescentar nada ao diagnóstico.
Onde os dados vivem
Toda a infraestrutura está na União Europeia. O painel não carrega nada de redes externas: os tipos de letra, os ícones e a referência da API são servidos por nós, o que também quer dizer que o painel funciona atrás de um proxy de empresa que bloqueie CDNs.
Cada conta tem a sua própria base de dados. Não é uma coluna tenant_id numa
tabela partilhada: são bases separadas, o que torna impossível uma consulta mal
escrita devolver dados de outro cliente.
O que não guardamos
- A tua chave de API. Guardamos um hash e o prefixo.
- O segredo de assinatura de um webhook em claro, depois de to mostrarmos.
- O conteúdo das mensagens para além do prazo de retenção.
Se precisares de mais
Os limites acima são os do plano base. Se o teu volume ou a tua retenção precisarem de outros números, fala connosco: quase todos são configuração e não arquitectura.