Policy error reference

This page applies to Apigeeand Apigee hybrid.

View Apigee Edge documentation.

AccessControl policy

This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults .

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP status Cause Fix
accesscontrol.IPDeniedAccess
403 The client IP address, or an IP address passed in the API request, matches an IP address specified in the <SourceAddress> element within the <MatchRule> element of the Access Control Policy, and the action attribute of the <MatchRule> element is set to DENY .
accesscontrol.InvalidIPAddressInVariable
500 The flow variable in <ClientIPVariable> contains an invalid IP address.

Fault variables

These variables are set when a runtime error occurs. For more information, see Variables specific to policy errors .

Variables Where Example
fault.name=" fault_name "
fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name Matches "IPDeniedAccess"
acl. policy_name .failed
policy_name is the user-specified name of the policy that threw the fault. acl.AC-AllowAccess.failed = true

Example fault response

{
   "fault":{
     "faultstring":"Access Denied for client ip : 52.211.243.3"
      "detail":{
         "errorcode":"steps.accesscontrol.IPDeniedAccess"
      }
   }
}

Example fault rule

<FaultRule name="IPDeniedAccess">
    <Step>
        <Name>AM-IPDeniedAccess</Name>
        <Condition>(fault.name Matches "IPDeniedAccess") </Condition>
    </Step>
    <Condition>(acl.failed = true) </Condition>
</FaultRule>

AccessEntity policy

For related information, see What you need to know about policy errors and Handling faults .

Runtime errors

None.

Deployment errors

Error name Fault string HTTP status Occurs when
InvalidEntityType
Invalid type [entity_type] in ACCESSENTITYStepDefinition [policy_name] N/A The entity type used must be one of the supported types .

AssignMessage policy

This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults .

Runtime errors

These errors can occur when the policy executes.

Fault code
HTTP status
Cause
Fix
steps.assignmessage.SetVariableFailed
500
The policy was not able to set a variable. See the fault string for the name of the unresolved variable.
steps.assignmessage.VariableOfNonMsgType
500

This error occurs if the source attribute in the <Copy> element is set to a variable which is not of type message .

Message type variables represent entire HTTP requests and responses. The built-in Apigee flow variables request , response , and message are of type message. To learn more about message variables, see the Variables reference .

steps.assignmessage.UnresolvedVariable
500

This error occurs if a variable specified in the AssignMessage policy is either:

  • Out of scope (not available in the specific flow where the policy is being executed)
  • or
  • Can't be resolved (is not defined)

Deployment errors

These errors can occur when you deploy a proxy containing this policy.

Error name Cause Fix
InvalidIndex
If the index specified in the <Copy> and/or <Remove> elements of the AssignMessage policy is 0 or a negative number, then deployment of the API Proxy fails.
InvalidVariableName
If the child element <Name> is empty or not specified in the <AssignVariable> element, then the deployment of the API proxy fails because there is no valid variable name to which to assign a value. A valid variable name is required.
InvalidPayload
A payload specified in the policy is invalid.

Fault variables

These variables are set when this policy triggers an error at runtime. For more information, see What you need to know about policy errors .

Variables Where Example
fault.name=" FAULT_NAME "
FAULT_NAME is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name Matches "UnresolvedVariable"
assignmessage. POLICY_NAME .failed
POLICY_NAME is the user-specified name of the policy that threw the fault. assignmessage.AM-SetResponse.failed = true

Example error response

 { 
  
  
 "fault" 
 :{ 
  
  
 "detail" 
 :{ 
  
  
 "errorcode" 
 : 
 "steps.assignmessage.VariableOfNonMsgType" 
  
 }, 
  
 "faultstring" 
 : 
 "AssignMessage[AM-SetResponse]: value of variable is not of type Message" 
  
 } 
 } 

Example fault rule

< FaultRule 
  
 name 
 = 
 "Assign Message Faults" 
>  
< Step 
>  
< Name>AM 
 - 
 CustomNonMessageTypeErrorResponse 
< / 
 Name 
>  
< Condition 
> ( 
 fault 
 . 
 name 
  
 Matches 
  
 "VariableOfNonMsgType" 
 ) 
  
< / 
 Condition 
>  
< / 
 Step 
>  
< Step 
>  
< Name>AM 
 - 
 CustomSetVariableErrorResponse 
< / 
 Name 
>  
< Condition 
> ( 
 fault 
 . 
 name 
  
 = 
  
 "SetVariableFailed" 
 ) 
< / 
 Condition 
>  
< / 
 Step 
>  
< Condition 
> ( 
 assignmessage 
 . 
 failed 
  
 = 
  
 true 
 ) 
  
< / 
 Condition 
>
< / 
 FaultRule 
>

BasicAuthentication policy

This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle errors. To learn more, see What you need to know about policy errors and Handling faults .

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP status Cause Fix
steps.basicauthentication.InvalidBasicAuthenticationSource
500 On a decode when the incoming Base64 encoded string does not contain a valid value or the header is malformed (for example, does not start with Basic ).
steps.basicauthentication.UnresolvedVariable
500 The required source variables for the decode or encode are not present. This error can only occur if IgnoreUnresolvedVariables is false.

Deployment errors

These errors can occur when you deploy a proxy containing this policy.

Error name Occurs when Fix
UserNameRequired
The <User> element must be present for the named operation.
PasswordRequired
The <Password> element must be present for the named operation.
AssignToRequired
The <AssignTo> element must be present for the named operation.
SourceRequired
The <Source> element must be present for the named operation.

Fault variables

These variables are set when a runtime error occurs. For more information, see What you need to know about policy errors .

Variables Where Example
fault.name=" fault_name "
fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name Matches "UnresolvedVariable"
BasicAuthentication. policy_name .failed
policy_name is the user-specified name of the policy that threw the fault. BasicAuthentication.BA-Authenticate.failed = true

Example error response

 { 
  
  
 "fault" 
 :{ 
  
  
 "detail" 
 :{ 
  
  
 "errorcode" 
 : 
 "steps.basicauthentication.UnresolvedVariable" 
  
 }, 
  
 "faultstring" 
 : 
 "Unresolved variable : request.queryparam.password" 
  
 } 
 } 

Example fault rule

<FaultRule name="Basic Authentication Faults">
    <Step>
        <Name>AM-UnresolvedVariable</Name>
        <Condition>(fault.name Matches "UnresolvedVariable") </Condition>
    </Step>
    <Step>
        <Name>AM-AuthFailedResponse</Name>
        <Condition>(fault.name = "InvalidBasicAuthenticationSource")</Condition>
    </Step>
    <Condition>(BasicAuthentication.BA-Authentication.failed = true) </Condition>
</FaultRule>

DecodeJWS policy

This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults .

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP status Occurs when
steps.jws.FailedToDecode
401 The policy was unable to decode the JWS. The JWS is possibly corrupted.
steps.jws.FailedToResolveVariable
401 Occurs when the flow variable specified in the <Source> element of the policy does not exist.
steps.jws.InvalidClaim
401 For a missing claim or claim mismatch, or a missing header or header mismatch.
steps.jws.InvalidJsonFormat
401 Invalid JSON found in the JWS header.
steps.jws.InvalidJws
401 This error occurs when the JWS signature verification fails.
steps.jws.InvalidPayload
401 The JWS payload is invalid.
steps.jws.InvalidSignature
401 <DetachedContent> is omitted and the JWS has a detached content payload.
steps.jws.MissingPayload
401 The JWS payload is missing.
steps.jws.NoAlgorithmFoundInHeader
401 Occurs when the JWS omits the algorithm header.
steps.jws.UnknownException
401 An unknown exception occurred.

Deployment errors

These errors can occur when you deploy a proxy containing this policy.

Error name Occurs when
InvalidAlgorithm The only valid values are: RS256, RS384, RS512, PS256, PS384, PS512, ES256, ES384, ES512, HS256, HS384, HS512 .

EmptyElementForKeyConfiguration

FailedToResolveVariable

InvalidConfigurationForActionAndAlgorithmFamily

InvalidConfigurationForVerify

InvalidEmptyElement

InvalidFamiliesForAlgorithm

InvalidKeyConfiguration

InvalidNameForAdditionalClaim

InvalidNameForAdditionalHeader

InvalidPublicKeyId

InvalidPublicKeyValue

InvalidSecretInConfig

InvalidTypeForAdditionalClaim

InvalidTypeForAdditionalHeader

InvalidValueForElement

InvalidValueOfArrayAttribute

InvalidVariableNameForSecret

MissingConfigurationElement

MissingElementForKeyConfiguration

MissingNameForAdditionalClaim

MissingNameForAdditionalHeader

Other possible deployment errors.

Fault variables

These variables are set when a runtime error occurs. For more information, see What you need to know about policy errors .

Variables Where Example
fault.name=" fault_name "
fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name Matches "TokenExpired"
JWS.failed
All JWS policies set the same variable in the case of a failure. jws.JWS-Policy.failed = true

Example error response

For error handling, the best practice is to trap the errorcode part of the error response. Do not rely on the text in the faultstring , because it could change.

Example fault rule

<FaultRules>
    <FaultRule name="JWS Policy Errors">
        <Step>
            <Name>JavaScript-1</Name>
            <Condition>(fault.name Matches "TokenExpired")</Condition>
        </Step>
        <Condition>JWS.failed=true</Condition>
    </FaultRule>
</FaultRules>

DecodeJWT policy

This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults .

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP status Cause Fix
steps.jwt.FailedToDecode
401 Occurs when the policy is unable to decode the JWT. The JWT may be malformed, invalid or otherwise not decodable.
steps.jwt.FailedToResolveVariable
401 Occurs when the flow variable specified in the <Source> element of the policy does not exist.
steps.jwt.InvalidToken
401 Occurs when the flow variable specified in the <Source> element of the policy is out of scope or can't be resolved.

Deployment errors

These errors can occur when you deploy a proxy containing this policy.

Error name Cause Fix
InvalidEmptyElement
Occurs when the flow variable containing the JWT to be decoded is not specified in the <Source> element of the policy.

Fault variables

These variables are set when a runtime error occurs. For more information, see What you need to know about policy errors .

Variables Where Example
fault.name=" fault_name "
fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name Matches "InvalidToken"
JWT.failed
All JWT policies set the same variable in the case of a failure. JWT.failed = true

Example error response

JWT Policy Fault Codes

For error handling, the best practice is to trap the errorcode part of the error response. Do not rely on the text in the faultstring , because it could change.

Example fault rule

<FaultRules>
        <FaultRule name="JWT Policy Errors">
            <Step>
                <Name>JavaScript-1</Name>
                <Condition>(fault.name Matches "InvalidToken")</Condition>
            </Step>
            <Condition>JWT.failed=true</Condition>
        </FaultRule>
    </FaultRules>

ExtractVariables policy

This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults .

Runtime errors

These errors can occur when the policy executes.

Fault code
HTTP status
Cause
Fix
steps.extractvariables.ExecutionFailed
500

This error occurs when:

  • The input payload (JSON, XML) is empty.
  • The input (JSON, XML, etc) passed to the policy is invalid or malformed.
steps.extractvariables.ImmutableVariable
500
A variable used in the policy is immutable. The policy was unable to set this variable.
N/A
steps.extractvariables.InvalidJSONPath
500
This error occurs if an invalid JSON path is used in the JSONPath element of the policy. For example, if a JSON payload does not have the object Name , but you specify Name as the path in the policy, then this error occurs.
steps.extractvariables.JsonPathParsingFailure
500
This error occurs when the policy is unable to parse a JSON path and extract data from the flow variable specified in Source element. Typically this happens if the flow variable specified in the Source element does not exist in the current flow.
steps.extractvariables.SetVariableFailed
500
This error occurs if the policy could not set the value to a variable. The error generally happens if you try to assign values to multiple variables whose names start with the same words in a nested dot-separated format.
steps.extractvariables.SourceMessageNotAvailable
500
This error occurs if the message variable specified in the Source element of the policy is either:
  • Out of scope (not available in the specific flow where the policy is being executed) or
  • Can't be resolved (is not defined)
steps.extractvariables.UnableToCast
500
This error occurs if the policy was unable to cast the extracted value to a variable. Typically this happens if you attempt to set the value of one data type to a variable of another data type.

Deployment errors

These errors can occur when you deploy a proxy containing this policy.

