<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://api-wiki.apps.rackspace.com/api-wiki/index.php?action=history&amp;feed=atom&amp;title=Errors</id>
		<title>Errors - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://api-wiki.apps.rackspace.com/api-wiki/index.php?action=history&amp;feed=atom&amp;title=Errors"/>
		<link rel="alternate" type="text/html" href="http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Errors&amp;action=history"/>
		<updated>2026-05-26T10:32:02Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.29.1</generator>

	<entry>
		<id>http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Errors&amp;diff=552&amp;oldid=prev</id>
		<title>Appscp: Created page with '== Errors ==  When there is an error processing a request, the API will return an HTTP error response code denoting the type of error. The system will also return additional info…'</title>
		<link rel="alternate" type="text/html" href="http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Errors&amp;diff=552&amp;oldid=prev"/>
				<updated>2014-04-18T22:46:56Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;#039;== Errors ==  When there is an error processing a request, the API will return an HTTP error response code denoting the type of error. The system will also return additional info…&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Errors ==&lt;br /&gt;
&lt;br /&gt;
When there is an error processing a request, the API will return an HTTP error response code denoting the type of error. The system will also return additional information in the body of the response.  Errors can be formatted in JSON or XML, depending on the &amp;lt;tt&amp;gt;Accept&amp;lt;/tt&amp;gt; header of the request.&lt;br /&gt;
&lt;br /&gt;
This page documents the behavior of '''synchronous errors''' returned by the API.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Fault Element''&lt;br /&gt;
!''Error Codes''&lt;br /&gt;
!''Custom Fields''&lt;br /&gt;
|-&lt;br /&gt;
|appsFault&lt;br /&gt;
|500, 400, 409 and other codes&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|itemNotFound&lt;br /&gt;
|404&lt;br /&gt;
|resourceType - What resource in the request that was not found (Domain, Mailbox, etc.)&lt;br /&gt;
|-&lt;br /&gt;
|unauthorized&lt;br /&gt;
|403&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|badRequest&lt;br /&gt;
|400&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Scenarios ===&lt;br /&gt;
&lt;br /&gt;
Here are scenarios that demonstrate the various errors that the API might return.  Each scenario includes a request and response.  The request shows the HTTP verb and URL, and the response shows the response code, followed by the response body.&lt;br /&gt;
&lt;br /&gt;
==== 400 Bad Request ====&lt;br /&gt;
&lt;br /&gt;
The following HTTP request and response demonstrates an HTTP 400 / badRequestFault.&lt;br /&gt;
&lt;br /&gt;
The response is an error because the request does not include a required field.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
request:&lt;br /&gt;
POST https://api.emailsrvr.com/v1/customers/me/domains/example.com/rs/mailboxes/user.1&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
400 Bad Request&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;badRequestFault&amp;quot;: {&lt;br /&gt;
        &amp;quot;message&amp;quot;: &amp;quot;Missing required field: password&amp;quot;,&lt;br /&gt;
        &amp;quot;details&amp;quot;: &amp;quot;4/11/2014 3:03:24 PM&amp;quot;,&lt;br /&gt;
        &amp;quot;code&amp;quot;: 400,&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 403 Unauthorized ====&lt;br /&gt;
&lt;br /&gt;
The following HTTP request and response demonstrates an HTTP 403 / unauthorizedFault.&lt;br /&gt;
&lt;br /&gt;
The response is an error because the request does not include valid authentication information.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Request:&lt;br /&gt;
GET https://api.emailsrvr.com/v1/customers/me/domains/example.com/rs/mailboxes/user.1&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
403 Unauthorized&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;unauthorizedFault&amp;quot;: {&lt;br /&gt;
        &amp;quot;message&amp;quot;: &amp;quot;Authentication failed.&amp;quot;,&lt;br /&gt;
        &amp;quot;details&amp;quot;: &amp;quot;4/11/2014 3:06:57 PM&amp;quot;,&lt;br /&gt;
        &amp;quot;code&amp;quot;: 403&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Throttling =====&lt;br /&gt;
&lt;br /&gt;
The same request as before might also return an error if the user has made too many requests and is throttled.  The request and response would look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
403 Unauthorized&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;unauthorizedFault&amp;quot;: {&lt;br /&gt;
        &amp;quot;message&amp;quot;: &amp;quot;Exceeded request limits&amp;quot;,&lt;br /&gt;
        &amp;quot;details&amp;quot;: &amp;quot;4/11/2014 3:09:30 PM&amp;quot;,&lt;br /&gt;
        &amp;quot;code&amp;quot;: 403&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 404 Not Found ====&lt;br /&gt;
&lt;br /&gt;
The following HTTP request and response demonstrates an HTTP 404 / itemNotFoundFault.&lt;br /&gt;
&lt;br /&gt;
This response is an error because the domain specified in the request does not exist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Request:&lt;br /&gt;
GET https://api.emailsrvr.com/v1/domains/idontexist.com/rs/mailboxes/&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
404 Not Found&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;itemNotFoundFault&amp;quot;: {&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Domain&amp;quot;,&lt;br /&gt;
        &amp;quot;message&amp;quot;: &amp;quot;idontexist.com not found&amp;quot;,&lt;br /&gt;
        &amp;quot;details&amp;quot;: &amp;quot;4/11/2014 2:59:51 PM&amp;quot;,&lt;br /&gt;
        &amp;quot;code&amp;quot;: 404&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 409 Conflict ====&lt;br /&gt;
&lt;br /&gt;
The following HTTP request and response demonstrates an HTTP 409 / appsFault&lt;br /&gt;
&lt;br /&gt;
This response in an error because the Distribution List is currently updating.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
request:&lt;br /&gt;
PUT https://api.emailsrvr.com/v1/customers/me/domains/example.com/ex/distributionLists/list.1&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;DisplayName&amp;quot;: &amp;quot;Distribution List!&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
response:&lt;br /&gt;
409 Conflict&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;appsFault&amp;quot;: {&lt;br /&gt;
        &amp;quot;message&amp;quot;: &amp;quot;Distribution List is currently Updating please try again soon&amp;quot;,&lt;br /&gt;
        &amp;quot;details&amp;quot;: &amp;quot;4/14/2014 4:39:17 PM&amp;quot;,&lt;br /&gt;
        &amp;quot;code&amp;quot;: 409,&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 500 Internal Server Error ====&lt;br /&gt;
&lt;br /&gt;
The following HTTP request and response demonstrates an HTTP 500 / appsFault.&lt;br /&gt;
&lt;br /&gt;
This response is an error because of an internal server error&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Request:&lt;br /&gt;
GET https://api.emailsrvr.com/v1/domains/idontexist.com/rs/mailboxes/&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
404 Not Found&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;appsFault&amp;quot;: {&lt;br /&gt;
        &amp;quot;message&amp;quot;: &amp;quot;Internal Server Error&amp;quot;,&lt;br /&gt;
        &amp;quot;details&amp;quot;: &amp;quot;&amp;quot;4/11/2014 3:19:57 PM&amp;quot;,&lt;br /&gt;
        &amp;quot;code&amp;quot;: 500&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== XML ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;itemNotFoundFault &lt;br /&gt;
    xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; &lt;br /&gt;
    xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; code=&amp;quot;404&amp;quot; &lt;br /&gt;
    xmlns=&amp;quot;http://api.emailsrvr.com/v0/Schemas&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;message&amp;gt;exchange2013.davsdfsdf not found&amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;details&amp;gt;4/14/2014 4:09:08 PM&amp;lt;/details&amp;gt;&lt;br /&gt;
    &amp;lt;resourceType&amp;gt;Domain&amp;lt;/resourceType&amp;gt;&lt;br /&gt;
&amp;lt;/itemNotFoundFault&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The error code is returned in the body of the response for convenience. The message section returns a human-readable message that is appropriate for display to the end user. The details section is optional and may contain information—for example, a stack trace—to assist in tracking down an error. The detail section may or may not be appropriate for display to an end user.&lt;br /&gt;
The root element of the fault (e.g. appsFault) may change depending on the type of error. The following is a list of possible common root elements along with their associated error codes.  More specific faults may be may exist for different resources and will be documented with those resources.&lt;br /&gt;
&lt;br /&gt;
From an XML schema perspective, all API faults are extensions of the base fault type AppsAPIFault. When working with a system that binds XML to actual classes (such as JAXB), one should be capable of using AppsAPIFault as a “catch-all” if there's no interest in distinguishing between individual fault types.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Legacy Header ===&lt;br /&gt;
&lt;br /&gt;
Prior to faults in the body of HTTP responses, the only information returned to users was the HTTP status code and an HTTP header &amp;lt;tt&amp;gt;x-error-message&amp;lt;/tt&amp;gt; with the error message.  This functionality has been kept for backwards compatibility but retrieving fault information in the HTTP body is the recommended approach for new applications.&lt;/div&gt;</summary>
		<author><name>Appscp</name></author>	</entry>

	</feed>