Raise Exception
O botão Raise Exception possibilita ao administrador da API editar sua resposta para o cliente em caso de erro dos interceptores ou erros internos.
Se um erro acontecer, o objeto $call.flowError será populado com os seguintes atributos:
- 
message: valor que será exibido no corpo da resposta;
- 
httpErrorCode: código de erro que será retornado na requisição;
- 
position: posição do interceptor em que ocorreu o erro;
- 
interceptorType: tipo do interceptor em que houve o erro.
Como usar
O botão está localizado no setor Flows, na área em que são visualizados os interceptores, entre as figuras com os textos Request to Backend e Response to Client:
 
Ao clicar no botão Raise Exception, um editor será aberto, conforme a figura abaixo:
 
No editor, será possível criar scripts para serem executado quando houver uma exceção.
Quando o fluxo conter um script criado pelo Raise Exception, um botão diferente será exibido, significando que o script pode ser editado:
 
Para remover um script de Raise Exception, basta clicar no X em vermelho ao lado do botão.
Tipos de interceptores e códigos de erros
| Tipo | Mensagem | Erro Requisição | Erro Resposta | 
|---|---|---|---|
| AccessTokenValidation | This Access Token is expired | 403 | - | 
| AccessTokenValidation | Access Token is in invalid state (PENDING, REVOKED, CANCELLED, REJECTED) | 403 | - | 
| AccessTokenValidation | Could not find a required Access Token in the request, identified by (location) (name) | 401 | - | 
| JsonThreatProtection | Json format invalid | 400 | 500 | 
| JsonThreatProtection | Container depth limit exceeds the maximum allowed for this API (10) | 400 | 500 | 
| JsonThreatProtection | Object entry count limit exceeds the maximum allowed for this API (10) | 400 | 500 | 
| JsonThreatProtection | Object entry name length limit exceeds the maximum allowed for this API (10) | 400 | 500 | 
| JsonThreatProtection | Array element count limit exceeds the maximum allowed for this API (30) | 400 | 500 | 
| JsonThreatProtection | String value length limit exceeds the maximum allowed for this API (30) | 400 | 500 | 
| JsonThreatProtection | JSON threat protection validation failed: Invalid Content-Type in Header → (Content type) | 415 | 415 | 
| JsonThreatProtection | JSON threat protection validation failed: Content-Type not found in Header | 415 | 415 | 
| XMLThreatProtection | XML format invalid | 400 | 500 | 
| XMLThreatProtection | Name limits element exceeds the maximum allowed for this API (n) | 400 | 500 | 
| XMLThreatProtection | Name limits attribute exceeds the maximum allowed for this API (n) | 400 | 500 | 
| XMLThreatProtection | Name limits namespace prefix exceeds the maximum allowed for this API (n) | 400 | 500 | 
| XMLThreatProtection | Name limits processing instruction target exceeds the maximum allowed for this API (n) | 400 | 500 | 
| XMLThreatProtection | Structure limits node depth element exceeds the maximum allowed for this API (n) | 400 | 500 | 
| XMLThreatProtection | Structure limits attribute count per element exceeds the maximum allowed for this API (n) | 400 | 500 | 
| XMLThreatProtection | Structure limits namespace count per element exceeds the maximum allowed for this API (n) | 400 | 500 | 
| XMLThreatProtection | Structure limits child count exceeds the maximum allowed for this API (n) | 400 | 500 | 
| XMLThreatProtection | Value limits text exceeds the maximum allowed for this API (n) | 400 | 500 | 
| XMLThreatProtection | Value limits attribute exceeds the maximum allowed for this API (n) | 400 | 500 | 
| XMLThreatProtection | Value limits namespace URI exceeds the maximum allowed for this API (n) | 400 | 500 | 
| XMLThreatProtection | Value limits comment exceeds the maximum allowed for this API (n) | 400 | 500 | 
| XMLThreatProtection | Value limits processing instruction data exceeds the maximum allowed for this API (n) | 400 | 500 | 
| XMLThreatProtection | XML threat protection validation failed: Invalid Content-Type in Header → (Content type) | 415 | 415 | 
| XMLThreatProtection | XML threat protection validation failed: Content-Type not found in Header | 415 | 415 | 
| SqlThreatProtection | SQL Injection attack identified in this API Body | 400 | 500 | 
| SqlThreatProtection | SQL Injection attack identified in this API Headers | 400 | 500 | 
| SqlThreatProtection | SQL Injection attack identified in this API Query Params | 400 | 500 | 
| TimeTokenValidation | Could not find a required Time token in the request, identified by (location) (nome) | 403 | - | 
| TimeTokenValidation | Invalid time token in the request, identified by %s %s | 403 | - | 
| TokenInterceptor | Error generating token | - | 500 | 
| TimeAllowed | Time restriction for this API. Works only (hoursOfDay) | 429 | - | 
| SpikeArrest | urrent Spike Arrest Rate exceeds the maximum Rate of %s call each %s %s for this API | 429 | - | 
| RestrictAccess | Access denied for this environment. | 403 | - | 
| RateLimit | Current rate (%s) exceeds the maximum rate (%s) for this API | 429 | - | 
| PayloadSize | Request size (%s bytes) exceeds the maximum allowed size for this API (%s bytes) | 413 | - | 
| JWT Validation | JWT %s has an invalid signature | 403 | - | 
| JWT Validation | JWT is in invalid state %s, rejecting call | 403 | - | 
| IP Filtering | IP List cannot be null | 500 | - | 
| IP Filtering | Blocked access from your IP | 403 | - | 
| Encrypt | An error occurred during the encryption mode | 422 | - | 
| Encrypt | An error occurred during the encryption mode | 422 | - | 
| DateTime | The request is out of the accepted date range between: %s and %s" | 423 | - | 
| Custom Interceptor | Error during process custom interceptor '%s': %s | 500 | - | 
| ClientID Validation | Could not find a required APP in the request, identified by %s %s | 401 | - | 
| ClientID Validation | APP is in invalid state %s | 403 | - | 
| CSRF Validation | Could not find a required CSRF Token in the request, identified by %s, %s | 401 | - | 
| CSRF Validation | CSRFToken is expired | 403 | - | 
| CSRF Validation | Requests with different origins | 403 | - | 
Exemplo
Verificar Erro de Autorização 401:
 var resp = {};
 if ($call.flowError.httpErrorCode == 401 && $call.flowError.position == 1) {
     resp.msg = "msg error";
 } else {
     resp.msg = "other msg";
 }
 $call.response.getBody().setString($json.stringify(resp), "utf-8");
 $call.response.setHeader("Content-Type", "application/json");Para informações sobre como escrever um interceptor JavaScript personalizado, clique aqui.
Share your suggestions with us!
          Click here and then [+ Submit idea]