Error name Cause Fix
NothingToExtract
If the policy does not have any of the elements URIPath , QueryParam , Header , FormParam , XMLPayload , or JSONPayload , the deployment of the API Proxy fails, because there's nothing to extract.
NONEmptyPrefixMappedToEmptyURI
This error occurs if the policy has a prefix defined in the Namespace element under the XMLPayload element, but no URI is defined.
DuplicatePrefix
This error occurs if the policy has the same prefix defined more than once in the Namespace element under the XMLPayload element.
NoXPathsToEvaluate
If the policy does not have the XPath element within the XMLPayload element, then the deployment of the API proxy fails with this error.
EmptyXPathExpression
If the policy has an empty XPath expression within the XMLPayload element, then the deployment of the API proxy fails.
NoJSONPathsToEvaluate
If the policy does not have the JSONPath element within the JSONPayload element, then the deployment of the API proxy fails with this error.
EmptyJSONPathExpression
If the policy has an empty XPath expression within the XMLPayload element, then the deployment of the API proxy fails.
MissingName
If the policy does not have the name attribute in any of the policy elements like QueryParam , Header , FormParam or Variable , where it is required, then the deployment of the API proxy fails.
PatternWithoutVariable
If the policy does not have a variable specified within the Pattern element, then the deployment of the API proxy fails. The Pattern element requires the name of the variable in which extracted data will be stored.
CannotBeConvertedToNodeset
If the policy has an XPath expression where the Variable type is defined as nodeset , but the expression cannot be converted to nodeset, then the deployment of the API proxy fails.
JSONPathCompilationFailed
The policy could not compile a specified JSON Path. N/A
InstantiationFailed
The policy could not be instantiated. N/A
XPathCompilationFailed
If the prefix or the value used in the XPath element is not part of any of the declared namespaces in the policy, then the deployment of the API proxy fails.
InvalidPattern
If the Pattern element definition is invalid in any of the elements like URIPath , QueryParam , Header , FormParam , XMLPayload or JSONPayload within the policy, then the deployment of the API proxy fails.

Fault variables

These variables are set when this policy triggers an error at runtime. For more information, see What you need to know about policy errors .

Variables Where Example
fault.name=" fault_name "
fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name = "SourceMessageNotAvailable"
extractvariables. policy_name .failed
policy_name is the user-specified name of the policy that threw the fault. extractvariables.EV-ParseJsonResponse.failed = true

Example error response

 { 
  
 "fault" 
 :{ 
  
 "detail" 
 :{ 
  
 "errorcode" 
 : 
 "steps.extractvariables.SourceMessageNotAvailable" 
  
 }, 
  
 "faultstring" 
 : 
 "request message is not available for ExtractVariable: EV-ParseJsonResponse" 
  
 } 
 } 

Example fault rule

< FaultRule 
  
 name 
 = 
 "Extract Variable Faults" 
>  
< Step 
>  
< Name>AM 
 - 
 CustomErrorMessage 
< / 
 Name 
>  
< Condition 
> ( 
 fault 
 . 
 name 
  
 = 
  
 "SourceMessageNotAvailable" 
 ) 
  
< / 
 Condition 
>  
< / 
 Step 
>  
< Condition 
> ( 
 extractvariables 
 . 
 EM 
 - 
 ParseJsonResponse 
 . 
 failed 
  
 = 
  
 true 
 ) 
  
< / 
 Condition 
>
< / 
 FaultRule 
>

GenerateJWS policy

This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults .

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP status Occurs when
steps.jws.GenerationFailed
401 The policy was unable to generate the JWS.
steps.jws.InsufficientKeyLength
401 For a key less than 32 bytes for the HS256 algorithm
steps.jws.InvalidClaim
401 For a missing claim or claim mismatch, or a missing header or header mismatch.
steps.jws.InvalidCurve
401 The curve specified by the key is not valid for the Elliptic Curve algorithm.
steps.jws.InvalidJsonFormat
401 Invalid JSON found in the JWS header.
steps.jws.InvalidPayload
401 The JWS payload is invalid.
steps.jws.InvalidSignature
401 <DetachedContent> is omitted and the JWS has a detached content payload.
steps.jws.KeyIdMissing
401 The Verify policy uses a JWKS as a source for public keys, but the signed JWS does not include a kid property in the header.
steps.jws.KeyParsingFailed
401 The public key could not be parsed from the given key information.
steps.jws.MissingPayload
401 The JWS payload is missing.
steps.jws.NoAlgorithmFoundInHeader
401 Occurs when the JWS omits the algorithm header.
steps.jws.SigningFailed
401 In GenerateJWS, for a key less than the minimum size for the HS384 or HS512 algorithms
steps.jws.UnknownException
401 An unknown exception occurred.
steps.jws.WrongKeyType
401 Wrong type of key specified. For example, if you specify an RSA key for an Elliptic Curve algorithm, or a curve key for an RSA algorithm.

Deployment errors

These errors can occur when you deploy a proxy containing this policy.

Error name Occurs when
InvalidAlgorithm The only valid values are: RS256, RS384, RS512, PS256, PS384, PS512, ES256, ES384, ES512, HS256, HS384, HS512 .

EmptyElementForKeyConfiguration

FailedToResolveVariable

InvalidConfigurationForActionAndAlgorithmFamily

InvalidConfigurationForVerify

InvalidEmptyElement

InvalidFamiliesForAlgorithm

InvalidKeyConfiguration

InvalidNameForAdditionalClaim

InvalidNameForAdditionalHeader

InvalidPublicKeyId

InvalidPublicKeyValue

InvalidSecretInConfig

InvalidTypeForAdditionalClaim

InvalidTypeForAdditionalHeader

InvalidValueForElement

InvalidValueOfArrayAttribute

InvalidVariableNameForSecret

MissingConfigurationElement

MissingElementForKeyConfiguration

MissingNameForAdditionalClaim

MissingNameForAdditionalHeader

Other possible deployment errors.

Fault variables

These variables are set when a runtime error occurs. For more information, see What you need to know about policy errors .

Variables Where Example
fault.name=" fault_name "
fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name Matches "TokenExpired"
JWS.failed
All JWS policies set the same variable in the case of a failure. jws.JWS-Policy.failed = true

Example error response

For error handling, the best practice is to trap the errorcode part of the error response. Do not rely on the text in the faultstring , because it could change.

Example fault rule

<FaultRules>
    <FaultRule name="JWS Policy Errors">
        <Step>
            <Name>JavaScript-1</Name>
            <Condition>(fault.name Matches "TokenExpired")</Condition>
        </Step>
        <Condition>JWS.failed=true</Condition>
    </FaultRule>
</FaultRules>

GenerateJWT policy

This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults .

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP status Occurs when
steps.jwt.AlgorithmInTokenNotPresentInConfiguration
401 Occurs when the verification policy has multiple algorithms.
steps.jwt.AlgorithmMismatch
401 The algorithm specified in the Generate policy did not match the one expected in the Verify policy. The algorithms specified must match.
steps.jwt.EncryptionFailed
401 Creation of an encrypted JWT failed for a non-specific reason
steps.jwt.FailedToDecode
401 The policy was unable to decode the JWT. The JWT is possibly corrupted.
steps.jwt.GenerationFailed
401 The policy was unable to generate the JWT.
steps.jwt.InsufficientKeyLength
401 For a key less than 32 bytes for the HS256 algorithm, less than 48 bytes for the HS386 algortithm, and less than 64 bytes for the HS512 algorithm.
steps.jwt.InvalidClaim
401 For a missing claim or claim mismatch, or a missing header or header mismatch.
steps.jwt.InvalidConfiguration
401 Both the <Algorithm> and <Algorithms> elements are present.
steps.jwt.InvalidCurve
401 The curve specified by the key is not valid for the Elliptic Curve algorithm.
steps.jwt.InvalidJsonFormat
401 Invalid JSON found in the header or payload.
steps.jwt.InvalidPasswordKey
401 The specified key specified did not meet the requirements.
steps.jwt.InvalidPrivateKey
401 The specified key specified did not meet the requirements.
steps.jwt.InvalidPublicKey
401 The specified key specified did not meet the requirements.
steps.jwt.InvalidSecretKey
401 The specified key specified did not meet the requirements.
steps.jwt.InvalidToken
401 This error occurs when the JWT signature verification fails.
steps.jwt.JwtAudienceMismatch
401 The audience claim failed on token verification.
steps.jwt.JwtIssuerMismatch
401 The issuer claim failed on token verification.
steps.jwt.JwtSubjectMismatch
401 The subject claim failed on token verification.
steps.jwt.KeyIdMissing
401 The Verify policy uses a JWKS as a source for public keys, but the signed JWT does not include a kid property in the header.
steps.jwt.KeyParsingFailed
401 The public key could not be parsed from the given key information.
steps.jwt.NoAlgorithmFoundInHeader
401 Occurs when the JWT contains no algorithm header.
steps.jwt.NoMatchingPublicKey
401 The Verify policy uses a JWKS as a source for public keys, but the kid in the signed JWT is not listed in the JWKS.
steps.jwt.SigningFailed
401 In GenerateJWT , for a key less than the minimum size for the HS384 or HS512 algorithms
steps.jwt.TokenExpired
401 The policy attempts to verify an expired token.
steps.jwt.TokenNotYetValid
401 The token is not yet valid.
steps.jwt.UnhandledCriticalHeader
401 A header found by the Verify JWT policy in the crit header is not listed in KnownHeaders .
steps.jwt.UnknownException
401 An unknown exception occurred.
steps.jwt.WrongKeyType
401 Wrong type of key specified. For example, if you specify an RSA key for an Elliptic Curve algorithm, or a curve key for an RSA algorithm.

Deployment errors

These errors can occur when you deploy a proxy containing this policy.

Error name Cause Fix
InvalidNameForAdditionalClaim
The deployment will fail if the claim used in the child element <Claim> of the <AdditionalClaims> element is one of the following registered names: kid , iss , sub , aud , iat , exp , nbf , or jti .
InvalidTypeForAdditionalClaim
If the claim used in the child element <Claim> of the <AdditionalClaims> element is not of type string , number , boolean , or map , the deployment will fail.
MissingNameForAdditionalClaim
If the name of the claim is not specified in the child element <Claim> of the <AdditionalClaims> element, the deployment will fail.
InvalidNameForAdditionalHeader
This error ccurs when the name of the claim used in the child element <Claim> of the <AdditionalClaims> element is either alg or typ .
InvalidTypeForAdditionalHeader
If the type of claim used in the child element <Claim> of the <AdditionalClaims> element is not of type string , number , boolean , or map , the deployment will fail.
InvalidValueOfArrayAttribute
This error occurs when the value of the array attribute in the child element <Claim> of the <AdditionalClaims> element is not set to true or false .
InvalidConfigurationForActionAndAlgorithm
If the <PrivateKey> element is used with HS Family algorithms or the <SecretKey> element is used with RSA Family algorithms, the deployment will fail.
InvalidValueForElement
If the value specified in the <Algorithm> element is not a supported value, the deployment will fail.
MissingConfigurationElement
This error will occur if the <PrivateKey> element is not used with RSA family algorithms or the <SecretKey> element is not used with HS Family algorithms.
InvalidKeyConfiguration
If the child element <Value> is not defined in the <PrivateKey> or <SecretKey> elements, the deployment will fail.
EmptyElementForKeyConfiguration
If the ref attribute of the child element <Value> of the <PrivateKey> or <SecretKey> elements is empty or unspecified, the deployment will fail.
InvalidVariableNameForSecret
This error occurs if the flow variable name specified in the ref attribute of the child element <Value> of the <PrivateKey> or <SecretKey> elements does not contain the private prefix (private.) .
InvalidSecretInConfig
This error occurs if the child element <Value> of the <PrivateKey> or <SecretKey> elements does not contain the private prefix (private.) .
InvalidTimeFormat
If the value specified in the <NotBefore> element does not use a supported format, the deployment will fail.

Fault variables

These variables are set when a runtime error occurs. For more information, see What you need to know about policy errors .

Variables Where Example
fault.name=" fault_name "
fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name Matches "InvalidToken"
JWT.failed
All JWT policies set the same variable in the case of a failure. JWT.failed = true

Example error response

JWT Policy Fault Codes

For error handling, the best practice is to trap the errorcode part of the error response. Do not rely on the text in the faultstring , because it could change.

Example fault rule

<FaultRules>
        <FaultRule name="JWT Policy Errors">
            <Step>
                <Name>JavaScript-1</Name>
                <Condition>(fault.name Matches "InvalidToken")</Condition>
            </Step>
            <Condition>JWT.failed=true</Condition>
        </FaultRule>
    </FaultRules>

