Solução de problemas de erro do ambiente de execução do JSON Threat Protection

Esta é a documentação da Apigee e da Apigee híbrida.
Confira a documentação da Apigee Edge.

ExecutionFailed

Código de erro

steps.jsonthreatprotection.ExecutionFailed

Corpo da resposta de erro

{
    "fault": {
        "faultstring": "JSONThreatProtection[policy_name]:
          Execution failed. reason: JSONThreatProtection[policy_name]: error_description
          at line line_num",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

Tipos de erros e possíveis causas

A política JSONThreatProtection pode gerar muitos tipos diferentes de erros ExecutionFailed. A tabela abaixo lista os tipos diferentes de erros e as possíveis causas:

Tipo de erro Causa
Comprimento do nome de entrada do objeto excedido O comprimento máximo de string permitido no nome de entrada de um objeto foi excedido.
Contagem de entradas de objeto excedida O número máximo de entradas permitidas em um objeto foi excedido.
Contagem de elementos da matriz excedida O número máximo de elementos permitidos em uma matriz foi excedido.
Profundidade de contêiner excedida A profundidade aninhada permitida foi excedida.
Comprimento do valor de string excedido O comprimento máximo permitido para um valor de string foi excedido.
Objeto JSON inválido O payload JSON de entrada é inválido.

Comprimento do nome de entrada do objeto excedido

Corpo da resposta de erro

{
    "fault": {
        "faultstring": "JSONThreatProtection[policy_name]:
          Execution failed. reason: JSONThreatProtection[policy_name]:
          Exceeded object entry name length at line line_num",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

Exemplo de corpo da resposta de erro

{
    "fault": {
        "faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
          Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]:
          Exceeded object entry name length at line 2",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

Causa

Esse erro ocorrerá se o payload da mensagem de entrada especificado pelo elemento <Source> contiver um objeto JSON com um nome de propriedade que exceda o comprimento máximo especificado no elemento <ObjectEntryNameLength>.

Por exemplo, se o elemento <ObjectEntryNameLength> for especificado como "5" na política, mas o payload da mensagem de entrada tiver uma propriedade JSON com um nome maior que cinco caracteres, esse erro será exibido.

Diagnóstico

  1. Examine a mensagem de erro para identificar o nome da política JSONThreatProtection e o número da linha em que o nome de entrada maior que o especificado ocorre. Por exemplo, na mensagem de erro a seguir, o nome da política JSONThreatProtection é JSON-Threat-Protection-1 e o número da linha no payload é "2".

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry name
    length at line 2
    
  2. Analise a política identificada na etapa 1 e anote o valor especificado no elemento <ObjectEntryNameLength>.

    Por exemplo, na política JSONThreatProtection a seguir, <ObjectEntryNameLength> é definido como 5:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
        <DisplayName>JSON Threat Protection-1</DisplayName>
        <Properties/>
        <ArrayElementCount>3</ArrayElementCount>
        <ContainerDepth>12</ContainerDepth>
        <ObjectEntryCount>5</ObjectEntryCount>
        <ObjectEntryNameLength>5</ObjectEntryNameLength>
        <Source>request</Source>
        <StringValueLength>50</StringValueLength>
    </JSONThreatProtection>
    
  3. Analise o número da linha específico (identificado na etapa 1) do payload de entrada e verifique se o comprimento do nome do objeto é maior que o valor especificado no elemento <ObjectEntryNameLength> (identificado na etapa 2). Se o comprimento do nome do objeto exceder esse número, essa será a causa do erro.

    Veja um exemplo de payload de entrada:

    {
       "number" : 500,
       "string" : "text"
    }
    

    O payload JSON mostrado acima tem uma propriedade chamada number na linha 2, que tem seis caracteres (o comprimento do nome é 6). Como o comprimento do nome do objeto é maior que 5 (o valor especificado para o elemento <ObjectEntryNameLength>), você verá o seguinte erro:

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry name
    length at line 2
    

Resolução

Se a política JSONThreatProtection foi criada para evitar que payloads tenham nomes de entrada de objeto maiores que o valor definido, a mensagem de erro é esperada. Nesse caso, nenhuma outra ação é necessária.

No entanto, se você determinar que nomes de entrada de objeto maiores podem ser especificados no payload sem qualquer consequência, modifique o <ObjectEntryNameLength> para um valor adequado com base nos requisitos.

Por exemplo, se você quiser permitir nomes de objeto de até 10 caracteres, modifique a política JSONThreatProtection da seguinte maneira:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
    <DisplayName>JSON Threat Protection-1</DisplayName>
    <Properties/>
    <ArrayElementCount>3</ArrayElementCount>
    <ContainerDepth>12</ContainerDepth>
    <ObjectEntryCount>5</ObjectEntryCount>
    <ObjectEntryNameLength>10</ObjectEntryNameLength>
    <Source>request</Source>
    <StringValueLength>50</StringValueLength>
</JSONThreatProtection>

Contagem de entradas de objeto excedida

Corpo da resposta de erro

{
    "fault": {
        "faultstring": "JSONThreatProtection[policy_name]:
          Execution failed. reason: JSONThreatProtection[policy_name]:
          Exceeded object entry count at line line_num",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

Exemplo de corpo da resposta de erro

{
    "fault": {
        "faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
          Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]:
          Exceeded object entry count at line 7",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

Causa

Esse erro ocorrerá se o payload da mensagem de entrada especificado pelo elemento <Source> contiver um objeto JSON que contenha mais entradas (propriedades) do que o valor especificado no elemento <ObjectEntryCount> da política.

Por exemplo, se o elemento <ObjectEntryCount> for "5", mas o payload JSON de entrada tiver mais de cinco entradas, esse erro será gerado.

Diagnóstico

  1. Examine a mensagem de erro para identificar o nome da política JSONThreatProtection e o número da linha em que a contagem de entradas é excedida. Por exemplo, na seguinte mensagem de erro, o nome da política é JSON-Threat-Protection-1 e o número da linha no payload é 7:

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry count
    at line 7
    
  2. Anote o valor especificado no elemento <ObjectEntryCount> da política (identificado na etapa 1).

    No exemplo de política a seguir, <ObjectEntryCount> está definido como 5:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
        <DisplayName>JSON Threat Protection-1</DisplayName>
        <Properties/>
        <ArrayElementCount>3</ArrayElementCount>
        <ContainerDepth>12</ContainerDepth>
        <ObjectEntryCount>5</ObjectEntryCount>
        <ObjectEntryNameLength>6</ObjectEntryNameLength>
        <Source>request</Source>
        <StringValueLength>50</StringValueLength>
    </JSONThreatProtection>
    
  3. Verifique o número da linha específico (identificado na etapa 1) do payload de entrada e verifique se o número de entidades no payload é maior que o valor especificado para o elemento <ObjectEntryCount> (identificado na etapa 2). Se o número de objetos excede a contagem de entradas de objeto, essa é a causa do erro.

    Veja um exemplo de payload de entrada:

    {
    "name" : "John",
    "id" : 234687,
    "age" : 31,
    "city" : "New York",
    "country" : "USA",
    "company" : "Google"
    }
    

    No payload JSON mostrado acima, a sexta entrada ocorre na linha no 7 (empresa). Como a contagem das entradas de objeto no payload JSON de entrada é maior que cinco (o valor especificado para o elemento <ObjectEntryCount>), você recebe o seguinte erro:

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry count at
    line 7
    

Resolução

Se a política JSONThreatProtection foi criada para evitar que payloads tenham um número de entradas de objeto que exceda um limite específico, a mensagem de erro é esperada. Nesse caso, você não precisa fazer nada.

No entanto, se você determinar que mais entradas de objeto podem ser incluídas no payload sem nenhuma consequência, modifique <ObjectEntryCount> para um valor adequado com base nos requisitos.

Por exemplo, se você quiser permitir até 10 entradas de objeto, modifique a política JSONThreatProtection da seguinte maneira:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
    <DisplayName>JSON Threat Protection-1</DisplayName>
    <Properties/>
    <ArrayElementCount>3</ArrayElementCount>
    <ContainerDepth>12</ContainerDepth>
    <ObjectEntryCount>10</ObjectEntryCount>
    <ObjectEntryNameLength>6</ObjectEntryNameLength>
    <Source>request</Source>
    <StringValueLength>50</StringValueLength>
</JSONThreatProtection>

Contagem de elementos da matriz excedida

Corpo da resposta de erro

{
    "fault": {
        "faultstring": "JSONThreatProtection[policy_name]:
          Execution failed. reason: JSONThreatProtection[policy_name]:
          Exceeded array element count at line line-num",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

Exemplo de corpo da resposta de erro

{
    "fault": {
        "faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
          Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]:
          Exceeded array element count at line 3",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

Causa

Esse erro ocorrerá se o payload da mensagem de entrada especificado pelo elemento <Source> contiver uma matriz JSON com um número de elementos maior que o número especificado no elemento <ArrayElementCount> da política.

Por exemplo, se o elemento <ArrayElementCount> for especificado como 3, mas o payload de entrada tiver uma matriz JSON com mais de três elementos, esse erro será gerado.

Diagnóstico

  1. Examine a mensagem de erro para identificar o nome da política e o número da linha em que o comprimento da matriz foi excedido. Por exemplo, na seguinte mensagem de erro, o nome da política é JSON-Threat-Protection-1 e o número da linha no payload é 3:

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded array element count at line 3
    
  2. Anote o valor especificado do elemento <ArrayElementCount> da política (identificado na etapa 1).

    No exemplo da política JSONThreatProtection a seguir, <ArrayElementCount> está definido como 3:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
        <DisplayName>JSON Threat Protection-1</DisplayName>
        <Properties/>
        <ArrayElementCount>3</ArrayElementCount>
        <ContainerDepth>12</ContainerDepth>
        <ObjectEntryCount>5</ObjectEntryCount>
        <ObjectEntryNameLength>6</ObjectEntryNameLength>
        <Source>request</Source>
        <StringValueLength>50</StringValueLength>
    </JSONThreatProtection>
    
  3. Analise o número da linha específico (identificado na etapa 1) do payload de entrada e verifique se a matriz especificada tem uma quantia maior que o número especificado no elemento <ArrayElementCount> (identificado na etapa 2). Se o número de elementos da matriz exceder a contagem, essa será a causa do erro.

    Veja um exemplo de payload de entrada:

    {
     "name":"Ford",
     "models":[
        "Mustang",
        "Endeavour",
        "Fiesta",
        "EcoSport",
        "Focus"
     ]
    }
    

    O payload JSON mostrado acima tem cinco elementos na matriz chamada models na linha 3. Como o número de elementos da matriz é maior que 3 (o valor especificado para o elemento <ArrayElementCount>), você receberá o seguinte erro:

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded array element count
    at line 3
    

Resolução

Se a política JSONThreatProtection foi criada para evitar que payloads tenham um limite de contagem de matriz específico, a mensagem de erro é esperada. Nesse caso, não é necessário fazer nada.

No entanto, se você determinar que é permitido um número maior de elementos em uma matriz, modifique <ArrayElementCount> para um valor adequado com base nos requisitos.

Por exemplo, se você quiser permitir até cinco elementos de matriz, modifique a política da seguinte maneira:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
    <DisplayName>JSON Threat Protection-1</DisplayName>
    <Properties/>
    <ArrayElementCount>5</ArrayElementCount>
    <ContainerDepth>12</ContainerDepth>
    <ObjectEntryCount>5</ObjectEntryCount>
    <ObjectEntryNameLength>6</ObjectEntryNameLength>
    <Source>request</Source>
    <StringValueLength>50</StringValueLength>
</JSONThreatProtection>

Profundidade de contêiner excedida

Corpo da resposta de erro

O tráfego do ambiente de execução retorna um código de resposta 500 com o seguinte erro:

{
    "fault": {
        "faultstring": "JSONThreatProtection[policy_name]:
          Execution failed. reason: JSONThreatProtection[policy_name]:
          Exceeded container depth at line line-num",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

Exemplo de corpo da resposta de erro

{
    "fault": {
        "faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
          Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]:
          Exceeded container depth at line 5",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

Causa

Este erro ocorre se o payload da mensagem de entrada especificado pelo elemento <Source> contiver um objeto JSON que contenha elementos JSON com uma profundidade de contêiner que excede a profundidade máxima do contêiner especificada no elemento <ContainerDepth> da política. A profundidade de contêiner é a profundidade aninhada máxima permitida para elementos JSON. Por exemplo, uma matriz que contém um objeto com outro objeto resultaria em uma profundidade de contenção 3.

Por exemplo, se o elemento <ContainerDepth> for 3, mas o payload de entrada tiver uma profundidade de contêiner que exceda esse limite, esse erro será gerado.

Diagnóstico

  1. Examine a mensagem de erro para identificar o nome da política JSONThreatProtection e o número da linha em que a profundidade de contêiner foi excedida. Por exemplo, na mensagem de erro a seguir, o nome da política é JSON-Threat-Protection-1 e o número da linha no payload é 5.

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded container depth at
    line 5
    
  2. Anote o valor especificado para o elemento <ContainerDepth> (identificado na etapa 1).

    No exemplo da política JSONThreatProtection a seguir, <ContainerDepth> está definido como 5:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
        <DisplayName>JSON Threat Protection-1</DisplayName>
        <Properties/>
        <ArrayElementCount>3</ArrayElementCount>
        <ContainerDepth>5</ContainerDepth>
        <ObjectEntryCount>5</ObjectEntryCount>
        <ObjectEntryNameLength>20</ObjectEntryNameLength>
        <Source>request</Source>
        <StringValueLength>50</StringValueLength>
    </JSONThreatProtection>
    
  3. Examine o número da linha específica (identificado na etapa 1) do payload de entrada e verifique se a profundidade de contêiner no payload é maior que o valor especificado no elemento <ContainerDepth> (identificado na etapa 2). Se a profundidade de contêiner exceder o valor, essa é a causa do erro.

    Veja um exemplo de payload de entrada:

    {
     "ContainerDepth2":[ {
           "ContainerDepth4":[
              {
                 "ContainerDepth6":[
                    "1",
                    "2"
                 ]
              }
           ]
        }
     ]
    }
    

    O payload JSON mostrado acima tem uma profundidade de contêiner de "6" na linha 5. Como a profundidade é maior que cinco, o valor especificado no elemento <ContainerDepth> da política JSONThreatProtection, você receberá o seguinte erro:

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded container depth at
    line 5
    

Resolução

Se a política JSONThreatProtection foi criada para evitar que payloads com profundidades de contêiner excedam o valor especificado, a mensagem de erro é esperada. Nesse caso, não é necessário fazer nada.

No entanto, se você determinar que profundidades de contêiner maiores são aceitáveis, modifique o <ContainerDepth> para um valor adequado com base nos requisitos.

Por exemplo, se você quiser permitir profundidade de contêiner de até 10, modifique a política da seguinte maneira:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
    <DisplayName>JSON Threat Protection-1</DisplayName>
    <Properties/>
    <ArrayElementCount>3</ArrayElementCount>
    <ContainerDepth>10</ContainerDepth>
    <ObjectEntryCount>5</ObjectEntryCount>
    <ObjectEntryNameLength>20</ObjectEntryNameLength>
    <Source>request</Source>
    <StringValueLength>50</StringValueLength>
</JSONThreatProtection>

Comprimento do valor de string excedido

Corpo da resposta de erro

{
    "fault": {
        "faultstring": "JSONThreatProtection[policy_name]:
          Execution failed. reason: JSONThreatProtection[policy_name]:
          Exceeded string value length at line line-num",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

Exemplo de corpo da resposta de erro

{
    "fault": {
        "faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
          Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]:
          Exceeded string value length at line 3",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

Causa

Este erro ocorre se o payload da mensagem de entrada especificado pelo elemento <Source> contiver elementos JSON que tenham valores com mais caracteres do que o permitido pelo elemento <StringValueLength>.

Por exemplo, se o elemento <StringValueLength> estiver definido como 50 na política, mas o payload de entrada tiver um ou mais elementos com valores que contenham mais de 50 caracteres, esse erro será gerado.

Diagnóstico

  1. Analise a mensagem de erro para identificar o nome da política e o número da linha em que o comprimento da string é excedido. No exemplo a seguir, o nome da política é JSON-Threat-Protection-1 and no payload 3.

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded string value length at line 3
    
  2. Anote o valor especificado do elemento <StringValueLength> no (identificado na etapa 1).

    No exemplo da política JSONThreatProtection a seguir, <StringValueLength> está definido como 50:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
        <DisplayName>JSON Threat Protection-1</DisplayName>
        <Properties/>
        <ArrayElementCount>3</ArrayElementCount>
        <ContainerDepth>5</ContainerDepth>
        <ObjectEntryCount>5</ObjectEntryCount>
        <ObjectEntryNameLength>20</ObjectEntryNameLength>
        <Source>request</Source>
        <StringValueLength>50</StringValueLength>
    </JSONThreatProtection>
    
  3. Analise o número da linha específico (identificado na etapa 1) do payload de entrada e verifique se o comprimento do valor é maior que o número de caracteres especificados para o elemento <StringValueLength> (identificado na etapa 2). Se o comprimento do valor exceder o limite, essa será a causa do erro.

    Veja um exemplo de payload de entrada:

    {
      "Country": "New Zealand",
      "Place Name": "Taumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahu"
    }
    

    O payload JSON mostrado acima tem um objeto chamado Place Name cujo valor Taumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahu tem 85 caracteres na linha 3. Como o comprimento do valor é maior que 50, o valor especificado no elemento <StringValueLength>, o seguinte erro é exibido:

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded string value length
    at line 3
    

Resolução

Se a política JSONThreatProtection foi criada para evitar que payloads tenham valores que excedam um comprimento de string específico, a mensagem de erro é esperada. Nesse caso, não é necessário fazer nada.

No entanto, se você determinar que um valor comprimento de maior pode ser especificado no payload, modifique o <StringValueLength> para um valor adequado com base nos requisitos.

Por exemplo, se você quiser permitir um valor de até 90, modifique a política da seguinte maneira:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
    <DisplayName>JSON Threat Protection-1</DisplayName>
    <Properties/>
    <ArrayElementCount>3</ArrayElementCount>
    <ContainerDepth>5</ContainerDepth>
    <ObjectEntryCount>5</ObjectEntryCount>
    <ObjectEntryNameLength>20</ObjectEntryNameLength>
    <Source>request</Source>
    <StringValueLength>90</StringValueLength>
</JSONThreatProtection>

Objeto JSON inválido

Corpo da resposta de erro

{
    "fault": {
        "faultstring": "JSONThreatProtection[policy_name]:
          Execution failed. reason: string: at line line-num",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

Exemplo de corpo da resposta de erro

{
    "fault": {
        "faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
          Execution failed. reason: Expecting : at line 3",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

Causa

Esse erro ocorre se o payload da mensagem de entrada especificado pelo elemento <Source> na política JSONThreatProtection não é um objeto JSON válido.

Diagnóstico

  1. Analise a mensagem de erro para identificar o nome da política e o número da linha em que o erro ocorreu. No exemplo a seguir, o nome da política é JSON-Threat-Protection-1 and no payload 2.

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: Expecting : at line 3
    
  2. Examine o número da linha específico (identificado na etapa 1) do payload de entrada e verifique se o objeto JSON que foi transmitido no payload é, na verdade, um objeto JSON válido.

    Veja um exemplo de payload de entrada:

    {
      "Longitude": 6.11499,
      "Latitude"  50.76891
    }
    

    No payload JSON mostrado acima, a linha 3 não tem ":" (dois-pontos). Como não é um objeto JSON válido, você receberá este erro:

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    Expecting : at line 3
    

Resolução

Verifique se um payload JSON de entrada válido é transmitido para qualquer proxy da API que inclua a política JSONThreatProtection.

Para o exemplo descrito acima, modifique o payload JSON da seguinte maneira:

{
    "Longitude": 6.11499,
  "Latitude" : 50.76891
}

SourceUnavailable

Código de erro

steps.jsonthreatprotection.SourceUnavailable

Corpo da resposta de erro

{
    "fault": {
        "faultstring": "JSONThreatProtection[policy_name]::
          Source[var_name] is not available"
        "detail": {
            "errorcode": "steps.jsonthreatprotection.SourceUnavailable"
        }
    }
}

Exemplo de corpo da resposta de erro

{
    "fault": {
        "faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]::
          Source requests is not available",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.SourceUnavailable"
        }
    }
}

Causa

Este erro ocorre se a variável message especificada no elemento <Source> da política JSONThreatProtection:

  • estiver fora do escopo (não disponível no fluxo específico em que a política está sendo executada);
  • não for um dos valores válidos request, response ou message.

Por exemplo, esse erro ocorrerá se o elemento <Source> na política estiver definido como uma variável que não exista no fluxo em que a política é executada.

Diagnóstico

  1. Identifique o nome da política e o nome da variável de origem da mensagem de erro. Por exemplo, na seguinte mensagem de erro, o nome da política é JSON-Threat-Protection-1 e a variável de origem é requests:

    JSONThreatProtection[JSON-Threat-Protection-1]:: Source requests is not available
    
  2. Examine o valor especificado para o elemento <Source> identificado na etapa 1.

    No exemplo da política JSONThreatProtection a seguir, o elemento <Source> está definido como requests.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
        <DisplayName>JSON Threat Protection-1</DisplayName>
        <Properties/>
        <ArrayElementCount>3</ArrayElementCount>
        <ContainerDepth>5</ContainerDepth>
        <ObjectEntryCount>5</ObjectEntryCount>
        <ObjectEntryNameLength>20</ObjectEntryNameLength>
        <Source>requests</Source>
        <StringValueLength>50</StringValueLength>
    </JSONThreatProtection>
    

    Os valores válidos para o elemento <Source> são request, response ou message. Como as solicitações não são um valor válido e não existem no fluxo em que a política está sendo executada, você receberá o erro:

    JSONThreatProtection[JSON-Threat-Protection-1]:: Source requests is not available
    

Resolução

Verifique se a variável definida no elemento <Source> da política JSONThreatProtection com falha está definida como request, response ou message e existe no fluxo em que a política é executada.

Para corrigir a política JSONThreatProtection de exemplo mostrada acima, modifique o elemento <Source> para usar a variável request, porque ela existe no fluxo de solicitação:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
    <DisplayName>JSON Threat Protection-1</DisplayName>
    <Properties/>
    <ArrayElementCount>3</ArrayElementCount>
    <ContainerDepth>5</ContainerDepth>
    <ObjectEntryCount>5</ObjectEntryCount>
    <ObjectEntryNameLength>20</ObjectEntryNameLength>
    <Source>request</Source>
    <StringValueLength>50</StringValueLength>
</JSONThreatProtection>

NonMessageVariable

Código de erro

steps.jsonthreatprotection.NonMessageVariable

Corpo da resposta de erro

{
    "fault": {
        "faultstring": "JSONThreatProtection[policy_name]:
          Variable var_name does not resolve to a Message"
        "detail": {
            "errorcode": "steps.jsonthreatprotection.NonMessageVariable"
        }
    }
}

Exemplo de corpo da resposta de erro

{
    "fault": {
        "faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
          Variable message.content does not resolve to a Message",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.NonMessageVariable"
        }
    }
}

Causa

Esse erro ocorre se o elemento <Source> na política JSONThreatProtection estiver definido como uma variável que não seja do tipo message.

As variáveis do tipo Message representam solicitações e respostas HTTP completas. A solicitação de variáveis de fluxo, a resposta e a mensagem integradas da Apigee são do tipo mensagem. Para saber mais sobre variáveis de mensagem, consulte a Referência de variáveis.

Diagnóstico

  1. Identifique o nome da política e o nome da variável de origem JSONThreatProtection na mensagem de erro. Por exemplo, na seguinte mensagem de erro, o nome da política é JSON-Threat-Protection-1 e a variável de origem é message.content:

    JSONThreatProtection[JSON-Threat-Protection-1]: Variable message.content does not resolve to a Message
    
  2. Examine o elemento <Source> da política JSONThreatProtection (identificado na etapa 1).

    No exemplo da política JSONThreatProtection a seguir, <Source> está definido como message.content em vez de message:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
        <DisplayName>JSON Threat Protection-1</DisplayName>
        <Properties/>
        <ArrayElementCount>3</ArrayElementCount>
        <ContainerDepth>5</ContainerDepth>
        <ObjectEntryCount>5</ObjectEntryCount>
        <ObjectEntryNameLength>20</ObjectEntryNameLength>
        <Source>message.content</Source>
        <StringValueLength>50</StringValueLength>
    </JSONThreatProtection>
    

    Como message.content não é do tipo mensagem, você verá o erro:

    JSONThreatProtection[JSON-Threat-Protection-1]: Variable message.content does
    not resolve to a Message
    

Resolução

Verifique se o elemento <Source> na política JSONThreatProtection com falha está configurado como uma variável de fluxo de tipo message existente no fluxo em que a política é executada.

Para corrigir a política, modifique o elemento <Source> para especificar uma variável que seja do tipo mensagem. Por exemplo, no JSONThreatProtection com falha, especifique o elemento <Source> como message:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
    <DisplayName>JSON Threat Protection-1</DisplayName>
    <Properties/>
    <ArrayElementCount>3</ArrayElementCount>
    <ContainerDepth>5</ContainerDepth>
    <ObjectEntryCount>5</ObjectEntryCount>
    <ObjectEntryNameLength>20</ObjectEntryNameLength>
    <Source>message</Source>
    <StringValueLength>50</StringValueLength>
</JSONThreatProtection>