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
. |
build |
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.
steps.assignmessage.SetVariableFailed
500
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. |
build |
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. |
build |
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
). |
build |
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. |
build |
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. |
build |
PasswordRequired
|
The <Password>
element must be present for the named operation. |
build |
AssignToRequired
|
The <AssignTo>
element must be present for the named operation. |
build |
SourceRequired
|
The <Source>
element must be present for the named operation. |
build |
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
. |
|
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. | build |
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. |
build |
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. |
build |
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
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.
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
steps.extractvariables.InvalidJSONPath
500
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
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
steps.extractvariables.SourceMessageNotAvailable
500
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
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. |
build |
NONEmptyPrefixMappedToEmptyURI
|
This error occurs if the policy has a prefix defined in the Namespace
element under the XMLPayload
element, but no URI is
defined. |
build |
DuplicatePrefix
|
This error occurs if the policy has the same prefix defined more than
once in the Namespace
element under the XMLPayload
element. |
build |
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.
|
build |
EmptyXPathExpression
|
If the policy has an empty XPath
expression within the XMLPayload
element, then the deployment of the API proxy fails. |
build |
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. |
build |
EmptyJSONPathExpression
|
If the policy has an empty XPath
expression within the XMLPayload
element, then the deployment of the API proxy fails. |
build |
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. |
build |
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. |
build |
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. |
build |
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. |
build |
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.
|
build |
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
. |
|
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
. |
build |
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. |
build |
MissingNameForAdditionalClaim
|
If the name of the claim is not specified in the child element <Claim>
of the <AdditionalClaims>
element, the deployment will fail. |
build |
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
. |
build |
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. |
build |
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
. |
build |
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. |
build |
InvalidValueForElement
|
If the value specified in the <Algorithm>
element is not a supported value,
the deployment will fail. |
build |
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. |
build |
InvalidKeyConfiguration
|
If the child element <Value>
is not defined in the <PrivateKey>
or <SecretKey>
elements, the deployment will fail. |
build |
EmptyElementForKeyConfiguration
|
If the ref attribute of the child element <Value>
of the <PrivateKey>
or <SecretKey>
elements is empty or unspecified, the deployment will fail. |
build |
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.)
. |
build |
InvalidSecretInConfig
|
This error occurs if the child element <Value>
of the <PrivateKey>
or <SecretKey>
elements does not contain the private prefix (private.)
. |
build |
InvalidTimeFormat
|
If the value specified in the <NotBefore>
element does not use a
supported format, the deployment will fail. |
build |
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
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
. |
build |
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
. |
build |
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. |
build |
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. |
build |
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). |
build |
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. |
build |
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.
steps.jsonthreatprotection.ExecutionFailed
500
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
<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
, ormessage
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.
steps.jsontoxml.ExecutionFailed
500
steps.jsontoxml.InCompatibleTypes
500
<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
<Source>
element
is invalid. The valid types of variable are message
and string
.steps.jsontoxml.OutputVariableIsNotAvailable
500
<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.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 |
build |
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. |
build |
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. |
build |
ValueIsMissing
|
This error occurs if the <Value>
element is missing underneath the <Entry>
element of
the <InitialEntries>
element of the KeyValueMapOperations
policy. |
build |
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. |
build |
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. |
build |
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 |
steps.oasvalidation.NonMessageVariable
|
500
|
|
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. |
build |
CacheNotFound
|
The cache specified in the <CacheResource>
element does not
exist. |
build |
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. |
build |
InvalidTimeout
|
If the <CacheLookupTimeoutInSeconds>
element is set to
a negative number, then the deployment of the API proxy fails. |
build |
CacheNotFound
|
This error occurs if the specific cache mentioned in the error message has not been created on a specific Message Processor component. | build |
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. |
build |
CacheNotFound
|
This error occurs if the specific cache mentioned in the error message has not been created on a specific Message Processor component. | build |
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. |
build |
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. |
build |
ResponseCacheStepAttachmentNotAllowedReq
|
This error occurs if the same ResponseCache
policy is attached to multiple request
paths within any flows of an API proxy. |
build |
ResponseCacheStepAttachmentNotAllowedResp
|
This error occurs if the same ResponseCache
policy is attached to multiple response
paths within any flows of an API proxy. |
build |
InvalidMessagePatternForErrorCode
|
This error occurs if either the <SkipCacheLookup>
or the <SkipCachePopulation>
element in a ResponseCache
policy contains an invalid condition. |
build |
CacheNotFound
|
This error occurs if the specific cache mentioned in the error message has not been created on a specific Message Processor component. | build |
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. | |
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. |
|
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 |
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 |
|
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 |
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:
- If the flow context is token generation or refresh, see Error codes for JWT token generation and refresh flows below.
- For the token verification flow, see Error codes for token verification flows below.
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. | |
oauth.v2.InvalidValueForJWTAlgorithm
|
401
|
This occurs when the algorithm is not present in the JWT access token or when the value is not supported. | |
oauth.v2.InsufficientKeyLength
|
401
|
In Generation of JWT, for a key less than the minimum size for the HS384 or HS512 algorithms | |
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. | |
oauth.v2.JWTDecodingFailed
|
401
|
The policy was unable to decode the JWT. The JWT is possibly corrupted. | |
oauth.v2.MissingMandatoryClaimsInJWT
|
401
|
Occurs when the required claims are not present in the Jwt Access token | |
oauth.v2.InvalidJWTSignature
|
401
|
This occurs when the signature of JWT access token could not be verified or when the signature is invalid. | |
oauth.v2.InvalidTypeInJWTHeader
|
401
|
Occurs when the JWT's type is not at+Jwt
|
|
Deployment errors
These errors can occur when you deploy a proxy containing this policy.
Error name | Cause |
---|---|
InvalidValueForExpiresIn
|
For the |
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 |
InvalidOperation
|
You must specify a valid operation in this policy using the |
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 . | build |
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. |
build |
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. |
build |
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. |
build |
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. |
build |
policies.ratelimit.InvalidMessageWeight
|
500
|
Occurs if the value of the <MessageWeight>
element specified through a flow variable
is invalid (a non-integer value). |
build |
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. |
build |
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
. |
build |
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
. |
build |
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. |
build |
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. |
build |
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. |
build |
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. |
build |
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. |
build |
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. |
build |
policies.resetquota.FailedToResolveRLPolicy
|
500
|
The variable referenced by the ref
attribute in the <Quota>
element
cannot be resolved. |
build |
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. |
build |
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}
|
build |
DuplicatePrefix
|
RegularExpressionProtection {0}: Duplicate prefix {1}
|
build |
EmptyJSONPathExpression
|
RegularExpressionProtection {0}: Empty JSONPath expression
|
build |
EmptyXPathExpression
|
RegularExpressionProtection {0}: Empty XPath expression
|
build |
InvalidRegularExpression
|
RegularExpressionProtection {0}: Invalid Regular Expression {1}, Context {2}
|
build |
JSONPathCompilationFailed
|
RegularExpressionProtection {0}: Failed to compile jsonpath {1}. Context {2}
|
build |
NONEmptyPrefixMappedToEmptyURI
|
RegularExpressionProtection {0}: Non-empty prefix {1} cannot be mapped to empty
uri
|
build |
NoPatternsToEnforce
|
RegularExpressionProtection {0}: No patterns to enforce in {1}
|
build |
NothingToEnforce
|
RegularExpressionProtection {0}: at least one of URIPath, QueryParam, Header,
FormParam, XMLPayload, JSONPayload is mandatory
|
build |
XPathCompilationFailed
|
RegularExpressionProtection {0}: Failed to compile xpath {1}. Context {2}
|
build |
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>
. |
build |
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. |
build |
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. |
build |
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. |
build |
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. |
build |
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.
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
or5xx
).
steps.servicecallout.RequestVariableNotMessageType
500
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
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
- 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 theapigee-runtime
service account.
<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.
ConnectionInfoMissing
<HTTPTargetConnection>
or <LocalTargetConnection>
element.FAILED_PRECONDITION
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
- 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.
steps.messagevalidation.SourceMessageNotAvailable
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
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
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. |
build |
ResourceCompileFailed
|
The resource script referenced in the <ResourceURL>
element of the SOAPMessageValidation
policy contains an error that prevents it from compiling. |
build |
RootElementNameUnspecified
|
The <Element>
element in the SOAPMessageValidation policy does not contain the root
element's name. |
build |
InvalidRootElementName
|
The <Element>
element in the SOAPMessageValidation policy contains a root element name
that does not adhere to XML rules for valid element naming. |
build |
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
. |
build |
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). |
build |
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. |
build |
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.
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:
- Apigee API: Set Developer Status
- Apigee UI: In Register app developers , see the instructions for deactivating (and activating) a developer.
keymanagement.service.invalid_client-app_not_approved
401
oauth.v2.FailedToResolveAPIKey
401
oauth.v2.InvalidApiKey
401
oauth.v2.InvalidApiKeyForGivenResource
401
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
. |
|
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
. |
build |
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. |
build |
MissingNameForAdditionalClaim
|
If the name of the claim is not specified in the child element <Claim>
of the <AdditionalClaims>
element, the deployment will fail. |
build |
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
. |
build |
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. |
build |
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
. |
build |
InvalidValueForElement
|
If the value specified in the <Algorithm>
element is not a supported value,
the deployment will fail. |
build |
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. |
build |
InvalidKeyConfiguration
|
If the child element <Value>
is not defined in the <PrivateKey>
or <SecretKey>
elements, the deployment will fail. |
build |
EmptyElementForKeyConfiguration
|
If the ref attribute of the child element <Value>
of the <PrivateKey>
or <SecretKey>
elements is empty or unspecified, the deployment will fail. |
build |
InvalidConfigurationForVerify
|
This error occurs if the <Id>
element is defined within the <SecretKey>
element. |
build |
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. |
build |
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. |
build |
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. |
build |
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
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.
steps.xmlthreatprotection.ExecutionFailed
500
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
XMLThreatProtection
policy's <Source>
element is not a valid XML Document.steps.xmlthreatprotection.SourceUnavailable
500
<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
, ormessage
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.
steps.xmltojson.ExecutionFailed
ExecutionFailed
steps.xmltojson.InCompatibleTypes
ExecutionFailed
<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
<Source>
element is
invalid.The valid types of variable are message and string.steps.xmltojson.OutputVariableIsNotAvailable
ExecutionFailed
<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.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. |
build |
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
. |
build |
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). |
build |
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. | build |
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. |
build |
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. |
build |