JavaCallout policy

This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults .

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP status Cause Fix
steps.javacallout.ExecutionError
500 Occurs when Java code throws an exception or returns null during the execution of a JavaCallout policy .

Deployment errors

These errors can occur when the proxy containing the policy is deployed.

Error name Fault string HTTP status Occurs when
ResourceDoesNotExist
Resource with name [name] and type [type] does not exist N/A The file specified in the <ResourceURL> element does not exist.
JavaCalloutInstantiationFailed
Failed to instantiate the JavaCallout Class [classname] N/A The class file specified in the <ClassName> element is not in the jar.
IncompatibleJavaVersion
Failed to load java class [classname] definition due to - [reason] N/A See fault string. Supported Java versions include: Oracle JDK 7/8 and OpenJDK 7/8
JavaClassNotFoundInJavaResource
Failed to find the ClassName in java resource [jar_name] - [class_name] N/A See fault string.
JavaClassDefinitionNotFound
Failed to load java class [class_name] definition due to - [reason] N/A See fault string.
NoAppropriateConstructor
No appropriate constructor found in JavaCallout class [class_name] N/A See fault string.
NoResourceForURL
Could not locate a resource with URL [string] N/A See fault string.

Fault variables

These variables are set when this policy triggers an error. For more information, see What you need to know about policy errors .

Variables Where Example
fault.name=" fault_name "
fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name Matches "ExecutionError"
javacallout. policy_name .failed
policy_name is the user-specified name of the policy that threw the fault. javacallout.JC-GetUserData.failed = true

Example error response

 { 
  
  
 "fault" 
 :{ 
  
  
 "faultstring" 
 : 
 "Failed to execute JavaCallout. [policy_name]" 
 , 
  
 "detail" 
 :{ 
  
  
 "errorcode" 
 : 
 "javacallout.ExecutionError" 
  
 } 
  
 } 
 } 

Example fault rule

< FaultRule 
  
 name 
 = 
 "JavaCalloutFailed" 
>  
< Step 
>  
< Name>AM 
 - 
 JavaCalloutError 
< / 
 Name 
>  
< / 
 Step 
>  
< Condition 
> ( 
 fault 
 . 
 name 
  
 Matches 
  
 "ExecutionError" 
 ) 
  
< / 
 Condition 
>
< / 
 FaultRule 
>

JavaScript policy

This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults .

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP status Cause Fix
steps.javascript.ScriptExecutionFailed
500 The JavaScript policy can throw many different types of ScriptExecutionFailed errors. Commonly seen types of errors include RangeError , ReferenceError , SyntaxError , TypeError , and URIError .
steps.javascript.ScriptExecutionFailedLineNumber
500 An error occurred in the JavaScript code. See the fault string for details. N/A
steps.javascript.ScriptSecurityError
500 A security error occurred when the JavaScript executed. See the fault string for details. N/A

Deployment errors

These errors can occur when you deploy a proxy containing this policy.

Error name Cause Fix
InvalidResourceUrlFormat
If the format of the resource URL specified within the <ResourceURL> or the <IncludeURL> element of the JavaScript policy is invalid, then the deployment of the API proxy fails.
InvalidResourceUrlReference
If the <ResourceURL> or the <IncludeURL> elements refer to a JavaScript file that does not exist, then the deployment of the API proxy fails. The referenced source file must exist either the API proxy, environment, or organization level.
WrongResourceType
This error occurs during deployment if the <ResourceURL> or the <IncludeURL> elements of the JavaScript policy refer to any resource type other than jsc ( JavaScript file).
NoResourceURLOrSource
The deployment of the JavaScript policy can fail with this error if the <ResourceURL> element is not declared or if the resource URL is not defined within this element. <ResourceURL> element is a mandatory element. Or, The <IncludeURL> element is declared but the resource URL is not defined within this element. The <IncludeURL> element is optional but if declared, the resource URL must be specified within the <IncludeURL> element.

Fault variables

These variables are set when this policy triggers an error at runtime. For more information, see What you need to know about policy errors .

Variables Where Example
fault.name=" fault_name "
fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name Matches "ScriptExecutionFailed"
javascript. policy_name .failed
policy_name is the user-specified name of the policy that threw the fault. javascript.JavaScript-1.failed = true

Example error response

 { 
  
 "fault" 
 : 
  
 { 
  
 "faultstring" 
 : 
  
 "Execution of SetResponse failed with error: Javascript runtime error: " 
 ReferenceError 
 : 
  
 "status" 
  
 is 
  
 not 
  
 defined 
 . 
  
 ( 
 setresponse 
 . 
 js 
 : 
 6 
 ) 
 \ 
 "" 
 , 
  
 "detail" 
 : 
  
 { 
  
 "errorcode" 
 : 
  
 "steps.javascript.ScriptExecutionFailed" 
  
 } 
  
 } 
 } 

Example fault rule

< FaultRule 
  
 name 
 = 
 "JavaScript Policy Faults" 
>  
< Step 
>  
< Name>AM 
 - 
 CustomErrorResponse 
< / 
 Name 
>  
< Condition 
> ( 
 fault 
 . 
 name 
  
 Matches 
  
 "ScriptExecutionFailed" 
 ) 
  
< / 
 Condition 
>  
< / 
 Step 
>  
< Condition 
> ( 
 javascript 
 . 
 JavaScript 
 - 
 1. 
 failed 
  
 = 
  
 true 
 ) 
  
< / 
 Condition 
>
< /FaultRule 
>

JSONThreatProtection policy

This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults .

Runtime errors

These errors can occur when the policy executes.

Fault code
HTTP status
Cause
Fix
steps.jsonthreatprotection.ExecutionFailed
500
The JSONThreatProtection policy can throw many different types of ExecutionFailed errors. Most of these errors occur when a specific threshold set in the policy is exceeded. These types of errors include: object entry name length , object entry count , array element count , container depth , string string value length . This error also occurs when the payload contains an invalid JSON object .
steps.jsonthreatprotection.SourceUnavailable
500
This error occurs if the message variable specified in the <Source> element is either:
  • Out of scope (not available in the specific flow where the policy is being executed)
  • Is not one of the valid values request , response , or message
steps.jsonthreatprotection.NonMessageVariable
500
This error occurs if the <Source> element is set to a variable which is not of type message .

Deployment errors

None.

Fault variables

These variables are set when this policy triggers an error. For more information, see What you need to know about policy errors .

Variables Where Example
fault.name=" fault_name "
fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name Matches "SourceUnavailable"
jsonattack. policy_name .failed
policy_name is the user-specified name of the policy that threw the fault. jsonattack.JTP-SecureRequest.failed = true

Example error response

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

Example fault rule

<FaultRule name="JSONThreatProtection Policy Faults">
    <Step>
        <Name>AM-CustomErrorResponse</Name>
        <Condition>(fault.name Matches "ExecutionFailed") </Condition>
    </Step>
    <Condition>(jsonattack.JPT-SecureRequest.failed = true) </Condition>
</FaultRule>

The JSONThreatProtection policy types defines the following error codes:

JSONtoXML policy

This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults .

Runtime errors

These errors can occur when the policy executes.

Fault code
HTTP status
Cause
Fix
steps.jsontoxml.ExecutionFailed
500
The input payload (JSON) is empty or the input (JSON) passed to JSON to XML policy is invalid or malformed.
steps.jsontoxml.InCompatibleTypes
500
This error occurs if the type of the variable defined in the <Source> element and the <OutputVariable> element are not the same. It is mandatory that the type of the variables contained within the <Source> element and the <OutputVariable> element matches. The valid types are message and string .
steps.jsontoxml.InvalidSourceType
500
This error occurs if the type of the variable used to define the <Source> element is invalid. The valid types of variable are message and string .
steps.jsontoxml.OutputVariableIsNotAvailable
500
This error occurs if the variable specified in the <Source> element of the JSON to XML Policy is of type string and the <OutputVariable> element is not defined. The <OutputVariable> element is mandatory when the variable defined in the <Source> element is of type string.
steps.jsontoxml.SourceUnavailable
500
This error occurs if the message variable specified in the <Source> element of the JSON to XML policy is either:
  • Out of scope (not available in the specific flow where the policy is being executed) or
  • Can't be resolved (is not defined)

Deployment errors

None.

Fault variables

These variables are set when a runtime error occurs. For more information, see What you need to know about policy errors .

Variables Where Example
fault.name=" fault_name "
fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name Matches "SourceUnavailable"
jsontoxml. policy_name .failed
policy_name is the user-specified name of the policy that threw the fault. jsontoxml.JSON-to-XML-1.failed = true

Example error response

{
  "fault": {
    "faultstring": "JSONToXML[JSON-to-XML-1]: Source xyz is not available",
    "detail": {
      "errorcode": "steps.json2xml.SourceUnavailable"
    }
  }
}

Example fault rule

<FaultRule name="JSON To XML Faults">
    <Step>
        <Name>AM-SourceUnavailableMessage</Name>
        <Condition>(fault.name Matches "SourceUnavailable") </Condition>
    </Step>
    <Step>
        <Name>AM-BadJSON</Name>
        <Condition>(fault.name = "ExecutionFailed")</Condition>
    </Step>
    <Condition>(jsontoxml.JSON-to-XML-1.failed = true) </Condition>
</FaultRule>

KeyValueMapOperations policy

This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults .

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP status Cause Fix
steps.keyvaluemapoperations.UnsupportedOperationException
500

This error occurs if the mapIdentifier attribute is set to empty string in the KeyValueMapOperations policy.

Deployment errors

These errors can occur when you deploy a proxy containing this policy.

Error name Cause Fix
InvalidIndex
If the index attribute specified in the <Get> element of KeyValueMapOperations policy is zero or a negative number, then the deployment of the API proxy fails. The index starts from 1 , so an index of zero or negative integer is considered as invalid.
KeyIsMissing
This error occurs if the <Key> element is completely missing or <Parameter> element is missing within <Key> element underneath the <Entry> of the <InitialEntries> element of the KeyValueMapOperations policy.
ValueIsMissing
This error occurs if the <Value> element is missing underneath the <Entry> element of the <InitialEntries> element of the KeyValueMapOperations policy.

MessageLogging policy

This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults .

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP status Cause
steps.messagelogging.StepDefinitionExecutionFailed
500 See fault string.
steps.messagelogging.InvalidGoogleCloudLogName
500 This error is thrown when the LogName does not evaluate to the valid format of projects/{project}/logs/{logid}.
steps.messagelogging.InvalidJsonMessage
500 This error is thrown when the contentType attributes value has been chosen as application/json but the actual message value is not a valid JSON string,
steps.messagelogging.TooManyPendingLoggingRequest
500 This error is thrown when there are more than 2500 pending requests that are yet to be written to Cloud Logging. The 2500 limit is for each Apigee runtime pod. For example, if the traffic is distributed over two instances of Apigee runtime pods, the effective limit is 5000 requests.
-

Deployment errors

These errors can occur when you deploy a proxy containing this policy.

Error name Cause Fix
InvalidProtocol
The deployment of the MessageLogging policy can fail with this error if the protocol specified within the <Protocol> element is not valid. The valid protocols are TCP and UDP. For sending syslog messages over TLS/SSL, only TCP is supported.
InvalidPort
The deployment of the MessageLogging policy can fail with this error if the port number is not specified within the <Port> element or if it is not valid. The port number must be an integer greater than zero.

Fault variables

These variables are set when a runtime error occurs. For more information, see What you need to know about policy errors .

Variables Where Example
fault.name=" fault_name "
fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name Matches "StepDefinitionExecutionFailed"
messagelogging. policy_name .failed
policy_name is the user-specified name of the policy that threw the fault. messagelogging.ML-LogMessages.failed = true

Example error response

{  
   "fault":{
      "detail":{
         "errorcode":"steps.messagelogging.StepDefinitionExecutionFailed"
      },
      "faultstring":"Execution failed"
   }
}

Example fault rule

<FaultRule name="MessageLogging">
    <Step>
        <Name>ML-LogMessages</Name>
        <Condition>(fault.name Matches "StepDefinitionExecutionFailed") </Condition>
    </Step>
    <Condition>(messagelogging.ML-LogMessages.failed = true) </Condition>
</FaultRule>

OASValidation policy

