Policies
As políticas (policies) são uma ferramenta para gerenciar dois aspectos do processo de recebimento e distribuição de eventos:
- 
autorização de publicadores: as validações de segurança garantem que apenas publicadores autorizados possam enviar eventos para o Events Hub;
 - 
entrega de eventos: as retentativas automáticas que o sistema deve fazer caso o primeiro envio de um evento falhe.
 
Listagem de políticas
A tela Policies exibe todas as políticas existentes por ordem de criação. No campo Order by você seleciona a ordenação que deseja entre:
- 
Creation (desc): padrão. Lista as políticas da data de criação mais recente para a mais antiga.
 - 
Creation (asc): lista as políticas da data de criação mais antiga para a mais recente.
 - 
Name (desc): lista as políticas por ordem alfabética, do final para o começo.
 - 
Name (asc): lista as políticas por ordem alfabética, do começo para o final.
 
Você também pode buscar políticas pelo nome através do campo NAME.
A coluna DETAILS contém o ícone 
, que exibe as configurações da política selecionada.
A coluna ACTIONS contém ícones para editar 
 e excluir 
 políticas.

Opções de segurança
Para autorização de publicadores, são usados interceptores. Existem cinco tipos disponíveis:
- 
Access Token Validation
 - 
Client ID Validation
 - 
OAuth Validation
 - 
JWT Validation
 - 
IP Filtering Validation
 
Os endpoints de autorização são definidos por contexto na tela Authorizations. Nela, há duas seções:
- 
OAUTH: para os interceptores OAuth Validation, Client ID Validation e Access Token Validation;
 - 
JWT: para o interceptor JWT Validation.
 
| 
 A utilização de interceptores de segurança é opcional. No entanto, se adicionar policies ao seu handler, você precisa configurar a URL do Authorization vinculado ao interceptor.
Com excessão do "IP Filtering Validation", todos dependem dessa configuração para funcionar.  | 
Tentativas automáticas de entrega
Quando a primeira tentativa de entrega de evento a um subscritor falha, o Events Hub pode tentar novamente o envio, seguindo as configurações cadastradas. Essas configurações incluem:
- 
número de tentativas (até 10 vezes);
 - 
código de estado HTTP que aciona uma nova tentativa;
 - 
tempo limite da requisição.
 
O Events Hub tenta reenviar novamente os eventos até obter sucesso ou atingir o número de tentativas automáticas definido nas configurações. Para aumentar as chances de entrega, usamos o algoritmo exponential backoff. Isso significa que o sistema espera um tempo cada vez maior entre as tentativas, evitando congestionamento na rede.
Se todas as tentativas automáticas falharem, você pode tentar a entrega manual através da tela Delivery Retry.
Criando uma política
Para criar uma nova política:
- 
clique no botão +;
 - 
preencha Name e Description (opcional). O nome deve ser único. Não é possível criar duas políticas com o mesmo nome;
 - 
Se quiser, configure opções de segurança e entrega para a política. Veja abaixo:
 
Segurança
A seção HANDLER PUBLISHER SECURITY FLOW inclui os interceptores de segurança que podem ser adicionados ao fluxo.
| Veja como usar a Sensedia API Platform para prover a autorização de publicadores. | 
Escolha o interceptor que deseja aplicar clicando no ícone 
 ao lado nome do interceptor. Você pode adicionar mais de um:
- 
Access Token Validation: valida um access token passado na requisição. Ao selecioná-lo, você deve informar:
- 
Location: onde o access token será passado, podendo ser any (todas as opções serão selecionadas); cookie; header; header ou cookie; ou query param.
 - 
Name: o nome com o qual o valor do access token será passado.
 
 - 
 - 
Client ID Validation: valida um client ID passado na requisição. Ao selecioná-lo, você deve informar:
- 
Location: onde o client ID será passado, podendo ser any (todas as opções serão selecionadas); cookie; header; header ou cookie; ou query param.
 - 
Name: o nome com o qual o valor do client ID será passado.

 
 - 
 - 
