This documentation is for WSO2 API Manager 1.10.0 View documentation for the latest release.
Error Handling - API Manager 1.10.0 - WSO2 Documentation
Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 6 Next »

When errors/exceptions occur in the system, the API Manager throws XML-based error responses to the client by default. To change the format of these error responses, you change the relevant XML file in the <AM_HOME>/repository/deployment/server/synapse-configs/default/sequences directory. The directory includes multiple XML files, named after the type of errors that occur. You must select the correct file.

For example, to change the message type of authorization errors, open the <AM_HOME>/repository/deployment/server/synapse-configs/default/sequences/_auth_failure_handler.xml file and change application/xml to something like applicatoin/json.

<sequence name="_auth_failure_handler_" xmlns="http://ws.apache.org/ns/synapse">
 <property name="error_message_type" value="applicatoin/json"/>
 <sequence key="_cors_request_handler_"/>
</sequence>

Similarly, to change the error messages of throttling errors (e.g., quota exceeding), change the _throttle_out_handler_.xml file; resource mismatch errors, the _resource_mismatch_handler_.xml file, etc.


Given below are some error codes and their meanings.

API handlers error codes

Error codeError MessageDescription
900900

Unclassified Authentication Failure

An unspecified error has occurred
900901

Invalid Credentials

Invalid Authentication information provided
900902

Missing Credentials

No authentication information provided
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.

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.
900907

The requested API is temporarily blocked

The status of the API has been changed to an inaccessible/unavailable state.
900908

Resource forbidden

The user invoking the API has not been granted access to the required resource.
900909

The subscription to the API is inactive

Happens when the API user is blocked.
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.

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.

          
            700700
             
          
        

API blocked

This API has been blocked temporarily. Please try again later or contact the system administrators.

Sequences error codes

Error codeDescription
900901
Production/sandbox key offered to the API with no production/sandbox endpoint
403
No matching resource found in the API for the given request

In addition to the above error codes, we have engaged Synapse-level error codes to the default fault sequence and custom fault sequences (e.g.,_token_fault_.xml) of the API Manager. For information, see Error Handling in WSO2 ESB documentation.

 

Custom Error Message with Custom HTTP Status Code for Throttled-out Messages

 If you need to send a custom message with custom HTTP status code we may execute additional sequence which can generate new error message. There we can override message body, HTTP status code etc. Following example demonstrates how we can override the throttle out message's HTTP status code.

Go to <APIM_HOME>/repository/deployment/server/synapse-configs/default/sequences directory and create the file convert.xml as follows.

convert.xml
<?xml version="1.0" encoding="UTF-8"?><sequence xmlns="http://ws.apache.org/ns/synapse" name="convert">
    <payloadFactory media-type="xml">
        <format>
            <am:fault xmlns:am="http://wso2.org/apimanager">
                <am:code>$1</am:code>
                <am:type>Status report</am:type>
                <am:message>Runtime Error</am:message>
                <am:description>$2</am:description>
            </am:fault>
        </format>
        <args>
            <arg evaluator="xml" expression="$ctx:ERROR_CODE"/>
            <arg evaluator="xml" expression="$ctx:ERROR_MESSAGE"/>
        </args>
    </payloadFactory>
    <property name="RESPONSE" value="true"/>
    <header name="To" action="remove"/>
    <property name="HTTP_SC" value="555" scope="axis2"/>
    <property name="NO_ENTITY_BODY" scope="axis2" action="remove"/>
    <property name="ContentType" scope="axis2" action="remove"/>
    <property name="Authorization" scope="transport" action="remove"/>
    <property name="Access-Control-Allow-Origin" value="*" scope="transport"/>
    <property name="Host" scope="transport" action="remove"/>
    <property name="Accept" scope="transport" action="remove"/>
    <property name="X-JWT-Assertion" scope="transport" action="remove"/>
    <property name="messageType" value="application/json" scope="axis2"/>
    <send/>
</sequence>

Alternatively you can use source view to add it to synapse configuration.

To do that follow the below steps.

  1. Start the API Manager and log in to Management Console. (https://<Server Host>:9443/carbon).
  2. Go to Manager --> source view.
  3. Copy the content of the sequence in convert.xml and paste as a new sequence in the source view and update it.

If it deployed properly you will see following message in system logs. Please check the logs and see is there any issue in deployment process.

 

[2015-04-13 09:17:38,885]  INFO - SequenceDeployer Sequence named 'convert' has been deployed from file : /home/sanjeewa/work/support/wso2am-1.6.0/repository/deployment/server/synapse-configs/default/sequences/convert.xml

 



 

  • No labels