This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults .

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP status Cause
steps.oasvalidation.Failed
400 The Request message body cannot be validated against the provided OpenAPI Specification.
steps.oasvalidation.Failed
500 The Response message body cannot be validated against the provided OpenAPI Specification.
steps.oasvalidation.SourceMessageNotAvailable
500

Variable specified in the <Source> element of the policy is either out of scope or cannot be resolved.

steps.oasvalidation.NonMessageVariable
500

<Source> element is set to a variable that is not of type message .

Deployment errors

These errors can occur when you deploy a proxy containing this policy.

Error name Cause
ResourceDoesNotExist OpenAPI Specification referenced in the <OASResource> element does not exist.
ResourceCompileFailed OpenAPI Specification that is included in the deployment contains errors that prevent it from being compiled. This generally indicates that the specification is not a well-formed OpenAPI Specification 3.0.
BadResourceURL OpenAPI Specification referenced in the <OASResource> element cannot be processed. This can occur if the file is not a JSON or YAML file or the file URL is not specified correctly.

Fault variables

These variables are set when this policy triggers an error at runtime. For more information, see What you need to know about policy errors .

Variable Description Example
fault.category
The category of the fault. When the policy rejects a request, this will always hold Step . fault.category = "Step"
fault.name
The name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name Matches "ResourceDoesNotExist"
fault.reason
The reason for the fault. It is a human-readable string explaining the reason for the fault. OASValidation OAS-1 with resource "oas://my-spec1.yaml": failed with reason: "[ERROR - POST operation not allowed on path '/persons/13'.: []]"
fault.subcategory
The subcategory of the fault. When the policy rejects a request, this will always hold OASValidationFailure . fault.subcategory = "OASValidationFailure"
OASValidation. policy_name .failed
policy_name is the user-specified name of the policy that threw the fault. OASValidation.myoaspolicy.failed = true

PopulateCache policy

This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults .

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP Status Occurs when
policies.populatecache.EntryCannotBeCached
500 An entry cannot be cached. The message object being cached is not an instance of a class that is Serializable.

Deployment errors

These errors can occur when you deploy a proxy containing this policy.

Error name Cause Fix
InvalidCacheResourceReference
This error occurs if the <CacheResource> element in the PopulateCache policy is set to a name that does not exist in the environment where the API proxy is being deployed.
CacheNotFound
The cache specified in the <CacheResource> element does not exist.

Fault variables

These variables are set when this policy triggers an error. For more information, see What you need to know about policy errors .

Variables Where Example
fault.name=" fault_name "
fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name = "EntryCannotBeCached"
populatecache. policy_name .failed
policy_name is the user-specified name of the policy that threw the fault. populatecache.POP-CACHE-1.failed = true

Example error response

 { 
  
 "fault" 
 : 
  
 { 
  
 "faultstring" 
 : 
  
 "[entry] can not be cached. Only serializable entries are cached." 
 , 
  
 "detail" 
 : 
  
 { 
  
 "errorcode" 
 : 
  
 "steps.populatecache.EntryCannotBeCached" 
  
 } 
  
 } 
 } 

Example fault rule

<FaultRule name="Populate Cache Fault">
    <Step>
        <Name>AM-EntryCannotBeCached</Name>
        <Condition>(fault.name Matches "EntryCannotBeCached") </Condition>
    </Step>
    <Condition>(populatecache.POP-CACHE-1.failed = true) </Condition>
</FaultRule>

LookupCache policy

This section describes the error messages and flow variables that are set when this policy triggers an error. This information is important to know if you are developing fault rules for a proxy. To learn more, see What you need to know about policy errors and Handling faults .

Error code prefix

N/A

Runtime errors

This policy does not throw any runtime errors.

Deployment errors

These errors can occur when you deploy a proxy containing this policy.

Error name Cause Fix
InvalidCacheResourceReference
This error occurs if the <CacheResource> element is set to a name which does not exist in the environment where the API proxy is being deployed.
InvalidTimeout
If the <CacheLookupTimeoutInSeconds> element is set to a negative number, then the deployment of the API proxy fails.
CacheNotFound
This error occurs if the specific cache mentioned in the error message has not been created on a specific Message Processor component.

Fault variables

N/A

Example error response

N/A

InvalidateCache policy

This section describes the error messages and flow variables that are set when this policy triggers an error. This information is important to know if you are developing fault rules for a proxy. To learn more, see What you need to know about policy errors and Handling faults .

Error code prefix

N/A

Runtime errors

This policy does not throw any runtime errors.

Deployment errors

These errors can occur when you deploy a proxy containing this policy.

Error name Cause Fix
InvalidCacheResourceReference
This error occurs if the <CacheResource> element in the InvalidateCache policy is set to a name that does not exist in the environment where the API proxy is being deployed.
CacheNotFound
This error occurs if the specific cache mentioned in the error message has not been created on a specific Message Processor component.

Fault variables

N/A

Example error response

N/A

ResponseCache policy

This section describes the error messages and flow variables that are set when this policy triggers an error. This information is important to know if you are developing fault rules for a proxy. To learn more, see What you need to know about policy errors and Handling faults .

Error code prefix

N/A

Runtime errors

This policy does not throw any runtime errors.

Deployment errors

These errors can occur when you deploy a proxy containing this policy.

Error name Cause Fix
InvalidTimeout
If the <CacheLookupTimeoutInSeconds> element of the ResponseCache policy is set to a negative number, then the deployment of the API proxy fails.
InvalidCacheResourceReference
This error occurs if the <CacheResource> element in a ResponseCache policy is set to a name that does not exist in the environment where the API proxy is being deployed.
ResponseCacheStepAttachmentNotAllowedReq
This error occurs if the same ResponseCache policy is attached to multiple request paths within any flows of an API proxy.
ResponseCacheStepAttachmentNotAllowedResp
This error occurs if the same ResponseCache policy is attached to multiple response paths within any flows of an API proxy.
InvalidMessagePatternForErrorCode
This error occurs if either the <SkipCacheLookup> or the <SkipCachePopulation> element in a ResponseCache policy contains an invalid condition.
CacheNotFound
This error occurs if the specific cache mentioned in the error message has not been created on a specific Message Processor component.

Fault variables

N/A

Example error response

N/A

OAuthV2 policy

This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults .

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP status Cause Thrown by operations
steps.oauth.v2.access_token_expired
401 The access token is expired.

VerifyAccessToken InvalidateToken

steps.oauth.v2.access_token_not_approved
401 The access token was revoked. VerifyAccessToken
steps.oauth.v2.apiproduct_doesnot_exist
401 The requested API product does not exist in any of the API products associated with the access token. VerifyAccessToken
steps.oauth.v2.FailedToResolveAccessToken
500 The policy expected to find an access token in a variable specified in the <AccessToken> element, but the variable could not be resolved. GenerateAccessToken
steps.oauth.v2.FailedToResolveAuthorizationCode
500 The policy expected to find an authorization code in a variable specified in the <Code> element, but the variable could not be resolved. GenerateAuthorizationCode
steps.oauth.v2.FailedToResolveClientId
500 The policy expected to find the Client ID in a variable specified in the <ClientId> element, but the variable could not be resolved. GenerateAccessToken
GenerateAuthorizationCode
GenerateAccessTokenImplicitGrant
RefreshAccessToken
steps.oauth.v2.FailedToResolveRefreshToken
500 The policy expected to find a refresh token in a variable specified in the <RefreshToken> element, but the variable could not be resolved. RefreshAccessToken
steps.oauth.v2.FailedToResolveToken
500 The policy expected to find a token in a variable specified in the <Tokens> element, but the variable could not be resolved.

ValidateToken InvalidateToken

steps.oauth.v2.InsufficientScope
403 The access token presented in the request has a scope that does not match the scope specified in the verify access token policy. To learn about scope, see Working with OAuth2 scopes . VerifyAccessToken
steps.oauth.v2.invalid_client
401

This error name is returned when the <GenerateResponse> property of the policy is set to true and the client ID sent in the request is invalid. Check to be sure you are using the correct client key and secret values for the Developer App associated with your proxy. Typically, these values are sent as a Base64 encoded Basic Authorization header.

GenerateAccessToken
RefreshAccessToken
steps.oauth.v2.InvalidRequest
400 This error name is used for multiple different kinds of errors, typically for missing or incorrect parameters sent in the request. If <GenerateResponse> is set to false , use fault variables (described below) to retrieve details about the error, such as the fault name and cause. GenerateAccessToken
GenerateAuthorizationCode
GenerateAccessTokenImplicitGrant
RefreshAccessToken
steps.oauth.v2.InvalidAccessToken
401 The authorization header does not have the word Bearer , which is required. For example: Authorization: Bearer your_access_token VerifyAccessToken
steps.oauth.v2.InvalidAPICallAsNoApiProductMatchFound
401

The currently executing API proxy or operation is not in the Product associated with the access token.

Tips: Be sure that the product associated with the access token is configured correctly. For example, if you use wildcards in resource paths, be sure the wildcards are being used correctly. See Managing API products for details.

See also Oauth2.0 Access Token Verification throws "Invalid API call as no apiproduct match found" error for more guidance on causes for this error.

VerifyAccessToken
steps.oauth.v2.InvalidClientIdentifier
500

This error name is returned when the <GenerateResponse> property of the policy is set to false and the client ID sent in the request is invalid. Check to be sure you are using the correct client key and secret values for the Developer App associated with your proxy. Typically, these values are sent as a Base64 encoded Basic Authorization header.

GenerateAccessToken RefreshAccessToken

steps.oauth.v2.InvalidParameter
500 The policy must specify either an access token or an authorization code, but not both. GenerateAuthorizationCode
GenerateAccessTokenImplicitGrant
steps.oauth.v2.InvalidTokenType
500 The <Tokens>/<Token> element requires you to specify the token type (for example, refreshtoken ). If the client passes the wrong type, this error is thrown. ValidateToken
InvalidateToken
steps.oauth.v2.MissingParameter
500 The response type is token , but no grant types are specified. GenerateAuthorizationCode
GenerateAccessTokenImplicitGrant
steps.oauth.v2.UnSupportedGrantType
500

The client specified a grant type that is unsupported by the policy (not listed in the <SupportedGrantTypes> element).

GenerateAccessToken
GenerateAuthorizationCode
GenerateAccessTokenImplicitGrant
RefreshAccessToken

JWT token-specific runtime errors

Runtime error codes and descriptions for JWT auth token flows depend on the OAuth2 flow context:

Error codes for JWT token generation and refresh flows

For OAuth2 flows that generate or refresh JWT tokens, error responses adhere to the error responses specified in RFC6749. For details, see Section 5.2 Error Response .

Error codes for the token verification flow

The error codes listed in the following table apply to VerifyAccessToken operation only.

Fault code HTTP status Cause Thrown by operations
oauth.v2.JWTSigningFailed
401 The policy was unable to sign the JWT.

GenerateJWTAccessToken

oauth.v2.InvalidValueForJWTAlgorithm
401 This occurs when the algorithm is not present in the JWT access token or when the value is not supported.

GenerateJWTAccessToken VerifyJWTAccessToken

oauth.v2.InsufficientKeyLength
401 In Generation of JWT, for a key less than the minimum size for the HS384 or HS512 algorithms

GenerateJWTAccessToken VerifyJWTAccessToken

oauth.v2.JWTAlgorithmMismatch
401 The algorithm specified in the Generate policy did not match the one expected in the Verify policy. The algorithms specified must match.

VerifyJWTAccessToken

oauth.v2.JWTDecodingFailed
401 The policy was unable to decode the JWT. The JWT is possibly corrupted.

VerifyJWTAccessToken

oauth.v2.MissingMandatoryClaimsInJWT
401 Occurs when the required claims are not present in the Jwt Access token

VerifyJWTAccessToken

oauth.v2.InvalidJWTSignature
401 This occurs when the signature of JWT access token could not be verified or when the signature is invalid.

VerifyJWTAccessToken

oauth.v2.InvalidTypeInJWTHeader
401 Occurs when the JWT's type is not at+Jwt

VerifyJWTAccessToken

Deployment errors

These errors can occur when you deploy a proxy containing this policy.

Error name Cause
InvalidValueForExpiresIn

For the <ExpiresIn> element, valid values are positive integers.