IP Filtering Validation: lista de IPs que podem ou não enviar requisições.
- 
No campo List Type, você pode escolher entre:
- 
Block List: lista de IPs que terão suas requisições bloqueadas; ou
 - 
Allow List: lista dos únicos IPs que poderão enviar requisições.
 
 - 
 - 
IP List: para incluir os IPs. Você deve separá-los por vírgula.

 
 - 
 - 
OAuth Validation: valida
client_ideaccess_token_passados no header das requisições.
A URL que provê a validação deve ser incluída na página Authorizations e não há campos para cadastro.
 - 
JWT Validation: valida o token JWT (que deve ser enviado no padrão Bearer) passado na requisição.
A URL que provê validação deve ser incluída na página Authorizations. Ao selecionar este interceptor, você deve informar:- 
Location: onde o token será passado, podendo ser header; default JWT header (header JWT padrão); ou query param.
 - 
Name: o nome com o qual o valor do token será passado.
 
 - 
 
Os interceptores selecionados são mostrados na seção Execution Flow. Se quiser, você pode:
- 
editá-los clicando no ícone
; - 
desativá-los clicando no ícone
; - 
reordená-los clicando sobre o interceptor e arrastando-o para a posição desejada.
As validações acontecerão na ordem em que aparecem na tela. Se alguma delas não der certo, a requisição é interrompida. 
Configurações de entrega
A seção Delivery Settings define o número máximo de tentativas automáticas de reenvio e os códigos de status que acionarão essas tentativas.
Configure os campos:
- 
Automatic Retry Quantity: a quantidade de tentativas automáticas que serão realizadas caso o primeiro envio falhe. Permite até 10;
 - 
Requisition Timeout: tempo limite de espera pelo retorno da URL do subscritor a cada tentativa de entrega. Até 30 segundos;
 - 
Status Code For Automatic Retry: códigos de estado HTTP de retorno que devem acionar uma tentativa automática.
- 
Se inserir mais de um, separe-os por vírgula.
 - 
Se quiser cadastrar uma família de código, use "xx":
4xx, 5xx. - 
Códigos da família
200não são aceitos neste campo. Isso porque retornos2xxindicam que o evento foi entregue com sucesso e não precisam ser enviados novamente. 
 - 
 

Recomendações de status codes
O campo Status Code for Automatic Retry permite a inclusão de códigos da família 400 e 500. No entanto, nem todos fazem sentido para a retentativa. Nas tabelas abaixo, detalhamos quais são recomendados e quais não:
Código de status  | 
Descrição  | 
Retentativa faz sentido?  | 
Motivo  | 
408  | 
Request Timeout  | 
Sim  | 
O servidor não respondeu a tempo.  | 
429  | 
Too Many Requests  | 
Sim  | 
O usuário enviou muitas solicitações em um determinado período.  | 
500  | 
Internal Server Error  | 
Sim  | 
Código genérico que indica falha no servidor. Essa falha pode ocorrer por picos temporários de carga.  | 
502  | 
Bad Gateway  | 
Sim  | 
Um servidor intermediário recebeu uma resposta inválida de um servidor upstream.  | 
503  | 
Service Unavailable  | 
Sim  | 
O servidor não está pronto para processar a solicitação. Isso pode ser causado por uma manutenção ou sobrecarga.  | 
504  | 
Gateway Timeout  | 
Sim  | 
O servidor intermediário não respondeu a tempo.  | 
Código de status  | 
Descrição  | 
Retentativa faz sentido?  | 
Motivo  | 
400  | 
Bad Request  | 
Não  | 
A solicitação foi mal formulada. Retentar a mesma solicitação resultará no mesmo erro.  | 
401  | 
Unauthorized  | 
Não  | 
Autenticação é necessária ou falhou. Retentar não resolverá o problema sem a autenticação adequada.  | 
403  | 
Forbidden  | 
Não  | 
O cliente não tem permissão para executar a ação. Não há motivo para retentar.  | 
404  | 
Not Found  | 
Não  | 
O recurso solicitado não foi encontrado. Retentar não trará o response esperado.  | 
Share your suggestions with us!
          Click here and then [+ Submit idea]