...
Given below are some error codes and their meanings.
API handlers error codes
...
Error code | Error Message | Description | Example |
---|---|---|---|
| API blocked | This API has been blocked temporarily. Please try again later or contact the system administrators. | Invoke an API in the BLOCKED lifecycle state. |
900800 | Message throttled out | The maximum number of requests that can be made to the API within a designated time period is reached and the API is throttled for the user. | Invoke an API exceeding the tier limit. |
900801 | Hard limit exceeded | Hard throttle limit has been reached. | When the access token is invalid or inactive. |
900802 | Resource level throttle out | Message is throttled out because resource level has exceeded. | Sending/Receiving messages beyond authorized resource level. |
900803 | Application level throttle out | Message is throttled out because application level is exceeded. | Sending/Receiving messages beyond authorized application level. |
900804 | Subscription level throttled out | Message throttled out due to subscription level throttling limit reached. | Sending/Receiving messages beyond configured throttling limit of subscription level policy. |
900805 | Message blocked | Accessing an API which is blocked on user, IP, application, or API Context. | An admin user can block API invocations in real time by user, IP, application, or API context. The API invocation meets the blocked condition. |
900806 | Custom policy throttled out | Message throttled out due to exceeding the limit configured through the custom throttling policy rules. | The API invocations meet custom throttle policy rules, exceeding the limits of the configured custom policy. |
900807 | Message throttled out | Messaged throttled out because of exceeding the burst control/rate limit (requests per second) in the subscription level policy. | Sending/Receiving messages exceeding the configured burst control/rate limit within second. |
900900 | Unclassified authentication failure | An unspecified error has occurred |
Backend service for key validation is not accessible when trying to invoke an API | ||
900901 | Invalid credentials | Invalid authentication information provided |
| When the access token is invalid or inactive. | ||
900902 | Missing credentials | No authentication information provided |
Accessing an API without |
Authorization: Bearer header | |||
900905 | Incorrect access token type is provided | The access token type used is not supported when invoking the API. The supported access token types are application and user accesses tokens. See Access Tokens. | Invoke an API with application token, where the resource only allows application user tokens. |
900906 | No matching resource found in the API for the given request | A resource with the name in the request can not be found in the API. | Invoke an API resource that is not available. |
900907 | The requested API is temporarily blocked | Happens when the API user is blocked. | Invoke API resource with a subscription that has been blocked by the API publisher. |
900908 | Resource forbidden | The user invoking the API has not been granted access to the required resource. | Invoke an unsubscribed API. |
900909 | The subscription to the API is inactive | The status of the API has changed to an inaccessible/unavailable state. | Invoke an API resource with a subscription that has not yet been approved by the administrator. |
900910 | The access token does not allow you to access the requested resource | Can not access the required resource with the provided access token. Check the valid resources that can be accessed with this token. | Invoke an API resource with an access token that is not generated to be used with the resource's scope. |
102511 | Incomplete payload | The payload sent with the request is too large and the client is unable to keep the connection alive until the payload is completely transferred to the API Gateway | Sending a large PDF file with the POST request |
...
. |
Sequences error codes
Error code | Description |
---|---|
900901 | Production/sandbox key offered to the API with no production/sandbox endpoint. |
400 | Server cannot process the request due to an error in the request sent by the client. |
403 | No matching resource found in the API for the given request. |
...
Info | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
The HTTP Status Codes and the corresponding error codes from the error responses are given below.
|
Transport error codes
Error Code | Detail |
---|---|
101000 | Receiver input/output error sending |
101001 | Receiver input/output error receiving |
101500 | Sender input/output error sending |
101501 | Sender input/output error receiving |
101503 | Connection failed |
101504 | Connection timed out (no input was detected on this connection over the maximum period of inactivity) |
101505 | Connection closed |
101506 | NHTTP protocol violation |
101507 | Connection canceled |
101508 | Request to establish new connection timed out |
101509 | Send abort |
101510 | Response processing failed |
If the HTTP PassThrough transport is used, and a connection-level error occurs, the error code is calculated using the following equation:
Error code = Base error code + Protocol State |
There is a machine state in the transport sender side, where the protocol state changes according to the phase of the message.
Following are the possible protocol states and the description for each:
Protocol State | Description |
---|---|
REQUEST_READY (0) | Connection is at the initial stage ready to send a request |
REQUEST_HEAD(1) | Sending the request headers through the connection |
REQUEST_BODY(2) | Sending the request body |
REQUEST_DONE(3) | Request is completely sent |
RESPONSE_HEAD(4) | The connection is reading the response headers |
RESPONSE_BODY(5) | The connection is reading the response body |
RESPONSE_DONE(6) | The response is completed |
CLOSING(7) | The connection is closing |
CLOSED(8) | The connection is closed |
Since there are several possible protocol states in which a request can time out, you can calculate the error code accordingly using the values in the table above. For example, in a scenario where you send a request and the request is completely sent to the backend, but a timeout happens before the response headers are received, the error code is calculated as follows:
In this scenario, the base error code is CONNECTION_TIMEOUT(101504)
and the protocol state is REQUEST_DONE(3).
Therefore,
Error code = 101504 + 3 = 101507
These Transport error codes are used in Advanced Configurations of Endpoints.
Custom error messages
To send a custom message with a custom HTTP status code, you execute an additional sequence that can generate a new error message. You then override the message body, HTTP status code and other values.
...
WSO2 API Manager has the following default fault sequences located in <APIM_HOME>
/repository/deployment/server/synapse-configs/default/sequences
directory.
Fault Sequence | Description |
---|---|
fault.xml | This is the primary fault sequence that gets invoked when an error occurs during the execution of an API resources |
main.xml | This sequence is called when the endpoint being called does not exist |
auth_failure_handler.xml | This sequence is called when an API authentication error is encountered |
production_key_error.xml | This sequence is called when a Production key is used to invoke an API that does not have a Production endpoint defined |
sandbox_key_error.xml | This sequence is called when a Sandbox key is used to invoke an API that does not have a Sandbox endpoint defined |
throttle_out_handler.xml | This sequence is called when a given request to an API gets throttled out |
token_fault.xml | This sequence is called when there is an error in invoking the token API |
resource_mismatch_handler.xml | This sequence is called when a matching resource cannot be found by the gateway to the corresponding resource being invoked |
Info |
---|
The default sequences can also be customized as shown in the section above. |