InvalidValueForRefreshTokenExpiresIn For the <RefreshTokenExpiresIn> element, valid values are positive integers.
InvalidGrantType An invalid grant type is specified in the <SupportedGrantTypes> element. See the policy reference for a list of valid types.
ExpiresInNotApplicableForOperation Be sure that the operations specified in the <Operations> element support expiration. For example, the VerifyToken operation does not.
RefreshTokenExpiresInNotApplicableForOperation Be sure that the operations specified in the <Operations> element support refresh token expiration. For example, the VerifyToken operation does not.
GrantTypesNotApplicableForOperation Be sure that the grant types specified in <SupportedGrantTypes> are supported for the specified operation.
OperationRequired

You must specify an operation in this policy using the <Operation> element.

InvalidOperation

You must specify a valid operation in this policy using the <Operation> element.

TokenValueRequired You must specify a token <Token> value in the <Tokens> element.

JWT token-specific deployment errors

These deployment errors are specific to policies that use JWT token operations.

Error name Cause
InvalidValueForAlgorithm The algorithm specified in the <Algorithm> element is not among the list of available algorithms or is not present.
MissingKeyConfiguration The required <SecretKey> , <PrivateKey> , or <PublicKey> elements are missing, depending on which algorithm is used.
EmptyValueElementForKeyConfiguration The required child element <Value> is not defined in the <PrivateKey> , <PublicKey> , or <SecretKey> elements
InvalidKeyConfiguration The <PrivateKey> element is not used with RSA family algorithms or the <SecretKey> element is not used with HS Family algorithms.
EmptyRefAttributeForKeyconfiguration The ref attribute of the child element <Value> of the <PrivateKey> , <PublicKey> or <SecretKey> elements is empty.
InvalidVariableNameForKey The flow variable name specified in the ref attribute of the child element <Value> of the <PrivateKey> , <PublicKey> or <SecretKey> elements does not contain the private prefix.

Fault variables

These variables are set when this policy triggers an error at runtime.

Variables Where Example
fault.name=" fault_name "
fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name = "InvalidRequest"
oauthV2. policy_name .failed
policy_name is the user-specified name of the policy that threw the fault. oauthV2.GenerateAccesstoken.failed = true
oauthV2. policy_name .fault.name
policy_name is the user-specified name of the policy that threw the fault. oauthV2.GenerateAccesstoken.fault.name = InvalidRequest
oauthV2. policy_name .fault.cause
policy_name is the user-specified name of the policy that threw the fault. oauthV2.GenerateAccesstoken.cause = Required param : grant_type

Example error response

These responses are sent back to the client if the <GenerateResponse> element is true .

If <GenerateResponse> is true , the policy returns errors in this format for operations that generate tokens and codes. For a complete list, see see OAuth HTTP error response reference .

{"ErrorCode" : "invalid_client", "Error" :"ClientId is Invalid"}

If <GenerateResponse> is true , the policy returns errors in this format for verify and validate operations. For a complete list, see see OAuth HTTP error response reference .

 { 
 { 
 "fault" 
 : 
 { 
 "faultstring" 
 : 
 "Invalid Access Token" 
 , 
 "detail" 
 : 
 { 
 "errorcode" 
 : 
 "keymanagement.service.invalid_access_token" 
 } 
 } 
 } 

Example fault rule

<FaultRule name="OAuthV2 Faults">
    <Step>
        <Name>AM-InvalidClientResponse</Name>
        <Condition>(fault.name = "invalid_client") OR (fault.name = "InvalidClientIdentifier")</Condition>
    </Step>
    <Step>
        <Name>AM-InvalidTokenResponse</Name>
        <Condition>(fault.name = "invalid_access_token")</Condition>
    </Step>
    <Condition>(oauthV2.failed = true) </Condition>
</FaultRule>

GetOAuthV2Info policy

This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults .

Runtime errors

These errors can occur when the policy executes. The error names shown below are the strings that are assigned to the fault.name variable when an error occurs. See the Fault variables section below for more details.

Fault code HTTP status Cause
steps.oauth.v2.access_token_expired
500 The access token sent to the policy is expired.
steps.oauth.v2.authorization_code_expired
500 The authorization code sent to the policy is expired.
steps.oauth.v2.invalid_access_token
500 The access token sent to the policy is invalid.
steps.oauth.v2.invalid_client-invalid_client_id
500 The client ID sent to the policy is invalid.
steps.oauth.v2.invalid_refresh_token
500 The refresh token sent to the policy is invalid.
steps.oauth.v2.invalid_request-authorization_code_invalid
500 The authorization code sent to the policy is invalid.
steps.oauth.v2.InvalidAPICallAsNoApiProductMatchFound
401 Please see Oauth2.0 Access Token Verification throws "Invalid API call as no apiproduct match found" error for information about troubleshooting this error.
steps.oauth.v2.refresh_token_expired
500 The refresh token sent to the policy is expired.

Deployment errors

Refer to the message reported in the UI for information about deployment errors.

Fault variables

These variables are set when this policy triggers an error at runtime.

Variables Where Example
fault.name=" fault_name "
fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name Matches "IPDeniedAccess"
oauthV2. policy_name .failed
policy_name is the user-specified name of the policy that threw the fault. oauthV2.GetTokenInfo.failed = true
oauthV2. policy_name .fault.name
policy_name is the user-specified name of the policy that threw the fault. oauthV2.GetToKenInfo.fault.name = invalid_client-invalid_client_id
oauthV2. policy_name .fault.cause
policy_name is the user-specified name of the policy that threw the fault. oauthV2.GetTokenInfo.cause = ClientID is Invalid

Example error response

 { 
 "fault" 
 : 
 { 
 "faultstring" 
 : 
 "ClientId is Invalid" 
 , 
 "detail" 
 : 
 { 
 "errorcode" 
 : 
 "keymanagement.service.invalid_client-invalid_client_id" 
 } 
 } 
 } 

Example fault rule

<FaultRule name="OAuthV2 Faults">
    <Step>
        <Name>AM-InvalidClientIdResponse</Name>
    </Step>
    <Condition>(fault.name = "invalid_client-invalid_client_id")</Condition>
</FaultRule>

SetOAuthV2Info policy

This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults .

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP status Cause
steps.oauth.v2.access_token_expired
500 The access token sent to the policy is expired.
steps.oauth.v2.invalid_access_token
500 The access token sent to the policy is invalid.
steps.oauth.v2.InvalidAPICallAsNoApiProductMatchFound
401 Please see Oauth2.0 Access Token Verification throws "Invalid API call as no apiproduct match found" error for information about troubleshooting this error.

Deployment errors

Refer to the message reported in the UI for information about deployment errors.

Fault variables

These variables are set when this policy triggers an error at runtime.

Variables Where Example
fault.name=" fault_name "
fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name = "invalid_access_token"
oauthV2. policy_name .failed
policy_name is the user-specified name of the policy that threw the fault. oauthV2.SetTokenInfo.failed = true
oauthV2. policy_name .fault.name
policy_name is the user-specified name of the policy that threw the fault. oauthV2.SetTokenInfo.fault.name = invalid_access_token
oauthv2. policy_name .fault.cause
policy_name is the user-specified name of the policy that threw the fault. oauthV2.SetTokenInfo.cause = Invalid Access Token

Example error response

{
  "fault": {
    "faultstring": "Invalid Access Token",
    "detail": {
      "errorcode": "keymanagement.service.invalid_access_token"
    }
  }
}

Example fault rule

<FaultRule name=SetOAuthV2Info Faults">
    <Step>
        <Name>AM-InvalidTokenResponse</Name>
        <Condition>(fault.name = "invalid_access_token")</Condition>
    </Step>
    <Condition>(oauthV2.failed = true) </Condition>
</FaultRule>

DeleteOAuthV2Info policy

This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults .

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP status Cause
steps.oauth.v2.invalid_access_token
401 The access token sent to the policy is invalid.
steps.oauth.v2.invalid_request-authorization_code_invalid
401 The authorization code sent to the policy is invalid.
steps.oauth.v2.InvalidAPICallAsNoApiProductMatchFound
401 Please see Oauth2.0 Access Token Verification throws "Invalid API call as no apiproduct match found" error for information about troubleshooting this error.

Deployment errors

Refer to the message reported in the UI for information about deployment errors.

Fault variables

These variables are set when this policy triggers an error at runtime.

Variables Where Example
fault.name=" fault_name "
fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name = "invalid_access_token"
oauthV2. policy_name .failed
policy_name is the user-specified name of the policy that threw the fault. oauthV2.DeleteTokenInfo.failed = true
oauthV2. policy_name .fault.name
policy_name is the user-specified name of the policy that threw the fault. oauthV2.DeleteTokenInfo.fault.name = invalid_access_token
oauthv2. policy_name .fault.cause
policy_name is the user-specified name of the policy that threw the fault. oauthV2.DeleteTokenInfo.cause = Invalid Access Token

Example error response

{
  "fault": {
    "faultstring": "Invalid Access Token",
    "detail": {
      "errorcode": "keymanagement.service.invalid_access_token"
    }
  }
}

Example fault rule

<faultrule name="VariableOfNonMsgType"></faultrule><FaultRule name="DeleteOAuthV2Info_Faults">
    <Step>
        <Name>AM-InvalidTokenResponse</Name>
    </Step>
    <Condition>(fault.name = "invalid_access_token")</Condition>
</FaultRule>

PythonScript policy

This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults .

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP status Cause Fix
steps.script.ScriptEvaluationFailed
500 The PythonScript policy can throw several different types of ScriptExecutionFailed errors. Commonly seen types of errors include NameError and ZeroDivisionError .

Deployment errors

These errors can occur when you deploy a proxy containing this policy.

Error name Cause Fix
InvalidResourceUrlFormat
If the format of the resource URL specified within the <ResourceURL> or the <IncludeURL> element of the PythonScript policy is invalid, then the deployment of the API proxy fails.
InvalidResourceUrlReference
If the <ResourceURL> or the <IncludeURL> elements refer to a PythonScript file that does not exist, then the deployment of the API proxy fails. The referenced source file must exist either the API proxy, environment, or organization level.

Fault variables

These variables are set when this policy triggers an error at runtime. For more information, see What you need to know about policy errors .

Variables Where Example
fault.name=" fault_name "
fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name Matches "ScriptExecutionFailed"
pythonscript. policy_name .failed
policy_name is the user-specified name of the policy that threw the fault. pythonscript.PythonScript-1.failed = true

Example error response

 { 
 "fault" 
 : 
 { 
 "faultstring" 
 : 
 "Execution of SetResponse failed with error: Pythonscript runtime error: " 
 ReferenceError 
 : 
 "status" 
 is 
 not 
 defined 
 . 
\ "" 
 , 
 "detail" 
 : 
 { 
 "errorcode" 
 : 
 "steps.script.ScriptExecutionFailed" 
 } 
 } 
 } 

Example fault rule

< FaultRule 
 name 
 = 
 "PythonScript Policy Faults" 
>
    < Step 
>
        < Name>AM 
 - 
 CustomErrorResponse 
< / 
 Name 
>
        < Condition 
> ( 
 fault 
 . 
 name 
 Matches 
 "ScriptExecutionFailed" 
 ) 
< / 
 Condition 
>
    < / 
 Step 
>
    < Condition 
> ( 
 pythonscript 
 . 
 PythonScript 
 - 
 1. 
 failed 
 = 
 true 
 ) 
< / 
 Condition 
>
< / 
 FaultRule 
>

Quota policy

This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults .

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP status Cause Fix
policies.ratelimit.FailedToResolveQuotaIntervalReference
500 Occurs if the <Interval> element is not defined within the Quota policy. This element is mandatory and used to specify the interval of time applicable to the quota. The time interval can be minutes, hours, days, weeks, or months as defined with the <TimeUnit> element.
policies.ratelimit.FailedToResolveQuotaIntervalTimeUnitReference
500 Occurs if the <TimeUnit> element is not defined within the Quota policy. This element is mandatory and used to specify the unit of time applicable to the quota. The time interval can be in minutes, hours, days, weeks, or months.
policies.ratelimit.InvalidMessageWeight
500 Occurs if the value of the <MessageWeight> element specified through a flow variable is invalid (a non-integer value).
policies.ratelimit.QuotaViolation
500 The quota limit was exceeded. N/A

Deployment errors

Error name Cause Fix
InvalidQuotaInterval
If the quota interval specified in the <Interval> element is not an integer, then the deployment of the API proxy fails. For example, if the quota interval specified is 0.1 in the <Interval> element, then the deployment of the API proxy fails.
InvalidQuotaTimeUnit
If the time unit specified in the <TimeUnit> element is unsupported, then the deployment of the API proxy fails. The supported time units are minute , hour , day , week , and month .
InvalidQuotaType
If the type of the quota specified by the type attribute in the <Quota> element is invalid, then the deployment of the API proxy fails. The supported quota types are default , calendar , flexi , and rollingwindow .
InvalidStartTime
If the format of the time specified in the <StartTime> element is invalid, then the deployment of the API proxy fails. The valid format is yyyy-MM-dd HH:mm:ss , which is the ISO 8601 date and time format. For example, if the time specified in the <StartTime> element is 7-16-2017 12:00:00 then the deployment of the API proxy fails.
StartTimeNotSupported
If the <StartTime> element is specified whose quota type is not calendar type, then the deployment of the API proxy fails. The <StartTime> element is supported only for the calendar quota type. For example, if the type attribute is set to flexi or rolling window in the <Quota> element, then the deployment of the API proxy fails.
InvalidSynchronizeIntervalForAsyncConfiguration
If the value specified for the <SyncIntervalInSeconds> element within the <AsynchronousConfiguration> element in a Quota policy is less than zero, then the deployment of the API proxy fails.
InvalidAsynchronizeConfigurationForSynchronousQuota
If the value of the <AsynchronousConfiguration> element is set to true in a Quota policy, which also has asynchronous configuration defined using the <AsynchronousConfiguration> element, then the deployment of the API proxy fails.

Fault variables

These variables are set when this policy triggers an error. For more information, see What you need to know about policy errors .

Variables Where Example
fault.name=" fault_name "
fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name Matches "QuotaViolation"
ratelimit. policy_name .failed
policy_name is the user-specified name of the policy that threw the fault. ratelimit.QT-QuotaPolicy.failed = true

Example error response

 { 
 "fault" 
 : 
 { 
 "detail" 
 : 
 { 
 "errorcode" 
 : 
 "policies.ratelimit.QuotaViolation" 
 } 
 , 
 "faultstring" 
 : 
 "Rate limit quota violation. Quota limit  exceeded. Identifier : _default" 
 } 
 } 

Example fault rule

<FaultRules>
    <FaultRule name="Quota Errors">
        <Step>
            <Name>JavaScript-1</Name>
            <Condition>(fault.name Matches "QuotaViolation") </Condition>
        </Step>
        <Condition>ratelimit.Quota-1.failed=true</Condition>
    </FaultRule>
</FaultRules>

ResetQuota policy

This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults .

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP status Cause Fix
policies.resetquota.InvalidRLPolicy
500 The Quota policy specified in the <Quota> element of the ResetQuota policy is not defined in the API proxy and thus is not available during the flow. The <Quota> element is mandatory and identifies the target Quota policy whose counter should be updated through the ResetQuota policy.
policies.resetquota.FailedToResolveAllowCountRef
N/A The reference to the variable containing the allow count in the <Allow> element of the policy cannot be resolved to a value. This element is mandatory and specifies the amount to decrease the quota counter.
policies.resetquota.FailedToResolveRLPolicy
500 The variable referenced by the ref attribute in the <Quota> element cannot be resolved.

Deployment errors

These errors can occur when you deploy a proxy containing this policy.

Error name Cause Fix
InvalidCount
If the count value specified in the <Allow> element of the ResetQuota Policy is not an integer, then the deployment of the API proxy fails.

RaiseFaultpolicy

This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults .

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP status Cause
steps.raisefault.RaiseFault
500 See fault string.

Deployment errors

None.

Fault variables

These variables are set when a runtime error occurs. For more information, see What you need to know about policy errors .

Variables Where Example
fault.name=" fault_name "
fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name = "RaiseFault"
raisefault. policy_name .failed
policy_name is the user-specified name of the policy that threw the fault. raisefault.RF-ThrowError.failed = true

Example error response

 { 
  
 "fault" 
 :{ 
  
 "detail" 
 :{ 
  
 "errorcode" 
 : 
 "steps.raisefault.RaiseFault" 
  
 } 
 , 
  
 "faultstring" 
 : 
 "Raising fault. Fault name: [name]" 
  
 } 
 } 

RegularExpressionProtection policy

This section describes the error codes and messages returned and fault variables set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. If you want to capture an error and raise your own custom error, set the continueOnError="true" attribute on the policy root element. To learn more, see What you need to know about policy errors and Handling faults .

Runtime errors

These errors can occur when the policy executes.

Error Code Message
ExecutionFailed Failed to execute the RegularExpressionProtection StepDefinition {0}. Reason: {1}
InstantiationFailed Failed to instantiate the RegularExpressionProtection StepDefinition {0}
NonMessageVariable Variable {0} does not resolve to a Message
SourceMessageNotAvailable {0} message is not available for RegularExpressionProtection StepDefinition {1}
ThreatDetected Regular Expression Threat Detected in {0}: regex: {1} input: {2}
VariableResolutionFailed Failed to resolve variable {0}

Deployment errors

Error Code Message Fix
CannotBeConvertedToNodeset
RegularExpressionProtection {0}: Result of xpath {1} cannot be converted to nodeset. Context {2}
DuplicatePrefix
RegularExpressionProtection {0}: Duplicate prefix {1}
EmptyJSONPathExpression
RegularExpressionProtection {0}: Empty JSONPath expression
EmptyXPathExpression
RegularExpressionProtection {0}: Empty XPath expression
InvalidRegularExpression
RegularExpressionProtection {0}: Invalid Regular Expression {1}, Context {2}
JSONPathCompilationFailed
RegularExpressionProtection {0}: Failed to compile jsonpath {1}. Context {2}
NONEmptyPrefixMappedToEmptyURI
RegularExpressionProtection {0}: Non-empty prefix {1} cannot be mapped to empty uri
NoPatternsToEnforce
RegularExpressionProtection {0}: No patterns to enforce in {1}
NothingToEnforce
RegularExpressionProtection {0}: at least one of URIPath, QueryParam, Header, FormParam, XMLPayload, JSONPayload is mandatory
XPathCompilationFailed
RegularExpressionProtection {0}: Failed to compile xpath {1}. Context {2}

Fault variables

These variables are set when this policy triggers an error. For more information, see What you need to know about policy errors .

Variables Where Example
fault.name=" fault_name "
fault_name is the name of the fault, as listed in the table above. fault.name Matches "ThreatDetected"
regularexpressionprotection. policy_name .failed
policy_name is the user-specified name of the policy that threw the fault. regularexpressionprotection.Regular-Expressions-Protection-1.failed = true

SAMLAssertion policy

This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults .

Deployment errors

These errors can occur when you deploy a proxy containing this policy.

Error name Cause Fix
SourceNotConfigured
One or more of the following elements of the ValidateSAMLAssertion policy is not defined or empty: <Source> , <XPath> , <Namespaces> , <Namespace> .
TrustStoreNotConfigured
If the <TrustStore> element is empty or not specified in the ValidateSAMLAssertion policy, then the deployment of the API proxy fails. A valid truststore is required.
NullKeyStoreAlias
If the child element <Alias> is empty or not specified in the <Keystore> element of GenerateSAMLAssertion policy, then the deployment of the API proxy fails. A valid keystore alias is required.
NullKeyStore
If the child element <Name> is empty or not specified in the <Keystore> element of GenerateSAMLAssertion policy, then the deployment of the API proxy fails. A valid keystore name is required.
NullIssuer
If the <Issuer> element is empty or not specified in the GenerateSAMLAssertion policy, then the deployment of the API proxy fails. A valid <Issuer> value is required.

Fault variables

These variables are set when a runtime error occurs. For more information, see What you need to know about policy errors .

Variables Where Example
fault.name=" fault_name "
fault_name is the name of the fault. The fault name is the last part of the fault code. fault.name = "InvalidMediaTpe"
GenerateSAMLAssertion.failed
For a validate SAML assertion policy configuration, the error prefix is ValidateSAMLAssertion . GenerateSAMLAssertion.failed = true

Example error response

 { 
  
 "fault" 
 : 
  
 { 
  
 "faultstring" 
 : 
  
 "GenerateSAMLAssertion[GenSAMLAssert]: Invalid media type" 
 , 
  
 "detail" 
 : 
  
 { 
  
 "errorcode" 
 : 
  
 "steps.saml.generate.InvalidMediaTpe" 
  
 } 
  
 } 
 } 

Example fault rule

<FaultRules>
    <FaultRule name="invalid_saml_rule">
        <Step>
            <Name>invalid-saml</Name>
        </Step>
        <Condition>(GenerateSAMLAssertion.failed = "true")</Condition>
    </FaultRule>
</FaultRules>

ServiceCallout policy

This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults .

Runtime errors

These errors can occur when the policy executes.

Fault code
HTTP status
Cause
Fix
steps.servicecallout.ExecutionFailed
500

This error can occur when:

  • The policy is asked to handle input that is malformed or otherwise invalid.
  • The backend target service returns an error status (by default, 4xx or 5xx ).
steps.servicecallout.RequestVariableNotMessageType
500
The Request variable specified in the policy is not of type Message . For example, if it's a string or other non-message type, you'll see this error.
steps.servicecallout.RequestVariableNotRequestMessageType
500
The Request variable specified in the policy is not of type RequestMessage . For example, if it's a Response type, you'll see this error.
googletoken.EmptyIDTokenAudience
500

<GoogleIDToken> is enabled but useTargetUrl is set to false and no value is provided to <Audience> either directly or through reference at the time of error.

messaging.adaptors.http.filter.GoogleTokenGenerationFailure
500
This error can happen if the API proxy is configured with the <Authentication> element. Possible causes include:
  • The service account deployed with the proxy:
    • does not exist in your project
    • has been disabled
    • (Apigee hybrid only) has not granted the roles/iam.serviceAccountTokenCreator role on the apigee-runtime service account.
  • The IAMCredentials API is disabled in the source project of the apigee-runtime service account.
  • The <GoogleAccessToken> element is used and one or more invalid scopes are provided. For example, look for typos or empty scopes.
  • For Apigee hybrid only, check the runtime container's log and search for GoogleTokenGenerationFailure to find more detailed error messages that may help with debugging the problem.

    Deployment errors

    These errors can occur when you deploy a proxy containing this policy.

    Error name
    Cause
    Fix
    URLMissing
    The <URL> element inside <HTTPTargetConnection> is missing or empty.
    ConnectionInfoMissing
    This error happens if the policy does not have an <HTTPTargetConnection> or <LocalTargetConnection> element.
    InvalidTimeoutValue
    This error happens if the <Timeout> value is negative or zero.
    FAILED_PRECONDITION
    This error happens if the service account is missing when the proxy is configured with the <Authentication> tag.

    For example:

    Deployment of \"organizations/foo/apis/apiproxy/revisions/1\" requires a service
              account identity, but one was not provided with the request.
    PERMISSION_DENIED
    This error happens if there is a permission problem with the service account if the proxy is configured with the <Authentication> tag. Possible causes:
    • The service account does not exist.
    • The service account was not created in the same Google Cloud project as the Apigee organization.
    • The deployer does have iam.serviceAccounts.actAs permission on the service account. For details, see About service account permissions .

    Fault variables

    These variables are set when a runtime error occurs. For more information, see What you need to know about policy errors .

    Variables Where Example
    fault.name=" fault_name "
    fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name = "RequestVariableNotMessageType"
    servicecallout. policy_name .failed
    policy_name is the user-specified name of the policy that threw the fault. servicecallout.SC-GetUserData.failed = true

    Example error response

     { 
      
     "fault" 
     :{ 
      
     "detail" 
     :{ 
      
     "errorcode" 
     : 
     "steps.servicecallout.RequestVariableNotMessageType" 
      
     } 
     , 
      
     "faultstring" 
     : 
     "ServiceCallout[ServiceCalloutGetMockResponse]: 
     request variable data_str value is not of type Message" 
      
     } 
     } 
    

    Example fault rule

    <FaultRule name="RequestVariableNotMessageType">
        <Step>
            <Name>AM-RequestVariableNotMessageType</Name>
        </Step>
        <Condition>(fault.name = "RequestVariableNotMessageType")</Condition>
    </FaultRule>

    SOAPMessageValidation policy

    This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults .

    Runtime errors

    These errors can occur when the policy executes.

    Fault code
    HTTP status
    Cause
    Fix
    steps.messagevalidation.SourceMessageNotAvailable
    500

    This error occurs if a variable specified in the <Source> element of the policy is either:

    • out of scope (not available in the specific flow where the policy is being executed)
    • or
    • can't be resolved (is not defined)
    steps.messagevalidation.NonMessageVariable
    500

    This error occurs if the <Source> element in the SOAPMessageValidation policy is set to a variable which is not of type message .

    Message type variables represent entire HTTP requests and responses. The built-in Apigee flow variables request , response , and message are of type message. To learn more about message variables, see the Variables reference .

    steps.messagevalidation.Failed
    500
    This error occurs if the SOAPMessageValidation policy fails to validate the input message payload against the XSD schema or WSDL definition. It will also occur if there is malformed JSON or XML in the payload message.

    Deployment errors

    These errors can occur when you deploy a proxy containing this policy.

    Error name Cause Fix
    InvalidResourceType
    The <ResourceURL> element in the SOAPMessageValidation policy is set to a resource type not supported by the policy.
    ResourceCompileFailed
    The resource script referenced in the <ResourceURL> element of the SOAPMessageValidation policy contains an error that prevents it from compiling.
    RootElementNameUnspecified
    The <Element> element in the SOAPMessageValidation policy does not contain the root element's name.
    InvalidRootElementName
    The <Element> element in the SOAPMessageValidation policy contains a root element name that does not adhere to XML rules for valid element naming.

    SpikeArrest policy

    This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults .

    Runtime errors

    These errors can occur when the policy executes.

    Fault code HTTP status Cause Fix
    policies.ratelimit.FailedToResolveSpikeArrestRate
    500 This error occurs if the reference to the variable containing the rate setting within the <Rate> element cannot be resolved to a value within the SpikeArrest policy. This element is mandatory and used to specify the spike arrest rate in the form of int pm or int ps .
    policies.ratelimit.InvalidMessageWeight
    500 This error occurs if the value specified for the <MessageWeight> element through a flow variable is invalid (a non-integer value).
    policies.ratelimit.SpikeArrestViolation
    429 The rate limit is exceeded.

    Deployment errors

    These errors can occur when you deploy a proxy containing this policy.

    Error name Cause Fix
    InvalidAllowedRate
    If the spike arrest rate specified in the <Rate> element of the SpikeArrest policy is not an integer or if the rate does not have ps or pm as a suffix, then the deployment of the API proxy fails.

    Fault variables

    These variables are set when a runtime error occurs. For more information, see What you need to know about policy errors .

    Variables Where Example
    fault.name=" fault_name "
    fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name Matches "SpikeArrestViolation"
    ratelimit. policy_name .failed
    policy_name is the user-specified name of the policy that threw the fault. ratelimit.SA-SpikeArrestPolicy.failed = true

    Example error response

    Shown below is an example error response:

     { 
     "fault" 
     : 
     { 
     "detail" 
     : 
     { 
     "errorcode" 
     : 
     "policies.ratelimit.SpikeArrestViolation" 
     } 
     , 
     "faultstring" 
     : 
     "Spike arrest violation. Allowed rate : 10ps" 
     } 
     } 
    

    Example fault rule

    Shown below is an example fault rule to handle a SpikeArrestViolation fault:

    <FaultRules>
        <FaultRule name="Spike Arrest Errors">
            <Step>
                <Name>JavaScript-1</Name>
                <Condition>(fault.name Matches "SpikeArrestViolation") </Condition>
            </Step>
            <Condition>ratelimit.Spike-Arrest-1.failed=true</Condition>
        </FaultRule>
    </FaultRules>

    VerifyAPIKey policy

    This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults .

    Runtime errors

    These errors can occur when the policy executes.

    Fault code
    HTTP status
    Cause
    keymanagement.service.consumer_key_missing_api_product_association
    400

    The application credential is missing an API product association. Please associate the key's application with an API product. Note that this applies for all application types, such as developer apps and AppGroup apps.

    keymanagement.service.DeveloperStatusNotActive
    401

    The developer who created the Developer App that has the API key you are using has an inactive status. When an App Developer's status is set to inactive, any Developer Apps created by that developer are deactivated. An admin user with appropriate permissions (such as Organization Administrator) can change a developer's status in the following ways:

    keymanagement.service.invalid_client-app_not_approved
    401
    The Developer App associated with the API key is revoked. A revoked app cannot access any API products and cannot invoke any API managed by Apigee. An org admin can change the status of a Developer App using the Apigee API. See Generate Key Pair or Update Developer App Status .
    oauth.v2.FailedToResolveAPIKey
    401
    The policy expects to find the API key in a variable that is specified in the policy's <APIKey> element .This error arises when the expected variable does not exist (it cannot be resolved).
    oauth.v2.InvalidApiKey
    401
    An API key was received by Apigee, but it is invalid. When Apigee looks up the key in its database, it must exactly match the one that was sent in the request. If the API worked previously, make sure the key was not regenerated. If the key was regenerated, you will see this error if you try to use the old key. For details, see Controlling access to your APIs by registering apps .
    oauth.v2.InvalidApiKeyForGivenResource
    401
    An API key was received by Apigee, and it is valid; however, it does not match an approved key in the Developer App associated with your API proxy through a Product.

    Deployment errors

    These errors can occur when you deploy a proxy containing this policy.

    Error name Cause
    SpecifyValueOrRefApiKey The <APIKey> element does not have a value or key specified.

    Fault variables

    These variables are set when a runtime error occurs. For more information, see What you need to know about policy errors .

    Variables Where Example
    fault.name=" fault_name "
    fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name Matches "FailedToResolveAPIKey"
    oauthV2. policy_name .failed
    policy_name is the user-specified name of the policy that threw the fault. oauthV2.VK-VerifyAPIKey.failed = true

    Example error responses

    {  
       "fault":{  
          "faultstring":"Invalid ApiKey",
          "detail":{  
             "errorcode":"oauth.v2.InvalidApiKey"
          }
       }
    }
    {  
       "fault":{  
          "detail":{  
             "errorcode":"keymanagement.service.DeveloperStatusNotActive"
          },
          "faultstring":"Developer Status is not Active"
       }
    }

    Example fault rule

    <FaultRule name="FailedToResolveAPIKey">
        <Step>
            <Name>AM-FailedToResolveAPIKey</Name>
        </Step>
        <Condition>(fault.name Matches "FailedToResolveAPIKey") </Condition>
    </FaultRule>

    VerifyIAM policy

    This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults .

    Runtime errors

    These errors can occur when the policy executes.

    Fault code HTTP status Cause
    steps.verifyiam.CredentialSourceRefUnresolved
    400 Flow variable provided inside credential source could not be resolved.
    steps.verifyiam.CredentialValueNotProvided
    400 Credential not found. If the credential source reference is not provided, we look at the default place like authorization header.
    steps.verifyiam.Forbidden
    403 Request could not be forwarded due to lack of sufficient permissions or missing access scopes or any other related issues.
    steps.verifyiam.MiscellaneousAuthorizationConfigurationError
    500 An issue with the authentication request to IAM. The API producer needs to fix this error based on details in the error response.
    steps.verifyiam.Unauthorized
    401 Problem with the credential, such as the value being invalid or expired.
    steps.verifyiam.UnexpectedAuthorizationInfrastructureError
    500 Internal error.

    Deployment errors

    This policy does not return any policy-specific deployment errors.

    Fault variables

    These variables are set when this policy triggers an error at runtime.

    Variables Where Example
    fault.name=" fault_name "
    fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name="Unauthorized"
    verifyiam. policy_name .failed
    policy_name is the user-specified name of the policy that threw the fault. verifyiam.Verify-IAMToken.failed = true

    VerifyJWS policy

    This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults .

    Runtime errors

    These errors can occur when the policy executes.

    Fault code HTTP status Occurs when
    steps.jws.AlgorithmInTokenNotPresentInConfiguration
    401 Occurs when the verification policy has multiple algorithms
    steps.jws.AlgorithmMismatch
    401 The algorithm specified in the header by the Generate policy did not match the one expected in the Verify policy. The algorithms specified must match.
    steps.jws.ContentIsNotDetached
    401 <DetachedContent> is specified when the JWS does not contain a detached content payload.
    steps.jws.FailedToDecode
    401 The policy was unable to decode the JWS. The JWS is possibly corrupted.
    steps.jws.InsufficientKeyLength
    401 For a key less than 32 bytes for the HS256 algorithm
    steps.jws.InvalidClaim
    401 For a missing claim or claim mismatch, or a missing header or header mismatch.
    steps.jws.InvalidCurve
    401 The curve specified by the key is not valid for the Elliptic Curve algorithm.
    steps.jws.InvalidJsonFormat
    401 Invalid JSON found in the JWS header.
    steps.jws.InvalidJws
    401 This error occurs when the JWS signature verification fails.
    steps.jws.InvalidPayload
    401 The JWS payload is invalid.
    steps.jws.InvalidSignature
    401 <DetachedContent> is omitted and the JWS has a detached content payload.
    steps.jws.KeyIdMissing
    401 The Verify policy uses a JWKS as a source for public keys, but the signed JWS does not include a kid property in the header.
    steps.jws.KeyParsingFailed
    401 The public key could not be parsed from the given key information.
    steps.jws.MissingPayload
    401 The JWS payload is missing.
    steps.jws.NoAlgorithmFoundInHeader
    401 Occurs when the JWS omits the algorithm header.
    steps.jws.NoMatchingPublicKey
    401 The Verify policy uses a JWKS as a source for public keys, but the kid in the signed JWS is not listed in the JWKS.
    steps.jws.UnhandledCriticalHeader
    401 A header found by the Verify JWS policy in the crit header is not listed in KnownHeaders .
    steps.jws.UnknownException
    401 An unknown exception occurred.
    steps.jws.WrongKeyType
    401 Wrong type of key specified. For example, if you specify an RSA key for an Elliptic Curve algorithm, or a curve key for an RSA algorithm.

    Deployment errors

    These errors can occur when you deploy a proxy containing this policy.

    Error name Occurs when
    InvalidAlgorithm The only valid values are: RS256, RS384, RS512, PS256, PS384, PS512, ES256, ES384, ES512, HS256, HS384, HS512 .

    EmptyElementForKeyConfiguration

    FailedToResolveVariable

    InvalidConfigurationForActionAndAlgorithmFamily

    InvalidConfigurationForVerify

    InvalidEmptyElement

    InvalidFamiliesForAlgorithm

    InvalidKeyConfiguration

    InvalidNameForAdditionalClaim

    InvalidNameForAdditionalHeader

    InvalidPublicKeyId

    InvalidPublicKeyValue

    InvalidSecretInConfig

    InvalidTypeForAdditionalClaim

    InvalidTypeForAdditionalHeader

    InvalidValueForElement

    InvalidValueOfArrayAttribute

    InvalidVariableNameForSecret

    MissingConfigurationElement

    MissingElementForKeyConfiguration

    MissingNameForAdditionalClaim

    MissingNameForAdditionalHeader

    Other possible deployment errors.

    Fault variables

    These variables are set when a runtime error occurs. For more information, see What you need to know about policy errors .

    Variables Where Example
    fault.name=" fault_name "
    fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name Matches "TokenExpired"
    JWS.failed
    All JWS policies set the same variable in the case of a failure. jws.JWS-Policy.failed = true

    Example error response

    For error handling, the best practice is to trap the errorcode part of the error response. Do not rely on the text in the faultstring , because it could change.

    Example fault rule

    <FaultRules>
        <FaultRule name="JWS Policy Errors">
            <Step>
                <Name>JavaScript-1</Name>
                <Condition>(fault.name Matches "TokenExpired")</Condition>
            </Step>
            <Condition>JWS.failed=true</Condition>
        </FaultRule>
    </FaultRules>

    VerifyJWT policy

    This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults .

    Runtime errors

    These errors can occur when the policy executes.

    Fault code HTTP status Occurs when
    steps.jwt.AlgorithmInTokenNotPresentInConfiguration
    401 Occurs when the verification policy has multiple algorithms.
    steps.jwt.AlgorithmMismatch
    401 The algorithm specified in the Generate policy did not match the one expected in the Verify policy. The algorithms specified must match.
    steps.jwt.FailedToDecode
    401 The policy was unable to decode the JWT. The JWT is possibly corrupted.
    steps.jwt.GenerationFailed
    401 The policy was unable to generate the JWT.
    steps.jwt.InsufficientKeyLength
    401 For a key less than 32 bytes for the HS256 algorithm, less than 48 bytes for the HS386 algortithm, and less than 64 bytes for the HS512 algorithm.
    steps.jwt.InvalidClaim
    401 For a missing claim or claim mismatch, or a missing header or header mismatch.
    steps.jwt.InvalidConfiguration
    401 Both the <Algorithm> and <Algorithms> elements are present.
    steps.jwt.InvalidCurve
    401 The curve specified by the key is not valid for the Elliptic Curve algorithm.
    steps.jwt.InvalidIterationCount
    401 The iteration count that was used in the encrypted JWT is not equal to the iteration count specified in the VerifyJWT policy configuration. This applies only to JWT that use <PasswordKey> .
    steps.jwt.InvalidJsonFormat
    401 Invalid JSON found in the header or payload.
    steps.jwt.InvalidKeyConfiguration
    401 JWKS in the <PublicKey> element is invalid. The reason could be that the JWKS URI endpoint is not reachable from the Apigee instance. Test connectivity to the endpoint by creating a passthrough proxy and using the JWKS endpoint as a target.
    steps.jwt.InvalidSaltLength
    401 The salt length that was used in the encrypted JWT is not equal to the salt length specified in the VerifyJWT policy configuration. This applies only to JWT that use <PasswordKey> .
    steps.jwt.InvalidPasswordKey
    401 The specified key specified did not meet the requirements.
    steps.jwt.InvalidPrivateKey
    401 The specified key specified did not meet the requirements.
    steps.jwt.InvalidPublicKey
    401 The specified key specified did not meet the requirements.
    steps.jwt.InvalidSecretKey
    401 The specified key specified did not meet the requirements.
    steps.jwt.InvalidToken
    401 This error occurs when the JWT signature verification fails.
    steps.jwt.JwtAudienceMismatch
    401 The audience claim failed on token verification.
    steps.jwt.JwtIssuerMismatch
    401 The issuer claim failed on token verification.
    steps.jwt.JwtSubjectMismatch
    401 The subject claim failed on token verification.
    steps.jwt.KeyIdMissing
    401 The Verify policy uses a JWKS as a source for public keys, but the signed JWT does not include a kid property in the header.
    steps.jwt.KeyParsingFailed
    401 The public key could not be parsed from the given key information.
    steps.jwt.NoAlgorithmFoundInHeader
    401 Occurs when the JWT contains no algorithm header.
    steps.jwt.NoMatchingPublicKey
    401 The Verify policy uses a JWKS as a source for public keys, but the kid in the signed JWT is not listed in the JWKS.
    steps.jwt.SigningFailed
    401 In GenerateJWT, for a key less than the minimum size for the HS384 or HS512 algorithms
    steps.jwt.TokenExpired
    401 The policy attempts to verify an expired token.
    steps.jwt.TokenNotYetValid
    401 The token is not yet valid.
    steps.jwt.UnhandledCriticalHeader
    401 A header found by the Verify JWT policy in the crit header is not listed in KnownHeaders .
    steps.jwt.UnknownException
    401 An unknown exception occurred.
    steps.jwt.WrongKeyType
    401 Wrong type of key specified. For example, if you specify an RSA key for an Elliptic Curve algorithm, or a curve key for an RSA algorithm.

    Deployment errors

    These errors can occur when you deploy a proxy containing this policy.

    Error name Cause Fix
    InvalidNameForAdditionalClaim
    The deployment will fail if the claim used in the child element <Claim> of the <AdditionalClaims> element is one of the following registered names: kid , iss , sub , aud , iat , exp , nbf , or jti .
    InvalidTypeForAdditionalClaim
    If the claim used in the child element <Claim> of the <AdditionalClaims> element is not of type string , number , boolean , or map , the deployment will fail.
    MissingNameForAdditionalClaim
    If the name of the claim is not specified in the child element <Claim> of the <AdditionalClaims> element, the deployment will fail.
    InvalidNameForAdditionalHeader
    This error ccurs when the name of the claim used in the child element <Claim> of the <AdditionalClaims> element is either alg or typ .
    InvalidTypeForAdditionalHeader
    If the type of claim used in the child element <Claim> of the <AdditionalClaims> element is not of type string , number , boolean , or map , the deployment will fail.
    InvalidValueOfArrayAttribute
    This error occurs when the value of the array attribute in the child element <Claim> of the <AdditionalClaims> element is not set to true or false .
    InvalidValueForElement
    If the value specified in the <Algorithm> element is not a supported value, the deployment will fail.
    MissingConfigurationElement
    This error will occur if the <PrivateKey> element is not used with RSA family algorithms or the <SecretKey> element is not used with HS Family algorithms.
    InvalidKeyConfiguration
    If the child element <Value> is not defined in the <PrivateKey> or <SecretKey> elements, the deployment will fail.
    EmptyElementForKeyConfiguration
    If the ref attribute of the child element <Value> of the <PrivateKey> or <SecretKey> elements is empty or unspecified, the deployment will fail.
    InvalidConfigurationForVerify
    This error occurs if the <Id> element is defined within the <SecretKey> element.
    InvalidEmptyElement
    This error occurs if the <Source> element of the Verify JWT policy is empty. If present, it must be defined with an Apigee flow variable name.
    InvalidPublicKeyValue
    If the value used in the child element <JWKS> of the <PublicKey> element does not use a valid format as specified in RFC 7517 , the deployment will fail.
    InvalidConfigurationForActionAndAlgorithm
    If the <PrivateKey> element is used with HS Family algorithms or the <SecretKey> element is used with RSA Family algorithms, the deployment will fail.

    Fault variables

    These variables are set when a runtime error occurs. For more information, see What you need to know about policy errors .

    Variables Where Example
    fault.name=" fault_name "
    fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name Matches "InvalidToken"
    JWT.failed
    All JWT policies set the same variable in the case of a failure. JWT.failed = true

    Example error response

    JWT Policy Fault Codes

    For error handling, the best practice is to trap the errorcode part of the error response. Do not rely on the text in the faultstring , because it could change.

    Example fault rule

    <FaultRules>
            <FaultRule name="JWT Policy Errors">
                <Step>
                    <Name>JavaScript-1</Name>
                    <Condition>(fault.name Matches "InvalidToken")</Condition>
                </Step>
                <Condition>JWT.failed=true</Condition>
            </FaultRule>
        </FaultRules>

    XMLThreatProtection policy

    This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults .

    Runtime errors

    These errors can occur when the policy executes.

    Fault code
    HTTP status
    Cause
    Fix
    steps.xmlthreatprotection.ExecutionFailed
    500
    The XMLThreatProtection policy can throw many different types of ExecutionFailed errors. Most of these errors occur when a specific threshold set in the policy is exceeded. These types of errors include: element name length , child count , node depth , attribute count , attribute name length , and many others. You can see the complete list in the XMLThreatProtection policy runtime error troubleshooting topic.
    steps.xmlthreatprotection.InvalidXMLPayload
    500
    This error occurs if the input message payload specified by the XMLThreatProtection policy's <Source> element is not a valid XML Document.
    steps.xmlthreatprotection.SourceUnavailable
    500
    This error occurs if the message variable specified in the <Source> element is either:
    • Out of scope (not available in the specific flow where the policy is being executed)
    • Is not one of the valid values request , response , or message
    steps.xmlthreatprotection.NonMessageVariable
    500
    This error occurs if the <Source> element is set to a variable which is not of type message .

    Deployment errors

    None.

    Fault variables

    These variables are set when a runtime error occurs. For more information, see What you need to know about policy errors .

    Variables Where Example
    fault.name=" fault_name "
    fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name Matches "SourceUnavailable"
    xmlattack. policy_name .failed
    policy_name is the user-specified name of the policy that threw the fault. xmlattack.XPT-SecureRequest.failed = true

    Example error response

     { 
     "fault": { 
     "faultstring": "XMLThreatProtection[XPT-SecureRequest]: Execution failed. reason: XMLThreatProtection[XTP-SecureRequest]: Exceeded object entry name length at line 2", 
     "detail": { 
     "errorcode": "steps.xmlthreatprotection.ExecutionFailed" 
     } 
     } 
     } 
    

    Example fault rule

    <FaultRule name="XML Threat Protection Policy Faults">
        <Step>
            <Name>AM-CustomErrorResponse</Name>
            <Condition>(fault.name Matches "ExecutionFailed") </Condition>
        </Step>
        <Condition>(xmlattack.XPT-SecureRequest.failed = true) </Condition>
    </FaultRule>

    XMLtoJSON policy

    This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults .

    Runtime errors

    These errors can occur when the policy executes.

    Fault code
    HTTP status
    Cause
    Fix
    steps.xmltojson.ExecutionFailed
    ExecutionFailed
    This error occurs when the input payload (XML) is empty or the input XML is invalid or malformed.
    steps.xmltojson.InCompatibleTypes
    ExecutionFailed
    This error occurs if the type of the variable defined in the <Source> element and the <OutputVariable> element are not the same. It is mandatory that the type of the variables contained within the <Source> element and the <OutputVariable> element matches.
    steps.xmltojson.InvalidSourceType
    ExecutionFailed
    This error occurs if the type of the variable used to define the <Source> element is invalid.The valid types of variable are message and string.
    steps.xmltojson.OutputVariableIsNotAvailable
    ExecutionFailed
    This error occurs if the variable specified in the <Source> element of the XML to JSON policy is of type string and the <OutputVariable> element is not defined. The <OutputVariable> element is mandatory when the variable defined in the <Source> element is of type string.
    steps.xmltojson.SourceUnavailable
    ExecutionFailed
    This error occurs if the message variable specified in the <Source> element of the XML to JSON policy is either:
    • Out of scope (not available in the specific flow where the policy is being executed) or
    • Can't be resolved (is not defined)

    Deployment errors

    These errors can occur when you deploy a proxy containing this policy.

    Error name Cause Fix
    EitherOptionOrFormat
    If one of the elements <Options> or <Format> is not declared in the XML to JSON Policy, then the deployment of the API proxy fails.
    UnknownFormat
    If the <Format> element within the XML to JSON policy has an unknown format defined, then the deployment of the API proxy fails. Predefined formats include: xml.com , yahoo , google , and badgerFish .

    Fault variables

    These variables are set when a runtime error occurs. For more information, see What you need to know about policy errors .

    Variables Where Example
    fault.name=" fault_name "
    fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name = "SourceUnavailable"
    xmltojson. policy_name .failed
    policy_name is the user-specified name of the policy that threw the fault. xmltojson.XMLtoJSON-1.failed = true

    Example error response

     { 
     "fault": { 
     "faultstring": "XMLToJSON[XMLtoJSON-1]: Source xyz is not available", 
     "detail": { 
     "errorcode": "steps.xml2json.SourceUnavailable" 
     } 
     } 
     } 
    

    Example fault rule

    < faultrule name="VariableOfNonMsgType"></faultrule><FaultRule name="XML to JSON Faults"> 
     <Step> 
     <Name>AM-SourceUnavailableMessage</Name> 
     <Condition>(fault.name Matches "SourceUnavailable") </Condition> 
     </Step> 
     <Step> 
     <Name>AM-BadXML</Name> 
     <Condition>(fault.name = "ExecutionFailed")</Condition> 
     </Step> 
     <Condition>(xmltojson.XMLtoJSON-1.failed = true) </Condition> 
    < /FaultRule 
    >

    XSLTransform policy

    Runtime errors

    These errors can occur when the policy executes.

    Fault code HTTP status Cause Fix
    steps.xsl.XSLSourceMessageNotAvailable
    500 This error occurs if the message or string variable specified in the <Source> element of the XSLTransform policy is either out of scope (not available in the specific flow where the policy is being executed) or can't be resolved (is not defined).
    steps.xsl.XSLEvaluationFailed
    500 This error occurs if the input XML payload is unavailable/malformed or the XSLTransform policy fails/is unable to transform the input XML file based on the transformation rules provided in the XSL file. There could be many different causes for the XSLTransform policy to fail. The reason for failure in the error message will provide more information on the cause.

    Deployment errors

    These errors can occur when you deploy a proxy containing this policy.

    Error name Cause Fix
    XSLEmptyResourceUrl
    If the <ResourceURL> element in the XSLTransform policy is empty, then the deployment of the API proxy fails.
    XSLInvalidResourceType
    If the resource type specified in the <ResourceURL> element of the XSLTransform policy is not of type xsl , then the deployment of the API proxy fails.
    Design a Mobile Site
    View Site in Mobile | Classic
    Share by: