<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://api-wiki.apps.rackspace.com/api-wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Zhen.wei&amp;*</id>
		<title>Rackspace Email &amp; Apps API - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://api-wiki.apps.rackspace.com/api-wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Zhen.wei&amp;*"/>
		<link rel="alternate" type="text/html" href="http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Special:Contributions/Zhen.wei"/>
		<updated>2026-05-13T22:54:04Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.29.1</generator>

	<entry>
		<id>http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Exchange_Mailbox_Spam_(Rest_API)&amp;diff=464</id>
		<title>Exchange Mailbox Spam (Rest API)</title>
		<link rel="alternate" type="text/html" href="http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Exchange_Mailbox_Spam_(Rest_API)&amp;diff=464"/>
				<updated>2013-02-28T21:37:06Z</updated>
		
		<summary type="html">&lt;p&gt;Zhen.wei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== Spam Settings ==&lt;br /&gt;
&lt;br /&gt;
=== Show ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET]  https://api.emailsrvr.com/v0/customers/(customer account  number)/domains/(domain name)&lt;br /&gt;
        /ex/mailboxes/(mailbox  name)/spam/settings&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
This operation returns the  spam settings associated with the mailbox.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The Show operation only  supports the GET HTTP verb. For .xml format refer to the following  schema document: [http://api.emailsrvr.com/v0/Schemas/MailboxSpamSetting.xsd  MailboxSpamSetting.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get  '/customers/12345678/domains/example.com/ex/mailboxes/alex.smith/spam/settings',  'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;MailboxSpamSettings xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;  xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;  xmlns=&amp;quot;urn:xml:MailboxSpamSettings&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;filterLevel&amp;gt;on&amp;lt;/filterLevel&amp;gt;&lt;br /&gt;
  &amp;lt;sendToDomainQuarantine&amp;gt;false&amp;lt;/sendToDomainQuarantine&amp;gt;&lt;br /&gt;
  &amp;lt;quarantineOwner /&amp;gt;&lt;br /&gt;
&amp;lt;/MailboxSpamSettings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;filterLevel&amp;quot;:&amp;quot;on&amp;quot;,&amp;quot;sendToDomainQuarantine&amp;quot;:false,&amp;quot;quarantineOwner&amp;quot;:&amp;quot;&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Edit ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[PUT]  https://api.emailsrvr.com/v0/customers/(customer account  number)/domains/(domain name)&lt;br /&gt;
        /ex/mailboxes/(mailbox  name)/spam/settings&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
This operation will modify  the mailbox spam setting. Only 'filterlevel' is the required form field.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| filterlevel&lt;br /&gt;
| string&lt;br /&gt;
| Spam filter  status, must be 'on' or 'off' or 'exclusive' (Required)&lt;br /&gt;
|-&lt;br /&gt;
|  sendtodomainquarantine&lt;br /&gt;
| boolean&lt;br /&gt;
| Indicates  whether or not send spam to domain quarantine&lt;br /&gt;
|-&lt;br /&gt;
|  quarantineowner&lt;br /&gt;
| string&lt;br /&gt;
| The email  address that quarantine notifications be sent to&lt;br /&gt;
|-&lt;br /&gt;
|  removeQuarantineOwner&lt;br /&gt;
| boolean&lt;br /&gt;
| Set this flag to &amp;quot;true&amp;quot; to remove quarantine owner&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
Form field &amp;quot;filterlevel&amp;quot; is  always required. &amp;lt;br&amp;gt;&lt;br /&gt;
When  &amp;quot;filterlevel&amp;quot; is &amp;quot;on&amp;quot;, spam will be sent to mailbox quarantine as  default, unless &amp;quot;sendtodomainquarantine&amp;quot; is set to &amp;quot;true&amp;quot;. &amp;lt;br&amp;gt;&lt;br /&gt;
Changing &amp;quot;filterlevel&amp;quot; to  &amp;quot;off&amp;quot; will force &amp;quot;sendtodomainquarantine&amp;quot; to be &amp;quot;false&amp;quot;. &amp;lt;br&amp;gt;&lt;br /&gt;
When &amp;quot;filterlevel&amp;quot; is  &amp;quot;exclusive&amp;quot;, spam will be sent to mailbox quarantine as default, unless  &amp;quot;sendtodomainquarantine&amp;quot; is set to &amp;quot;true&amp;quot;. In addition, mailbox will  only receive email from addresses and IPs on its safelist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
put  '/customers/12345678/domains/example.com/ex/mailboxes/alex.smith/spam/settings',  'text/xml',&lt;br /&gt;
{ &lt;br /&gt;
  'filterlevel' =&amp;gt; 'off'&lt;br /&gt;
}  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'': &lt;br /&gt;
&lt;br /&gt;
{|  class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Invalid  input for form field 'filterlevel'&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid  filterLevel, input must be: on/off/exclusive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Blacklist ==&lt;br /&gt;
&lt;br /&gt;
=== Index ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET]  https://api.emailsrvr.com/v0/customers/(customer account  number)/domains/(domain name)&lt;br /&gt;
        /ex/mailboxes/(mailbox  name)/spam/blacklist&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
This operation returns email  address blacklist associated with the mailbox. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The Index operation only  supports the GET HTTP verb. For .xml format refer to the following  schema document: [http://api.emailsrvr.com/v0/Schemas/Blacklist.xsd  Blacklist.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get  '/customers/12345678/domains/example.com/ex/mailboxes/alex.smith/spam/blacklist',  'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;blacklist xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;  xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;  xmlns=&amp;quot;urn:xml:blacklist&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;addresses&amp;gt;&lt;br /&gt;
    &amp;lt;address&amp;gt;name1@spam.com&amp;lt;/address&amp;gt;&lt;br /&gt;
    &amp;lt;address&amp;gt;name2@spam.com&amp;lt;/address&amp;gt;&lt;br /&gt;
  &amp;lt;/addresses&amp;gt;&lt;br /&gt;
&amp;lt;/blacklist&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;addresses&amp;quot;:[&amp;quot;name1@spam.com&amp;quot;,&amp;quot;name2@spam.com&amp;quot;]}&lt;br /&gt;
&lt;br /&gt;
=== Add ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[POST]  https://api.emailsrvr.com/v0/customers/(customer account  number)/domains/(domain name)&lt;br /&gt;
        /ex/mailboxes/(mailbox  name)/spam/blacklist/(email address)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Adds an email address or  domain to the blacklist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post   '/customers/12345678/domains/example.com/ex/mailboxes/alex.smith/spam/blacklist/anyone@spam.com',  {},'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'': &lt;br /&gt;
&lt;br /&gt;
{|  class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Entered  invalid email or domain&lt;br /&gt;
| 400&lt;br /&gt;
| invalid  email address: abc&lt;br /&gt;
|-&lt;br /&gt;
| Entered current domain&lt;br /&gt;
| 400&lt;br /&gt;
| Adding  example.com would blacklist the current domain&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Delete ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[DELETE]  https://api.emailsrvr.com/v0/customers/(customer account  number)/domains/(domain name)&lt;br /&gt;
            /ex/mailboxes/(mailbox  name)/spam/blacklist/(email address)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Removes an email address or  domain from the blacklist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
delete   '/customers/12345678/domains/example.com/ex/mailboxes/alex.smith/spam/blacklist/anyone@yahoo.com',  'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'': &lt;br /&gt;
&lt;br /&gt;
{|  class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Entered  invalid email or domain&lt;br /&gt;
| 400&lt;br /&gt;
| invalid  email address: abc&lt;br /&gt;
|-&lt;br /&gt;
| Entered email or domain is not on the  current blacklist&lt;br /&gt;
| 400&lt;br /&gt;
|  abc@junkmail.com is not found on the blacklist&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Edit ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[PUT] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
               /ex/mailboxes/(mailbox name)/spam/blacklist&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Edit email addresses on the blacklist.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| addList&lt;br /&gt;
| string&lt;br /&gt;
| Comma separated list of email addresses to add to the list&lt;br /&gt;
|-&lt;br /&gt;
| removeList&lt;br /&gt;
| string&lt;br /&gt;
| Comma separated list of email addresses to remove from the list&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''Note'':&lt;br /&gt;
&lt;br /&gt;
You can use a '%' as a wildcard in domains, but not in the TLD (.com, .net, etc). You cannot use wildcards in email addresses. For example, the following are allowed: @%.example.com, @examp%.com.&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
put '/customers/12345678/domains/example.com/ex/mailboxes/jane.doe/spam/blacklist',&lt;br /&gt;
{&lt;br /&gt;
  'addList' =&amp;gt; '@%.example.com,abc@example.com',&lt;br /&gt;
  'removeList' =&amp;gt; '@examp%.com'&lt;br /&gt;
},&lt;br /&gt;
'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== IP Blacklist ==&lt;br /&gt;
&lt;br /&gt;
=== Index ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET]  https://api.emailsrvr.com/v0/customers/(customer account  number)/domains/(domain name)&lt;br /&gt;
        /ex/mailboxes/(mailbox  name)/spam/ipblacklist&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
This operation returns IP  blacklist associated with the mailbox. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The Index operation only  supports the GET HTTP verb. For .xml format refer to the following  schema document: [http://api.emailsrvr.com/v0/Schemas/IpBlacklist.xsd  IpBlacklist.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get  '/customers/12345678/domains/example.com/ex/mailboxes/alex.smith/spam/ipblacklist',  'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''XML Result Example':&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;ipBlacklist  xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;  xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;  xmlns=&amp;quot;urn:xml:ipBlacklist&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;addresses&amp;gt;&lt;br /&gt;
    &amp;lt;ip&amp;gt;216.12.34.1&amp;lt;/ip&amp;gt;&lt;br /&gt;
    &amp;lt;ip&amp;gt;216.12.34.2&amp;lt;/ip&amp;gt;&lt;br /&gt;
  &amp;lt;/addresses&amp;gt;&lt;br /&gt;
&amp;lt;/ipBlacklist&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;addresses&amp;quot;:[&amp;quot;216.12.34.1&amp;quot;,&amp;quot;216.12.34.2&amp;quot;]}&lt;br /&gt;
&lt;br /&gt;
=== Add ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[POST]  https://api.emailsrvr.com/v0/customers/(customer account  number)/domains/(domain name)&lt;br /&gt;
        /ex/mailboxes/(mailbox  name)/spam/ipblacklist/(ip address)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Adds an IP to the blacklist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post  '/customers/12345678/domains/example.com/ex/mailboxes/alex.smith/spam/blacklist/216.12.34.1',  {},'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[DELETE]  https://api.emailsrvr.com/v0/customers/(customer account  number)/domains/(domain name)&lt;br /&gt;
            /ex/mailboxes/(mailbox  name)/spam/ipblacklist/(ip address)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Removes an IP from the  blacklist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
delete  '/customers/12345678/domains/example.com/ex/mailboxes/alex.smith/spam/ipblacklist/216.12.34.1',  'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'': &lt;br /&gt;
&lt;br /&gt;
{|  class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Entered IP  is not on the current blacklist&lt;br /&gt;
| 400&lt;br /&gt;
| 216.12.34.1  is not found on the blacklist&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Edit ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[PUT] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
               /ex/mailboxes/(mailbox name)/spam/ipblacklist&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Edit IP addresses on the blacklist.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| addList&lt;br /&gt;
| string&lt;br /&gt;
| Comma separated list of IP addresses to add to the list&lt;br /&gt;
|-&lt;br /&gt;
| removeList&lt;br /&gt;
| string&lt;br /&gt;
| Comma separated list of IP addresses to remove from the list&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''Note'':&lt;br /&gt;
&lt;br /&gt;
You can use a '%' as a wildcard in the last octets to specify IP ranges. For example: 216.12.34.%, 216.12.%.%, 216.%.%.%.&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
put '/customers/12345678/domains/example.com/ex/mailboxes/jane.doe/spam/ipblacklist',&lt;br /&gt;
{&lt;br /&gt;
  'addList' =&amp;gt; '216.12.34.%,216.12.%.%',&lt;br /&gt;
  'removeList' =&amp;gt; '216.%.%.%'&lt;br /&gt;
},&lt;br /&gt;
'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Safelist ==&lt;br /&gt;
&lt;br /&gt;
=== Index ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET]  https://api.emailsrvr.com/v0/customers/(customer account  number)/domains/(domain name)&lt;br /&gt;
        /ex/mailboxes/(mailbox  name)/spam/safelist&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
This operation returns email  address safelist associated with the mailbox. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The Index operation only  supports the GET HTTP verb. For .xml format refer to the following  schema document: [http://api.emailsrvr.com/v0/Schemas/Safelist.xsd  Safelist.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get  '/customers/12345678/domains/example.com/ex/mailboxes/alex.smith/spam/safelist',  'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;safelist xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;  xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;  xmlns=&amp;quot;urn:xml:safelist&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;addresses&amp;gt;&lt;br /&gt;
    &amp;lt;address&amp;gt;name1@notspam.com&amp;lt;/address&amp;gt;&lt;br /&gt;
    &amp;lt;address&amp;gt;name2@notspam.com&amp;lt;/address&amp;gt;&lt;br /&gt;
  &amp;lt;/addresses&amp;gt;&lt;br /&gt;
&amp;lt;/safelist&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;addresses&amp;quot;:[&amp;quot;name1@notspam.com&amp;quot;,&amp;quot;name2@notspam.com&amp;quot;]}&lt;br /&gt;
&lt;br /&gt;
=== Add ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[POST]  https://api.emailsrvr.com/v0/customers/(customer account  number)/domains/(domain name)&lt;br /&gt;
        /ex/mailboxes/(mailbox  name)/spam/safelist/(email address)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Adds an email address or  domain to the safelist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post   '/customers/12345678/domains/example.com/ex/mailboxes/alex.smith/spam/safelist/anyone@yahoo.com',  {},'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'': &lt;br /&gt;
&lt;br /&gt;
{|  class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Entered  invalid email or domain&lt;br /&gt;
| 400&lt;br /&gt;
| invalid  email address: abc&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Delete ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[DELETE]  https://api.emailsrvr.com/v0/customers/(customer account  number)/domains/(domain name)&lt;br /&gt;
            /ex/mailboxes/(mailbox  name)/spam/safelist/(email address)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Removes an email address or  domain from the safelist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
delete   '/customers/12345678/domains/example.com/ex/mailboxes/alex.smith/spam/safelist/anyone@yahoo.com',  'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'': &lt;br /&gt;
&lt;br /&gt;
{|  class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Entered  invalid email or domain&lt;br /&gt;
| 400&lt;br /&gt;
| invalid  email address: abc&lt;br /&gt;
|-&lt;br /&gt;
| Entered email or domain is not on the  current safelist&lt;br /&gt;
| 400&lt;br /&gt;
|  anyone@yahoo.com is not found on the safelist&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Edit ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[PUT] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
               /ex/mailboxes/(mailbox name)/spam/safelist&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Edit email addresses on the safelist.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| addList&lt;br /&gt;
| string&lt;br /&gt;
| Comma separated list of email addresses to add to the list&lt;br /&gt;
|-&lt;br /&gt;
| removeList&lt;br /&gt;
| string&lt;br /&gt;
| Comma separated list of email addresses to remove from the list&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''Note'':&lt;br /&gt;
&lt;br /&gt;
You can use a '%' as a wildcard in domains, but not in the TLD (.com, .net, etc). You cannot use wildcards in email addresses. For example, the following are allowed: @%.example.com, @examp%.com.&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
put '/customers/12345678/domains/example.com/ex/mailboxes/jane.doe/spam/safelist',&lt;br /&gt;
{&lt;br /&gt;
  'addList' =&amp;gt; '@%.example.com,abc@example.com',&lt;br /&gt;
  'removeList' =&amp;gt; '@examp%.com'&lt;br /&gt;
},&lt;br /&gt;
'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== IP Safelist ==&lt;br /&gt;
&lt;br /&gt;
=== Index ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET]  https://api.emailsrvr.com/v0/customers/(customer account  number)/domains/(domain name)&lt;br /&gt;
        /ex/mailboxes/(mailbox  name)/spam/ipsafelist&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
This operation returns IP  safelist associated with the mailbox. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The Index operation only  supports the GET HTTP verb. For .xml format refer to the following  schema document: [http://api.emailsrvr.com/v0/Schemas/IpSafelist.xsd  IpSafelist.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get  '/customers/12345678/domains/example.com/ex/mailboxes/alex.smith/spam/ipsafelist',  'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;ipSafelist xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;  xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;  xmlns=&amp;quot;urn:xml:ipSafelist&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;addresses&amp;gt;&lt;br /&gt;
    &amp;lt;ip&amp;gt;192.168.0.1&amp;lt;/ip&amp;gt;&lt;br /&gt;
    &amp;lt;ip&amp;gt;192.168.0.2&amp;lt;/ip&amp;gt;&lt;br /&gt;
  &amp;lt;/addresses&amp;gt;&lt;br /&gt;
&amp;lt;/ipSafelist&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;addresses&amp;quot;:[&amp;quot;192.168.0.1&amp;quot;,&amp;quot;192.168.0.2&amp;quot;]}&lt;br /&gt;
&lt;br /&gt;
=== Add ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[POST]  https://api.emailsrvr.com/v0/customers/(customer account  number)/domains/(domain name)&lt;br /&gt;
        /ex/mailboxes/(mailbox  name)/spam/ipsafelist/(ip address)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Adds an IP to the ipsafelist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post  '/customers/12345678/domains/example.com/ex/mailboxes/alex.smith/spam/ipsafelist/216.12.34.1',  {},'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'': &lt;br /&gt;
&lt;br /&gt;
{|  class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Entered  invalid IP address&lt;br /&gt;
| 400&lt;br /&gt;
| invalid ip  address: 123&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Delete ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[DELETE]  https://api.emailsrvr.com/v0/customers/(customer account  number)/domains/(domain name)&lt;br /&gt;
            /ex/mailboxes/(mailbox  name)/spam/ipsafelist/(email address)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Removes an IP from the  safelist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
delete  '/customers/12345678/domains/example.com/ex/mailboxes/alex.smith/spam/ipsafelist/216.12.34.1',  'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'': &lt;br /&gt;
&lt;br /&gt;
{|  class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Entered IP  is not on the current safelist&lt;br /&gt;
| 400&lt;br /&gt;
| 216.12.34.1  is not found on the safelist&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Edit ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[PUT] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
               /ex/mailboxes/(mailbox name)/spam/ipsafelist&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Edit IP addresses on the safelist.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| addList&lt;br /&gt;
| string&lt;br /&gt;
| Comma separated list of IP addresses to add to the list&lt;br /&gt;
|-&lt;br /&gt;
| removeList&lt;br /&gt;
| string&lt;br /&gt;
| Comma separated list of IP addresses to remove from the list&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''Note'':&lt;br /&gt;
&lt;br /&gt;
You can use a '%' as a wildcard in the last octets to specify IP ranges. For example: 216.12.34.%, 216.12.%.%, 216.%.%.%.&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
put '/customers/12345678/domains/example.com/ex/mailboxes/jane.doe/spam/ipsafelist',&lt;br /&gt;
{&lt;br /&gt;
  'addList' =&amp;gt; '216.12.34.%,216.12.%.%',&lt;br /&gt;
  'removeList' =&amp;gt; '216.%.%.%'&lt;br /&gt;
},&lt;br /&gt;
'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zhen.wei</name></author>	</entry>

	<entry>
		<id>http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Rackspace_Mailbox_Spam_(Rest_API)&amp;diff=463</id>
		<title>Rackspace Mailbox Spam (Rest API)</title>
		<link rel="alternate" type="text/html" href="http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Rackspace_Mailbox_Spam_(Rest_API)&amp;diff=463"/>
				<updated>2013-02-28T21:36:36Z</updated>
		
		<summary type="html">&lt;p&gt;Zhen.wei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== Spam Settings ==&lt;br /&gt;
&lt;br /&gt;
=== Show ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /rs/mailboxes/(mailbox name)/spam/settings&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
This operation returns the spam settings associated with the mailbox. For .xml format refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/RSMailboxSpamSetting.xsd RSMailboxSpamSetting.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/example.com/rs/mailboxes/alex.smith/spam/settings', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;rsMailboxSpamSetting 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; xmlns=&amp;quot;urn:xml:RSMailboxSpamSetting&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;filterLevel&amp;gt;on&amp;lt;/filterLevel&amp;gt;&lt;br /&gt;
  &amp;lt;rsEmailSettings&amp;gt;&lt;br /&gt;
    &amp;lt;spamHandling&amp;gt;toFolder&amp;lt;/spamHandling&amp;gt;&lt;br /&gt;
    &amp;lt;hasFolderCleaner&amp;gt;false&amp;lt;/hasFolderCleaner&amp;gt;&lt;br /&gt;
    &amp;lt;spamFolderAgeLimit&amp;gt;0&amp;lt;/spamFolderAgeLimit&amp;gt;&lt;br /&gt;
    &amp;lt;spamFolderNumLimit&amp;gt;0&amp;lt;/spamFolderNumLimit&amp;gt;&lt;br /&gt;
    &amp;lt;spamForwardingAddress /&amp;gt;&lt;br /&gt;
  &amp;lt;/rsEmailSettings&amp;gt;&lt;br /&gt;
&amp;lt;/rsMailboxSpamSetting&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&amp;quot;filterLevel&amp;quot;:&amp;quot;on&amp;quot;,&amp;quot;rsEmailSettings&amp;quot;:&amp;quot;hasFolderCleaner&amp;quot;:false,&amp;quot;spamFolderAgeLimit&amp;quot;:0,&amp;quot;spamFolderNumLimit&amp;quot;:0,&lt;br /&gt;
&amp;quot;spamForwardingAddress&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;spamHandling&amp;quot;:&amp;quot;toFolder&amp;quot;}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Edit ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[PUT] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /rs/mailboxes/(mailbox name)/spam/settings&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
This operation will modify the mailbox spam settings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| filterLevel&lt;br /&gt;
| string&lt;br /&gt;
| This is a required field. Spam filter status: 'on', 'off', or 'exclusive'. Exclusive mode allows only email cleared by the Safelist.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| rsEmail.spamHandling&lt;br /&gt;
| string&lt;br /&gt;
| The string 'toFolder' will deliver the email to the user's Spam folder, 'delete' will delete the mail immediately, 'labelSubject' will prepend [SPAM] to the email's subject line, and 'toAddress' will send the email to a specified folder instead.&lt;br /&gt;
&lt;br /&gt;
Valid Field Combinations: &lt;br /&gt;
&lt;br /&gt;
(toFolder =&amp;gt; hasFolderCleaner, spamFolderAgeLimit, spamFolderNumLimit)&lt;br /&gt;
&lt;br /&gt;
(toAddress =&amp;gt; spamForwardingAddress)&lt;br /&gt;
|-&lt;br /&gt;
| rsEmail.hasFolderCleaner&lt;br /&gt;
| string&lt;br /&gt;
| This field is effective when rsEmail.spamHandling option is set to 'toFolder'. This field controls how the spam that is delivered o the spam folder is handled. There are currently two options supported for handling spam. First option is to set a limit after which the spam gets deleted. One can set limit on the number of days or on the number of spam emails. Second option is to never automatically delete the spam. For both these options to be enabled the rsEmail.hasFolderCleaner field should be set to 'true'.&lt;br /&gt;
The folder cleaner fields (hasFolderCleaner, spamFolderAgeLimit, spamFolderNumLimit) are allowed&lt;br /&gt;
only when the spamHandling field is set to 'toFolder'. In order to never delete the spam set the spamFolderAgeLimit and spamFolderNumLimit fields to 0.&lt;br /&gt;
|-&lt;br /&gt;
| rsEmail.spamFolderAgeLimit&lt;br /&gt;
| string&lt;br /&gt;
| The number of days a message stays in the Spam folder before its deleted. This field is effective only when rsEmail.spamHandling is set to 'toFolder', and 'rs.hasFolderCleaner' is set to 'true'. This field cannot have negative value.&lt;br /&gt;
|-&lt;br /&gt;
| rsEmail.spamFolderNumLimit&lt;br /&gt;
| string&lt;br /&gt;
| The maximum number of emails the Spam folder holds. This field is effective only when rsEmail.spamHandling is set to 'toFolder', and 'rs.hasFolderCleaner' is set to 'true'. This field cannot have negative value.&lt;br /&gt;
|-&lt;br /&gt;
| rsEmail.spamForwardingAddress&lt;br /&gt;
| string&lt;br /&gt;
| The email address that Spam emails will be redirected to. This field is required when the spamHandling field is set to 'toAddress'&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
put '/customers/100018/domains/resellerallservices.net/rs/mailboxes/unittestexist/spam/settings', &lt;br /&gt;
{&lt;br /&gt;
      'filterLevel' =&amp;gt; 'on',  &lt;br /&gt;
      'rsEmail.spamHandling' =&amp;gt; 'toFolder',&lt;br /&gt;
      'rsEmail.hasFolderCleaner' =&amp;gt; 'true',&lt;br /&gt;
      'rsEmail.spamFolderAgeLimit' =&amp;gt; '7',&lt;br /&gt;
      'rsEmail.spamFolderNumLimit' =&amp;gt; '100',&lt;br /&gt;
}, Formats.xml&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Errors'': &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Invalid input for form field 'filterLevel'&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid FilterLevel: Input must be: on/off/exclusive&lt;br /&gt;
|-&lt;br /&gt;
| Invalid input for form field 'spamHandling'&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid RSEmail SpamHandling: Input must be: toFolder/delete/labelSubject/toAddress&lt;br /&gt;
|-&lt;br /&gt;
| Invalid email address in spam forwarding address&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid email address&lt;br /&gt;
|-&lt;br /&gt;
| Empty forwarding address&lt;br /&gt;
| 400&lt;br /&gt;
| Spam Forwarding Address cannot be empty for spam handling policy: toAddress&lt;br /&gt;
|-&lt;br /&gt;
| Invalid value for field 'spamFolderAgeLimit'&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid RSEmail SpamCleanupOption: -1. rsEmail.spamFolderAgeLimit should be non-negative&lt;br /&gt;
|-&lt;br /&gt;
| Invalid value for field 'spamFolderNumLimit'&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid RSEmail SpamCleanupOption: -1. rsEmail.spamNumberLimit should be non-negative.&lt;br /&gt;
|-&lt;br /&gt;
| Invalid field combination&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid field combination: Folder cleaner options cannot be specified with spam handling policy: delete.&lt;br /&gt;
|-&lt;br /&gt;
| Invalid field combination&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid field combination: Folder cleaner options cannot be specified with spam handling policy: labelSubject.&lt;br /&gt;
|-&lt;br /&gt;
| Invalid field combination&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid field combination: Folder cleaner options cannot be specified with spam handling policy: toAddress.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Blacklist ==&lt;br /&gt;
&lt;br /&gt;
=== Index ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /rs/mailboxes/(mailbox name)/spam/blacklist&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
This operation returns email address blacklist associated with the mailbox. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The Index operation only supports the GET HTTP verb. For .xml format refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/Blacklist.xsd Blacklist.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/example.com/rs/mailboxes/alex.smith/spam/blacklist', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;blacklist xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:blacklist&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;addresses&amp;gt;&lt;br /&gt;
    &amp;lt;address&amp;gt;name1@spam.com&amp;lt;/address&amp;gt;&lt;br /&gt;
    &amp;lt;address&amp;gt;name2@spam.com&amp;lt;/address&amp;gt;&lt;br /&gt;
  &amp;lt;/addresses&amp;gt;&lt;br /&gt;
&amp;lt;/blacklist&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;addresses&amp;quot;:[&amp;quot;name1@spam.com&amp;quot;,&amp;quot;name2@spam.com&amp;quot;]}&lt;br /&gt;
&lt;br /&gt;
=== Add ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[POST] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /rs/mailboxes/(mailbox name)/spam/blacklist/(email address)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Adds an email address or domain to the blacklist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post '/customers/12345678/domains/example.com/rs/mailboxes/alex.smith/spam/blacklist/anyone@spam.com', {},'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'': &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Entered invalid email or domain&lt;br /&gt;
| 400&lt;br /&gt;
| invalid email address: abc&lt;br /&gt;
|-&lt;br /&gt;
| Entered current domain&lt;br /&gt;
| 400&lt;br /&gt;
| Adding example.com would blacklist the current domain&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Delete ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[DELETE] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
            /rs/mailboxes/(mailbox name)/spam/blacklist/(email address)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Removes an email address or domain from the blacklist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
delete '/customers/12345678/domains/example.com/rs/mailboxes/alex.smith/spam/blacklist/anyone@yahoo.com', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'': &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Entered invalid email or domain&lt;br /&gt;
| 400&lt;br /&gt;
| invalid email address: abc&lt;br /&gt;
|-&lt;br /&gt;
| Entered email or domain is not on the current blacklist&lt;br /&gt;
| 400&lt;br /&gt;
| abc@junkmail.com is not found on the blacklist&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Edit ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[PUT] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
               /rs/mailboxes/(mailbox name)/spam/blacklist&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Edit email addresses on the blacklist.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| addList&lt;br /&gt;
| string&lt;br /&gt;
| Comma separated list of email addresses to add to the list&lt;br /&gt;
|-&lt;br /&gt;
| removeList&lt;br /&gt;
| string&lt;br /&gt;
| Comma separated list of email addresses to remove from the list&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''Note'':&lt;br /&gt;
&lt;br /&gt;
You can use a '%' as a wildcard in domains, but not in the TLD (.com, .net, etc). You cannot use wildcards in email addresses. For example, the following are allowed: @%.example.com, @examp%.com.&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
put '/customers/12345678/domains/example.com/rs/mailboxes/jane.doe/spam/blacklist',&lt;br /&gt;
{&lt;br /&gt;
  'addList' =&amp;gt; '@%.example.com,abc@example.com',&lt;br /&gt;
  'removeList' =&amp;gt; '@examp%.com'&lt;br /&gt;
},&lt;br /&gt;
'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== IP Blacklist ==&lt;br /&gt;
&lt;br /&gt;
=== Index ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /rs/mailboxes/(mailbox name)/spam/ipblacklist&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
This operation returns IP blacklist associated with the mailbox. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The Index operation only supports the GET HTTP verb. For .xml format refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/IpBlacklist.xsd IpBlacklist.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/example.com/rs/mailboxes/alex.smith/spam/ipblacklist', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''XML Result Example':&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;ipBlacklist xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:ipBlacklist&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;addresses&amp;gt;&lt;br /&gt;
    &amp;lt;ip&amp;gt;216.12.34.1&amp;lt;/ip&amp;gt;&lt;br /&gt;
    &amp;lt;ip&amp;gt;216.12.34.2&amp;lt;/ip&amp;gt;&lt;br /&gt;
  &amp;lt;/addresses&amp;gt;&lt;br /&gt;
&amp;lt;/ipBlacklist&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;addresses&amp;quot;:[&amp;quot;216.12.34.1&amp;quot;,&amp;quot;216.12.34.2&amp;quot;]}&lt;br /&gt;
&lt;br /&gt;
=== Add ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[POST] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /rs/mailboxes/(mailbox name)/spam/ipblacklist/(ip address)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Adds an IP to the blacklist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post '/customers/12345678/domains/example.com/rs/mailboxes/alex.smith/spam/blacklist/216.12.34.1', {},'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[DELETE] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
            /rs/mailboxes/(mailbox name)/spam/ipblacklist/(ip address)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Removes an IP from the blacklist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
delete '/customers/12345678/domains/example.com/rs/mailboxes/alex.smith/spam/ipblacklist/216.12.34.1', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'': &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Entered IP is not on the current blacklist&lt;br /&gt;
| 400&lt;br /&gt;
| 216.12.34.1 is not found on the blacklist&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Edit ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[PUT] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
               /rs/mailboxes/(mailbox name)/spam/ipblacklist&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Edit IP addresses on the blacklist.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| addList&lt;br /&gt;
| string&lt;br /&gt;
| Comma separated list of IP addresses to add to the list&lt;br /&gt;
|-&lt;br /&gt;
| removeList&lt;br /&gt;
| string&lt;br /&gt;
| Comma separated list of IP addresses to remove from the list&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''Note'':&lt;br /&gt;
&lt;br /&gt;
You can use a '%' as a wildcard in the last octets to specify IP ranges. For example: 216.12.34.%, 216.12.%.%, 216.%.%.%.&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
put '/customers/12345678/domains/example.com/rs/mailboxes/jane.doe/spam/ipblacklist',&lt;br /&gt;
{&lt;br /&gt;
  'addList' =&amp;gt; '216.12.34.%,216.12.%.%',&lt;br /&gt;
  'removeList' =&amp;gt; '216.%.%.%'&lt;br /&gt;
},&lt;br /&gt;
'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Safelist ==&lt;br /&gt;
&lt;br /&gt;
=== Index ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /rs/mailboxes/(mailbox name)/spam/safelist&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
This operation returns email address safelist associated with the mailbox. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The Index operation only supports the GET HTTP verb. For .xml format refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/Safelist.xsd Safelist.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/example.com/rs/mailboxes/alex.smith/spam/safelist', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;safelist xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:safelist&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;addresses&amp;gt;&lt;br /&gt;
    &amp;lt;address&amp;gt;name1@notspam.com&amp;lt;/address&amp;gt;&lt;br /&gt;
    &amp;lt;address&amp;gt;name2@notspam.com&amp;lt;/address&amp;gt;&lt;br /&gt;
  &amp;lt;/addresses&amp;gt;&lt;br /&gt;
&amp;lt;/safelist&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;addresses&amp;quot;:[&amp;quot;name1@notspam.com&amp;quot;,&amp;quot;name2@notspam.com&amp;quot;]}&lt;br /&gt;
&lt;br /&gt;
=== Add ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[POST] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /rs/mailboxes/(mailbox name)/spam/safelist/(email address)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Adds an email address or domain to the safelist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post '/customers/12345678/domains/example.com/rs/mailboxes/alex.smith/spam/safelist/anyone@yahoo.com', {},'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'': &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Entered invalid email or domain&lt;br /&gt;
| 400&lt;br /&gt;
| invalid email address: abc&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Delete ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[DELETE] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
            /rs/mailboxes/(mailbox name)/spam/safelist/(email address)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Removes an email address or domain from the safelist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
delete '/customers/12345678/domains/example.com/rs/mailboxes/alex.smith/spam/safelist/anyone@yahoo.com', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'': &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Entered invalid email or domain&lt;br /&gt;
| 400&lt;br /&gt;
| invalid email address: abc&lt;br /&gt;
|-&lt;br /&gt;
| Entered email or domain is not on the current safelist&lt;br /&gt;
| 400&lt;br /&gt;
| anyone@yahoo.com is not found on the safelist&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Edit ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[PUT] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
               /rs/mailboxes/(mailbox name)/spam/safelist&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Edit email addresses on the safelist.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| addList&lt;br /&gt;
| string&lt;br /&gt;
| Comma separated list of email addresses to add to the list&lt;br /&gt;
|-&lt;br /&gt;
| removeList&lt;br /&gt;
| string&lt;br /&gt;
| Comma separated list of email addresses to remove from the list&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''Note'':&lt;br /&gt;
&lt;br /&gt;
You can use a '%' as a wildcard in domains, but not in the TLD (.com, .net, etc). You cannot use wildcards in email addresses. For example, the following are allowed: @%.example.com, @examp%.com.&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
put '/customers/12345678/domains/example.com/rs/mailboxes/jane.doe/spam/safelist',&lt;br /&gt;
{&lt;br /&gt;
  'addList' =&amp;gt; '@%.example.com,abc@example.com',&lt;br /&gt;
  'removeList' =&amp;gt; '@examp%.com'&lt;br /&gt;
},&lt;br /&gt;
'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== IP Safelist ==&lt;br /&gt;
&lt;br /&gt;
=== Index ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /rs/mailboxes/(mailbox name)/spam/ipsafelist&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
This operation returns IP safelist associated with the mailbox. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The Index operation only supports the GET HTTP verb. For .xml format refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/IpSafelist.xsd IpSafelist.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/example.com/rs/mailboxes/alex.smith/spam/ipsafelist', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;ipSafelist xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:ipSafelist&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;addresses&amp;gt;&lt;br /&gt;
    &amp;lt;ip&amp;gt;192.168.0.1&amp;lt;/ip&amp;gt;&lt;br /&gt;
    &amp;lt;ip&amp;gt;192.168.0.2&amp;lt;/ip&amp;gt;&lt;br /&gt;
  &amp;lt;/addresses&amp;gt;&lt;br /&gt;
&amp;lt;/ipSafelist&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;addresses&amp;quot;:[&amp;quot;192.168.0.1&amp;quot;,&amp;quot;192.168.0.2&amp;quot;]}&lt;br /&gt;
&lt;br /&gt;
=== Add ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[POST] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /rs/mailboxes/(mailbox name)/spam/ipsafelist/(ip address)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Adds an IP to the ipsafelist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post '/customers/12345678/domains/example.com/rs/mailboxes/alex.smith/spam/ipsafelist/216.12.34.1', {},'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'': &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Entered invalid IP address&lt;br /&gt;
| 400&lt;br /&gt;
| invalid ip address: 123&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Delete ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[DELETE] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
            /rs/mailboxes/(mailbox name)/spam/ipsafelist/(email address)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Removes an IP from the safelist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
delete '/customers/12345678/domains/example.com/rs/mailboxes/alex.smith/spam/ipsafelist/216.12.34.1', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'': &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Entered IP is not on the current safelist&lt;br /&gt;
| 400&lt;br /&gt;
| 216.12.34.1 is not found on the safelist&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Edit ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[PUT] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
               /rs/mailboxes/(mailbox name)/spam/ipsafelist&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Edit IP addresses on the safelist.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| addList&lt;br /&gt;
| string&lt;br /&gt;
| Comma separated list of IP addresses to add to the list&lt;br /&gt;
|-&lt;br /&gt;
| removeList&lt;br /&gt;
| string&lt;br /&gt;
| Comma separated list of IP addresses to remove from the list&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''Note'':&lt;br /&gt;
&lt;br /&gt;
You can use a '%' as a wildcard in the last octets to specify IP ranges. For example: 216.12.34.%, 216.12.%.%, 216.%.%.%.&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
put '/customers/12345678/domains/example.com/rs/mailboxes/jane.doe/spam/ipsafelist',&lt;br /&gt;
{&lt;br /&gt;
  'addList' =&amp;gt; '216.12.34.%,216.12.%.%',&lt;br /&gt;
  'removeList' =&amp;gt; '216.%.%.%'&lt;br /&gt;
},&lt;br /&gt;
'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zhen.wei</name></author>	</entry>

	<entry>
		<id>http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Domain_Spam_(Rest_API)&amp;diff=462</id>
		<title>Domain Spam (Rest API)</title>
		<link rel="alternate" type="text/html" href="http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Domain_Spam_(Rest_API)&amp;diff=462"/>
				<updated>2013-02-28T21:35:56Z</updated>
		
		<summary type="html">&lt;p&gt;Zhen.wei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Spam Settings ==&lt;br /&gt;
&lt;br /&gt;
=== Show Spam Setting ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)/spam/settings&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
This operation returns the spam settings associated with the domain.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The Show operation only supports the GET HTTP verb. For .xml format, refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/DomainSpamSetting.xsd DomainSpamSetting.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/example.com/spam/settings', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;domainSpamSettings xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:DomainSpamSettings&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;filterLevel&amp;gt;on&amp;lt;/filterLevel&amp;gt;&lt;br /&gt;
  &amp;lt;rsEmailSettings&amp;gt;&lt;br /&gt;
    &amp;lt;spamHandling&amp;gt;toAddress&amp;lt;/spamHandling&amp;gt;&lt;br /&gt;
    &amp;lt;hasFolderCleaner&amp;gt;false&amp;lt;/hasFolderCleaner&amp;gt;&lt;br /&gt;
    &amp;lt;spamFolderAgeLimit&amp;gt;0&amp;lt;/spamFolderAgeLimit&amp;gt;&lt;br /&gt;
    &amp;lt;spamFolderNumLimit&amp;gt;0&amp;lt;/spamFolderNumLimit&amp;gt;&lt;br /&gt;
    &amp;lt;spamForwardingAddress&amp;gt;someone@mail.com&amp;lt;/spamForwardingAddress&amp;gt;&lt;br /&gt;
  &amp;lt;/rsEmailSettings&amp;gt;&lt;br /&gt;
  &amp;lt;exchangeSettings&amp;gt;&lt;br /&gt;
    &amp;lt;forwardToDomainQuarantine&amp;gt;on&amp;lt;/forwardToDomainQuarantine&amp;gt;&lt;br /&gt;
    &amp;lt;quarantineOwner&amp;gt;someone@mail.com&amp;lt;/quarantineOwner&amp;gt;&lt;br /&gt;
    &amp;lt;defaultQuarantineOwner&amp;gt;someone@mail.com&amp;lt;/defaultQuarantineOwner&amp;gt;&lt;br /&gt;
  &amp;lt;/exchangeSettings&amp;gt;&lt;br /&gt;
&amp;lt;/domainSpamSettings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;filterLevel&amp;quot;:&amp;quot;on&amp;quot;,&amp;quot;rsEmailSettings&amp;quot;:{&amp;quot;spamHandling&amp;quot;:&amp;quot;toAddress&amp;quot;,&amp;quot;hasFolderCleaner&amp;quot;:false,&amp;quot;spamFolderAgeLimit&amp;quot;:0,&amp;quot;spamFolderNumLimit&amp;quot;:0,&amp;quot;spamForwardingAddress&amp;quot;:&amp;quot;someone@mail.com&amp;quot;},&amp;quot;exchangeSettings&amp;quot;:{&amp;quot;forwardToDomainQuarantine&amp;quot;:&amp;quot;on&amp;quot;,&amp;quot;quarantineOwner&amp;quot;:&amp;quot;someone@mail.com&amp;quot;,&amp;quot;defaultQuarantineOwner&amp;quot;:&amp;quot;someone@mail.com&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
=== Edit Spam Setting ===&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[PUT] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)/spam/settings&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Edits the domain Spam Settings.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| filterLevel&lt;br /&gt;
| string&lt;br /&gt;
| Spam filter status, must be 'on' or 'off' or 'exclusive' (Required)&lt;br /&gt;
|-&lt;br /&gt;
| overrideUserSettings&lt;br /&gt;
| boolean&lt;br /&gt;
| Set this flag to &amp;quot;true&amp;quot; to override preferences for all users regardless of their own preferences. Otherwise, it sets preferences only for users who have not set their own.&lt;br /&gt;
|-&lt;br /&gt;
| rsEmail.spamHandling&lt;br /&gt;
| string&lt;br /&gt;
| Change settings for Rackspace Email Handling. For the options, see the table below.&lt;br /&gt;
|-&lt;br /&gt;
| rsEmail.hasFolderCleaner&lt;br /&gt;
| boolean&lt;br /&gt;
| Turns on/off Spam Folder Cleaner. Requires &amp;quot;rsEmail.spamHandling&amp;quot; to be set to &amp;quot;toFolder&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| rsEmail.spamFolderAgeLimit&lt;br /&gt;
| int&lt;br /&gt;
| The number of days that email stays the &amp;quot;Spam&amp;quot; folder before being deleted. Requires &amp;quot;rsEmail.hasFolderCleaner&amp;quot; to be set to &amp;quot;true&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| rsEmail.spamFolderNumLimit&lt;br /&gt;
| int&lt;br /&gt;
| The max number of emails that will be kept in the &amp;quot;Spam&amp;quot; folder. Requires &amp;quot;rsEmail.hasFolderCleaner&amp;quot; to be set to &amp;quot;true&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| rsEmail.spamForwardingAddress&lt;br /&gt;
| string&lt;br /&gt;
| The address that spams will be forwarded to. Requires &amp;quot;rsEmail.spamHandling&amp;quot; to be set to &amp;quot;toAddress&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| exchange.forwardToDomainQuarantine&lt;br /&gt;
| string&lt;br /&gt;
| Change settings for Exchange Handling. For the options, see the table below.&lt;br /&gt;
|-&lt;br /&gt;
| exchange.quarantineOwner&lt;br /&gt;
| string&lt;br /&gt;
| The address that domain quarantine notifications will be sent to.&lt;br /&gt;
|-&lt;br /&gt;
| exchange.removeQuarantineOwner&lt;br /&gt;
| boolean&lt;br /&gt;
| Set this flag to &amp;quot;true&amp;quot; to remove domain quarantine owner.&lt;br /&gt;
|-&lt;br /&gt;
| exchange.defaultQuarantineOwner&lt;br /&gt;
| string&lt;br /&gt;
| The address that quarantine notifications will be sent to. This applies to new users and users that have not changed their settings to override.&lt;br /&gt;
|-&lt;br /&gt;
| exchange.removeDefaultQuarantineOwner&lt;br /&gt;
| boolean&lt;br /&gt;
| Set this flag to &amp;quot;true&amp;quot; to remove default domain quarantine owner.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Rackspace Email Handling Options:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Value''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| toFolder&lt;br /&gt;
| Deliver to Spam folder&lt;br /&gt;
|-&lt;br /&gt;
| delete&lt;br /&gt;
| Delete the email immediately&lt;br /&gt;
|-&lt;br /&gt;
| labelSubject&lt;br /&gt;
| Include &amp;quot;[SPAM]&amp;quot; at the beginning of the subject line&lt;br /&gt;
|-&lt;br /&gt;
| toAddress&lt;br /&gt;
| Deliver to the email address that is specified by &amp;quot;rsEmail.spamForwardingAddress&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Exchange Handling Options:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Value''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| on&lt;br /&gt;
| Send all spam to domain quarantine&lt;br /&gt;
|-&lt;br /&gt;
| off&lt;br /&gt;
| Send spam to recipient's quarantine&lt;br /&gt;
|-&lt;br /&gt;
| nonuser&lt;br /&gt;
| Send non-user spam (Contacts, Resources, etc.) to domain quarantine&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
put '/customers/me/domains/example.com/spam/settings', 'text/xml', &lt;br /&gt;
{&lt;br /&gt;
  'filterLevel' =&amp;gt; 'on',&lt;br /&gt;
  'rsEmail.spamHandling' =&amp;gt; 'toFolder',&lt;br /&gt;
  'rsEmail.hasFolderCleaner' =&amp;gt; 'true',&lt;br /&gt;
  'rsEmail.spamFolderAgeLimit' =&amp;gt; '7',&lt;br /&gt;
  'rsEmail.spamFolderNumLimit' =&amp;gt; '100',&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Invalid input for Filter Level&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid FilterLevel: high. Input must be: on/off/exclusive&lt;br /&gt;
|-&lt;br /&gt;
| Invalid input for RSEmail SpamHandling&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid RSEmail SpamHandling: nonuser. Input must be: toFolder/delete/labelSubject/toAddress&lt;br /&gt;
|-&lt;br /&gt;
| Invalid input for Exchange ForwardToDomainQuarantine&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid input for Exchange ForwardToDomainQuarantine: delete. Input must be: on/off/nonuser&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Blacklist ==&lt;br /&gt;
&lt;br /&gt;
=== Index Blacklist ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)/spam/blacklist&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
This operation returns the email address blacklist associated with the domain. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The Index operation only supports the GET HTTP verb. For .xml format, refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/Blacklist.xsd Blacklist.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/example.com/spam/blacklist', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;blacklist xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:blacklist&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;addresses&amp;gt;&lt;br /&gt;
    &amp;lt;address&amp;gt;name1@spam.com&amp;lt;/address&amp;gt;&lt;br /&gt;
    &amp;lt;address&amp;gt;name2@spam.com&amp;lt;/address&amp;gt;&lt;br /&gt;
  &amp;lt;/addresses&amp;gt;&lt;br /&gt;
&amp;lt;/blacklist&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;addresses&amp;quot;:[&amp;quot;name1@spam.com&amp;quot;,&amp;quot;name2@spam.com&amp;quot;]}&lt;br /&gt;
&lt;br /&gt;
=== Add Blacklist ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[POST] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)/spam/blacklist/(email address)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Adds an email address or domain to the blacklist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post '/customers/12345678/domains/example.com/spam/blacklist/anyone@spam.com', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'': &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Entered invalid email or domain&lt;br /&gt;
| 400&lt;br /&gt;
| invalid email address: abc&lt;br /&gt;
|-&lt;br /&gt;
| Entered current domain&lt;br /&gt;
| 400&lt;br /&gt;
| Adding example.com would blacklist the current domain&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Delete Blacklist ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[DELETE] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)/spam/blacklist/(email address)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Removes an email address or domain from the blacklist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
delete '/customers/12345678/domains/example.com/spam/blacklist/anyone@yahoo.com', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'': &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Entered invalid email or domain&lt;br /&gt;
| 400&lt;br /&gt;
| invalid email address: abc&lt;br /&gt;
|-&lt;br /&gt;
| Entered email or domain is not on the current blacklist&lt;br /&gt;
| 400&lt;br /&gt;
| abc@junkmail.com is not found on the list&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Edit Blacklist ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[PUT] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)/spam/blacklist&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Edit email addresses on the blacklist.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| addList&lt;br /&gt;
| string&lt;br /&gt;
| Comma separated list of email addresses to add to the list&lt;br /&gt;
|-&lt;br /&gt;
| removeList&lt;br /&gt;
| string&lt;br /&gt;
| Comma separated list of email addresses to remove from the list&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''Note'':&lt;br /&gt;
&lt;br /&gt;
You can use a '%' as a wildcard in domains, but not in the TLD (.com, .net, etc). You cannot use wildcards in email addresses. For example, the following are allowed: @%.example.com, @examp%.com.&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
put '/customers/12345678/domains/example.com/spam/blacklist',&lt;br /&gt;
{&lt;br /&gt;
  'addList' =&amp;gt; '@%.example.com,abc@example.com',&lt;br /&gt;
  'removeList' =&amp;gt; '@examp%.com'&lt;br /&gt;
},&lt;br /&gt;
'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== IP Blacklist ==&lt;br /&gt;
&lt;br /&gt;
=== Index IP Blacklist ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)/spam/ipblacklist&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
This operation returns IP blacklist associated with the domain. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The Index operation only supports the GET HTTP verb. For .xml format, refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/IpBlacklist.xsd IpBlacklist.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/example.com/spam/ipblacklist', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''XML Result Example':&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;ipBlacklist xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:ipBlacklist&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;addresses&amp;gt;&lt;br /&gt;
    &amp;lt;ip&amp;gt;216.12.34.1&amp;lt;/ip&amp;gt;&lt;br /&gt;
    &amp;lt;ip&amp;gt;216.12.34.2&amp;lt;/ip&amp;gt;&lt;br /&gt;
  &amp;lt;/addresses&amp;gt;&lt;br /&gt;
&amp;lt;/ipBlacklist&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;addresses&amp;quot;:[&amp;quot;216.12.34.1&amp;quot;,&amp;quot;216.12.34.2&amp;quot;]}&lt;br /&gt;
&lt;br /&gt;
=== Add IP Blacklist ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[POST] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)/spam/ipblacklist/(ip address)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Adds an IP to the blacklist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post '/customers/12345678/domains/example.com/spam/blacklist/216.12.34.1', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'': &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Entered invalid IP address&lt;br /&gt;
| 400&lt;br /&gt;
| invalid ip address: 123&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Delete IP Blacklist ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[DELETE] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)/spam/ipblacklist/(ip address)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Removes an IP from the blacklist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
delete '/customers/12345678/domains/example.com/spam/ipblacklist/216.12.34.1', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'': &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Entered invalid IP address&lt;br /&gt;
| 400&lt;br /&gt;
| invalid ip address: 123&lt;br /&gt;
|-&lt;br /&gt;
| Entered IP is not on the current blacklist&lt;br /&gt;
| 400&lt;br /&gt;
| 216.12.34.1 is not found on the blacklist&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Edit IP Blacklist ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[PUT] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)/spam/ipblacklist&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Edit IP addresses on the blacklist.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| addList&lt;br /&gt;
| string&lt;br /&gt;
| Comma separated list of IP addresses to add to the list&lt;br /&gt;
|-&lt;br /&gt;
| removeList&lt;br /&gt;
| string&lt;br /&gt;
| Comma separated list of IP addresses to remove from the list&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''Note'':&lt;br /&gt;
&lt;br /&gt;
You can use a '%' as a wildcard in the last octets to specify IP ranges. For example: 216.12.34.%, 216.12.%.%, 216.%.%.%.&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
put '/customers/12345678/domains/example.com/spam/ipblacklist',&lt;br /&gt;
{&lt;br /&gt;
  'addList' =&amp;gt; '216.12.34.%,216.12.%.%',&lt;br /&gt;
  'removeList' =&amp;gt; '216.%.%.%'&lt;br /&gt;
},&lt;br /&gt;
'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Safelist ==&lt;br /&gt;
&lt;br /&gt;
=== Index Safelist ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)/spam/safelist&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
This operation returns email address safelist associated with the domain. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The Index operation only supports the GET HTTP verb. For .xml format, refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/Safelist.xsd Safelist.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/example.com/spam/safelist', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;safelist xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:safelist&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;addresses&amp;gt;&lt;br /&gt;
    &amp;lt;address&amp;gt;name1@notspam.com&amp;lt;/address&amp;gt;&lt;br /&gt;
    &amp;lt;address&amp;gt;name2@notspam.com&amp;lt;/address&amp;gt;&lt;br /&gt;
  &amp;lt;/addresses&amp;gt;&lt;br /&gt;
&amp;lt;/safelist&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;addresses&amp;quot;:[&amp;quot;name1@notspam.com&amp;quot;,&amp;quot;name2@notspam.com&amp;quot;]}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Add Safelist ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[POST] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)/spam/safelist/(email address)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Adds an email address or domain to the safelist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post '/customers/12345678/domains/example.com/spam/safelist/anyone@yahoo.com', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'': &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Entered invalid email or domain&lt;br /&gt;
| 400&lt;br /&gt;
| invalid email address: abc&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Delete Safelist ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[DELETE] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)/spam/safelist/(email address)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Removes an email address or domain from the safelist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
delete '/customers/12345678/domains/example.com/spam/safelist/anyone@yahoo.com', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'': &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Entered invalid email or domain&lt;br /&gt;
| 400&lt;br /&gt;
| invalid email address: abc&lt;br /&gt;
|-&lt;br /&gt;
| Entered email or domain is not on the current safelist&lt;br /&gt;
| 400&lt;br /&gt;
| anyone@yahoo.com is not found on the list&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Edit Safelist ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[PUT] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)/spam/safelist&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Edit email addresses on the safelist.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| addList&lt;br /&gt;
| string&lt;br /&gt;
| Comma separated list of email addresses to add to the list&lt;br /&gt;
|-&lt;br /&gt;
| removeList&lt;br /&gt;
| string&lt;br /&gt;
| Comma separated list of email addresses to remove from the list&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''Note'':&lt;br /&gt;
&lt;br /&gt;
You can use a '%' as a wildcard in domains, but not in the TLD (.com, .net, etc). You cannot use wildcards in email addresses. For example, the following are allowed: @%.example.com, @examp%.com.&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
put '/customers/12345678/domains/example.com/spam/safelist',&lt;br /&gt;
{&lt;br /&gt;
  'addList' =&amp;gt; '@%.example.com,abc@example.com',&lt;br /&gt;
  'removeList' =&amp;gt; '@examp%.com'&lt;br /&gt;
},&lt;br /&gt;
'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== IP Safelist ==&lt;br /&gt;
&lt;br /&gt;
=== Index IP Safelist ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)/spam/ipsafelist&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
This operation returns IP safelist associated with the domain. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The Index operation only supports the GET HTTP verb. For .xml format, refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/IpSafelist.xsd IpSafelist.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/example.com/spam/ipsafelist', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;ipSafelist xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:ipSafelist&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;addresses&amp;gt;&lt;br /&gt;
    &amp;lt;ip&amp;gt;192.168.0.1&amp;lt;/ip&amp;gt;&lt;br /&gt;
    &amp;lt;ip&amp;gt;192.168.0.2&amp;lt;/ip&amp;gt;&lt;br /&gt;
  &amp;lt;/addresses&amp;gt;&lt;br /&gt;
&amp;lt;/ipSafelist&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;addresses&amp;quot;:[&amp;quot;192.168.0.1&amp;quot;,&amp;quot;192.168.0.2&amp;quot;]}&lt;br /&gt;
&lt;br /&gt;
=== Add IP Safelist ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[POST] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)/spam/ipsafelist/(ip address)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Adds an IP to the safelist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post '/customers/12345678/domains/example.com/spam/safelist/216.12.34.1', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'': &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Entered invalid IP address&lt;br /&gt;
| 400&lt;br /&gt;
| invalid ip address: 123&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Delete IP Safelist ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[DELETE] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)/spam/ipsafelist/(email address)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Removes an IP from the safelist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
delete '/customers/12345678/domains/example.com/spam/ipsafelist/216.12.34.1', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'': &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Entered invalid IP address&lt;br /&gt;
| 400&lt;br /&gt;
| invalid ip address: 123&lt;br /&gt;
|-&lt;br /&gt;
| Entered IP is not on the current safelist&lt;br /&gt;
| 400&lt;br /&gt;
| 216.12.34.1 is not found on the list&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Edit IP Safelist ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[PUT] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)/spam/ipsafelist&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Edit IP addresses on the safelist.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| addList&lt;br /&gt;
| string&lt;br /&gt;
| Comma separated list of IP addresses to add to the list&lt;br /&gt;
|-&lt;br /&gt;
| removeList&lt;br /&gt;
| string&lt;br /&gt;
| Comma separated list of IP addresses to remove from the list&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''Note'':&lt;br /&gt;
&lt;br /&gt;
You can use a '%' as a wildcard in the last octets to specify IP ranges. For example: 216.12.34.%, 216.12.%.%, 216.%.%.%.&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
put '/customers/12345678/domains/example.com/spam/ipsafelist',&lt;br /&gt;
{&lt;br /&gt;
  'addList' =&amp;gt; '216.12.34.%,216.12.%.%',&lt;br /&gt;
  'removeList' =&amp;gt; '216.%.%.%'&lt;br /&gt;
},&lt;br /&gt;
'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zhen.wei</name></author>	</entry>

	<entry>
		<id>http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Main_Page&amp;diff=461</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Main_Page&amp;diff=461"/>
				<updated>2012-11-27T20:40:37Z</updated>
		
		<summary type="html">&lt;p&gt;Zhen.wei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The The Rackspace Email Rest API provides most of the functions of the Control Panel through a REST-based [http://en.wikipedia.org/wiki/Web_service web API]. Whether it is adding a new customer account, adding mailboxes, or any other of the supported features the API allows your application to administer the changes regardless of your application's language or nature. For more information on RESTful web services refer to the following sites:&lt;br /&gt;
&lt;br /&gt;
[http://www.peej.co.uk/articles/restfully-delicious.html Paul James's Homepage: A RESTful Web service, an example]&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Representational_State_Transfer#External_links Wikipedia: Representational State Transfer - External Links]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The API is accessible to all with access to Control Panel, including resellers, business customers, enterprise customers, and indirect customers. However, not all operations are available to non-resellers. See the [[Rest_API#Operations|Operations]] section for more details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Rackspace Email Soap API Homepage has been moved to [[Soap_API| here]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Operations ==&lt;br /&gt;
&lt;br /&gt;
The following pages detail the operations that the API supports. The operations are grouped into sections based on the entity/object types that each operation interacts with. Non-resellers do not have access to all functions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Resource&lt;br /&gt;
!Example URI&lt;br /&gt;
!Business User Access&lt;br /&gt;
|-&lt;br /&gt;
| [[Customer_(Rest_API)| Customer]]&lt;br /&gt;
| /customers/123456789&lt;br /&gt;
| [[Customer_(Rest_API)#Create_Login_Tokens | Create Login Tokens]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Admin_(Rest_API)| Admin]]&lt;br /&gt;
| /customers/123456789/admins/my_admin&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Domain_(Rest_API)| Domain]]&lt;br /&gt;
| /customers/123456789/domains/example.com&lt;br /&gt;
| [[Domain_(Rest_API)#Index| Index]], [[Domain_(Rest_API)#Show| Show]], [[Domain_(Rest_API)#Split Domain Routing| Split Domain Routing]], [[Domain_(Rest_API)#Archiving SSO Login URL| Archiving SSO Login URL]], [[Domain_(Rest_API)#Domain_Public_Folders_.28Reseller_Only.29|Domain Public Folders]], [[Domain_(Rest_API)#Domain Email Everyone| Email Everyone ]], [[Domain_(Rest_API)#Show_Domain_Catch-All_Address | Catch-All Address]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Domain_Spam_(Rest_API)| Domain Spam Settings]]&lt;br /&gt;
| /customers/123456789/domains/example.com/spam/settings&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Rackspace_Mailbox_(Rest_API)|  Rackspace Email Mailbox]]&lt;br /&gt;
|  /customers/123456789/domains/example.com/rs/mailboxes/john.smith&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Rackspace_Email_Mobile_Sync_(Rest_API)|  Rackspace Email Mobile Sync]]&lt;br /&gt;
|  /customers/123456789/domains/example.com/mobilesync&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Rackspace_Mailbox_Spam_(Rest_API)| Rackspace Email Mailbox Spam Settings]]&lt;br /&gt;
|  /customers/123456789/domains/example.com/rs/mailboxes/john.smith/spam&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Rackspace_Storage_Notification_(Rest_API)| Rackspace Storage Notification Settings]]&lt;br /&gt;
|  /customers/123456789/domains/example.com/rs/storageNotification&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Rackspace_Alias(Rest_API)|  Rackspace Email Alias]]&lt;br /&gt;
|  /customers/123456789/domains/example.com/rs/mailboxes/john.smith/alias&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Mailbox_(Rest_API)| Exchange Mailbox]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/mailboxes/john.smith&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Mailbox_Spam_(Rest_API)| Exchange Mailbox Spam Settings]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/mailboxes/john.smith/spam&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Contact_(Rest_API)| Exchange Contact]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/contacts/john.smith&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Distribution_List_(Rest_API)| Exchange Distribution List]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/distributionlists/group.name&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Resource_Mailbox_(Rest_API)| Exchange Resource Mailbox]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/resources/conference.room&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[SharePoint_(Rest_API)| SharePoint]]&lt;br /&gt;
| /customers/123456789/sharepoint/settings&lt;br /&gt;
| [[SharePoint_(Rest_API)#Show | Show]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The examples shown in the operation pages are written in Ruby and extensively use the helper functions shown in the Ruby Examples below.&lt;br /&gt;
&lt;br /&gt;
== Quick Start ==&lt;br /&gt;
&lt;br /&gt;
'''What you need:'''&lt;br /&gt;
* A Rackspace Email and Apps Control Panel admin account&lt;br /&gt;
* A HTTP class library that supports TLS and the HTTP methods: GET, POST, PUT, DELETE.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Making your first API call, an Show Customer request:'''&lt;br /&gt;
# Obtain your API keys&lt;br /&gt;
#:* Click on My Account at the top of the [https://apps.rackspace.com/?cp Control Panel web interface]. Under the Administrators heading there will be an link for the API keys page.&lt;br /&gt;
# Set up your client's HTTP request&lt;br /&gt;
#:* Set up your client to make calls to a URL beginning with &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/v0&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
#:* Populate the Accept, User-Agent and X-Api-Signature HTTP request headers correctly. This is explained in detail [[#HTTP Headers|here]].&lt;br /&gt;
# Make a GET request to /customers/me.&lt;br /&gt;
#:* The complete URI will be &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/v0/customers/me&amp;lt;/nowiki&amp;gt;. Use your HTTP library to retrieve the HTTP response code, 'x-error-message' HTTP response header and HTTP response body so that they may be displayed to help debug and determine success.&lt;br /&gt;
'''From here:'''&lt;br /&gt;
* Learn about the operations you'll be implementing at the subpages [[#Operations|here]].&lt;br /&gt;
&lt;br /&gt;
== Accessing the API ==&lt;br /&gt;
&lt;br /&gt;
Your application will need to make HTTP requests to remote servers. Most programming languages have this function provided in its class library. In addition to the common GET and POST HTTP methods, the library used will also need to support PUT and DELETE.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&lt;br /&gt;
Calls without [http://en.wikipedia.org/wiki/Transport_Layer_Security TLS] (formerly SSL) will complete successfully but it is HIGHLY RECOMMENDED that TLS always be used. Interception of unencrypted communication will allow a third party to have complete access to all functions available via the API.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For some language libraries just using an URL with https:// will cause the library to use TLS. In some other libraries however some options specific to the library may have to be configured to utilize TLS. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All API calls should be directed to a URL in the following format:&lt;br /&gt;
&amp;lt;pre&amp;gt;https://api.emailsrvr.com/(version)/(resource)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;https://api.emailsrvr.com/v0/customers/12345678/domains/customerbusiness.com&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Versions ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Supported Versions''&lt;br /&gt;
!''URL''&lt;br /&gt;
!''Version Documentation''&lt;br /&gt;
|-&lt;br /&gt;
| v0 (current)&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/v0/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
| http://api-wiki.apps.rackspace.com/api-wiki/index.php/Main_Page&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The API version number is a component of the URL that is used to access the API. For example, to access the root of the API, the URL is https://api.emailsrvr.com/v0/. Bug fixes and minor non-breaking changes will be made without changing the version number. When major features or breaking changes are introduced, the version number will be incremented. It is not yet determined how many versions are going to be supported at any one time.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Non-breaking Changes''&lt;br /&gt;
!''Breaking Changes''&lt;br /&gt;
|-&lt;br /&gt;
| Adding new fields or attributes to form fields sent&lt;br /&gt;
| Changing or deleting any fields in form fields sent&lt;br /&gt;
|-&lt;br /&gt;
| Adding fields in returned data&lt;br /&gt;
| Changing or removing fields in returned data&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| Changing the URI of any resource&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Authentication ===&lt;br /&gt;
&lt;br /&gt;
To gain access to the API, your request must include a properly constructed X-Api-Signature HTTP header. Details on what to put in the header are below. To construct the header, you must have the following keys that that are generated from the [https://apps.rackspace.com/?cp Control Panel Web interface]. The key generation page can be found by clicking 'My Account' at the top, then 'Generate API Keys' in the Administrators section.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Key Name&lt;br /&gt;
!Description&lt;br /&gt;
!Example&lt;br /&gt;
|-&lt;br /&gt;
| User Key&lt;br /&gt;
| A public key that corresponds to your admin id&lt;br /&gt;
| ''eGbq9/2hcZsRlr1JV1Pi''&lt;br /&gt;
|-&lt;br /&gt;
| Secret Key&lt;br /&gt;
| A shared secret key&lt;br /&gt;
| ''QHOvchm/40czXhJ1OxfxK7jDHr3t''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An unsuccessful authentication will result in a 403 HTTP code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== X-Api-Signature Header ====&lt;br /&gt;
&lt;br /&gt;
Format is as follows:&lt;br /&gt;
&amp;lt;'''User Key'''&amp;gt;:&amp;lt;'''Timestamp'''&amp;gt;:&amp;lt;'''SHA1 Hash'''&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Example: ''eGbq9/2hcZsRlr1JV1Pi:20010317143725:46VIwd66mOFGG8IkbgnLlXnfnkU=''&lt;br /&gt;
&lt;br /&gt;
Remember to include the colons between the data strings!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''User Key''':&amp;lt;br&amp;gt;&lt;br /&gt;
This is the public key issued by the Control Panel browser interface.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Timestamp''':&amp;lt;br&amp;gt;&lt;br /&gt;
The format is YYYYMMDDHHmmss. All values besides year are zero-padded to two spaces. For example, March 08th 2001 at 2:37.25pm would be ''20010308143725''.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|YYYY&lt;br /&gt;
|Four-digit year&lt;br /&gt;
|-&lt;br /&gt;
| MM&lt;br /&gt;
| Month&lt;br /&gt;
|-&lt;br /&gt;
| DD&lt;br /&gt;
| Day&lt;br /&gt;
|-&lt;br /&gt;
| HH&lt;br /&gt;
| Hour in 24h format&lt;br /&gt;
|-&lt;br /&gt;
| mm&lt;br /&gt;
| Minute&lt;br /&gt;
|-&lt;br /&gt;
| ss&lt;br /&gt;
| Second&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''SHA1 Hash''':&lt;br /&gt;
&lt;br /&gt;
A SHA1 (Secure Hash Algorithm) hash must be applied to a string with the following information:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;'''User Key'''&amp;gt;&amp;lt;'''User Agent'''&amp;gt;&amp;lt;'''Timestamp'''&amp;gt;&amp;lt;'''Secret Key'''&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that the 'User Agent' must be the exact same as what is specified in the User-Agent HTTP header. Using the above example data, the string before hashing is:&amp;lt;br&amp;gt;''eGbq9/2hcZsRlr1JV1PiRackspace Management Interface20010308143725QHOvchm/40czXhJ1OxfxK7jDHr3t''&lt;br /&gt;
&lt;br /&gt;
Resulting base-64 SHA1 Hash:&amp;lt;br&amp;gt;''46VIwd66mOFGG8IkbgnLlXnfnkU=''&lt;br /&gt;
&lt;br /&gt;
Be sure to encode the binary hash, not the hex hash, into base-64. The resulting string should be 28 characters long.&lt;br /&gt;
&lt;br /&gt;
== Using the API ==&lt;br /&gt;
&lt;br /&gt;
=== Requests ===&lt;br /&gt;
&lt;br /&gt;
HTTP requests should be sent to the server with the correct URL, HTTP method, HTTP headers and form data (if needed). The URL specifies the resource, the HTTP method specifies what operation is done on the resource, and form data is used to specify the details of the resource when the resource is added or edited.&lt;br /&gt;
&lt;br /&gt;
The URLs, corresponding HTTP methods, and necessary form data for the desired operations are detailed in the [[#Operations|operation pages]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you're getting the HTTP status code 417 see [[Handling HTTP code 417:  Expectation failed]]&lt;br /&gt;
&lt;br /&gt;
==== URL ====&lt;br /&gt;
&lt;br /&gt;
The URLs are specifies the resource or resource collection. Objects are organized in a tree collection, starting with customers at the top, then domains, then domain objects next (such as mailboxes, contacts, and distribution lists) and so on. The URLs of the resources and collections accessible are found on the operation pages.&lt;br /&gt;
&lt;br /&gt;
==== HTTP Method ====&lt;br /&gt;
&lt;br /&gt;
It is the HTTP method that specifies what operation will be done on the resource. For example, to get the details of a mailbox a HTTP GET will be done on /customers/12345678/domains/example.com/ex/mailboxes/john.smith. If the mailbox does not exist, a HTTP POST to the same URL with the necessary form data will add the mailbox. Then, a HTTP PUT to the same URL will edit mailbox. And to delete the mailbox, an HTTP DELETE would be used.&lt;br /&gt;
&lt;br /&gt;
The types of operations a certain method performs is outlined below.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''HTTP Method''&lt;br /&gt;
!''Operations''&lt;br /&gt;
!''Response''&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=2|GET&lt;br /&gt;
|Index - returns a list of the resources&lt;br /&gt;
|rowspan=2|XML or JSON formatted data&lt;br /&gt;
|-&lt;br /&gt;
|Show - returns the details of the resource&lt;br /&gt;
|-&lt;br /&gt;
|POST&lt;br /&gt;
|Add - adds a new resource&lt;br /&gt;
|rowspan=3|Response code and error message (if applicable) only&lt;br /&gt;
|-&lt;br /&gt;
|PUT&lt;br /&gt;
|Edit - changes the details of the resource&lt;br /&gt;
|-&lt;br /&gt;
|DELETE&lt;br /&gt;
|Delete - deletes the resource&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== HTTP Headers ====&lt;br /&gt;
&lt;br /&gt;
All requests to the API must then include HTTP headers with the following information:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Header Name''&lt;br /&gt;
!''Description''&lt;br /&gt;
!''Example Header Value''&lt;br /&gt;
|-&lt;br /&gt;
| Accept&lt;br /&gt;
| The requested content type (required for Index and Show actions). Fill this with either 'text/xml' or 'application/json'. See [[#Formats|Response Formats]]&lt;br /&gt;
| ''text/xml''&lt;br /&gt;
|-&lt;br /&gt;
| User-Agent&lt;br /&gt;
| An identifier you choose for your client software&lt;br /&gt;
| ''Rackspace Management Interface''&lt;br /&gt;
|-&lt;br /&gt;
| X-Api-Signature&lt;br /&gt;
| An authentication string explained in detail [[#X-Api-Signature_Header|here]]&lt;br /&gt;
| ''eGbq9/2hcZsRlr1JV1Pi:20010317143725:HKUn0aajpSDx7qqGK3vqzn3FglI=''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Form Data ====&lt;br /&gt;
&lt;br /&gt;
When using Add and Edit operations, the details of the resource are sent to the API server via HTTP form data. Your HTTP library should include methods for sending form data along with an HTTP request. The library should by default send the data in the HTTP request body using the 'application/x-www-form-urlencoded' data format.&lt;br /&gt;
&lt;br /&gt;
==== Index Filter/Search ====&lt;br /&gt;
&lt;br /&gt;
The results of Index actions can be filtered/searched. The index URLs can take either one of the query strings: &amp;quot;?startswith=xx&amp;quot; or &amp;quot;?contains=xx,&amp;quot; where &amp;quot;xx&amp;quot; is the key word. If the request specifies more than one of these two query strings, a 400 HTTP error will be returned. Different fields will be searched depending on the resource type, see below.&lt;br /&gt;
&lt;br /&gt;
Note that &amp;quot;0-9&amp;quot; is a reserved key word for query string &amp;quot;startswith.&amp;quot; It represents any result starting with numbers.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Index Actions''&lt;br /&gt;
!''Where the key word will be searched''&lt;br /&gt;
|-&lt;br /&gt;
| Customer&lt;br /&gt;
| Customer name, account number, reference number&lt;br /&gt;
|-&lt;br /&gt;
| Domain&lt;br /&gt;
| Domain name&lt;br /&gt;
|-&lt;br /&gt;
| Mailbox&lt;br /&gt;
| Mailbox name, mailbox display name&lt;br /&gt;
|-&lt;br /&gt;
| Contact&lt;br /&gt;
| Contact display name, external email&lt;br /&gt;
|-&lt;br /&gt;
| Group&lt;br /&gt;
| Group name, group display name&lt;br /&gt;
|-&lt;br /&gt;
| Mobile Service&lt;br /&gt;
| Associated mailbox name, mailbox display name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Throttling ====&lt;br /&gt;
&lt;br /&gt;
The server limits the number of requests allowed per user in a certain period of time.  The number of requests made are logged per minute. Calls that were made correctly with a user's API key, but not completed for any reason, including those exceeding the throttle limit, are included in this count.&lt;br /&gt;
&lt;br /&gt;
If a user is over the throttling limit then a 403 HTTP code will be returned with an &amp;quot;Exceeded request limits&amp;quot; message.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Operation Category''&lt;br /&gt;
!''Request Limit''&lt;br /&gt;
|-&lt;br /&gt;
| GET&lt;br /&gt;
| 60 per minute&lt;br /&gt;
|-&lt;br /&gt;
| PUT, POST, DELETE&lt;br /&gt;
| 30 per minute&lt;br /&gt;
|-&lt;br /&gt;
| POST, PUT, DELETE on a domain&lt;br /&gt;
| 2 per minute&lt;br /&gt;
|-&lt;br /&gt;
| POST, DELETE on alternate domains&lt;br /&gt;
| 2 per minute&lt;br /&gt;
|-&lt;br /&gt;
| Enabling public folders for a domain&lt;br /&gt;
| 1 per 5 minutes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&lt;br /&gt;
Index of Exchange Mailboxes:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hypertext Transfer Protocol&lt;br /&gt;
    GET /v0/customers/12345678/domains/example.com/ex/mailboxes?size=100&amp;amp;offset=100 HTTP/1.1&lt;br /&gt;
    Host: api.emailsrvr.com&lt;br /&gt;
    User-Agent: Rackspace Management Interface&lt;br /&gt;
    X-Api-Signature: eGbq9/2hcZsRlr1JV1Pi:20010317143725:HKUn0aajpSDx7qqGK3vqzn3FglI=&lt;br /&gt;
    Accept: text/xml&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Adding New Exchange Mailbox:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hypertext Transfer Protocol&lt;br /&gt;
    POST /v0/customers/12345678/domains/example.com/ex/mailboxes/john.smith HTTP/1.1&lt;br /&gt;
    Host: api.emailsrvr.com&lt;br /&gt;
    User-Agent: Rackspace Management Interface&lt;br /&gt;
    X-Api-Signature: eGbq9/2hcZsRlr1JV1Pi:20010317143725:HKUn0aajpSDx7qqGK3vqzn3FglI=&lt;br /&gt;
    Content-Length: 53&lt;br /&gt;
        [Content length: 53]&lt;br /&gt;
    Content-Type: application/x-www-form-urlencoded&lt;br /&gt;
 &lt;br /&gt;
Line-based text data: application/x-www-form-urlencoded&lt;br /&gt;
    size=2048&amp;amp;displayName=John%20Smith&amp;amp;password=abcABC123&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Responses ===&lt;br /&gt;
&lt;br /&gt;
==== HTTP Status Code ====&lt;br /&gt;
&lt;br /&gt;
On a successfully executed request, a 200 HTTP Code is returned. If the request was unsuccessful however, an HTTP error code in the 400s or 500s will be returned.&lt;br /&gt;
&lt;br /&gt;
==== HTTP Response Body ====&lt;br /&gt;
&lt;br /&gt;
If the request is an Index or Show request, the request data will be returned in the format specified in the HTTP Body.&lt;br /&gt;
&lt;br /&gt;
===== Formats =====&lt;br /&gt;
&lt;br /&gt;
Requests for data (index and show requests) are returned with XML or JSON data based on what your application populates the [[#HTTP_Headers|HTTP Accept headers]] with.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For XML, populate the header with 'text/xml' (ex: Headers![&amp;quot;Accept&amp;quot;] = &amp;quot;text/xml&amp;quot;). The XML document returned will conform to a published XSD (XML Schema Document). There are many ways to parse the data in an XML document, but we have found that the [http://www.w3schools.com/XPath/default.asp XPath] tree-style traversal has served our purposes. In any case, your application will likely need to use a class library for your chosen method.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For JSON, populate the header with 'application/json' (ex: Headers![&amp;quot;Accept&amp;quot;] = &amp;quot;application/json&amp;quot;). As with XML, a library will likely be needed to parse the data.&lt;br /&gt;
&lt;br /&gt;
==== HTTP Headers ====&lt;br /&gt;
&lt;br /&gt;
The only data returned in the header is the error message (if any).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Header Name''&lt;br /&gt;
!''Description''&lt;br /&gt;
!''Example Header Value''&lt;br /&gt;
|-&lt;br /&gt;
| x-error-message&lt;br /&gt;
| The error message. See [[#Errors|Errors]].&lt;br /&gt;
| Missing required field: name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Errors ====&lt;br /&gt;
&lt;br /&gt;
When an error occurs, the system will return an HTTP error response code denoting the type of error. The system will also return additional information about the fault in the body of the response. For text/xml format, refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/faults.xsd Faults.xsd]&lt;br /&gt;
&lt;br /&gt;
'''Example Fault Response – XML'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;appsFault code=&amp;quot;500&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;message&amp;gt;Fault!&amp;lt;/message&amp;gt;&lt;br /&gt;
  &amp;lt;details&amp;gt;Error Details...&amp;lt;/details&amp;gt;&lt;br /&gt;
&amp;lt;/appsFault&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Example Fault Response – JSON'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;appsFault&amp;quot; : {&lt;br /&gt;
    &amp;quot;code&amp;quot; : 500,&lt;br /&gt;
    &amp;quot;message&amp;quot; : &amp;quot;Fault!&amp;quot;,&lt;br /&gt;
    &amp;quot;details&amp;quot; : &amp;quot;Error Details...&amp;quot;&lt;br /&gt;
  }&lt;br /&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;
{| 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, 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;
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;
'''X-Error-Message 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 x-error-message 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;br /&gt;
&lt;br /&gt;
==== Paging ====&lt;br /&gt;
&lt;br /&gt;
The results of Index actions are split into pages to lessen potentially high resource usage. The index URLs have a query string with parameters in the format &amp;quot;?size=xx&amp;amp;offset=xx.&amp;quot; If a query parameter is omitted, the default value is used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Query Parameter''&lt;br /&gt;
!''Default''&lt;br /&gt;
!''Maximum''&lt;br /&gt;
!''Notes''&lt;br /&gt;
|-&lt;br /&gt;
| size&lt;br /&gt;
| 50&lt;br /&gt;
| 250&lt;br /&gt;
| This is the number of elements per page.&lt;br /&gt;
|-&lt;br /&gt;
| offset&lt;br /&gt;
| 0&lt;br /&gt;
| N/A&lt;br /&gt;
| This is the number of items to offset away from the first item in the list.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Example =====&lt;br /&gt;
&lt;br /&gt;
A PHP Example of paging can be found [[PHP_Examples_(Rest_API)| here]].&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 200 OK&lt;br /&gt;
Cache-Control: private&lt;br /&gt;
Content-Type: text/xml; charset=utf-8&lt;br /&gt;
Server: Microsoft-IIS/7.0&lt;br /&gt;
Date: Fri, 04 Dec 2009 19:08:11 GMT&lt;br /&gt;
Content-Length: 430&lt;br /&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;domainList xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:domainList&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;offset&amp;gt;0&amp;lt;/offset&amp;gt;&lt;br /&gt;
  &amp;lt;size&amp;gt;50&amp;lt;/size&amp;gt;&lt;br /&gt;
  &amp;lt;total&amp;gt;1&amp;lt;/total&amp;gt;&lt;br /&gt;
  &amp;lt;domains&amp;gt;&lt;br /&gt;
    &amp;lt;domain&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;customer.com&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;accountNumber&amp;gt;123456&amp;lt;/accountNumber&amp;gt;&lt;br /&gt;
      &amp;lt;serviceType&amp;gt;rsemail&amp;lt;/serviceType&amp;gt;&lt;br /&gt;
    &amp;lt;/domain&amp;gt;&lt;br /&gt;
  &amp;lt;/domains&amp;gt;&lt;br /&gt;
&amp;lt;/domainList&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 404 Not Found&lt;br /&gt;
Cache-Control: private&lt;br /&gt;
Server: Microsoft-IIS/7.0&lt;br /&gt;
x-error-message: Customer Not Found&lt;br /&gt;
Date: Fri, 04 Dec 2009 19:13:59 GMT&lt;br /&gt;
Content-Length: 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 400 Bad Request&lt;br /&gt;
Cache-Control: private&lt;br /&gt;
Server: Microsoft-IIS/7.0&lt;br /&gt;
x-error-message: Missing required field: type&lt;br /&gt;
Date: Fri, 04 Dec 2009 19:17:29 GMT&lt;br /&gt;
Content-Length: 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
This examples is written in [http://www.ruby-lang.org/en/ Ruby]. To make the examples shorter, helper methods have been written. These methods are part of a NetMethods module. The contents of the NetMethods module is listed below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require  'server.rb'&lt;br /&gt;
&lt;br /&gt;
server = Server.new&lt;br /&gt;
&lt;br /&gt;
response = server.get  '/customers', server.xml_format&lt;br /&gt;
&lt;br /&gt;
#fields = Hash['serviceType' =&amp;gt;  'exchange', 'exchangeMaxNumMailboxes' =&amp;gt; '4']&lt;br /&gt;
#response =  server.post '/customers/me/domains/newdomain.com', fields&lt;br /&gt;
&lt;br /&gt;
puts response.code&lt;br /&gt;
puts response['x-error-message']&lt;br /&gt;
puts response.body&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require 'test/unit/assertions'&lt;br /&gt;
require 'net/http'&lt;br /&gt;
require 'date'&lt;br /&gt;
require 'date/format'&lt;br /&gt;
require 'digest/sha1'&lt;br /&gt;
require 'base64'&lt;br /&gt;
require 'time'&lt;br /&gt;
&lt;br /&gt;
class Server&lt;br /&gt;
  include Test::Unit::Assertions&lt;br /&gt;
  &lt;br /&gt;
  def initialize(server='api.emailsrvr.com', version_prefix='/v0', user_key='xxxxxxxxxxxxxxxxxxxx', secret_hash='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')&lt;br /&gt;
    @server = server&lt;br /&gt;
    @version_prefix = version_prefix&lt;br /&gt;
    @user_key = user_key&lt;br /&gt;
    @secret_hash = secret_hash&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
# Response Type Enums&lt;br /&gt;
&lt;br /&gt;
  def xml_format&lt;br /&gt;
    'text/xml'&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def json_format&lt;br /&gt;
    'application/json'&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# HTTP Request Verbs&lt;br /&gt;
#  &lt;br /&gt;
  def get(url_string, format)&lt;br /&gt;
    uri = full_uri(url_string)&lt;br /&gt;
    headers = prepared_headers&lt;br /&gt;
    headers['Accept'] = format&lt;br /&gt;
    request = Net::HTTP::Get.new(request_uri(uri), headers)&lt;br /&gt;
    http_response = make_request request, uri&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def delete(url_string)&lt;br /&gt;
    uri = full_uri(url_string)&lt;br /&gt;
    request = Net::HTTP::Delete.new(request_uri(uri), prepared_headers)&lt;br /&gt;
    http_response = make_request request, uri&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def put(url_string, fields_hash)&lt;br /&gt;
    uri = full_uri(url_string)&lt;br /&gt;
    request = Net::HTTP::Put.new(request_uri(uri), prepared_headers)&lt;br /&gt;
    request.set_form_data(fields_hash)&lt;br /&gt;
    http_response = make_request request, uri&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def post(url_string, fields_hash)&lt;br /&gt;
    uri = full_uri(url_string)&lt;br /&gt;
    request = Net::HTTP::Post.new(request_uri(uri), prepared_headers)&lt;br /&gt;
    request.set_form_data(fields_hash)&lt;br /&gt;
    http_response = make_request request, uri&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
#&lt;br /&gt;
# HTTP Request Helpers&lt;br /&gt;
# &lt;br /&gt;
  def make_request request, uri&lt;br /&gt;
    response = Net::HTTP::start(uri.host, uri.port)  do |http|&lt;br /&gt;
      http.request request&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    response&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def full_uri url_string&lt;br /&gt;
    URI.parse('http://' + @server + @version_prefix + url_string)&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def request_uri uri&lt;br /&gt;
    request = uri.path&lt;br /&gt;
    if ! uri.query.nil?&lt;br /&gt;
      request = request + '?' + uri.query&lt;br /&gt;
    end&lt;br /&gt;
    request&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def prepared_headers&lt;br /&gt;
    headers = Hash.new&lt;br /&gt;
    headers.merge! headers_auth_creds(@user_key, @secret_hash)&lt;br /&gt;
    headers['Accept'] = xml_format&lt;br /&gt;
    headers&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def headers_auth_creds apiKey, secretKey&lt;br /&gt;
    userAgent = 'Ruby Test Client'&lt;br /&gt;
    timestamp = DateTime.now.strftime('%Y%m%d%H%M%S')&lt;br /&gt;
    &lt;br /&gt;
    data_to_sign = apiKey + userAgent + timestamp + secretKey&lt;br /&gt;
    &lt;br /&gt;
    hash = Base64.encode64(Digest::SHA1.digest(data_to_sign))&lt;br /&gt;
    signature = apiKey + &amp;quot;:&amp;quot; + timestamp + &amp;quot;:&amp;quot; + hash&lt;br /&gt;
    &lt;br /&gt;
    headers = Hash['User-Agent' =&amp;gt; userAgent, 'X-Api-Signature' =&amp;gt; signature]&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== C# ===&lt;br /&gt;
&lt;br /&gt;
This examples is written in [http://msdn.microsoft.com/en-us/vcsharp/default.aspx C#].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.IO;&lt;br /&gt;
using System.Net;&lt;br /&gt;
using System.Security.Cryptography;&lt;br /&gt;
using System.Text;&lt;br /&gt;
&lt;br /&gt;
namespace RestApiClient&lt;br /&gt;
{&lt;br /&gt;
    public class RestApiClient&lt;br /&gt;
    {&lt;br /&gt;
        private HttpWebRequest request;&lt;br /&gt;
        private HttpWebResponse response;&lt;br /&gt;
        private string baseUrl;&lt;br /&gt;
        private string apiKey;&lt;br /&gt;
        private string secretKey;&lt;br /&gt;
&lt;br /&gt;
        public RestApiClient(string baseUrl, string apiKey, string secretKey)&lt;br /&gt;
        {&lt;br /&gt;
            this.baseUrl = baseUrl;&lt;br /&gt;
            this.apiKey = apiKey;&lt;br /&gt;
            this.secretKey = secretKey;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public HttpWebResponse Get(string url, string format)&lt;br /&gt;
        {&lt;br /&gt;
            this.request = (System.Net.HttpWebRequest)HttpWebRequest.Create(this.baseUrl + url);&lt;br /&gt;
            request.Method = &amp;quot;GET&amp;quot;;&lt;br /&gt;
            SignMessage();&lt;br /&gt;
            AssignFormat(format);&lt;br /&gt;
            return GetResponseContent();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public HttpWebResponse Post(string url, string data, string format)&lt;br /&gt;
        {&lt;br /&gt;
            this.request = (System.Net.HttpWebRequest)HttpWebRequest.Create(this.baseUrl + url);&lt;br /&gt;
            request.Method = &amp;quot;POST&amp;quot;;&lt;br /&gt;
            SignMessage();&lt;br /&gt;
            AssignFormat(format);&lt;br /&gt;
            SendFormData(data);&lt;br /&gt;
            return GetResponseContent();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public HttpWebResponse Put(string url, string data, string format)&lt;br /&gt;
        {&lt;br /&gt;
            this.request = (System.Net.HttpWebRequest)HttpWebRequest.Create(this.baseUrl + url);&lt;br /&gt;
            request.Method = &amp;quot;PUT&amp;quot;;&lt;br /&gt;
            SignMessage();&lt;br /&gt;
            AssignFormat(format);&lt;br /&gt;
            SendFormData(data);&lt;br /&gt;
            return GetResponseContent();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public HttpWebResponse Delete(string url, string format)&lt;br /&gt;
        {&lt;br /&gt;
            this.request = (System.Net.HttpWebRequest)HttpWebRequest.Create(this.baseUrl + url);&lt;br /&gt;
            request.Method = &amp;quot;DELETE&amp;quot;;&lt;br /&gt;
            SignMessage();&lt;br /&gt;
            AssignFormat(format);&lt;br /&gt;
            return GetResponseContent();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void SendFormData(string data)&lt;br /&gt;
        {&lt;br /&gt;
            UTF8Encoding encoding = new UTF8Encoding();&lt;br /&gt;
            byte[] byteData = encoding.GetBytes(data);&lt;br /&gt;
            this.request.ContentType = &amp;quot;application/x-www-form-urlencoded&amp;quot;;&lt;br /&gt;
            request.ContentLength = byteData.Length;&lt;br /&gt;
            Stream requestStream = request.GetRequestStream();&lt;br /&gt;
            requestStream.Write(byteData, 0, byteData.Length);&lt;br /&gt;
            requestStream.Close();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private HttpWebResponse GetResponseContent()&lt;br /&gt;
        {&lt;br /&gt;
            try&lt;br /&gt;
            {&lt;br /&gt;
                return (HttpWebResponse)request.GetResponse();&lt;br /&gt;
            }&lt;br /&gt;
            catch (WebException e)&lt;br /&gt;
            {&lt;br /&gt;
                return (HttpWebResponse)e.Response;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void SignMessage()&lt;br /&gt;
        {&lt;br /&gt;
            var userAgent = &amp;quot;C# Client Library&amp;quot;;&lt;br /&gt;
            this.request.UserAgent = userAgent;&lt;br /&gt;
            var dateTime = DateTime.UtcNow.ToString(&amp;quot;yyyyMMddHHmmss&amp;quot;);&lt;br /&gt;
            var dataToSign = apiKey + userAgent + dateTime + secretKey;&lt;br /&gt;
            var hash = SHA1.Create();&lt;br /&gt;
            var signedBytes = hash.ComputeHash(Encoding.UTF8.GetBytes(dataToSign));&lt;br /&gt;
            var signature = Convert.ToBase64String(signedBytes);&lt;br /&gt;
&lt;br /&gt;
            request.Headers[&amp;quot;X-Api-User-Signature&amp;quot;] = apiKey + &amp;quot;:&amp;quot; + dateTime + &amp;quot;:&amp;quot; + signature;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void AssignFormat(string format)&lt;br /&gt;
        {&lt;br /&gt;
            this.request.Accept = format;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PHP ===&lt;br /&gt;
&lt;br /&gt;
The PHP Example can be found [[PHP_Examples_(Rest_API)| here]].&lt;/div&gt;</summary>
		<author><name>Zhen.wei</name></author>	</entry>

	<entry>
		<id>http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Main_Page&amp;diff=460</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Main_Page&amp;diff=460"/>
				<updated>2012-11-27T03:43:25Z</updated>
		
		<summary type="html">&lt;p&gt;Zhen.wei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The The Rackspace Email Rest API provides most of the functions of the Control Panel through a REST-based [http://en.wikipedia.org/wiki/Web_service web API]. Whether it is adding a new customer account, adding mailboxes, or any other of the supported features the API allows your application to administer the changes regardless of your application's language or nature. For more information on RESTful web services refer to the following sites:&lt;br /&gt;
&lt;br /&gt;
[http://www.peej.co.uk/articles/restfully-delicious.html Paul James's Homepage: A RESTful Web service, an example]&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Representational_State_Transfer#External_links Wikipedia: Representational State Transfer - External Links]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The API is accessible to all with access to Control Panel, including resellers, business customers, enterprise customers, and indirect customers. However, not all operations are available to non-resellers. See the [[Rest_API#Operations|Operations]] section for more details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Rackspace Email Soap API Homepage has been moved to [[Soap_API| here]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Operations ==&lt;br /&gt;
&lt;br /&gt;
The following pages detail the operations that the API supports. The operations are grouped into sections based on the entity/object types that each operation interacts with. Non-resellers do not have access to all functions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Resource&lt;br /&gt;
!Example URI&lt;br /&gt;
!Business User Access&lt;br /&gt;
|-&lt;br /&gt;
| [[Customer_(Rest_API)| Customer]]&lt;br /&gt;
| /customers/123456789&lt;br /&gt;
| [[Customer_(Rest_API)#Create_Login_Tokens | Create Login Tokens]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Admin_(Rest_API)| Admin]]&lt;br /&gt;
| /customers/123456789/admins/my_admin&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Domain_(Rest_API)| Domain]]&lt;br /&gt;
| /customers/123456789/domains/example.com&lt;br /&gt;
| [[Domain_(Rest_API)#Index| Index]], [[Domain_(Rest_API)#Show| Show]], [[Domain_(Rest_API)#Split Domain Routing| Split Domain Routing]], [[Domain_(Rest_API)#Archiving SSO Login URL| Archiving SSO Login URL]], [[Domain_(Rest_API)#Domain_Public_Folders_.28Reseller_Only.29|Domain Public Folders]], [[Domain_(Rest_API)#Domain Email Everyone| Email Everyone ]], [[Domain_(Rest_API)#Show_Domain_Catch-All_Address | Catch-All Address]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Domain_Spam_(Rest_API)| Domain Spam Settings]]&lt;br /&gt;
| /customers/123456789/domains/example.com/spam/settings&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Rackspace_Mailbox_(Rest_API)|  Rackspace Email Mailbox]]&lt;br /&gt;
|  /customers/123456789/domains/example.com/rs/mailboxes/john.smith&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Rackspace_Email_Mobile_Sync_(Rest_API)|  Rackspace Email Mobile Sync]]&lt;br /&gt;
|  /customers/123456789/domains/example.com/mobilesync&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Rackspace_Mailbox_Spam_(Rest_API)| Rackspace Email Mailbox Spam Settings]]&lt;br /&gt;
|  /customers/123456789/domains/example.com/rs/mailboxes/john.smith/spam&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Rackspace_Storage_Notification_(Rest_API)| Rackspace Storage Notification Settings]]&lt;br /&gt;
|  /customers/123456789/domains/example.com/rs/storageNotification&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Rackspace_Alias(Rest_API)|  Rackspace Email Alias]]&lt;br /&gt;
|  /customers/123456789/domains/example.com/rs/mailboxes/john.smith/alias&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Mailbox_(Rest_API)| Exchange Mailbox]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/mailboxes/john.smith&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Mailbox_Spam_(Rest_API)| Exchange Mailbox Spam Settings]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/mailboxes/john.smith/spam&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Contact_(Rest_API)| Exchange Contact]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/contacts/john.smith&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Distribution_List_(Rest_API)| Exchange Distribution List]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/distributionlists/group.name&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Resource_Mailbox_(Rest_API)| Exchange Resource Mailbox]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/resources/conference.room&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[SharePoint_(Rest_API)| SharePoint]]&lt;br /&gt;
| /customers/123456789/sharepoint/settings&lt;br /&gt;
| [[SharePoint_(Rest_API)#Show | Show]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The examples shown in the operation pages are written in Ruby and extensively use the helper functions shown in the Ruby Examples below.&lt;br /&gt;
&lt;br /&gt;
== Quick Start ==&lt;br /&gt;
&lt;br /&gt;
'''What you need:'''&lt;br /&gt;
* A Rackspace Email and Apps Control Panel admin account&lt;br /&gt;
* A HTTP class library that supports TLS and the HTTP methods: GET, POST, PUT, DELETE.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Making your first API call, an Show Customer request:'''&lt;br /&gt;
# Obtain your API keys&lt;br /&gt;
#:* Click on My Account at the top of the [https://apps.rackspace.com/?cp Control Panel web interface]. Under the Administrators heading there will be an link for the API keys page.&lt;br /&gt;
# Set up your client's HTTP request&lt;br /&gt;
#:* Set up your client to make calls to a URL beginning with &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/v0&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
#:* Populate the Accept, User-Agent and X-Api-Signature HTTP request headers correctly. This is explained in detail [[#HTTP Headers|here]].&lt;br /&gt;
# Make a GET request to /customers/me.&lt;br /&gt;
#:* The complete URI will be &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/v0/customers/me&amp;lt;/nowiki&amp;gt;. Use your HTTP library to retrieve the HTTP response code, 'x-error-message' HTTP response header and HTTP response body so that they may be displayed to help debug and determine success.&lt;br /&gt;
'''From here:'''&lt;br /&gt;
* Learn about the operations you'll be implementing at the subpages [[#Operations|here]].&lt;br /&gt;
&lt;br /&gt;
== Accessing the API ==&lt;br /&gt;
&lt;br /&gt;
Your application will need to make HTTP requests to remote servers. Most programming languages have this function provided in its class library. In addition to the common GET and POST HTTP methods, the library used will also need to support PUT and DELETE.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&lt;br /&gt;
Calls without [http://en.wikipedia.org/wiki/Transport_Layer_Security TLS] (formerly SSL) will complete successfully but it is HIGHLY RECOMMENDED that TLS always be used. Interception of unencrypted communication will allow a third party to have complete access to all functions available via the API.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For some language libraries just using an URL with https:// will cause the library to use TLS. In some other libraries however some options specific to the library may have to be configured to utilize TLS. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All API calls should be directed to a URL in the following format:&lt;br /&gt;
&amp;lt;pre&amp;gt;https://api.emailsrvr.com/(version)/(resource)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;https://api.emailsrvr.com/v0/customers/12345678/domains/customerbusiness.com&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Versions ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Supported Versions''&lt;br /&gt;
!''URL''&lt;br /&gt;
!''Version Documentation''&lt;br /&gt;
|-&lt;br /&gt;
| v0 (current)&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/v0/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
| http://api-wiki.apps.rackspace.com/api-wiki/index.php/Main_Page&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The API version number is a component of the URL that is used to access the API. For example, to access the root of the API, the URL is https://api.emailsrvr.com/v0/. Bug fixes and minor non-breaking changes will be made without changing the version number. When major features or breaking changes are introduced, the version number will be incremented. It is not yet determined how many versions are going to be supported at any one time.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Non-breaking Changes''&lt;br /&gt;
!''Breaking Changes''&lt;br /&gt;
|-&lt;br /&gt;
| Adding new fields or attributes to form fields sent&lt;br /&gt;
| Changing or deleting any fields in form fields sent&lt;br /&gt;
|-&lt;br /&gt;
| Adding fields in returned data&lt;br /&gt;
| Changing or removing fields in returned data&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| Changing the URI of any resource&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Authentication ===&lt;br /&gt;
&lt;br /&gt;
To gain access to the API, your request must include a properly constructed X-Api-Signature HTTP header. Details on what to put in the header are below. To construct the header, you must have the following keys that that are generated from the [https://apps.rackspace.com/?cp Control Panel Web interface]. The key generation page can be found by clicking 'My Account' at the top, then 'Generate API Keys' in the Administrators section.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Key Name&lt;br /&gt;
!Description&lt;br /&gt;
!Example&lt;br /&gt;
|-&lt;br /&gt;
| User Key&lt;br /&gt;
| A public key that corresponds to your admin id&lt;br /&gt;
| ''eGbq9/2hcZsRlr1JV1Pi''&lt;br /&gt;
|-&lt;br /&gt;
| Secret Key&lt;br /&gt;
| A shared secret key&lt;br /&gt;
| ''QHOvchm/40czXhJ1OxfxK7jDHr3t''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An unsuccessful authentication will result in a 403 HTTP code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== X-Api-Signature Header ====&lt;br /&gt;
&lt;br /&gt;
Format is as follows:&lt;br /&gt;
&amp;lt;'''User Key'''&amp;gt;:&amp;lt;'''Timestamp'''&amp;gt;:&amp;lt;'''SHA1 Hash'''&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Example: ''eGbq9/2hcZsRlr1JV1Pi:20010317143725:46VIwd66mOFGG8IkbgnLlXnfnkU=''&lt;br /&gt;
&lt;br /&gt;
Remember to include the colons between the data strings!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''User Key''':&amp;lt;br&amp;gt;&lt;br /&gt;
This is the public key issued by the Control Panel browser interface.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Timestamp''':&amp;lt;br&amp;gt;&lt;br /&gt;
The format is YYYYMMDDHHmmss. All values besides year are zero-padded to two spaces. For example, March 08th 2001 at 2:37.25pm would be ''20010308143725''.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|YYYY&lt;br /&gt;
|Four-digit year&lt;br /&gt;
|-&lt;br /&gt;
| MM&lt;br /&gt;
| Month&lt;br /&gt;
|-&lt;br /&gt;
| DD&lt;br /&gt;
| Day&lt;br /&gt;
|-&lt;br /&gt;
| HH&lt;br /&gt;
| Hour in 24h format&lt;br /&gt;
|-&lt;br /&gt;
| mm&lt;br /&gt;
| Minute&lt;br /&gt;
|-&lt;br /&gt;
| ss&lt;br /&gt;
| Second&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''SHA1 Hash''':&lt;br /&gt;
&lt;br /&gt;
A SHA1 (Secure Hash Algorithm) hash must be applied to a string with the following information:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;'''User Key'''&amp;gt;&amp;lt;'''User Agent'''&amp;gt;&amp;lt;'''Timestamp'''&amp;gt;&amp;lt;'''Secret Key'''&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that the 'User Agent' must be the exact same as what is specified in the User-Agent HTTP header. Using the above example data, the string before hashing is:&amp;lt;br&amp;gt;''eGbq9/2hcZsRlr1JV1PiRackspace Management Interface20010308143725QHOvchm/40czXhJ1OxfxK7jDHr3t''&lt;br /&gt;
&lt;br /&gt;
Resulting base-64 SHA1 Hash:&amp;lt;br&amp;gt;''46VIwd66mOFGG8IkbgnLlXnfnkU=''&lt;br /&gt;
&lt;br /&gt;
Be sure to encode the binary hash, not the hex hash, into base-64. The resulting string should be 28 characters long.&lt;br /&gt;
&lt;br /&gt;
== Using the API ==&lt;br /&gt;
&lt;br /&gt;
=== Requests ===&lt;br /&gt;
&lt;br /&gt;
HTTP requests should be sent to the server with the correct URL, HTTP method, HTTP headers and form data (if needed). The URL specifies the resource, the HTTP method specifies what operation is done on the resource, and form data is used to specify the details of the resource when the resource is added or edited.&lt;br /&gt;
&lt;br /&gt;
The URLs, corresponding HTTP methods, and necessary form data for the desired operations are detailed in the [[#Operations|operation pages]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you're getting the HTTP status code 417 see [[Handling HTTP code 417:  Expectation failed]]&lt;br /&gt;
&lt;br /&gt;
==== URL ====&lt;br /&gt;
&lt;br /&gt;
The URLs are specifies the resource or resource collection. Objects are organized in a tree collection, starting with customers at the top, then domains, then domain objects next (such as mailboxes, contacts, and distribution lists) and so on. The URLs of the resources and collections accessible are found on the operation pages.&lt;br /&gt;
&lt;br /&gt;
==== HTTP Method ====&lt;br /&gt;
&lt;br /&gt;
It is the HTTP method that specifies what operation will be done on the resource. For example, to get the details of a mailbox a HTTP GET will be done on /customers/12345678/domains/example.com/ex/mailboxes/john.smith. If the mailbox does not exist, a HTTP POST to the same URL with the necessary form data will add the mailbox. Then, a HTTP PUT to the same URL will edit mailbox. And to delete the mailbox, an HTTP DELETE would be used.&lt;br /&gt;
&lt;br /&gt;
The types of operations a certain method performs is outlined below.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''HTTP Method''&lt;br /&gt;
!''Operations''&lt;br /&gt;
!''Response''&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=2|GET&lt;br /&gt;
|Index - returns a list of the resources&lt;br /&gt;
|rowspan=2|XML or JSON formatted data&lt;br /&gt;
|-&lt;br /&gt;
|Show - returns the details of the resource&lt;br /&gt;
|-&lt;br /&gt;
|POST&lt;br /&gt;
|Add - adds a new resource&lt;br /&gt;
|rowspan=3|Response code and error message (if applicable) only&lt;br /&gt;
|-&lt;br /&gt;
|PUT&lt;br /&gt;
|Edit - changes the details of the resource&lt;br /&gt;
|-&lt;br /&gt;
|DELETE&lt;br /&gt;
|Delete - deletes the resource&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== HTTP Headers ====&lt;br /&gt;
&lt;br /&gt;
All requests to the API must then include HTTP headers with the following information:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Header Name''&lt;br /&gt;
!''Description''&lt;br /&gt;
!''Example Header Value''&lt;br /&gt;
|-&lt;br /&gt;
| Accept&lt;br /&gt;
| The requested content type (required for Index and Show actions). Fill this with either 'text/xml' or 'application/json'. See [[#Formats|Response Formats]]&lt;br /&gt;
| ''text/xml''&lt;br /&gt;
|-&lt;br /&gt;
| User-Agent&lt;br /&gt;
| An identifier you choose for your client software&lt;br /&gt;
| ''Rackspace Management Interface''&lt;br /&gt;
|-&lt;br /&gt;
| X-Api-Signature&lt;br /&gt;
| An authentication string explained in detail [[#X-Api-Signature_Header|here]]&lt;br /&gt;
| ''eGbq9/2hcZsRlr1JV1Pi:20010317143725:HKUn0aajpSDx7qqGK3vqzn3FglI=''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Form Data ====&lt;br /&gt;
&lt;br /&gt;
When using Add and Edit operations, the details of the resource are sent to the API server via HTTP form data. Your HTTP library should include methods for sending form data along with an HTTP request. The library should by default send the data in the HTTP request body using the 'application/x-www-form-urlencoded' data format.&lt;br /&gt;
&lt;br /&gt;
==== Index Filter/Search ====&lt;br /&gt;
&lt;br /&gt;
The results of Index actions can be filtered/searched. The index URLs can take either one of the query strings: &amp;quot;?startswith=xx&amp;quot; or &amp;quot;?contains=xx,&amp;quot; where &amp;quot;xx&amp;quot; is the key word. If the request specifies more than one of these two query strings, a 400 HTTP error will be returned. Different fields will be searched depending on the resource type, see below.&lt;br /&gt;
&lt;br /&gt;
Note that &amp;quot;0-9&amp;quot; is a reserved key word for query string &amp;quot;startswith.&amp;quot; It represents any result starting with numbers.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Index Actions''&lt;br /&gt;
!''Where the key word will be searched''&lt;br /&gt;
|-&lt;br /&gt;
| Customer&lt;br /&gt;
| Customer name, account number, reference number&lt;br /&gt;
|-&lt;br /&gt;
| Domain&lt;br /&gt;
| Domain name&lt;br /&gt;
|-&lt;br /&gt;
| Mailbox&lt;br /&gt;
| Mailbox name, mailbox display name&lt;br /&gt;
|-&lt;br /&gt;
| Contact&lt;br /&gt;
| Contact display name, external email&lt;br /&gt;
|-&lt;br /&gt;
| Group&lt;br /&gt;
| Group name, group display name&lt;br /&gt;
|-&lt;br /&gt;
| Mobile Service&lt;br /&gt;
| Associated mailbox name, mailbox display name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Throttling ====&lt;br /&gt;
&lt;br /&gt;
The server limits the number of requests allowed per user in a certain period of time.  The number of requests made are logged per minute. Calls that were made correctly with a user's API key, but not completed for any reason, including those exceeding the throttle limit, are included in this count.&lt;br /&gt;
&lt;br /&gt;
If a user is over the throttling limit then a 403 HTTP code will be returned with an &amp;quot;Exceeded request limits&amp;quot; message.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Operation Category''&lt;br /&gt;
!''Request Limit''&lt;br /&gt;
|-&lt;br /&gt;
| GET&lt;br /&gt;
| 60 per minute&lt;br /&gt;
|-&lt;br /&gt;
| PUT, POST, DELETE&lt;br /&gt;
| 30 per minute&lt;br /&gt;
|-&lt;br /&gt;
| POST, PUT, DELETE on a domain&lt;br /&gt;
| 2 per minute&lt;br /&gt;
|-&lt;br /&gt;
| POST, DELETE on alternate domains&lt;br /&gt;
| 2 per minute&lt;br /&gt;
|-&lt;br /&gt;
| Enabling public folders for a domain&lt;br /&gt;
| 1 per 5 minutes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&lt;br /&gt;
Index of Exchange Mailboxes:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hypertext Transfer Protocol&lt;br /&gt;
    GET /v0/customers/12345678/domains/example.com/ex/mailboxes?size=100&amp;amp;offset=100 HTTP/1.1&lt;br /&gt;
    Host: api.emailsrvr.com&lt;br /&gt;
    User-Agent: Rackspace Management Interface&lt;br /&gt;
    X-Api-Signature: eGbq9/2hcZsRlr1JV1Pi:20010317143725:HKUn0aajpSDx7qqGK3vqzn3FglI=&lt;br /&gt;
    Accept: text/xml&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Adding New Exchange Mailbox:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hypertext Transfer Protocol&lt;br /&gt;
    POST /v0/customers/12345678/domains/example.com/ex/mailboxes/john.smith HTTP/1.1&lt;br /&gt;
    Host: api.emailsrvr.com&lt;br /&gt;
    User-Agent: Rackspace Management Interface&lt;br /&gt;
    X-Api-Signature: eGbq9/2hcZsRlr1JV1Pi:20010317143725:HKUn0aajpSDx7qqGK3vqzn3FglI=&lt;br /&gt;
    Content-Length: 53&lt;br /&gt;
        [Content length: 53]&lt;br /&gt;
    Content-Type: application/x-www-form-urlencoded&lt;br /&gt;
 &lt;br /&gt;
Line-based text data: application/x-www-form-urlencoded&lt;br /&gt;
    size=2048&amp;amp;displayName=John%20Smith&amp;amp;password=abcABC123&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Responses ===&lt;br /&gt;
&lt;br /&gt;
==== HTTP Status Code ====&lt;br /&gt;
&lt;br /&gt;
On a successfully executed request, a 200 HTTP Code is returned. If the request was unsuccessful however, an HTTP error code in the 400s or 500s will be returned.&lt;br /&gt;
&lt;br /&gt;
==== HTTP Response Body ====&lt;br /&gt;
&lt;br /&gt;
If the request is an Index or Show request, the request data will be returned in the format specified in the HTTP Body.&lt;br /&gt;
&lt;br /&gt;
===== Formats =====&lt;br /&gt;
&lt;br /&gt;
Requests for data (index and show requests) are returned with XML or JSON data based on what your application populates the [[#HTTP_Headers|HTTP Accept headers]] with.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For XML, populate the header with 'text/xml' (ex: Headers![&amp;quot;Accept&amp;quot;] = &amp;quot;text/xml&amp;quot;). The XML document returned will conform to a published XSD (XML Schema Document). There are many ways to parse the data in an XML document, but we have found that the [http://www.w3schools.com/XPath/default.asp XPath] tree-style traversal has served our purposes. In any case, your application will likely need to use a class library for your chosen method.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For JSON, populate the header with 'application/json' (ex: Headers![&amp;quot;Accept&amp;quot;] = &amp;quot;application/json&amp;quot;). As with XML, a library will likely be needed to parse the data.&lt;br /&gt;
&lt;br /&gt;
==== HTTP Headers ====&lt;br /&gt;
&lt;br /&gt;
The only data returned in the header is the error message (if any).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Header Name''&lt;br /&gt;
!''Description''&lt;br /&gt;
!''Example Header Value''&lt;br /&gt;
|-&lt;br /&gt;
| x-error-message&lt;br /&gt;
| The error message. See [[#Errors|Errors]].&lt;br /&gt;
| Missing required field: name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Errors ====&lt;br /&gt;
&lt;br /&gt;
When an error occurs, the system will return an HTTP error response code denoting the type of error. The system will also return additional information about the fault in the body of the response. For text/xml format, refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/faults.xsd Faults.xsd]&lt;br /&gt;
&lt;br /&gt;
'''Example Fault Response – XML'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;appsFault code=&amp;quot;500&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;message&amp;gt;Fault!&amp;lt;/message&amp;gt;&lt;br /&gt;
  &amp;lt;details&amp;gt;Error Details...&amp;lt;/details&amp;gt;&lt;br /&gt;
&amp;lt;/appsFault&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Example Fault Response – JSON'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;appsFault&amp;quot; : {&lt;br /&gt;
    &amp;quot;code&amp;quot; : 500,&lt;br /&gt;
    &amp;quot;message&amp;quot; : &amp;quot;Fault!&amp;quot;,&lt;br /&gt;
    &amp;quot;details&amp;quot; : &amp;quot;Error Details...&amp;quot;&lt;br /&gt;
  }&lt;br /&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;
{| 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, 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;
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;
'''X-Error-Message 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 x-error-message 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;br /&gt;
&lt;br /&gt;
==== Paging ====&lt;br /&gt;
&lt;br /&gt;
The results of Index actions are split into pages to lessen potentially high resource usage. The index URLs have a query string with parameters in the format &amp;quot;?size=xx&amp;amp;offset=xx.&amp;quot; If a query parameter is omitted, the default value is used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Query Parameter''&lt;br /&gt;
!''Default''&lt;br /&gt;
!''Maximum''&lt;br /&gt;
!''Notes''&lt;br /&gt;
|-&lt;br /&gt;
| size&lt;br /&gt;
| 50&lt;br /&gt;
| 250&lt;br /&gt;
| This is the number of elements per page.&lt;br /&gt;
|-&lt;br /&gt;
| offset&lt;br /&gt;
| 0&lt;br /&gt;
| N/A&lt;br /&gt;
| This is the number of items to offset away from the first item in the list.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Example =====&lt;br /&gt;
&lt;br /&gt;
A PHP Example of paging can be found [[PHP_Examples_(Rest_API)| here]].&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 200 OK&lt;br /&gt;
Cache-Control: private&lt;br /&gt;
Content-Type: text/xml; charset=utf-8&lt;br /&gt;
Server: Microsoft-IIS/7.0&lt;br /&gt;
Date: Fri, 04 Dec 2009 19:08:11 GMT&lt;br /&gt;
Content-Length: 430&lt;br /&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;domainList xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:domainList&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;offset&amp;gt;0&amp;lt;/offset&amp;gt;&lt;br /&gt;
  &amp;lt;size&amp;gt;50&amp;lt;/size&amp;gt;&lt;br /&gt;
  &amp;lt;total&amp;gt;1&amp;lt;/total&amp;gt;&lt;br /&gt;
  &amp;lt;domains&amp;gt;&lt;br /&gt;
    &amp;lt;domain&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;customer.com&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;accountNumber&amp;gt;123456&amp;lt;/accountNumber&amp;gt;&lt;br /&gt;
      &amp;lt;serviceType&amp;gt;rsemail&amp;lt;/serviceType&amp;gt;&lt;br /&gt;
    &amp;lt;/domain&amp;gt;&lt;br /&gt;
  &amp;lt;/domains&amp;gt;&lt;br /&gt;
&amp;lt;/domainList&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 404 Not Found&lt;br /&gt;
Cache-Control: private&lt;br /&gt;
Server: Microsoft-IIS/7.0&lt;br /&gt;
x-error-message: Customer Not Found&lt;br /&gt;
Date: Fri, 04 Dec 2009 19:13:59 GMT&lt;br /&gt;
Content-Length: 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 400 Bad Request&lt;br /&gt;
Cache-Control: private&lt;br /&gt;
Server: Microsoft-IIS/7.0&lt;br /&gt;
x-error-message: Missing required field: type&lt;br /&gt;
Date: Fri, 04 Dec 2009 19:17:29 GMT&lt;br /&gt;
Content-Length: 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
This examples is written in [http://www.ruby-lang.org/en/ Ruby]. To make the examples shorter, helper methods have been written. These methods are part of a NetMethods module. The contents of the NetMethods module is listed below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require  'server.rb'&lt;br /&gt;
&lt;br /&gt;
server = Server.new&lt;br /&gt;
&lt;br /&gt;
response = server.get  '/customers', server.xml_format&lt;br /&gt;
&lt;br /&gt;
#fields = Hash['serviceType' =&amp;gt;  'exchange', 'exchangeMaxNumMailboxes' =&amp;gt; '4']&lt;br /&gt;
#response =  server.post '/customers/me/domains/newdomain.com', fields&lt;br /&gt;
&lt;br /&gt;
puts response.code&lt;br /&gt;
puts response['x-error-message']&lt;br /&gt;
puts response.body&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require 'test/unit/assertions'&lt;br /&gt;
require 'net/http'&lt;br /&gt;
require 'date'&lt;br /&gt;
require 'date/format'&lt;br /&gt;
require 'digest/sha1'&lt;br /&gt;
require 'base64'&lt;br /&gt;
require 'time'&lt;br /&gt;
&lt;br /&gt;
class Server&lt;br /&gt;
  include Test::Unit::Assertions&lt;br /&gt;
  &lt;br /&gt;
  def initialize(server='api.emailsrvr.com', version_prefix='/v0', user_key='xxxxxxxxxxxxxxxxxxxx', secret_hash='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')&lt;br /&gt;
    @server = server&lt;br /&gt;
    @version_prefix = version_prefix&lt;br /&gt;
    @user_key = user_key&lt;br /&gt;
    @secret_hash = secret_hash&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
# Response Type Enums&lt;br /&gt;
&lt;br /&gt;
  def xml_format&lt;br /&gt;
    'text/xml'&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def json_format&lt;br /&gt;
    'application/json'&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# HTTP Request Verbs&lt;br /&gt;
#  &lt;br /&gt;
  def get(url_string, format)&lt;br /&gt;
    uri = full_uri(url_string)&lt;br /&gt;
    headers = prepared_headers&lt;br /&gt;
    headers['Accept'] = format&lt;br /&gt;
    request = Net::HTTP::Get.new(request_uri(uri), headers)&lt;br /&gt;
    http_response = make_request request, uri&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def delete(url_string)&lt;br /&gt;
    uri = full_uri(url_string)&lt;br /&gt;
    request = Net::HTTP::Delete.new(request_uri(uri), prepared_headers)&lt;br /&gt;
    http_response = make_request request, uri&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def put(url_string, fields_hash)&lt;br /&gt;
    uri = full_uri(url_string)&lt;br /&gt;
    request = Net::HTTP::Put.new(request_uri(uri), prepared_headers)&lt;br /&gt;
    request.set_form_data(fields_hash)&lt;br /&gt;
    http_response = make_request request, uri&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def post(url_string, fields_hash)&lt;br /&gt;
    uri = full_uri(url_string)&lt;br /&gt;
    request = Net::HTTP::Post.new(request_uri(uri), prepared_headers)&lt;br /&gt;
    request.set_form_data(fields_hash)&lt;br /&gt;
    http_response = make_request request, uri&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
#&lt;br /&gt;
# HTTP Request Helpers&lt;br /&gt;
# &lt;br /&gt;
  def make_request request, uri&lt;br /&gt;
    response = Net::HTTP::start(uri.host, uri.port)  do |http|&lt;br /&gt;
      http.request request&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    response&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def full_uri url_string&lt;br /&gt;
    URI.parse('http://' + @server + @version_prefix + url_string)&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def request_uri uri&lt;br /&gt;
    request = uri.path&lt;br /&gt;
    if ! uri.query.nil?&lt;br /&gt;
      request = request + '?' + uri.query&lt;br /&gt;
    end&lt;br /&gt;
    request&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def prepared_headers&lt;br /&gt;
    headers = Hash.new&lt;br /&gt;
    headers.merge! headers_auth_creds(@user_key, @secret_hash)&lt;br /&gt;
    headers['Accept'] = xml_format&lt;br /&gt;
    headers&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def headers_auth_creds apiKey, secretKey&lt;br /&gt;
    userAgent = 'Ruby Test Client'&lt;br /&gt;
    timestamp = DateTime.now.strftime('%Y%m%d%H%M%S')&lt;br /&gt;
    &lt;br /&gt;
    data_to_sign = apiKey + userAgent + timestamp + secretKey&lt;br /&gt;
    &lt;br /&gt;
    hash = Base64.encode64(Digest::SHA1.digest(data_to_sign))&lt;br /&gt;
    signature = apiKey + &amp;quot;:&amp;quot; + timestamp + &amp;quot;:&amp;quot; + hash&lt;br /&gt;
    &lt;br /&gt;
    headers = Hash['User-Agent' =&amp;gt; userAgent, 'X-Api-Signature' =&amp;gt; signature]&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== C# ===&lt;br /&gt;
&lt;br /&gt;
This examples is written in [http://msdn.microsoft.com/en-us/vcsharp/default.aspx C#].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Specialized;&lt;br /&gt;
using System.Security.Cryptography;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Net;&lt;br /&gt;
&lt;br /&gt;
public class WebMethods&lt;br /&gt;
{&lt;br /&gt;
  private WebClientBase client;&lt;br /&gt;
  private string baseUrl;&lt;br /&gt;
  private string apiKey;&lt;br /&gt;
  private string secretKey;&lt;br /&gt;
&lt;br /&gt;
  public WebMethods(WebClientBase client, string baseUrl, string apiKey, string secretKey)&lt;br /&gt;
  {&lt;br /&gt;
    this.client = client;&lt;br /&gt;
    this.baseUrl = baseUrl;&lt;br /&gt;
    this.apiKey = apiKey;&lt;br /&gt;
    this.secretKey = secretKey;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  public virtual string Get(string url)&lt;br /&gt;
  {&lt;br /&gt;
    return MakeRemoteCall((client) =&amp;gt;&lt;br /&gt;
      {&lt;br /&gt;
        return client.DownloadString(baseUrl + url);&lt;br /&gt;
      },&lt;br /&gt;
      format);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  public virtual string Post(string url, NameValueCollection data)&lt;br /&gt;
  {&lt;br /&gt;
    return MakeRemoteCall((client) =&amp;gt;&lt;br /&gt;
      {&lt;br /&gt;
        var bytes = client.UploadValues(baseUrl + url, data);&lt;br /&gt;
        return Encoding.UTF8.GetString(bytes);&lt;br /&gt;
      },&lt;br /&gt;
      format);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  private void SignMessage()&lt;br /&gt;
  {&lt;br /&gt;
    var userAgent = &amp;quot;C# Client Library&amp;quot;;&lt;br /&gt;
    client.Headers[&amp;quot;User-Agent&amp;quot;] = userAgent;&lt;br /&gt;
&lt;br /&gt;
    var dateTime = DateTime.UtcNow.ToString(&amp;quot;yyyyMMddHHmmss&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    var dataToSign = apiKey + userAgent + dateTime + secretKey;&lt;br /&gt;
    var hash = SHA1.Create();&lt;br /&gt;
    var signedBytes = hash.ComputeHash(Encoding.UTF8.GetBytes(dataToSign));&lt;br /&gt;
    var signature = Convert.ToBase64String(signedBytes);&lt;br /&gt;
&lt;br /&gt;
    client.Headers[&amp;quot;X-Api-Signature&amp;quot;] = apiKey + &amp;quot;:&amp;quot; + dateTime + &amp;quot;:&amp;quot; + signature;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  private void AssignFormat(string format)&lt;br /&gt;
  {&lt;br /&gt;
    client.Headers[&amp;quot;Accept&amp;quot;] = format;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  private string MakeRemoteCall(Func&amp;lt;WebClientBase, string&amp;gt; remoteCall, string format)&lt;br /&gt;
  {&lt;br /&gt;
    try&lt;br /&gt;
    {&lt;br /&gt;
      SignMessage();&lt;br /&gt;
      AssignFormat(format);&lt;br /&gt;
      return remoteCall.Invoke(client);&lt;br /&gt;
    }&lt;br /&gt;
    catch (WebException e)&lt;br /&gt;
    {&lt;br /&gt;
      throw new ApiException(e);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PHP ===&lt;br /&gt;
&lt;br /&gt;
The PHP Example can be found [[PHP_Examples_(Rest_API)| here]].&lt;/div&gt;</summary>
		<author><name>Zhen.wei</name></author>	</entry>

	<entry>
		<id>http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Rest_API&amp;diff=459</id>
		<title>Rest API</title>
		<link rel="alternate" type="text/html" href="http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Rest_API&amp;diff=459"/>
				<updated>2012-11-27T03:17:05Z</updated>
		
		<summary type="html">&lt;p&gt;Zhen.wei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Recent Changes ==&lt;br /&gt;
&lt;br /&gt;
'''09/01/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Now Rackspace Email Mailboxes can be visible in Exchange Global Address List. And Exchange Mailboxes can be visible in Rackspace Email Company Directory.&lt;br /&gt;
* Now Index Rackspace Email/Exchange Mailbox can filter mailboxes by &amp;quot;enabled&amp;quot; flag.&lt;br /&gt;
* Added &amp;quot;lastLogin&amp;quot; to Rackspace Email/Exchange Mailbox Show.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''08/01/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Added Rackspace Email Mailbox Contact info. See [[Rackspace_Mailbox_(Rest_API)| here]].&lt;br /&gt;
* Added Create Login Token. See [[Customer_(Rest_API)#Create_Login_Tokens| here]].&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''06/20/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Added [[Rackspace_Alias(Rest_API)| Rackspace Email Alias]].&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''06/11/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Added Rackspace Email Mailbox Spam Settings/Blacklist/Safelist. See [[Rackspace_Mailbox_Spam_(Rest_API)| here]].&lt;br /&gt;
* Now Rackspace Email Mailbox can Show/Edit vacation message and email forwarding address. See [[Rackspace_Mailbox_(Rest_API)| here]].&lt;br /&gt;
* Added SharePoint Service Settings. See [[SharePoint_(Rest_API)| here]].&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The Email &amp;amp; Apps Control Panel API provides most of the functions of the Control Panel through a REST-based [http://en.wikipedia.org/wiki/Web_service web API]. Whether it is adding a new customer account, adding mailboxes, or any other of the supported features the API allows your application to administer the changes regardless of your application's language or nature. For more information on RESTful web services refer to the following sites:&lt;br /&gt;
&lt;br /&gt;
[http://www.peej.co.uk/articles/restfully-delicious.html Paul James's Homepage: A RESTful Web service, an example]&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Representational_State_Transfer#External_links Wikipedia: Representational State Transfer - External Links]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The API is accessible to all with access to Control Panel, including resellers, business customers, enterprise customers, and indirect customers. However, not all operations are available to non-resellers. See the [[Rest_API#Operations|Operations]] section for more details.&lt;br /&gt;
&lt;br /&gt;
== Operations ==&lt;br /&gt;
&lt;br /&gt;
The following pages detail the operations that the API supports. The operations are grouped into sections based on the entity/object types that each operation interacts with. Non-resellers do not have access to all functions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Resource&lt;br /&gt;
!Example URI&lt;br /&gt;
!Business User Access&lt;br /&gt;
|-&lt;br /&gt;
| [[Customer_(Rest_API)| Customer]]&lt;br /&gt;
| /customers/123456789&lt;br /&gt;
| [[Customer_(Rest_API)#Create_Login_Tokens| Create Login Token]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Domain_(Rest_API)| Domain]]&lt;br /&gt;
| /customers/123456789/domains/example.com&lt;br /&gt;
| [[Domain_(Rest_API)#Index| Index]], [[Domain_(Rest_API)#Show| Show]], [[Domain_(Rest_API)#Split Domain Routing| Split Domain Routing]], [[Domain_(Rest_API)#Archiving SSO Login URL| Archiving SSO Login URL]], [[Domain_(Rest_API)#Domain Public Folders|Domain Public Folders ]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Domain_Spam_(Rest_API)| Domain Spam Settings]]&lt;br /&gt;
| /customers/123456789/domains/example.com/spam/settings&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Rackspace_Mailbox_(Rest_API)|  Rackspace Email Mailbox]]&lt;br /&gt;
|  /customers/123456789/domains/example.com/rs/mailboxes/john.smith&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Rackspace_Mailbox_Spam_(Rest_API)| Rackspace Email Mailbox Spam Settings]]&lt;br /&gt;
|  /customers/123456789/domains/example.com/rs/mailboxes/john.smith/spam&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Rackspace_Alias(Rest_API)|  Rackspace Email Alias]]&lt;br /&gt;
|  /customers/123456789/domains/example.com/rs/mailboxes/john.smith/alias&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Mailbox_(Rest_API)| Exchange Mailbox]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/mailboxes/john.smith&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Mailbox_Spam_(Rest_API)| Exchange Mailbox Spam Settings]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/mailboxes/john.smith/spam&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Contact_(Rest_API)| Exchange Contact]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/contacts/john.smith&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Distribution_List_(Rest_API)| Exchange Distribution List]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/distributionlists/group.name&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Resource_Mailbox_(Rest_API)| Exchange Resource Mailbox]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/resources/conference.room&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[SharePoint_(Rest_API)| SharePoint]]&lt;br /&gt;
| /customers/123456789/sharepoint/settings&lt;br /&gt;
| [[SharePoint_(Rest_API)#Show | Show]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The examples shown in the operation pages are written in Ruby and extensively use the helper functions shown in the Ruby Examples below.&lt;br /&gt;
&lt;br /&gt;
== Quick Start ==&lt;br /&gt;
&lt;br /&gt;
'''What you need:'''&lt;br /&gt;
* A Rackspace Email and Apps Control Panel admin account&lt;br /&gt;
* A HTTP class library that supports TLS and the HTTP methods: GET, POST, PUT, DELETE.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Making your first API call, an Show Customer request:'''&lt;br /&gt;
# Obtain your API keys&lt;br /&gt;
#:* Click on My Account at the top of the [https://apps.rackspace.com/?cp Control Panel web interface]. Under the Administrators heading there will be an link for the API keys page.&lt;br /&gt;
# Set up your client's HTTP request&lt;br /&gt;
#:* Set up your client to make calls to a URL beginning with &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/v0&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
#:* Populate the Accept, User-Agent and X-Api-Signature HTTP request headers correctly. This is explained in detail [[#HTTP Headers|here]].&lt;br /&gt;
# Make a GET request to /customers/me.&lt;br /&gt;
#:* The complete URI will be &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/v0/customers/me&amp;lt;/nowiki&amp;gt;. Use your HTTP library to retrieve the HTTP response code, 'x-error-message' HTTP response header and HTTP response body so that they may be displayed to help debug and determine success.&lt;br /&gt;
'''From here:'''&lt;br /&gt;
* Learn about the operations you'll be implementing at the subpages [[#Operations|here]].&lt;br /&gt;
&lt;br /&gt;
== Accessing the API ==&lt;br /&gt;
&lt;br /&gt;
Your application will need to make HTTP requests to remote servers. Most programming languages have this function provided in its class library. In addition to the common GET and POST HTTP methods, the library used will also need to support PUT and DELETE.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&lt;br /&gt;
Calls without [http://en.wikipedia.org/wiki/Transport_Layer_Security TLS] (formerly SSL) will complete successfully but it is HIGHLY RECOMMENDED that TLS always be used. Interception of unencrypted communication will allow a third party to have complete access to all functions available via the API.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For some language libraries just using an URL with https:// will cause the library to use TLS. In some other libraries however some options specific to the library may have to be configured to utilize TLS. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All API calls should be directed to a URL in the following format:&lt;br /&gt;
&amp;lt;pre&amp;gt;https://api.emailsrvr.com/(version)/(resource)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;https://api.emailsrvr.com/v0/customers/12345678/domains/customerbusiness.com&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Versions ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Supported Versions''&lt;br /&gt;
!''URL''&lt;br /&gt;
!''Version Documentation''&lt;br /&gt;
|-&lt;br /&gt;
| v0 (current)&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/v0/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
| http://api-wiki.apps.rackspace.com/api-wiki/index.php/RestAPI&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The API version number is a component of the URL that is used to access the API. For example, to access the root of the API, the URL is https://api.emailsrvr.com/v0/. Bug fixes and minor non-breaking changes will be made without changing the version number. When major features or breaking changes are introduced, the version number will be incremented. It is not yet determined how many versions are going to be supported at any one time.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Non-breaking Changes''&lt;br /&gt;
!''Breaking Changes''&lt;br /&gt;
|-&lt;br /&gt;
| Adding new fields or attributes to form fields sent&lt;br /&gt;
| Changing or deleting any fields in form fields sent&lt;br /&gt;
|-&lt;br /&gt;
| Adding fields in returned data&lt;br /&gt;
| Changing or removing fields in returned data&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| Changing the URI of any resource&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Authentication ===&lt;br /&gt;
&lt;br /&gt;
To gain access to the API, your request must include a properly constructed X-Api-Signature HTTP header. Details on what to put in the header are below. To construct the header, you must have the following keys that that are generated from the [https://apps.rackspace.com/?cp Control Panel Web interface]. The key generation page can be found by clicking 'My Account' at the top, then 'Generate API Keys' in the Administrators section.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Key Name&lt;br /&gt;
!Description&lt;br /&gt;
!Example&lt;br /&gt;
|-&lt;br /&gt;
| User Key&lt;br /&gt;
| A public key that corresponds to your admin id&lt;br /&gt;
| ''eGbq9/2hcZsRlr1JV1Pi''&lt;br /&gt;
|-&lt;br /&gt;
| Secret Key&lt;br /&gt;
| A shared secret key&lt;br /&gt;
| ''QHOvchm/40czXhJ1OxfxK7jDHr3t''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An unsuccessful authentication will result in a 403 HTTP code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== X-Api-Signature Header ====&lt;br /&gt;
&lt;br /&gt;
Format is as follows:&lt;br /&gt;
&amp;lt;'''User Key'''&amp;gt;:&amp;lt;'''Timestamp'''&amp;gt;:&amp;lt;'''SHA1 Hash'''&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Example: ''eGbq9/2hcZsRlr1JV1Pi:20010317143725:46VIwd66mOFGG8IkbgnLlXnfnkU=''&lt;br /&gt;
&lt;br /&gt;
Remember to include the colons between the data strings!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''User Key''':&amp;lt;br&amp;gt;&lt;br /&gt;
This is the public key issued by the Control Panel browser interface.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Timestamp''':&amp;lt;br&amp;gt;&lt;br /&gt;
The format is YYYYMMDDHHmmss. All values besides year are zero-padded to two spaces. For example, March 08th 2001 at 2:37.25pm would be ''20010308143725''.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|YYYY&lt;br /&gt;
|Four-digit year&lt;br /&gt;
|-&lt;br /&gt;
| MM&lt;br /&gt;
| Month&lt;br /&gt;
|-&lt;br /&gt;
| DD&lt;br /&gt;
| Day&lt;br /&gt;
|-&lt;br /&gt;
| HH&lt;br /&gt;
| Hour in 24h format&lt;br /&gt;
|-&lt;br /&gt;
| mm&lt;br /&gt;
| Minute&lt;br /&gt;
|-&lt;br /&gt;
| ss&lt;br /&gt;
| Second&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''SHA1 Hash''':&lt;br /&gt;
&lt;br /&gt;
A SHA1 (Secure Hash Algorithm) hash must be applied to a string with the following information:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;'''User Key'''&amp;gt;&amp;lt;'''User Agent'''&amp;gt;&amp;lt;'''Timestamp'''&amp;gt;&amp;lt;'''Secret Key'''&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that the 'User Agent' must be the exact same as what is specified in the User-Agent HTTP header. Using the above example data, the string before hashing is:&amp;lt;br&amp;gt;''eGbq9/2hcZsRlr1JV1PiRackspace Management Interface20010308143725QHOvchm/40czXhJ1OxfxK7jDHr3t''&lt;br /&gt;
&lt;br /&gt;
Resulting base-64 SHA1 Hash:&amp;lt;br&amp;gt;''46VIwd66mOFGG8IkbgnLlXnfnkU=''&lt;br /&gt;
&lt;br /&gt;
Be sure to encode the binary hash, not the hex hash, into base-64. The resulting string should be 28 characters long.&lt;br /&gt;
&lt;br /&gt;
== Using the API ==&lt;br /&gt;
&lt;br /&gt;
=== Requests ===&lt;br /&gt;
&lt;br /&gt;
HTTP requests should be sent to the server with the correct URL, HTTP method, HTTP headers and form data (if needed). The URL specifies the resource, the HTTP method specifies what operation is done on the resource, and form data is used to specify the details of the resource when the resource is added or edited.&lt;br /&gt;
&lt;br /&gt;
The URLs, corresponding HTTP methods, and necessary form data for the desired operations are detailed in the [[#Operations|operation pages]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you're getting the HTTP status code 417 see [[Handling HTTP code 417:  Expectation failed]]&lt;br /&gt;
&lt;br /&gt;
==== URL ====&lt;br /&gt;
&lt;br /&gt;
The URLs are specifies the resource or resource collection. Objects are organized in a tree collection, starting with customers at the top, then domains, then domain objects next (such as mailboxes, contacts, and distribution lists) and so on. The URLs of the resources and collections accessible are found on the operation pages.&lt;br /&gt;
&lt;br /&gt;
==== HTTP Method ====&lt;br /&gt;
&lt;br /&gt;
It is the HTTP method that specifies what operation will be done on the resource. For example, to get the details of a mailbox a HTTP GET will be done on /customers/12345678/domains/example.com/ex/mailboxes/john.smith. If the mailbox does not exist, a HTTP POST to the same URL with the necessary form data will add the mailbox. Then, a HTTP PUT to the same URL will edit mailbox. And to delete the mailbox, an HTTP DELETE would be used.&lt;br /&gt;
&lt;br /&gt;
The types of operations a certain method performs is outlined below.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''HTTP Method''&lt;br /&gt;
!''Operations''&lt;br /&gt;
!''Response''&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=2|GET&lt;br /&gt;
|Index - returns a list of the resources&lt;br /&gt;
|rowspan=2|XML or JSON formatted data&lt;br /&gt;
|-&lt;br /&gt;
|Show - returns the details of the resource&lt;br /&gt;
|-&lt;br /&gt;
|POST&lt;br /&gt;
|Add - adds a new resource&lt;br /&gt;
|rowspan=3|Response code and error message (if applicable) only&lt;br /&gt;
|-&lt;br /&gt;
|PUT&lt;br /&gt;
|Edit - changes the details of the resource&lt;br /&gt;
|-&lt;br /&gt;
|DELETE&lt;br /&gt;
|Delete - deletes the resource&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== HTTP Headers ====&lt;br /&gt;
&lt;br /&gt;
All requests to the API must then include HTTP headers with the following information:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Header Name''&lt;br /&gt;
!''Description''&lt;br /&gt;
!''Example Header Value''&lt;br /&gt;
|-&lt;br /&gt;
| Accept&lt;br /&gt;
| The requested content type (required for Index and Show actions). Fill this with either 'text/xml' or 'application/json'. See [[#Formats|Response Formats]]&lt;br /&gt;
| ''text/xml''&lt;br /&gt;
|-&lt;br /&gt;
| User-Agent&lt;br /&gt;
| An identifier you choose for your client software&lt;br /&gt;
| ''Rackspace Management Interface''&lt;br /&gt;
|-&lt;br /&gt;
| X-Api-Signature&lt;br /&gt;
| An authentication string explained in detail [[#X-Api-Signature_Header|here]]&lt;br /&gt;
| ''eGbq9/2hcZsRlr1JV1Pi:20010317143725:HKUn0aajpSDx7qqGK3vqzn3FglI=''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Form Data ====&lt;br /&gt;
&lt;br /&gt;
When using Add and Edit operations, the details of the resource are sent to the API server via HTTP form data. Your HTTP library should include methods for sending form data along with an HTTP request. The library should by default send the data in the HTTP request body using the 'application/x-www-form-urlencoded' data format.&lt;br /&gt;
&lt;br /&gt;
==== Index Filter/Search ====&lt;br /&gt;
&lt;br /&gt;
The results of Index actions can be filtered/searched. The index URLs can take either one of the query strings: &amp;quot;?startswith=xx&amp;quot; or &amp;quot;?contains=xx,&amp;quot; where &amp;quot;xx&amp;quot; is the key word. If the request specifies more than one of these two query strings, a 400 HTTP error will be returned. Different fields will be searched depending on the resource type, see below.&lt;br /&gt;
&lt;br /&gt;
Note that &amp;quot;0-9&amp;quot; is a reserved key word for query string &amp;quot;startswith.&amp;quot; It represents any result starting with numbers.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Index Actions''&lt;br /&gt;
!''Where the key word will be searched''&lt;br /&gt;
|-&lt;br /&gt;
| Customer&lt;br /&gt;
| Customer name, account number, reference number&lt;br /&gt;
|-&lt;br /&gt;
| Domain&lt;br /&gt;
| Domain name&lt;br /&gt;
|-&lt;br /&gt;
| Mailbox&lt;br /&gt;
| Mailbox name, mailbox display name&lt;br /&gt;
|-&lt;br /&gt;
| Contact&lt;br /&gt;
| Contact display name, external email&lt;br /&gt;
|-&lt;br /&gt;
| Group&lt;br /&gt;
| Group name, group display name&lt;br /&gt;
|-&lt;br /&gt;
| Mobile Service&lt;br /&gt;
| Associated mailbox name, mailbox display name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Throttling ====&lt;br /&gt;
&lt;br /&gt;
The server limits the number of requests allowed per user in a certain period of time.  The number of requests made are logged per minute. Calls that were made correctly with a user's API key, but not completed for any reason, including those exceeding the throttle limit, are included in this count.&lt;br /&gt;
&lt;br /&gt;
If a user is over the throttling limit then a 403 HTTP code will be returned with an &amp;quot;Exceeded request limits&amp;quot; message.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Operation Category''&lt;br /&gt;
!''Request Limit''&lt;br /&gt;
|-&lt;br /&gt;
| GET&lt;br /&gt;
| 60 per minute&lt;br /&gt;
|-&lt;br /&gt;
| PUT, POST, DELETE&lt;br /&gt;
| 30 per minute&lt;br /&gt;
|-&lt;br /&gt;
| POST, PUT, DELETE on a domain&lt;br /&gt;
| 2 per minute&lt;br /&gt;
|-&lt;br /&gt;
| POST, DELETE on alternate domains&lt;br /&gt;
| 2 per minute&lt;br /&gt;
|-&lt;br /&gt;
| Enabling public folders for a domain&lt;br /&gt;
| 1 per 5 minutes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&lt;br /&gt;
Index of Exchange Mailboxes:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hypertext Transfer Protocol&lt;br /&gt;
    GET /v0/customers/12345678/domains/example.com/ex/mailboxes?size=100&amp;amp;offset=100 HTTP/1.1&lt;br /&gt;
    Host: api.emailsrvr.com&lt;br /&gt;
    User-Agent: Rackspace Management Interface&lt;br /&gt;
    X-Api-Signature: eGbq9/2hcZsRlr1JV1Pi:20010317143725:HKUn0aajpSDx7qqGK3vqzn3FglI=&lt;br /&gt;
    Accept: text/xml&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Adding New Exchange Mailbox:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hypertext Transfer Protocol&lt;br /&gt;
    POST /v0/customers/12345678/domains/example.com/ex/mailboxes/john.smith HTTP/1.1&lt;br /&gt;
    Host: api.emailsrvr.com&lt;br /&gt;
    User-Agent: Rackspace Management Interface&lt;br /&gt;
    X-Api-Signature: eGbq9/2hcZsRlr1JV1Pi:20010317143725:HKUn0aajpSDx7qqGK3vqzn3FglI=&lt;br /&gt;
    Content-Length: 53&lt;br /&gt;
        [Content length: 53]&lt;br /&gt;
    Content-Type: application/x-www-form-urlencoded&lt;br /&gt;
 &lt;br /&gt;
Line-based text data: application/x-www-form-urlencoded&lt;br /&gt;
    size=2048&amp;amp;displayName=John%20Smith&amp;amp;password=abcABC123&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Responses ===&lt;br /&gt;
&lt;br /&gt;
==== HTTP Status Code ====&lt;br /&gt;
&lt;br /&gt;
On a successfully executed request, a 200 HTTP Code is returned. If the request was unsuccessful however, an HTTP error code in the 400s or 500s will be returned.&lt;br /&gt;
&lt;br /&gt;
==== HTTP Response Body ====&lt;br /&gt;
&lt;br /&gt;
If the request is an Index or Show request, the request data will be returned in the format specified in the HTTP Body.&lt;br /&gt;
&lt;br /&gt;
===== Formats =====&lt;br /&gt;
&lt;br /&gt;
Requests for data (index and show requests) are returned with XML or JSON data based on what your application populates the [[#HTTP_Headers|HTTP Accept headers]] with.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For XML, populate the header with 'text/xml' (ex: Headers![&amp;quot;Accept&amp;quot;] = &amp;quot;text/xml&amp;quot;). The XML document returned will conform to a published XSD (XML Schema Document). There are many ways to parse the data in an XML document, but we have found that the [http://www.w3schools.com/XPath/default.asp XPath] tree-style traversal has served our purposes. In any case, your application will likely need to use a class library for your chosen method.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For JSON, populate the header with 'application/json' (ex: Headers![&amp;quot;Accept&amp;quot;] = &amp;quot;application/json&amp;quot;). As with XML, a library will likely be needed to parse the data.&lt;br /&gt;
&lt;br /&gt;
==== HTTP Headers ====&lt;br /&gt;
&lt;br /&gt;
The only data returned in the header is the error message (if any).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Header Name''&lt;br /&gt;
!''Description''&lt;br /&gt;
!''Example Header Value''&lt;br /&gt;
|-&lt;br /&gt;
| x-error-message&lt;br /&gt;
| The error message. See [[#Errors|Errors]].&lt;br /&gt;
| Missing required field: name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Errors ====&lt;br /&gt;
&lt;br /&gt;
In the event of an error, the error message will be returned the HTTP header '''x-error-message''' and an HTTP Status Code in the '''400'''s or '''500'''s will be returned.&lt;br /&gt;
&lt;br /&gt;
Note: Every language's HTTP library provides methods for retrieving HTTP response codes and response headers.&lt;br /&gt;
&lt;br /&gt;
Below are some errors that are common to many operations. Each operation also has some specific errors which are outlined with the operation. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
|Format is invalid&lt;br /&gt;
|400&lt;br /&gt;
|When requesting an index or show on a resource the 'Accept' header should be either 'text/xml' or 'application/json'&lt;br /&gt;
|-&lt;br /&gt;
|Expectation  Failed: See [[Handling HTTP code 417: Expectation failed]]&lt;br /&gt;
|417&lt;br /&gt;
|(none)&lt;br /&gt;
|-&lt;br /&gt;
|Customer account number is invalid&lt;br /&gt;
|404&lt;br /&gt;
|Invalid account number&lt;br /&gt;
|-&lt;br /&gt;
|Domain is not found&lt;br /&gt;
|404&lt;br /&gt;
|&amp;lt;domain name&amp;gt; not found&lt;br /&gt;
|-&lt;br /&gt;
|Mailbox is not found&lt;br /&gt;
|404&lt;br /&gt;
|Mailbox not found&lt;br /&gt;
|-&lt;br /&gt;
|Required form field is missing&lt;br /&gt;
|400&lt;br /&gt;
|Missing required field: &amp;lt;required field&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Required form field has null or empty string input&lt;br /&gt;
|400&lt;br /&gt;
|Required field &amp;lt;required field&amp;gt; cannot be empty&lt;br /&gt;
|-&lt;br /&gt;
|Integer form field has non-integer input&lt;br /&gt;
|400&lt;br /&gt;
|Invalid format for &amp;lt;field&amp;gt;, input must be an integer&lt;br /&gt;
|-&lt;br /&gt;
|Boolean form field has non-boolean input&lt;br /&gt;
|400&lt;br /&gt;
|Invalid format for &amp;lt;field&amp;gt;, input must be True or False&lt;br /&gt;
|-&lt;br /&gt;
|Form data has an unrecognized field&lt;br /&gt;
|400&lt;br /&gt;
|Unrecognized field: &amp;lt;field&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Entered invalid IP address&lt;br /&gt;
| 400&lt;br /&gt;
| invalid ip address: 123&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Paging ====&lt;br /&gt;
&lt;br /&gt;
The results of Index actions are split into pages to lessen potentially high resource usage. The index URLs have a query string with parameters in the format &amp;quot;?size=xx&amp;amp;offset=xx.&amp;quot; If a query parameter is omitted, the default value is used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Query Parameter''&lt;br /&gt;
!''Default''&lt;br /&gt;
!''Maximum''&lt;br /&gt;
!''Notes''&lt;br /&gt;
|-&lt;br /&gt;
| size&lt;br /&gt;
| 50&lt;br /&gt;
| 250&lt;br /&gt;
| This is the number of elements per page.&lt;br /&gt;
|-&lt;br /&gt;
| offset&lt;br /&gt;
| 0&lt;br /&gt;
| N/A&lt;br /&gt;
| This is the number of items to offset away from the first item in the list.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Example =====&lt;br /&gt;
&lt;br /&gt;
A PHP Example of paging can be found [[PHP_Examples_(Rest_API)| here]].&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 200 OK&lt;br /&gt;
Cache-Control: private&lt;br /&gt;
Content-Type: text/xml; charset=utf-8&lt;br /&gt;
Server: Microsoft-IIS/7.0&lt;br /&gt;
Date: Fri, 04 Dec 2009 19:08:11 GMT&lt;br /&gt;
Content-Length: 430&lt;br /&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;domainList xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:domainList&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;offset&amp;gt;0&amp;lt;/offset&amp;gt;&lt;br /&gt;
  &amp;lt;size&amp;gt;50&amp;lt;/size&amp;gt;&lt;br /&gt;
  &amp;lt;total&amp;gt;1&amp;lt;/total&amp;gt;&lt;br /&gt;
  &amp;lt;domains&amp;gt;&lt;br /&gt;
    &amp;lt;domain&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;customer.com&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;accountNumber&amp;gt;123456&amp;lt;/accountNumber&amp;gt;&lt;br /&gt;
      &amp;lt;serviceType&amp;gt;rsemail&amp;lt;/serviceType&amp;gt;&lt;br /&gt;
    &amp;lt;/domain&amp;gt;&lt;br /&gt;
  &amp;lt;/domains&amp;gt;&lt;br /&gt;
&amp;lt;/domainList&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 404 Not Found&lt;br /&gt;
Cache-Control: private&lt;br /&gt;
Server: Microsoft-IIS/7.0&lt;br /&gt;
x-error-message: Customer Not Found&lt;br /&gt;
Date: Fri, 04 Dec 2009 19:13:59 GMT&lt;br /&gt;
Content-Length: 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 400 Bad Request&lt;br /&gt;
Cache-Control: private&lt;br /&gt;
Server: Microsoft-IIS/7.0&lt;br /&gt;
x-error-message: Missing required field: type&lt;br /&gt;
Date: Fri, 04 Dec 2009 19:17:29 GMT&lt;br /&gt;
Content-Length: 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
This examples is written in [http://www.ruby-lang.org/en/ Ruby]. To make the examples shorter, helper methods have been written. These methods are part of a NetMethods module. The contents of the NetMethods module is listed below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require  'server.rb'&lt;br /&gt;
&lt;br /&gt;
server = Server.new&lt;br /&gt;
&lt;br /&gt;
response = server.get  '/customers', server.xml_format&lt;br /&gt;
&lt;br /&gt;
#fields = Hash['serviceType' =&amp;gt;  'exchange', 'exchangeMaxNumMailboxes' =&amp;gt; '4']&lt;br /&gt;
#response =  server.post '/customers/me/domains/newdomain.com', fields&lt;br /&gt;
&lt;br /&gt;
puts response.code&lt;br /&gt;
puts response['x-error-message']&lt;br /&gt;
puts response.body&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require 'test/unit/assertions'&lt;br /&gt;
require 'net/http'&lt;br /&gt;
require 'date'&lt;br /&gt;
require 'date/format'&lt;br /&gt;
require 'digest/sha1'&lt;br /&gt;
require 'base64'&lt;br /&gt;
require 'time'&lt;br /&gt;
&lt;br /&gt;
class Server&lt;br /&gt;
  include Test::Unit::Assertions&lt;br /&gt;
  &lt;br /&gt;
  def initialize(server='api.emailsrvr.com', version_prefix='/v0', user_key='xxxxxxxxxxxxxxxxxxxx', secret_hash='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')&lt;br /&gt;
    @server = server&lt;br /&gt;
    @version_prefix = version_prefix&lt;br /&gt;
    @user_key = user_key&lt;br /&gt;
    @secret_hash = secret_hash&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
# Response Type Enums&lt;br /&gt;
&lt;br /&gt;
  def xml_format&lt;br /&gt;
    'text/xml'&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def json_format&lt;br /&gt;
    'application/json'&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# HTTP Request Verbs&lt;br /&gt;
#  &lt;br /&gt;
  def get(url_string, format)&lt;br /&gt;
    uri = full_uri(url_string)&lt;br /&gt;
    headers = prepared_headers&lt;br /&gt;
    headers['Accept'] = format&lt;br /&gt;
    request = Net::HTTP::Get.new(request_uri(uri), headers)&lt;br /&gt;
    http_response = make_request request, uri&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def delete(url_string)&lt;br /&gt;
    uri = full_uri(url_string)&lt;br /&gt;
    request = Net::HTTP::Delete.new(request_uri(uri), prepared_headers)&lt;br /&gt;
    http_response = make_request request, uri&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def put(url_string, fields_hash)&lt;br /&gt;
    uri = full_uri(url_string)&lt;br /&gt;
    request = Net::HTTP::Put.new(request_uri(uri), prepared_headers)&lt;br /&gt;
    request.set_form_data(fields_hash)&lt;br /&gt;
    http_response = make_request request, uri&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def post(url_string, fields_hash)&lt;br /&gt;
    uri = full_uri(url_string)&lt;br /&gt;
    request = Net::HTTP::Post.new(request_uri(uri), prepared_headers)&lt;br /&gt;
    request.set_form_data(fields_hash)&lt;br /&gt;
    http_response = make_request request, uri&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
#&lt;br /&gt;
# HTTP Request Helpers&lt;br /&gt;
# &lt;br /&gt;
  def make_request request, uri&lt;br /&gt;
    response = Net::HTTP::start(uri.host, uri.port)  do |http|&lt;br /&gt;
      http.request request&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    response&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def full_uri url_string&lt;br /&gt;
    URI.parse('http://' + @server + @version_prefix + url_string)&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def request_uri uri&lt;br /&gt;
    request = uri.path&lt;br /&gt;
    if ! uri.query.nil?&lt;br /&gt;
      request = request + '?' + uri.query&lt;br /&gt;
    end&lt;br /&gt;
    request&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def prepared_headers&lt;br /&gt;
    headers = Hash.new&lt;br /&gt;
    headers.merge! headers_auth_creds(@user_key, @secret_hash)&lt;br /&gt;
    headers['Accept'] = xml_format&lt;br /&gt;
    headers&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def headers_auth_creds apiKey, secretKey&lt;br /&gt;
    userAgent = 'Ruby Test Client'&lt;br /&gt;
    timestamp = DateTime.now.strftime('%Y%m%d%H%M%S')&lt;br /&gt;
    &lt;br /&gt;
    data_to_sign = apiKey + userAgent + timestamp + secretKey&lt;br /&gt;
    &lt;br /&gt;
    hash = Base64.encode64(Digest::SHA1.digest(data_to_sign))&lt;br /&gt;
    signature = apiKey + &amp;quot;:&amp;quot; + timestamp + &amp;quot;:&amp;quot; + hash&lt;br /&gt;
    &lt;br /&gt;
    headers = Hash['User-Agent' =&amp;gt; userAgent, 'X-Api-Signature' =&amp;gt; signature]&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== C# ===&lt;br /&gt;
&lt;br /&gt;
This examples is written in [http://msdn.microsoft.com/en-us/vcsharp/default.aspx C#].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Specialized;&lt;br /&gt;
using System.Security.Cryptography;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Net;&lt;br /&gt;
&lt;br /&gt;
public class WebMethods&lt;br /&gt;
{&lt;br /&gt;
  private WebClientBase client;&lt;br /&gt;
  private string baseUrl;&lt;br /&gt;
  private string apiKey;&lt;br /&gt;
  private string secretKey;&lt;br /&gt;
&lt;br /&gt;
  public WebMethods(WebClientBase client, string baseUrl, string apiKey, string secretKey)&lt;br /&gt;
  {&lt;br /&gt;
    this.client = client;&lt;br /&gt;
    this.baseUrl = baseUrl;&lt;br /&gt;
    this.apiKey = apiKey;&lt;br /&gt;
    this.secretKey = secretKey;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  public virtual string Get(string url)&lt;br /&gt;
  {&lt;br /&gt;
    return MakeRemoteCall((client) =&amp;gt;&lt;br /&gt;
      {&lt;br /&gt;
        return client.DownloadString(baseUrl + url);&lt;br /&gt;
      },&lt;br /&gt;
      format);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  public virtual string Post(string url, NameValueCollection data)&lt;br /&gt;
  {&lt;br /&gt;
    return MakeRemoteCall((client) =&amp;gt;&lt;br /&gt;
      {&lt;br /&gt;
        var bytes = client.UploadValues(baseUrl + url, data);&lt;br /&gt;
        return Encoding.UTF8.GetString(bytes);&lt;br /&gt;
      },&lt;br /&gt;
      format);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  private void SignMessage()&lt;br /&gt;
  {&lt;br /&gt;
    var userAgent = &amp;quot;C# Client Library&amp;quot;;&lt;br /&gt;
    client.Headers[&amp;quot;User-Agent&amp;quot;] = userAgent;&lt;br /&gt;
&lt;br /&gt;
    var dateTime = DateTime.UtcNow.ToString(&amp;quot;yyyyMMddHHmmss&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    var dataToSign = apiKey + userAgent + dateTime + secretKey;&lt;br /&gt;
    var hash = SHA1.Create();&lt;br /&gt;
    var signedBytes = hash.ComputeHash(Encoding.UTF8.GetBytes(dataToSign));&lt;br /&gt;
    var signature = Convert.ToBase64String(signedBytes);&lt;br /&gt;
&lt;br /&gt;
    client.Headers[&amp;quot;X-Api-Signature&amp;quot;] = apiKey + &amp;quot;:&amp;quot; + dateTime + &amp;quot;:&amp;quot; + signature;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  private void AssignFormat(string format)&lt;br /&gt;
  {&lt;br /&gt;
    client.Headers[&amp;quot;Accept&amp;quot;] = format;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  private string MakeRemoteCall(Func&amp;lt;WebClientBase, string&amp;gt; remoteCall, string format)&lt;br /&gt;
  {&lt;br /&gt;
    try&lt;br /&gt;
    {&lt;br /&gt;
      SignMessage();&lt;br /&gt;
      AssignFormat(format);&lt;br /&gt;
      return remoteCall.Invoke(client);&lt;br /&gt;
    }&lt;br /&gt;
    catch (WebException e)&lt;br /&gt;
    {&lt;br /&gt;
      throw new ApiException(e);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PHP ===&lt;br /&gt;
&lt;br /&gt;
The PHP Example can be found [[PHP_Examples_(Rest_API)| here]].&lt;/div&gt;</summary>
		<author><name>Zhen.wei</name></author>	</entry>

	<entry>
		<id>http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=MediaWiki:Sidebar&amp;diff=458</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=MediaWiki:Sidebar&amp;diff=458"/>
				<updated>2012-11-09T22:13:57Z</updated>
		
		<summary type="html">&lt;p&gt;Zhen.wei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* navigation&lt;br /&gt;
** Mainpage|Rest API&lt;br /&gt;
** Soap_API_(Deprecated)|Soap API (Deprecated)&lt;br /&gt;
** helppage|help&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>Zhen.wei</name></author>	</entry>

	<entry>
		<id>http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Soap_API_(Deprecated)&amp;diff=457</id>
		<title>Soap API (Deprecated)</title>
		<link rel="alternate" type="text/html" href="http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Soap_API_(Deprecated)&amp;diff=457"/>
				<updated>2012-11-09T22:12:33Z</updated>
		
		<summary type="html">&lt;p&gt;Zhen.wei: Created page with '== The Rackspace Email Soap API Deprecation  ==  === Why are you doing this? === In order to maximize our ability to deliver great functionality quickly, we have to make the toug…'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== The Rackspace Email Soap API Deprecation  ==&lt;br /&gt;
&lt;br /&gt;
=== Why are you doing this? ===&lt;br /&gt;
In order to maximize our ability to deliver great functionality quickly, we have to make the tough call to deprecate old stuff that slows us down. We feel that REST is a better approach to web services: It is more scaleable, more securable, more evolvable, and generally simpler to consume, maintain, and support.&lt;br /&gt;
&lt;br /&gt;
=== What does this mean for me? ===&lt;br /&gt;
&lt;br /&gt;
* For customers new to our APIs&lt;br /&gt;
For the best support, you should integrate with our [[Main_Page|REST API]]. If there is functionality you need that is not available in the REST API, please tell us. We thrive on your feedback!&lt;br /&gt;
&lt;br /&gt;
* For customers who consume our SOAP API&lt;br /&gt;
Deprecation of the SOAP API is not imminent but we highly encourage you to consider revisiting your current applications and update them to use the newer REST API.  Once a SOAP API deprecation date has been set there will be 6 month notice prior to its End-Of-Life.&lt;br /&gt;
&lt;br /&gt;
We will not be porting over every function from our SOAP API to our REST API. So the only way to ensure you'll have everything you need when the SOAP API is officially deprecated is to start early, and let us know what is missing.&lt;br /&gt;
&lt;br /&gt;
=== What is currently missing from the REST API, that you plan to add? ===&lt;br /&gt;
* Search for a Domain&lt;br /&gt;
* Get default max mailbox size for domain&lt;br /&gt;
* Get/Set max size for mailbox&lt;br /&gt;
* Get mailbox last login date/time&lt;br /&gt;
* Get addresses configured to receive forwarded email&lt;br /&gt;
* Search mailboxes&lt;br /&gt;
&lt;br /&gt;
If you rely on functionality that is not currently in the [[Main_Page|REST API]], or in this list, please tell us.&lt;br /&gt;
&lt;br /&gt;
== The Rackspace Email Soap API (Deprecated) ==&lt;br /&gt;
&lt;br /&gt;
The Rackspace Email [http://en.wikipedia.org/wiki/Api API] comprises a robust set of web services designed to allow businesses to fully integrate administrative email functions into their own applications.  Based on [http://en.wikipedia.org/wiki/SOAP SOAP], functions in the API allow programs written in many different languages to perform operations such as [[AddUser()|adding mailboxes]] and changing settings.  The API can also be used to provide [[LoginUserWebmail()|single sign on]] functionality in concert with other web applications.  The Webmail API runs on the same robust server platform that supports our high-availability [http://www.rackspace.com/email_hosting webmail] and email services.&lt;br /&gt;
&lt;br /&gt;
* [[webmail|Webmail User API]] - provides a short list of webmail user functions&lt;br /&gt;
&lt;br /&gt;
* [[business|Business API]] - provides a list of functions designed for single business/domain usage&lt;br /&gt;
&lt;br /&gt;
* [[reseller|Reseller API]] - provides a complete list of functions for multiple domains and sub-accounts&lt;br /&gt;
&lt;br /&gt;
=== Code Examples ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
*[[Perl]]&lt;br /&gt;
|&lt;br /&gt;
*[[PHP]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
*[[ASP]]&lt;br /&gt;
|&lt;br /&gt;
*[[C#]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
*[[ColdFusion]]&lt;br /&gt;
|&lt;br /&gt;
*[[Ruby]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* [[HTML]] (not part of the API, strictly speaking)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Getting Started Screencast ===&lt;br /&gt;
[http://www.mailtrust.com/api-wiki/screencasts/api-pings.htm Screencast] of accessing two of our SOAP API's from PHP using Ubuntu linux.&lt;br /&gt;
&lt;br /&gt;
=== Result Codes ===&lt;br /&gt;
Consult the [[resultcodes|Result Code Table]] for a list of result codes and their meaning.&lt;/div&gt;</summary>
		<author><name>Zhen.wei</name></author>	</entry>

	<entry>
		<id>http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Main_Page&amp;diff=455</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Main_Page&amp;diff=455"/>
				<updated>2012-05-22T22:14:02Z</updated>
		
		<summary type="html">&lt;p&gt;Zhen.wei: added link to rse mobile sync on homepage.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Recent Changes ==&lt;br /&gt;
'''05/22/12'''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Rackspace Email Mobile Sync. [http://api-wiki.apps.rackspace.com/api-wiki/index.php/Rackspace_Email_Mobile_Sync_(Rest_API) Click here] for more details.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The The Rackspace Email Rest API provides most of the functions of the Control Panel through a REST-based [http://en.wikipedia.org/wiki/Web_service web API]. Whether it is adding a new customer account, adding mailboxes, or any other of the supported features the API allows your application to administer the changes regardless of your application's language or nature. For more information on RESTful web services refer to the following sites:&lt;br /&gt;
&lt;br /&gt;
[http://www.peej.co.uk/articles/restfully-delicious.html Paul James's Homepage: A RESTful Web service, an example]&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Representational_State_Transfer#External_links Wikipedia: Representational State Transfer - External Links]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The API is accessible to all with access to Control Panel, including resellers, business customers, enterprise customers, and indirect customers. However, not all operations are available to non-resellers. See the [[Rest_API#Operations|Operations]] section for more details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Rackspace Email Soap API Homepage has been moved to [[Soap_API| here]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Operations ==&lt;br /&gt;
&lt;br /&gt;
The following pages detail the operations that the API supports. The operations are grouped into sections based on the entity/object types that each operation interacts with. Non-resellers do not have access to all functions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Resource&lt;br /&gt;
!Example URI&lt;br /&gt;
!Business User Access&lt;br /&gt;
|-&lt;br /&gt;
| [[Customer_(Rest_API)| Customer]]&lt;br /&gt;
| /customers/123456789&lt;br /&gt;
| [[Customer_(Rest_API)#Create_Login_Tokens | Create Login Tokens]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Admin_(Rest_API)| Admin]]&lt;br /&gt;
| /customers/123456789/admins/my_admin&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Domain_(Rest_API)| Domain]]&lt;br /&gt;
| /customers/123456789/domains/example.com&lt;br /&gt;
| [[Domain_(Rest_API)#Index| Index]], [[Domain_(Rest_API)#Show| Show]], [[Domain_(Rest_API)#Split Domain Routing| Split Domain Routing]], [[Domain_(Rest_API)#Archiving SSO Login URL| Archiving SSO Login URL]], [[Domain_(Rest_API)#Domain_Public_Folders_.28Reseller_Only.29|Domain Public Folders]], [[Domain_(Rest_API)#Domain Email Everyone| Email Everyone ]], [[Domain_(Rest_API)#Show_Domain_Catch-All_Address | Catch-All Address]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Domain_Spam_(Rest_API)| Domain Spam Settings]]&lt;br /&gt;
| /customers/123456789/domains/example.com/spam/settings&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Rackspace_Mailbox_(Rest_API)|  Rackspace Email Mailbox]]&lt;br /&gt;
|  /customers/123456789/domains/example.com/rs/mailboxes/john.smith&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Rackspace_Email_Mobile_Sync_(Rest_API)|  Rackspace Email Mobile Sync]]&lt;br /&gt;
|  /customers/123456789/domains/example.com/mobilesync&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Rackspace_Mailbox_Spam_(Rest_API)| Rackspace Email Mailbox Spam Settings]]&lt;br /&gt;
|  /customers/123456789/domains/example.com/rs/mailboxes/john.smith/spam&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Rackspace_Storage_Notification_(Rest_API)| Rackspace Storage Notification Settings]]&lt;br /&gt;
|  /customers/123456789/domains/example.com/rs/storageNotification&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Rackspace_Alias(Rest_API)|  Rackspace Email Alias]]&lt;br /&gt;
|  /customers/123456789/domains/example.com/rs/mailboxes/john.smith/alias&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Mailbox_(Rest_API)| Exchange Mailbox]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/mailboxes/john.smith&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Mailbox_Spam_(Rest_API)| Exchange Mailbox Spam Settings]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/mailboxes/john.smith/spam&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Contact_(Rest_API)| Exchange Contact]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/contacts/john.smith&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Distribution_List_(Rest_API)| Exchange Distribution List]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/distributionlists/group.name&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Resource_Mailbox_(Rest_API)| Exchange Resource Mailbox]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/resources/conference.room&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[SharePoint_(Rest_API)| SharePoint]]&lt;br /&gt;
| /customers/123456789/sharepoint/settings&lt;br /&gt;
| [[SharePoint_(Rest_API)#Show | Show]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The examples shown in the operation pages are written in Ruby and extensively use the helper functions shown in the Ruby Examples below.&lt;br /&gt;
&lt;br /&gt;
== Quick Start ==&lt;br /&gt;
&lt;br /&gt;
'''What you need:'''&lt;br /&gt;
* A Rackspace Email and Apps Control Panel admin account&lt;br /&gt;
* A HTTP class library that supports TLS and the HTTP methods: GET, POST, PUT, DELETE.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Making your first API call, an Show Customer request:'''&lt;br /&gt;
# Obtain your API keys&lt;br /&gt;
#:* Click on My Account at the top of the [https://apps.rackspace.com/?cp Control Panel web interface]. Under the Administrators heading there will be an link for the API keys page.&lt;br /&gt;
# Set up your client's HTTP request&lt;br /&gt;
#:* Set up your client to make calls to a URL beginning with &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/v0&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
#:* Populate the Accept, User-Agent and X-Api-Signature HTTP request headers correctly. This is explained in detail [[#HTTP Headers|here]].&lt;br /&gt;
# Make a GET request to /customers/me.&lt;br /&gt;
#:* The complete URI will be &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/v0/customers/me&amp;lt;/nowiki&amp;gt;. Use your HTTP library to retrieve the HTTP response code, 'x-error-message' HTTP response header and HTTP response body so that they may be displayed to help debug and determine success.&lt;br /&gt;
'''From here:'''&lt;br /&gt;
* Learn about the operations you'll be implementing at the subpages [[#Operations|here]].&lt;br /&gt;
&lt;br /&gt;
== Accessing the API ==&lt;br /&gt;
&lt;br /&gt;
Your application will need to make HTTP requests to remote servers. Most programming languages have this function provided in its class library. In addition to the common GET and POST HTTP methods, the library used will also need to support PUT and DELETE.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&lt;br /&gt;
Calls without [http://en.wikipedia.org/wiki/Transport_Layer_Security TLS] (formerly SSL) will complete successfully but it is HIGHLY RECOMMENDED that TLS always be used. Interception of unencrypted communication will allow a third party to have complete access to all functions available via the API.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For some language libraries just using an URL with https:// will cause the library to use TLS. In some other libraries however some options specific to the library may have to be configured to utilize TLS. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All API calls should be directed to a URL in the following format:&lt;br /&gt;
&amp;lt;pre&amp;gt;https://api.emailsrvr.com/(version)/(resource)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;https://api.emailsrvr.com/v0/customers/12345678/domains/customerbusiness.com&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Versions ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Supported Versions''&lt;br /&gt;
!''URL''&lt;br /&gt;
!''Version Documentation''&lt;br /&gt;
|-&lt;br /&gt;
| v0 (current)&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/v0/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
| http://api-wiki.apps.rackspace.com/api-wiki/index.php/Main_Page&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The API version number is a component of the URL that is used to access the API. For example, to access the root of the API, the URL is https://api.emailsrvr.com/v0/. Bug fixes and minor non-breaking changes will be made without changing the version number. When major features or breaking changes are introduced, the version number will be incremented. It is not yet determined how many versions are going to be supported at any one time.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Non-breaking Changes''&lt;br /&gt;
!''Breaking Changes''&lt;br /&gt;
|-&lt;br /&gt;
| Adding new fields or attributes to form fields sent&lt;br /&gt;
| Changing or deleting any fields in form fields sent&lt;br /&gt;
|-&lt;br /&gt;
| Adding fields in returned data&lt;br /&gt;
| Changing or removing fields in returned data&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| Changing the URI of any resource&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Authentication ===&lt;br /&gt;
&lt;br /&gt;
To gain access to the API, your request must include a properly constructed X-Api-Signature HTTP header. Details on what to put in the header are below. To construct the header, you must have the following keys that that are generated from the [https://apps.rackspace.com/?cp Control Panel Web interface]. The key generation page can be found by clicking 'My Account' at the top, then 'Generate API Keys' in the Administrators section.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Key Name&lt;br /&gt;
!Description&lt;br /&gt;
!Example&lt;br /&gt;
|-&lt;br /&gt;
| User Key&lt;br /&gt;
| A public key that corresponds to your admin id&lt;br /&gt;
| ''eGbq9/2hcZsRlr1JV1Pi''&lt;br /&gt;
|-&lt;br /&gt;
| Secret Key&lt;br /&gt;
| A shared secret key&lt;br /&gt;
| ''QHOvchm/40czXhJ1OxfxK7jDHr3t''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An unsuccessful authentication will result in a 403 HTTP code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== X-Api-Signature Header ====&lt;br /&gt;
&lt;br /&gt;
Format is as follows:&lt;br /&gt;
&amp;lt;'''User Key'''&amp;gt;:&amp;lt;'''Timestamp'''&amp;gt;:&amp;lt;'''SHA1 Hash'''&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Example: ''eGbq9/2hcZsRlr1JV1Pi:20010317143725:46VIwd66mOFGG8IkbgnLlXnfnkU=''&lt;br /&gt;
&lt;br /&gt;
Remember to include the colons between the data strings!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''User Key''':&amp;lt;br&amp;gt;&lt;br /&gt;
This is the public key issued by the Control Panel browser interface.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Timestamp''':&amp;lt;br&amp;gt;&lt;br /&gt;
The format is YYYYMMDDHHmmss. All values besides year are zero-padded to two spaces. For example, March 08th 2001 at 2:37.25pm would be ''20010308143725''.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|YYYY&lt;br /&gt;
|Four-digit year&lt;br /&gt;
|-&lt;br /&gt;
| MM&lt;br /&gt;
| Month&lt;br /&gt;
|-&lt;br /&gt;
| DD&lt;br /&gt;
| Day&lt;br /&gt;
|-&lt;br /&gt;
| HH&lt;br /&gt;
| Hour in 24h format&lt;br /&gt;
|-&lt;br /&gt;
| mm&lt;br /&gt;
| Minute&lt;br /&gt;
|-&lt;br /&gt;
| ss&lt;br /&gt;
| Second&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''SHA1 Hash''':&lt;br /&gt;
&lt;br /&gt;
A SHA1 (Secure Hash Algorithm) hash must be applied to a string with the following information:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;'''User Key'''&amp;gt;&amp;lt;'''User Agent'''&amp;gt;&amp;lt;'''Timestamp'''&amp;gt;&amp;lt;'''Secret Key'''&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that the 'User Agent' must be the exact same as what is specified in the User-Agent HTTP header. Using the above example data, the string before hashing is:&amp;lt;br&amp;gt;''eGbq9/2hcZsRlr1JV1PiRackspace Management Interface20010308143725QHOvchm/40czXhJ1OxfxK7jDHr3t''&lt;br /&gt;
&lt;br /&gt;
Resulting base-64 SHA1 Hash:&amp;lt;br&amp;gt;''46VIwd66mOFGG8IkbgnLlXnfnkU=''&lt;br /&gt;
&lt;br /&gt;
Be sure to encode the binary hash, not the hex hash, into base-64. The resulting string should be 28 characters long.&lt;br /&gt;
&lt;br /&gt;
== Using the API ==&lt;br /&gt;
&lt;br /&gt;
=== Requests ===&lt;br /&gt;
&lt;br /&gt;
HTTP requests should be sent to the server with the correct URL, HTTP method, HTTP headers and form data (if needed). The URL specifies the resource, the HTTP method specifies what operation is done on the resource, and form data is used to specify the details of the resource when the resource is added or edited.&lt;br /&gt;
&lt;br /&gt;
The URLs, corresponding HTTP methods, and necessary form data for the desired operations are detailed in the [[#Operations|operation pages]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you're getting the HTTP status code 417 see [[Handling HTTP code 417:  Expectation failed]]&lt;br /&gt;
&lt;br /&gt;
==== URL ====&lt;br /&gt;
&lt;br /&gt;
The URLs are specifies the resource or resource collection. Objects are organized in a tree collection, starting with customers at the top, then domains, then domain objects next (such as mailboxes, contacts, and distribution lists) and so on. The URLs of the resources and collections accessible are found on the operation pages.&lt;br /&gt;
&lt;br /&gt;
==== HTTP Method ====&lt;br /&gt;
&lt;br /&gt;
It is the HTTP method that specifies what operation will be done on the resource. For example, to get the details of a mailbox a HTTP GET will be done on /customers/12345678/domains/example.com/ex/mailboxes/john.smith. If the mailbox does not exist, a HTTP POST to the same URL with the necessary form data will add the mailbox. Then, a HTTP PUT to the same URL will edit mailbox. And to delete the mailbox, an HTTP DELETE would be used.&lt;br /&gt;
&lt;br /&gt;
The types of operations a certain method performs is outlined below.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''HTTP Method''&lt;br /&gt;
!''Operations''&lt;br /&gt;
!''Response''&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=2|GET&lt;br /&gt;
|Index - returns a list of the resources&lt;br /&gt;
|rowspan=2|XML or JSON formatted data&lt;br /&gt;
|-&lt;br /&gt;
|Show - returns the details of the resource&lt;br /&gt;
|-&lt;br /&gt;
|POST&lt;br /&gt;
|Add - adds a new resource&lt;br /&gt;
|rowspan=3|Response code and error message (if applicable) only&lt;br /&gt;
|-&lt;br /&gt;
|PUT&lt;br /&gt;
|Edit - changes the details of the resource&lt;br /&gt;
|-&lt;br /&gt;
|DELETE&lt;br /&gt;
|Delete - deletes the resource&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== HTTP Headers ====&lt;br /&gt;
&lt;br /&gt;
All requests to the API must then include HTTP headers with the following information:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Header Name''&lt;br /&gt;
!''Description''&lt;br /&gt;
!''Example Header Value''&lt;br /&gt;
|-&lt;br /&gt;
| Accept&lt;br /&gt;
| The requested content type (required for Index and Show actions). Fill this with either 'text/xml' or 'application/json'. See [[#Formats|Response Formats]]&lt;br /&gt;
| ''text/xml''&lt;br /&gt;
|-&lt;br /&gt;
| User-Agent&lt;br /&gt;
| An identifier you choose for your client software&lt;br /&gt;
| ''Rackspace Management Interface''&lt;br /&gt;
|-&lt;br /&gt;
| X-Api-Signature&lt;br /&gt;
| An authentication string explained in detail [[#X-Api-Signature_Header|here]]&lt;br /&gt;
| ''eGbq9/2hcZsRlr1JV1Pi:20010317143725:HKUn0aajpSDx7qqGK3vqzn3FglI=''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Form Data ====&lt;br /&gt;
&lt;br /&gt;
When using Add and Edit operations, the details of the resource are sent to the API server via HTTP form data. Your HTTP library should include methods for sending form data along with an HTTP request. The library should by default send the data in the HTTP request body using the 'application/x-www-form-urlencoded' data format.&lt;br /&gt;
&lt;br /&gt;
==== Index Filter/Search ====&lt;br /&gt;
&lt;br /&gt;
The results of Index actions can be filtered/searched. The index URLs can take either one of the query strings: &amp;quot;?startswith=xx&amp;quot; or &amp;quot;?contains=xx,&amp;quot; where &amp;quot;xx&amp;quot; is the key word. If the request specifies more than one of these two query strings, a 400 HTTP error will be returned. Different fields will be searched depending on the resource type, see below.&lt;br /&gt;
&lt;br /&gt;
Note that &amp;quot;0-9&amp;quot; is a reserved key word for query string &amp;quot;startswith.&amp;quot; It represents any result starting with numbers.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Index Actions''&lt;br /&gt;
!''Where the key word will be searched''&lt;br /&gt;
|-&lt;br /&gt;
| Customer&lt;br /&gt;
| Customer name, account number, reference number&lt;br /&gt;
|-&lt;br /&gt;
| Domain&lt;br /&gt;
| Domain name&lt;br /&gt;
|-&lt;br /&gt;
| Mailbox&lt;br /&gt;
| Mailbox name, mailbox display name&lt;br /&gt;
|-&lt;br /&gt;
| Contact&lt;br /&gt;
| Contact display name, external email&lt;br /&gt;
|-&lt;br /&gt;
| Group&lt;br /&gt;
| Group name, group display name&lt;br /&gt;
|-&lt;br /&gt;
| Mobile Service&lt;br /&gt;
| Associated mailbox name, mailbox display name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Throttling ====&lt;br /&gt;
&lt;br /&gt;
The server limits the number of requests allowed per user in a certain period of time.  The number of requests made are logged per minute. Calls that were made correctly with a user's API key, but not completed for any reason, including those exceeding the throttle limit, are included in this count.&lt;br /&gt;
&lt;br /&gt;
If a user is over the throttling limit then a 403 HTTP code will be returned with an &amp;quot;Exceeded request limits&amp;quot; message.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Operation Category''&lt;br /&gt;
!''Request Limit''&lt;br /&gt;
|-&lt;br /&gt;
| GET&lt;br /&gt;
| 60 per minute&lt;br /&gt;
|-&lt;br /&gt;
| PUT, POST, DELETE&lt;br /&gt;
| 30 per minute&lt;br /&gt;
|-&lt;br /&gt;
| POST, PUT, DELETE on a domain&lt;br /&gt;
| 2 per minute&lt;br /&gt;
|-&lt;br /&gt;
| POST, DELETE on alternate domains&lt;br /&gt;
| 2 per minute&lt;br /&gt;
|-&lt;br /&gt;
| Enabling public folders for a domain&lt;br /&gt;
| 1 per 5 minutes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&lt;br /&gt;
Index of Exchange Mailboxes:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hypertext Transfer Protocol&lt;br /&gt;
    GET /v0/customers/12345678/domains/example.com/ex/mailboxes?size=100&amp;amp;offset=100 HTTP/1.1&lt;br /&gt;
    Host: api.emailsrvr.com&lt;br /&gt;
    User-Agent: Rackspace Management Interface&lt;br /&gt;
    X-Api-Signature: eGbq9/2hcZsRlr1JV1Pi:20010317143725:HKUn0aajpSDx7qqGK3vqzn3FglI=&lt;br /&gt;
    Accept: text/xml&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Adding New Exchange Mailbox:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hypertext Transfer Protocol&lt;br /&gt;
    POST /v0/customers/12345678/domains/example.com/ex/mailboxes/john.smith HTTP/1.1&lt;br /&gt;
    Host: api.emailsrvr.com&lt;br /&gt;
    User-Agent: Rackspace Management Interface&lt;br /&gt;
    X-Api-Signature: eGbq9/2hcZsRlr1JV1Pi:20010317143725:HKUn0aajpSDx7qqGK3vqzn3FglI=&lt;br /&gt;
    Content-Length: 53&lt;br /&gt;
        [Content length: 53]&lt;br /&gt;
    Content-Type: application/x-www-form-urlencoded&lt;br /&gt;
 &lt;br /&gt;
Line-based text data: application/x-www-form-urlencoded&lt;br /&gt;
    size=2048&amp;amp;displayName=John%20Smith&amp;amp;password=abcABC123&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Responses ===&lt;br /&gt;
&lt;br /&gt;
==== HTTP Status Code ====&lt;br /&gt;
&lt;br /&gt;
On a successfully executed request, a 200 HTTP Code is returned. If the request was unsuccessful however, an HTTP error code in the 400s or 500s will be returned.&lt;br /&gt;
&lt;br /&gt;
==== HTTP Response Body ====&lt;br /&gt;
&lt;br /&gt;
If the request is an Index or Show request, the request data will be returned in the format specified in the HTTP Body.&lt;br /&gt;
&lt;br /&gt;
===== Formats =====&lt;br /&gt;
&lt;br /&gt;
Requests for data (index and show requests) are returned with XML or JSON data based on what your application populates the [[#HTTP_Headers|HTTP Accept headers]] with.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For XML, populate the header with 'text/xml' (ex: Headers![&amp;quot;Accept&amp;quot;] = &amp;quot;text/xml&amp;quot;). The XML document returned will conform to a published XSD (XML Schema Document). There are many ways to parse the data in an XML document, but we have found that the [http://www.w3schools.com/XPath/default.asp XPath] tree-style traversal has served our purposes. In any case, your application will likely need to use a class library for your chosen method.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For JSON, populate the header with 'application/json' (ex: Headers![&amp;quot;Accept&amp;quot;] = &amp;quot;application/json&amp;quot;). As with XML, a library will likely be needed to parse the data.&lt;br /&gt;
&lt;br /&gt;
==== HTTP Headers ====&lt;br /&gt;
&lt;br /&gt;
The only data returned in the header is the error message (if any).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Header Name''&lt;br /&gt;
!''Description''&lt;br /&gt;
!''Example Header Value''&lt;br /&gt;
|-&lt;br /&gt;
| x-error-message&lt;br /&gt;
| The error message. See [[#Errors|Errors]].&lt;br /&gt;
| Missing required field: name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Errors ====&lt;br /&gt;
&lt;br /&gt;
When an error occurs, the system will return an HTTP error response code denoting the type of error. The system will also return additional information about the fault in the body of the response. For text/xml format, refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/faults.xsd Faults.xsd]&lt;br /&gt;
&lt;br /&gt;
'''Example Fault Response – XML'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;appsFault code=&amp;quot;500&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;message&amp;gt;Fault!&amp;lt;/message&amp;gt;&lt;br /&gt;
  &amp;lt;details&amp;gt;Error Details...&amp;lt;/details&amp;gt;&lt;br /&gt;
&amp;lt;/appsFault&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Example Fault Response – JSON'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;appsFault&amp;quot; : {&lt;br /&gt;
    &amp;quot;code&amp;quot; : 500,&lt;br /&gt;
    &amp;quot;message&amp;quot; : &amp;quot;Fault!&amp;quot;,&lt;br /&gt;
    &amp;quot;details&amp;quot; : &amp;quot;Error Details...&amp;quot;&lt;br /&gt;
  }&lt;br /&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;
{| 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, 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;
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;
'''X-Error-Message 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 x-error-message 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;br /&gt;
&lt;br /&gt;
==== Paging ====&lt;br /&gt;
&lt;br /&gt;
The results of Index actions are split into pages to lessen potentially high resource usage. The index URLs have a query string with parameters in the format &amp;quot;?size=xx&amp;amp;offset=xx.&amp;quot; If a query parameter is omitted, the default value is used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Query Parameter''&lt;br /&gt;
!''Default''&lt;br /&gt;
!''Maximum''&lt;br /&gt;
!''Notes''&lt;br /&gt;
|-&lt;br /&gt;
| size&lt;br /&gt;
| 50&lt;br /&gt;
| 250&lt;br /&gt;
| This is the number of elements per page.&lt;br /&gt;
|-&lt;br /&gt;
| offset&lt;br /&gt;
| 0&lt;br /&gt;
| N/A&lt;br /&gt;
| This is the number of items to offset away from the first item in the list.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Example =====&lt;br /&gt;
&lt;br /&gt;
A PHP Example of paging can be found [[PHP_Examples_(Rest_API)| here]].&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 200 OK&lt;br /&gt;
Cache-Control: private&lt;br /&gt;
Content-Type: text/xml; charset=utf-8&lt;br /&gt;
Server: Microsoft-IIS/7.0&lt;br /&gt;
Date: Fri, 04 Dec 2009 19:08:11 GMT&lt;br /&gt;
Content-Length: 430&lt;br /&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;domainList xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:domainList&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;offset&amp;gt;0&amp;lt;/offset&amp;gt;&lt;br /&gt;
  &amp;lt;size&amp;gt;50&amp;lt;/size&amp;gt;&lt;br /&gt;
  &amp;lt;total&amp;gt;1&amp;lt;/total&amp;gt;&lt;br /&gt;
  &amp;lt;domains&amp;gt;&lt;br /&gt;
    &amp;lt;domain&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;customer.com&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;accountNumber&amp;gt;123456&amp;lt;/accountNumber&amp;gt;&lt;br /&gt;
      &amp;lt;serviceType&amp;gt;rsemail&amp;lt;/serviceType&amp;gt;&lt;br /&gt;
    &amp;lt;/domain&amp;gt;&lt;br /&gt;
  &amp;lt;/domains&amp;gt;&lt;br /&gt;
&amp;lt;/domainList&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 404 Not Found&lt;br /&gt;
Cache-Control: private&lt;br /&gt;
Server: Microsoft-IIS/7.0&lt;br /&gt;
x-error-message: Customer Not Found&lt;br /&gt;
Date: Fri, 04 Dec 2009 19:13:59 GMT&lt;br /&gt;
Content-Length: 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 400 Bad Request&lt;br /&gt;
Cache-Control: private&lt;br /&gt;
Server: Microsoft-IIS/7.0&lt;br /&gt;
x-error-message: Missing required field: type&lt;br /&gt;
Date: Fri, 04 Dec 2009 19:17:29 GMT&lt;br /&gt;
Content-Length: 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
This examples is written in [http://www.ruby-lang.org/en/ Ruby]. To make the examples shorter, helper methods have been written. These methods are part of a NetMethods module. The contents of the NetMethods module is listed below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require  'server.rb'&lt;br /&gt;
&lt;br /&gt;
server = Server.new&lt;br /&gt;
&lt;br /&gt;
response = server.get  '/customers', server.xml_format&lt;br /&gt;
&lt;br /&gt;
#fields = Hash['serviceType' =&amp;gt;  'exchange', 'exchangeMaxNumMailboxes' =&amp;gt; '4']&lt;br /&gt;
#response =  server.post '/customers/me/domains/newdomain.com', fields&lt;br /&gt;
&lt;br /&gt;
puts response.code&lt;br /&gt;
puts response['x-error-message']&lt;br /&gt;
puts response.body&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require 'test/unit/assertions'&lt;br /&gt;
require 'net/http'&lt;br /&gt;
require 'date'&lt;br /&gt;
require 'date/format'&lt;br /&gt;
require 'digest/sha1'&lt;br /&gt;
require 'base64'&lt;br /&gt;
require 'time'&lt;br /&gt;
&lt;br /&gt;
class Server&lt;br /&gt;
  include Test::Unit::Assertions&lt;br /&gt;
  &lt;br /&gt;
  def initialize(server='api.emailsrvr.com', version_prefix='/v0', user_key='xxxxxxxxxxxxxxxxxxxx', secret_hash='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')&lt;br /&gt;
    @server = server&lt;br /&gt;
    @version_prefix = version_prefix&lt;br /&gt;
    @user_key = user_key&lt;br /&gt;
    @secret_hash = secret_hash&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
# Response Type Enums&lt;br /&gt;
&lt;br /&gt;
  def xml_format&lt;br /&gt;
    'text/xml'&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def json_format&lt;br /&gt;
    'application/json'&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# HTTP Request Verbs&lt;br /&gt;
#  &lt;br /&gt;
  def get(url_string, format)&lt;br /&gt;
    uri = full_uri(url_string)&lt;br /&gt;
    headers = prepared_headers&lt;br /&gt;
    headers['Accept'] = format&lt;br /&gt;
    request = Net::HTTP::Get.new(request_uri(uri), headers)&lt;br /&gt;
    http_response = make_request request, uri&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def delete(url_string)&lt;br /&gt;
    uri = full_uri(url_string)&lt;br /&gt;
    request = Net::HTTP::Delete.new(request_uri(uri), prepared_headers)&lt;br /&gt;
    http_response = make_request request, uri&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def put(url_string, fields_hash)&lt;br /&gt;
    uri = full_uri(url_string)&lt;br /&gt;
    request = Net::HTTP::Put.new(request_uri(uri), prepared_headers)&lt;br /&gt;
    request.set_form_data(fields_hash)&lt;br /&gt;
    http_response = make_request request, uri&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def post(url_string, fields_hash)&lt;br /&gt;
    uri = full_uri(url_string)&lt;br /&gt;
    request = Net::HTTP::Post.new(request_uri(uri), prepared_headers)&lt;br /&gt;
    request.set_form_data(fields_hash)&lt;br /&gt;
    http_response = make_request request, uri&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
#&lt;br /&gt;
# HTTP Request Helpers&lt;br /&gt;
# &lt;br /&gt;
  def make_request request, uri&lt;br /&gt;
    response = Net::HTTP::start(uri.host, uri.port)  do |http|&lt;br /&gt;
      http.request request&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    response&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def full_uri url_string&lt;br /&gt;
    URI.parse('http://' + @server + @version_prefix + url_string)&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def request_uri uri&lt;br /&gt;
    request = uri.path&lt;br /&gt;
    if ! uri.query.nil?&lt;br /&gt;
      request = request + '?' + uri.query&lt;br /&gt;
    end&lt;br /&gt;
    request&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def prepared_headers&lt;br /&gt;
    headers = Hash.new&lt;br /&gt;
    headers.merge! headers_auth_creds(@user_key, @secret_hash)&lt;br /&gt;
    headers['Accept'] = xml_format&lt;br /&gt;
    headers&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def headers_auth_creds apiKey, secretKey&lt;br /&gt;
    userAgent = 'Ruby Test Client'&lt;br /&gt;
    timestamp = DateTime.now.strftime('%Y%m%d%H%M%S')&lt;br /&gt;
    &lt;br /&gt;
    data_to_sign = apiKey + userAgent + timestamp + secretKey&lt;br /&gt;
    &lt;br /&gt;
    hash = Base64.encode64(Digest::SHA1.digest(data_to_sign))&lt;br /&gt;
    signature = apiKey + &amp;quot;:&amp;quot; + timestamp + &amp;quot;:&amp;quot; + hash&lt;br /&gt;
    &lt;br /&gt;
    headers = Hash['User-Agent' =&amp;gt; userAgent, 'X-Api-Signature' =&amp;gt; signature]&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== C# ===&lt;br /&gt;
&lt;br /&gt;
This examples is written in [http://msdn.microsoft.com/en-us/vcsharp/default.aspx C#].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Specialized;&lt;br /&gt;
using System.Security.Cryptography;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Net;&lt;br /&gt;
&lt;br /&gt;
public class WebMethods&lt;br /&gt;
{&lt;br /&gt;
  private WebClientBase client;&lt;br /&gt;
  private string baseUrl;&lt;br /&gt;
  private string apiKey;&lt;br /&gt;
  private string secretKey;&lt;br /&gt;
&lt;br /&gt;
  public WebMethods(WebClientBase client, string baseUrl, string apiKey, string secretKey)&lt;br /&gt;
  {&lt;br /&gt;
    this.client = client;&lt;br /&gt;
    this.baseUrl = baseUrl;&lt;br /&gt;
    this.apiKey = apiKey;&lt;br /&gt;
    this.secretKey = secretKey;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  public virtual string Get(string url)&lt;br /&gt;
  {&lt;br /&gt;
    return MakeRemoteCall((client) =&amp;gt;&lt;br /&gt;
      {&lt;br /&gt;
        return client.DownloadString(baseUrl + url);&lt;br /&gt;
      },&lt;br /&gt;
      format);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  public virtual string Post(string url, NameValueCollection data)&lt;br /&gt;
  {&lt;br /&gt;
    return MakeRemoteCall((client) =&amp;gt;&lt;br /&gt;
      {&lt;br /&gt;
        var bytes = client.UploadValues(baseUrl + url, data);&lt;br /&gt;
        return Encoding.UTF8.GetString(bytes);&lt;br /&gt;
      },&lt;br /&gt;
      format);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  private void SignMessage()&lt;br /&gt;
  {&lt;br /&gt;
    var userAgent = &amp;quot;C# Client Library&amp;quot;;&lt;br /&gt;
    client.Headers[&amp;quot;User-Agent&amp;quot;] = userAgent;&lt;br /&gt;
&lt;br /&gt;
    var dateTime = DateTime.UtcNow.ToString(&amp;quot;yyyyMMddHHmmss&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    var dataToSign = apiKey + userAgent + dateTime + secretKey;&lt;br /&gt;
    var hash = SHA1.Create();&lt;br /&gt;
    var signedBytes = hash.ComputeHash(Encoding.UTF8.GetBytes(dataToSign));&lt;br /&gt;
    var signature = Convert.ToBase64String(signedBytes);&lt;br /&gt;
&lt;br /&gt;
    client.Headers[&amp;quot;X-Api-Signature&amp;quot;] = apiKey + &amp;quot;:&amp;quot; + dateTime + &amp;quot;:&amp;quot; + signature;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  private void AssignFormat(string format)&lt;br /&gt;
  {&lt;br /&gt;
    client.Headers[&amp;quot;Accept&amp;quot;] = format;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  private string MakeRemoteCall(Func&amp;lt;WebClientBase, string&amp;gt; remoteCall, string format)&lt;br /&gt;
  {&lt;br /&gt;
    try&lt;br /&gt;
    {&lt;br /&gt;
      SignMessage();&lt;br /&gt;
      AssignFormat(format);&lt;br /&gt;
      return remoteCall.Invoke(client);&lt;br /&gt;
    }&lt;br /&gt;
    catch (WebException e)&lt;br /&gt;
    {&lt;br /&gt;
      throw new ApiException(e);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PHP ===&lt;br /&gt;
&lt;br /&gt;
The PHP Example can be found [[PHP_Examples_(Rest_API)| here]].&lt;/div&gt;</summary>
		<author><name>Zhen.wei</name></author>	</entry>

	<entry>
		<id>http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Domain_(Rest_API)&amp;diff=447</id>
		<title>Domain (Rest API)</title>
		<link rel="alternate" type="text/html" href="http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Domain_(Rest_API)&amp;diff=447"/>
				<updated>2011-07-08T17:24:27Z</updated>
		
		<summary type="html">&lt;p&gt;Zhen.wei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Index ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
This operation returns a list of domains under the account. If a customer account is specified, then a list of domains under that specific account will be returned.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
To retrieve a list of domains owned by the account that is logged in, use &amp;quot;me&amp;quot; as the customer account number i.e. &amp;lt;nowiki&amp;gt;'https://api.emailsrvr.com/v0/customers/me/domains'&amp;lt;/nowiki&amp;gt;. To retrieve a list of domains owned by all customer sub-accounts and your own account, use &amp;quot;all&amp;quot; as the customer account number.&lt;br /&gt;
&lt;br /&gt;
The index operation only supports the GET HTTP verb. For text/xml format, refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/DomainList.xsd DomainList.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/all/domains?size=100&amp;amp;offset=10', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;domainList 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; xmlns=&amp;quot;urn:xml:domainList&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;offset&amp;gt;0&amp;lt;/offset&amp;gt;&lt;br /&gt;
  &amp;lt;size&amp;gt;50&amp;lt;/size&amp;gt;&lt;br /&gt;
  &amp;lt;total&amp;gt;3&amp;lt;/total&amp;gt;&lt;br /&gt;
  &amp;lt;domains&amp;gt;&lt;br /&gt;
    &amp;lt;domain&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;apidomain53.com&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;accountNumber&amp;gt;100000&amp;lt;/accountNumber&amp;gt;&lt;br /&gt;
      &amp;lt;serviceType&amp;gt;both&amp;lt;/serviceType&amp;gt;&lt;br /&gt;
    &amp;lt;/domain&amp;gt;&lt;br /&gt;
    &amp;lt;domain&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;apidomain66.com&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;accountNumber&amp;gt;100001&amp;lt;/accountNumber&amp;gt;&lt;br /&gt;
      &amp;lt;serviceType&amp;gt;both&amp;lt;/serviceType&amp;gt;&lt;br /&gt;
    &amp;lt;/domain&amp;gt;&lt;br /&gt;
    &amp;lt;domain&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;apidomain68.com&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;accountNumber&amp;gt;100002&amp;lt;/accountNumber&amp;gt;&lt;br /&gt;
      &amp;lt;serviceType&amp;gt;both&amp;lt;/serviceType&amp;gt;&lt;br /&gt;
    &amp;lt;/domain&amp;gt;&lt;br /&gt;
  &amp;lt;/domains&amp;gt;&lt;br /&gt;
&amp;lt;/domainList&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&amp;quot;offset&amp;quot;:0,&amp;quot;size&amp;quot;:50,&amp;quot;total&amp;quot;:3,&amp;quot;domains&amp;quot;:&lt;br /&gt;
[{&amp;quot;name&amp;quot;:&amp;quot;apidomain53.com&amp;quot;,&amp;quot;accountNumber&amp;quot;:&amp;quot;100000&amp;quot;,&amp;quot;serviceType&amp;quot;:&amp;quot;both&amp;quot;},&lt;br /&gt;
{&amp;quot;name&amp;quot;:&amp;quot;apidomain66.com&amp;quot;,&amp;quot;accountNumber&amp;quot;:&amp;quot;100001&amp;quot;,&amp;quot;serviceType&amp;quot;:&amp;quot;both&amp;quot;},&lt;br /&gt;
{&amp;quot;name&amp;quot;:&amp;quot;apidomain68.com&amp;quot;,&amp;quot;accountNumber&amp;quot;:&amp;quot;100002&amp;quot;,&amp;quot;serviceType&amp;quot;:&amp;quot;both&amp;quot;}]}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Show ==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
The show operation will return detailed information about the specified domain name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The show operation only supports the GET HTTP verb. For text/xml format, refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/Domain.xsd Domain.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Notes'':&lt;br /&gt;
&lt;br /&gt;
# These two fields 'exchangeUsedStorage' and 'rsEmailUsedStorage' actually return the number of active mailboxes in each service respectively. &lt;br /&gt;
# Due to a performance issue Domain Public Folder Status is now returned from an individual URL. See [[Domain_(Rest_API)#Show_Status | Public Folders Status]]. The field 'publicFoldersEnabled' from Show Domain result always returns 'false' at this moment.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/999999/domains/example.com', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;domain 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; xmlns=&amp;quot;urn:xml:domain&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;name&amp;gt;apidomain21.com&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;accountNumber&amp;gt;100000&amp;lt;/accountNumber&amp;gt;&lt;br /&gt;
  &amp;lt;serviceType&amp;gt;both&amp;lt;/serviceType&amp;gt;&lt;br /&gt;
  &amp;lt;exchangeBaseMailboxSize&amp;gt;2048&amp;lt;/exchangeBaseMailboxSize&amp;gt;&lt;br /&gt;
  &amp;lt;exchangeUsedStorage&amp;gt;0&amp;lt;/exchangeUsedStorage&amp;gt;&lt;br /&gt;
  &amp;lt;exchangeTotalStorage&amp;gt;18432&amp;lt;/exchangeTotalStorage&amp;gt;&lt;br /&gt;
  &amp;lt;exchangeExtraStorage&amp;gt;10240&amp;lt;/exchangeExtraStorage&amp;gt;&lt;br /&gt;
  &amp;lt;exchangeMaxNumMailboxes&amp;gt;4&amp;lt;/exchangeMaxNumMailboxes&amp;gt;&lt;br /&gt;
  &amp;lt;rsEmailBaseMailboxSize&amp;gt;2048&amp;lt;/rsEmailBaseMailboxSize&amp;gt;&lt;br /&gt;
  &amp;lt;rsEmailMaxNumberMailboxes&amp;gt;4&amp;lt;/rsEmailMaxNumberMailboxes&amp;gt;&lt;br /&gt;
  &amp;lt;rsEmailExtraStorage&amp;gt;10240&amp;lt;/rsEmailExtraStorage&amp;gt;&lt;br /&gt;
  &amp;lt;rsEmailUsedStorage&amp;gt;0&amp;lt;/rsEmailUsedStorage&amp;gt;&lt;br /&gt;
  &amp;lt;aliases /&amp;gt;&lt;br /&gt;
  &amp;lt;archivingServiceEnabled&amp;gt;false&amp;lt;/archivingServiceEnabled&amp;gt;&lt;br /&gt;
  &amp;lt;publicFoldersEnabled&amp;gt;false&amp;lt;/publicFoldersEnabled&amp;gt;&lt;br /&gt;
  &amp;lt;blackBerryMobileServiceEnabled&amp;gt;true&amp;lt;/blackBerryMobileServiceEnabled&amp;gt;&lt;br /&gt;
  &amp;lt;blackBerryLicenses&amp;gt;4&amp;lt;/blackBerryLicenses&amp;gt;&lt;br /&gt;
  &amp;lt;activeSyncMobileServiceEnabled&amp;gt;true&amp;lt;/activeSyncMobileServiceEnabled&amp;gt;&lt;br /&gt;
  &amp;lt;activeSyncLicenses&amp;gt;4&amp;lt;/activeSyncLicenses&amp;gt;&lt;br /&gt;
&amp;lt;/domain&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&amp;quot;name&amp;quot;:&amp;quot;apidomain21.com&amp;quot;,&amp;quot;accountNumber&amp;quot;:&amp;quot;100000&amp;quot;,&amp;quot;serviceType&amp;quot;:&amp;quot;both&amp;quot;,&lt;br /&gt;
&amp;quot;exchangeBaseMailboxSize&amp;quot;:2048,&amp;quot;exchangeUsedStorage&amp;quot;:0,&amp;quot;exchangeTotalStorage&amp;quot;:18432,&lt;br /&gt;
&amp;quot;exchangeExtraStorage&amp;quot;:10240,&amp;quot;exchangeMaxNumMailboxes&amp;quot;:4,&amp;quot;rsEmailBaseMailboxSize&amp;quot;:2048,&lt;br /&gt;
&amp;quot;rsEmailMaxNumberMailboxes&amp;quot;:4,&amp;quot;rsEmailExtraStorage&amp;quot;:10240,&amp;quot;rsEmailUsedStorage&amp;quot;:0,&lt;br /&gt;
&amp;quot;aliases&amp;quot;:[],&amp;quot;archivingServiceEnabled&amp;quot;:false,&amp;quot;publicFoldersEnabled&amp;quot;:false,&lt;br /&gt;
&amp;quot;blackBerryMobileServiceEnabled&amp;quot;:true,&amp;quot;blackBerryLicenses&amp;quot;:4,&amp;quot;activeSyncMobileServiceEnabled&amp;quot;:true,&lt;br /&gt;
&amp;quot;activeSyncLicenses&amp;quot;:4}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Add/Edit (Reseller Only)==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
 Add: [POST] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
 Edit: [PUT] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Adds/edits a new domain to the account with the data specified. To add a domain to your own account, use your own account id.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| serviceType&lt;br /&gt;
| string&lt;br /&gt;
| Domain service type. &amp;quot;rsemail&amp;quot; = &amp;quot;Rackspace Email Only&amp;quot;. &amp;quot;exchange&amp;quot; = &amp;quot;Exchange Only&amp;quot;. &amp;quot;both&amp;quot; = &amp;quot;Rackspace Email and Exchange&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| exchangeExtraStorage&lt;br /&gt;
| int&lt;br /&gt;
| Exchange service extra storage in megabytes&lt;br /&gt;
|-&lt;br /&gt;
| exchangeMaxNumMailboxes&lt;br /&gt;
| int&lt;br /&gt;
| Maximum number of mailboxes allowed under the domain Exchange service. Required for Adding Exchange service&lt;br /&gt;
|-&lt;br /&gt;
| rsEmailBaseMailboxSize&lt;br /&gt;
| int&lt;br /&gt;
| Rackspace Email base mailbox size in megabytes&lt;br /&gt;
|-&lt;br /&gt;
| rsEmailMaxNumberMailboxes&lt;br /&gt;
| int&lt;br /&gt;
| Maximum number of mailboxes allowed under the domain Rackspace Email service. Required for Adding Rackspace Email service&lt;br /&gt;
|-&lt;br /&gt;
| rsEmailExtraStorage&lt;br /&gt;
| int&lt;br /&gt;
| Rackspace Email service extra storage in megabytes&lt;br /&gt;
|-&lt;br /&gt;
| blackBerryMobileServiceEnabled&lt;br /&gt;
| boolean&lt;br /&gt;
| Enable or disable domain BlackBerry Mobile service&lt;br /&gt;
|-&lt;br /&gt;
| blackBerryLicenses&lt;br /&gt;
| int&lt;br /&gt;
| Maximum number of mailboxes allowed to have BlackBerry Mobile service. 0 means unlimited&lt;br /&gt;
|-&lt;br /&gt;
| activeSyncMobileServiceEnabled&lt;br /&gt;
| boolean&lt;br /&gt;
| Enable or disable domain ActiveSync Mobile service&lt;br /&gt;
|-&lt;br /&gt;
| activeSyncLicenses&lt;br /&gt;
| int&lt;br /&gt;
| Maximum number of mailboxes allowed to have ActiveSync Mobile service. 0 means unlimited&lt;br /&gt;
|-&lt;br /&gt;
| goodMobileServiceEnabled (deprecated)&lt;br /&gt;
| boolean&lt;br /&gt;
| Enable or disable domain Good Mobile service&lt;br /&gt;
|-&lt;br /&gt;
| goodMobileLicenses (deprecated)&lt;br /&gt;
| int&lt;br /&gt;
| Maximum number of mailboxes allowed to have Good Mobile service. 0 means unlimited&lt;br /&gt;
|-&lt;br /&gt;
| archivingServiceEnabled&lt;br /&gt;
| boolean&lt;br /&gt;
| Enable or disable domain archiving service&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post '/customers/123455/domains/newcompany.com', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
  'maxNumMailboxes' =&amp;gt; '5',&lt;br /&gt;
  'extraStorage' =&amp;gt; '1024'&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
put '/customers/123455/domains/newcompany.com', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
  'maxNumMailboxes' =&amp;gt; '25',&lt;br /&gt;
  'extraStorage' =&amp;gt; '2048'&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| New domain name doesn't meet the naming requirements&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid domain name&lt;br /&gt;
|-&lt;br /&gt;
| New domain name already exists&lt;br /&gt;
| 400&lt;br /&gt;
| abc.com already exists as a domain or alternate domain&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Move (Reseller Only)==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[PUT] https://api.emailsrvr.com/v0/customers/&lt;br /&gt;
      (new customer account number)/domains/(domain name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Moves the domain to another customer account.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| moveDomain&lt;br /&gt;
| boolean&lt;br /&gt;
| Indicate whether or not moving the domain&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
Note 'Move Domain' and 'Edit Domain' share the same URI and HTTP verb. When the domain doesn't belong to the customer and 'moveDomain' is set to 'true', API will take the request as a 'Move Domain' call.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
put '/customers/123456/domains/newcompany.com', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
  'moveDomain' =&amp;gt; 'true'&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Delete (Reseller Only)==&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[DELETE] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Deletes the domain.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The domain and all the mailboxes, mailbox contents, groups, and contacts are deleted permanently.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
delete '/customers/12345678/domains/newcompany.com', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Alternate Domains ==&lt;br /&gt;
&lt;br /&gt;
=== Index (Reseller Only) ===&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/&lt;br /&gt;
                domains/(domain name)/alternatedomains&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
This operation returns a list of Domain Aliases and Accepted Domains for the domain. The type of the alternate domain is indicated by the 'type' data field. The XML schema for the returned data is [http://api.emailsrvr.com/v0/Schemas/DomainSplitRouting.xsd DomainAlternateList.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/test.com/alternatedomains', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;alternateDomainList 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; xmlns=&amp;quot;urn:xml:domainAlternateList&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;alternateDomains&amp;gt;&lt;br /&gt;
    &amp;lt;alternateDomain&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;domainalias.com&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;type&amp;gt;DomainAlias&amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;/alternateDomain&amp;gt;&lt;br /&gt;
    &amp;lt;alternateDomain&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;accepteddomain.com&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;type&amp;gt;AcceptedDomain&amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;/alternateDomain&amp;gt;&lt;br /&gt;
  &amp;lt;/alternateDomains&amp;gt;&lt;br /&gt;
&amp;lt;/alternateDomainList&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{&amp;quot;alternateDomains&amp;quot;:[{&amp;quot;name&amp;quot;:&amp;quot;domainalias.com&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;DomainAlias&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;accepteddomain.com&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;AcceptedDomain&amp;quot;}]}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add (Reseller Only) ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
 [POST] https://api.emailsrvr.com/v0/customers/(customer account number)&lt;br /&gt;
    /domains/(domain name)/alternatedomains/(alternate domain name)&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Adds either a Domain Alias or Accepted Domain to the domain.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| type&lt;br /&gt;
| string&lt;br /&gt;
| Alternate domain type. Send &amp;quot;DomainAlias&amp;quot; for a domain alias, and &amp;quot;AcceptedDomain&amp;quot; for an accepted domain. (Required)&lt;br /&gt;
|-&lt;br /&gt;
| createForExistingRecipients&lt;br /&gt;
| boolean&lt;br /&gt;
| Whether the alternate addresses should be created for existing mailboxes when adding an Accepted Domain. Sending this field in the request when the type is Domain Alias will throw an error. This defaults to false.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post '/customers/123456/domains/example.com/alternatedomains/accepteddomain.com', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
  'type' =&amp;gt; 'AcceptedDomain'&lt;br /&gt;
  'createForExistingRecipients' =&amp;gt; 'true'&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| New domain name doesn't meet the naming requirements&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid domain name&lt;br /&gt;
|-&lt;br /&gt;
| Alternate domain already exists&lt;br /&gt;
| 400&lt;br /&gt;
| abc.com already exists as a domain or alternate domain&lt;br /&gt;
|-&lt;br /&gt;
| The 'createForExistingRecipients' field was sent with either data, or as a null field. It should not be included in the form data at all.&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid Alternate Domain Setting: createForExistingRecipients is an invalid setting for Domain Aliases&lt;br /&gt;
|-&lt;br /&gt;
| The only valid values for 'type' are 'DomainAlias' and 'AcceptedDomain', for a Domain Alias and Accepted Domain respectively.&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid Alternate Domain type&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Delete (Reseller Only) ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[DELETE] https://api.emailsrvr.com/v0/customers/(customer account number)/&lt;br /&gt;
      domains/(domain name)/alternatedomains/(alternate domain name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Deletes the alternate domain.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
delete '/customers/12345678/domains/example.com/alternatedomains/accepteddomain.com'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Split Domain Routing ==&lt;br /&gt;
&lt;br /&gt;
=== Show Settings ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain)/splitdomainrouting&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
''Description'':&lt;br /&gt;
Shows the current external email server. The XML schema document for the output of this command is [http://api.emailsrvr.com/v0/Schemas/DomainSplitRouting.xsd DomainSplitRouting.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/company.com/splitdomainrouting', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;splitDomainRouting 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; xmlns=&amp;quot;urn:xml:splitDomainRouting&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;externalServer&amp;gt;email.externalserver.com&amp;lt;/externalServer&amp;gt;&lt;br /&gt;
&amp;lt;/splitDomainRouting&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''JSON Result Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&amp;quot;externalServer&amp;quot;:&amp;quot;email.externalserver.com&amp;quot;}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Edit Settings ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[PUT] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain)/splitdomainrouting&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
This command sets the external email server. This command will return a success when the verification passes. Since this involves communication to the external server the request may take some time. If the verification fails a 400 return code will be sent back with the verification's error message.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| externalServer&lt;br /&gt;
| string&lt;br /&gt;
| The address of the external email server. To turn off split domain routing send 'none'. (Required)&lt;br /&gt;
|-&lt;br /&gt;
| verificationAddress&lt;br /&gt;
| string&lt;br /&gt;
| An email address part of your domain or one of the alternate domains that the external server is already set up to handle. (Required only when turning on split domain routing, Do not send this field if turning off.)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
put '/customers/12345678/domains/company.com/splitdomainrouting', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
  'externalServer' =&amp;gt; 'email.externalserver.com',&lt;br /&gt;
  'verificationAddress' =&amp;gt; 'externalaccount@company.com',&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| The SMTP host could not be found.&lt;br /&gt;
| 400&lt;br /&gt;
| One of the verification error messages.&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
== Archiving SSO Login URL ==&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain)/archivingSSOLoginURL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Gets the domain archiving service SSO login URL.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The retrieved URL can be used in browser to access the domain archiving control panel.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/company.com/archivingSSOLoginURL', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| No archiving service&lt;br /&gt;
| 404&lt;br /&gt;
| Domain abc.com has no archiving service enabled&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Domain Public Folders ==&lt;br /&gt;
&lt;br /&gt;
=== Show Status ===&lt;br /&gt;
''URL'': &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
   [GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)/ex/publicfolders&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Retrieves the Exchange Public Folders status for the domain. The XML schema for the returned data is [http://api.emailsrvr.com/v0/Schemas/DomainPublicFolders.xsd DomainPublicFolders.xsd]&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/company.com/ex/publicFolders', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;domainPublicFolders xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:domainPublicFolders&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;enabled&amp;gt;true&amp;lt;/enabled&amp;gt;&lt;br /&gt;
&amp;lt;/domainPublicFolders&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enable ===&lt;br /&gt;
''URL'': &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
   [PUT] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)/ex/publicfolders&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Enables the Exchange Public Folders feature on the domain. Once enabled, it cannot be disabled.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| enabled&lt;br /&gt;
| string&lt;br /&gt;
| Whether to enable public folders. Once enabled, it cannot be disabled.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
put '/customers/12345678/domains/company.com/ex/publicFolders', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
  'enabled' =&amp;gt; 'true'&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Public folders cannot be turned off after it's been turned on.&lt;br /&gt;
| 400&lt;br /&gt;
| Public Folders cannot be disabled once enabled&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Domain Email Everyone ==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
   [POST] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)/emaileveryone&lt;br /&gt;
   [POST] https://api.emailsrvr.com/v0/domains/(domain name)/emaileveryone&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
Send an email to all mailboxes for the domain. This request returns a list of recipients.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| fromName&lt;br /&gt;
| string&lt;br /&gt;
| Sender's Name.&lt;br /&gt;
|-&lt;br /&gt;
| fromAddress&lt;br /&gt;
| string&lt;br /&gt;
| Sender's Email Address.&lt;br /&gt;
|-&lt;br /&gt;
| subject&lt;br /&gt;
| string&lt;br /&gt;
| Message subject.&lt;br /&gt;
|-&lt;br /&gt;
| body&lt;br /&gt;
| string&lt;br /&gt;
| Message body.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post'/customers/12345678/domains/example.com/emaileveryone', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
  'fromName' =&amp;gt; 'John Doe',&lt;br /&gt;
  'fromAddress' =&amp;gt; 'john.doe@test.com',&lt;br /&gt;
  'subject' =&amp;gt; 'Hi All',&lt;br /&gt;
  'body' =&amp;gt; 'Hello World.',&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;emailAddressList xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:emailAddressList&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;emailAddresses&amp;gt;&lt;br /&gt;
    &amp;lt;address&amp;gt;a@example.com&amp;lt;/address&amp;gt;&lt;br /&gt;
    &amp;lt;address&amp;gt;b@example.com&amp;lt;/address&amp;gt;&lt;br /&gt;
  &amp;lt;/emailAddresses&amp;gt;&lt;br /&gt;
&amp;lt;/emailAddressList&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;emailAddresses&amp;quot;:[&amp;quot;a@example.com&amp;quot;,&amp;quot;b@example.com&amp;quot;]}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Show Domain Catch-All Address ==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)/catchalladdress&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/domains/(domain name)/catchalladdress&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Return the Catch-All Address for the domain. Returns empty string when no Catch-All Address set for the domain.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
When an email is sent to a mailbox that does not exist on your domain, deliver the email to this address. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/999999/domains/example.com/catchalladdress', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&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;emailAddress xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:emailAddress&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;address&amp;gt;abc@example.com&amp;lt;/address&amp;gt;&lt;br /&gt;
&amp;lt;/emailAddress&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&amp;quot;address&amp;quot;:&amp;quot;abc@example.com&amp;quot;}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Edit Domain Catch-All Address ==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[PUT] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)/catchalladdress&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[PUT] https://api.emailsrvr.com/v0/domains/(domain name)/catchalladdress&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Edit the Catch-All Address for the domain.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
When an email is sent to a mailbox that does not exist on your domain, deliver the email to this address. &lt;br /&gt;
&lt;br /&gt;
''Notes'':&lt;br /&gt;
&lt;br /&gt;
This request may take about 1-2 minutes to be applied to the domain.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| address&lt;br /&gt;
| string&lt;br /&gt;
| The Catch-All email address. Set address to empty string to remove Catch-All Address.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post'/customers/12345678/domains/example.com/emaileveryone', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
  'address' =&amp;gt; 'abc@example.com'&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zhen.wei</name></author>	</entry>

	<entry>
		<id>http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Domain_(Rest_API)&amp;diff=446</id>
		<title>Domain (Rest API)</title>
		<link rel="alternate" type="text/html" href="http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Domain_(Rest_API)&amp;diff=446"/>
				<updated>2011-07-08T17:20:11Z</updated>
		
		<summary type="html">&lt;p&gt;Zhen.wei: updated public folder info&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Index ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
This operation returns a list of domains under the account. If a customer account is specified, then a list of domains under that specific account will be returned.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
To retrieve a list of domains owned by the account that is logged in, use &amp;quot;me&amp;quot; as the customer account number i.e. &amp;lt;nowiki&amp;gt;'https://api.emailsrvr.com/v0/customers/me/domains'&amp;lt;/nowiki&amp;gt;. To retrieve a list of domains owned by all customer sub-accounts and your own account, use &amp;quot;all&amp;quot; as the customer account number.&lt;br /&gt;
&lt;br /&gt;
The index operation only supports the GET HTTP verb. For text/xml format, refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/DomainList.xsd DomainList.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/all/domains?size=100&amp;amp;offset=10', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;domainList 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; xmlns=&amp;quot;urn:xml:domainList&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;offset&amp;gt;0&amp;lt;/offset&amp;gt;&lt;br /&gt;
  &amp;lt;size&amp;gt;50&amp;lt;/size&amp;gt;&lt;br /&gt;
  &amp;lt;total&amp;gt;3&amp;lt;/total&amp;gt;&lt;br /&gt;
  &amp;lt;domains&amp;gt;&lt;br /&gt;
    &amp;lt;domain&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;apidomain53.com&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;accountNumber&amp;gt;100000&amp;lt;/accountNumber&amp;gt;&lt;br /&gt;
      &amp;lt;serviceType&amp;gt;both&amp;lt;/serviceType&amp;gt;&lt;br /&gt;
    &amp;lt;/domain&amp;gt;&lt;br /&gt;
    &amp;lt;domain&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;apidomain66.com&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;accountNumber&amp;gt;100001&amp;lt;/accountNumber&amp;gt;&lt;br /&gt;
      &amp;lt;serviceType&amp;gt;both&amp;lt;/serviceType&amp;gt;&lt;br /&gt;
    &amp;lt;/domain&amp;gt;&lt;br /&gt;
    &amp;lt;domain&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;apidomain68.com&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;accountNumber&amp;gt;100002&amp;lt;/accountNumber&amp;gt;&lt;br /&gt;
      &amp;lt;serviceType&amp;gt;both&amp;lt;/serviceType&amp;gt;&lt;br /&gt;
    &amp;lt;/domain&amp;gt;&lt;br /&gt;
  &amp;lt;/domains&amp;gt;&lt;br /&gt;
&amp;lt;/domainList&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&amp;quot;offset&amp;quot;:0,&amp;quot;size&amp;quot;:50,&amp;quot;total&amp;quot;:3,&amp;quot;domains&amp;quot;:&lt;br /&gt;
[{&amp;quot;name&amp;quot;:&amp;quot;apidomain53.com&amp;quot;,&amp;quot;accountNumber&amp;quot;:&amp;quot;100000&amp;quot;,&amp;quot;serviceType&amp;quot;:&amp;quot;both&amp;quot;},&lt;br /&gt;
{&amp;quot;name&amp;quot;:&amp;quot;apidomain66.com&amp;quot;,&amp;quot;accountNumber&amp;quot;:&amp;quot;100001&amp;quot;,&amp;quot;serviceType&amp;quot;:&amp;quot;both&amp;quot;},&lt;br /&gt;
{&amp;quot;name&amp;quot;:&amp;quot;apidomain68.com&amp;quot;,&amp;quot;accountNumber&amp;quot;:&amp;quot;100002&amp;quot;,&amp;quot;serviceType&amp;quot;:&amp;quot;both&amp;quot;}]}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Show ==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
The show operation will return detailed information about the specified domain name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The show operation only supports the GET HTTP verb. For text/xml format, refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/Domain.xsd Domain.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Note'':&lt;br /&gt;
&lt;br /&gt;
# These two fields 'exchangeUsedStorage' and 'rsEmailUsedStorage' actually return the number of active mailboxes in each service respectively. &lt;br /&gt;
# Due to a performance issue Domain Public Folder Status is now returned from an individual URL. See [[Domain_(Rest_API)#Show_Status | Public Folders Status]]. The field 'publicFoldersEnabled' from Show Domain result always returns 'false' at this moment.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/999999/domains/example.com', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;domain 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; xmlns=&amp;quot;urn:xml:domain&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;name&amp;gt;apidomain21.com&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;accountNumber&amp;gt;100000&amp;lt;/accountNumber&amp;gt;&lt;br /&gt;
  &amp;lt;serviceType&amp;gt;both&amp;lt;/serviceType&amp;gt;&lt;br /&gt;
  &amp;lt;exchangeBaseMailboxSize&amp;gt;2048&amp;lt;/exchangeBaseMailboxSize&amp;gt;&lt;br /&gt;
  &amp;lt;exchangeUsedStorage&amp;gt;0&amp;lt;/exchangeUsedStorage&amp;gt;&lt;br /&gt;
  &amp;lt;exchangeTotalStorage&amp;gt;18432&amp;lt;/exchangeTotalStorage&amp;gt;&lt;br /&gt;
  &amp;lt;exchangeExtraStorage&amp;gt;10240&amp;lt;/exchangeExtraStorage&amp;gt;&lt;br /&gt;
  &amp;lt;exchangeMaxNumMailboxes&amp;gt;4&amp;lt;/exchangeMaxNumMailboxes&amp;gt;&lt;br /&gt;
  &amp;lt;rsEmailBaseMailboxSize&amp;gt;2048&amp;lt;/rsEmailBaseMailboxSize&amp;gt;&lt;br /&gt;
  &amp;lt;rsEmailMaxNumberMailboxes&amp;gt;4&amp;lt;/rsEmailMaxNumberMailboxes&amp;gt;&lt;br /&gt;
  &amp;lt;rsEmailExtraStorage&amp;gt;10240&amp;lt;/rsEmailExtraStorage&amp;gt;&lt;br /&gt;
  &amp;lt;rsEmailUsedStorage&amp;gt;0&amp;lt;/rsEmailUsedStorage&amp;gt;&lt;br /&gt;
  &amp;lt;aliases /&amp;gt;&lt;br /&gt;
  &amp;lt;archivingServiceEnabled&amp;gt;false&amp;lt;/archivingServiceEnabled&amp;gt;&lt;br /&gt;
  &amp;lt;publicFoldersEnabled&amp;gt;false&amp;lt;/publicFoldersEnabled&amp;gt;&lt;br /&gt;
  &amp;lt;blackBerryMobileServiceEnabled&amp;gt;true&amp;lt;/blackBerryMobileServiceEnabled&amp;gt;&lt;br /&gt;
  &amp;lt;blackBerryLicenses&amp;gt;4&amp;lt;/blackBerryLicenses&amp;gt;&lt;br /&gt;
  &amp;lt;activeSyncMobileServiceEnabled&amp;gt;true&amp;lt;/activeSyncMobileServiceEnabled&amp;gt;&lt;br /&gt;
  &amp;lt;activeSyncLicenses&amp;gt;4&amp;lt;/activeSyncLicenses&amp;gt;&lt;br /&gt;
&amp;lt;/domain&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&amp;quot;name&amp;quot;:&amp;quot;apidomain21.com&amp;quot;,&amp;quot;accountNumber&amp;quot;:&amp;quot;100000&amp;quot;,&amp;quot;serviceType&amp;quot;:&amp;quot;both&amp;quot;,&lt;br /&gt;
&amp;quot;exchangeBaseMailboxSize&amp;quot;:2048,&amp;quot;exchangeUsedStorage&amp;quot;:0,&amp;quot;exchangeTotalStorage&amp;quot;:18432,&lt;br /&gt;
&amp;quot;exchangeExtraStorage&amp;quot;:10240,&amp;quot;exchangeMaxNumMailboxes&amp;quot;:4,&amp;quot;rsEmailBaseMailboxSize&amp;quot;:2048,&lt;br /&gt;
&amp;quot;rsEmailMaxNumberMailboxes&amp;quot;:4,&amp;quot;rsEmailExtraStorage&amp;quot;:10240,&amp;quot;rsEmailUsedStorage&amp;quot;:0,&lt;br /&gt;
&amp;quot;aliases&amp;quot;:[],&amp;quot;archivingServiceEnabled&amp;quot;:false,&amp;quot;publicFoldersEnabled&amp;quot;:false,&lt;br /&gt;
&amp;quot;blackBerryMobileServiceEnabled&amp;quot;:true,&amp;quot;blackBerryLicenses&amp;quot;:4,&amp;quot;activeSyncMobileServiceEnabled&amp;quot;:true,&lt;br /&gt;
&amp;quot;activeSyncLicenses&amp;quot;:4}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Add/Edit (Reseller Only)==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
 Add: [POST] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
 Edit: [PUT] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Adds/edits a new domain to the account with the data specified. To add a domain to your own account, use your own account id.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| serviceType&lt;br /&gt;
| string&lt;br /&gt;
| Domain service type. &amp;quot;rsemail&amp;quot; = &amp;quot;Rackspace Email Only&amp;quot;. &amp;quot;exchange&amp;quot; = &amp;quot;Exchange Only&amp;quot;. &amp;quot;both&amp;quot; = &amp;quot;Rackspace Email and Exchange&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| exchangeExtraStorage&lt;br /&gt;
| int&lt;br /&gt;
| Exchange service extra storage in megabytes&lt;br /&gt;
|-&lt;br /&gt;
| exchangeMaxNumMailboxes&lt;br /&gt;
| int&lt;br /&gt;
| Maximum number of mailboxes allowed under the domain Exchange service. Required for Adding Exchange service&lt;br /&gt;
|-&lt;br /&gt;
| rsEmailBaseMailboxSize&lt;br /&gt;
| int&lt;br /&gt;
| Rackspace Email base mailbox size in megabytes&lt;br /&gt;
|-&lt;br /&gt;
| rsEmailMaxNumberMailboxes&lt;br /&gt;
| int&lt;br /&gt;
| Maximum number of mailboxes allowed under the domain Rackspace Email service. Required for Adding Rackspace Email service&lt;br /&gt;
|-&lt;br /&gt;
| rsEmailExtraStorage&lt;br /&gt;
| int&lt;br /&gt;
| Rackspace Email service extra storage in megabytes&lt;br /&gt;
|-&lt;br /&gt;
| blackBerryMobileServiceEnabled&lt;br /&gt;
| boolean&lt;br /&gt;
| Enable or disable domain BlackBerry Mobile service&lt;br /&gt;
|-&lt;br /&gt;
| blackBerryLicenses&lt;br /&gt;
| int&lt;br /&gt;
| Maximum number of mailboxes allowed to have BlackBerry Mobile service. 0 means unlimited&lt;br /&gt;
|-&lt;br /&gt;
| activeSyncMobileServiceEnabled&lt;br /&gt;
| boolean&lt;br /&gt;
| Enable or disable domain ActiveSync Mobile service&lt;br /&gt;
|-&lt;br /&gt;
| activeSyncLicenses&lt;br /&gt;
| int&lt;br /&gt;
| Maximum number of mailboxes allowed to have ActiveSync Mobile service. 0 means unlimited&lt;br /&gt;
|-&lt;br /&gt;
| goodMobileServiceEnabled (deprecated)&lt;br /&gt;
| boolean&lt;br /&gt;
| Enable or disable domain Good Mobile service&lt;br /&gt;
|-&lt;br /&gt;
| goodMobileLicenses (deprecated)&lt;br /&gt;
| int&lt;br /&gt;
| Maximum number of mailboxes allowed to have Good Mobile service. 0 means unlimited&lt;br /&gt;
|-&lt;br /&gt;
| archivingServiceEnabled&lt;br /&gt;
| boolean&lt;br /&gt;
| Enable or disable domain archiving service&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post '/customers/123455/domains/newcompany.com', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
  'maxNumMailboxes' =&amp;gt; '5',&lt;br /&gt;
  'extraStorage' =&amp;gt; '1024'&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
put '/customers/123455/domains/newcompany.com', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
  'maxNumMailboxes' =&amp;gt; '25',&lt;br /&gt;
  'extraStorage' =&amp;gt; '2048'&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| New domain name doesn't meet the naming requirements&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid domain name&lt;br /&gt;
|-&lt;br /&gt;
| New domain name already exists&lt;br /&gt;
| 400&lt;br /&gt;
| abc.com already exists as a domain or alternate domain&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Move (Reseller Only)==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[PUT] https://api.emailsrvr.com/v0/customers/&lt;br /&gt;
      (new customer account number)/domains/(domain name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Moves the domain to another customer account.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| moveDomain&lt;br /&gt;
| boolean&lt;br /&gt;
| Indicate whether or not moving the domain&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
Note 'Move Domain' and 'Edit Domain' share the same URI and HTTP verb. When the domain doesn't belong to the customer and 'moveDomain' is set to 'true', API will take the request as a 'Move Domain' call.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
put '/customers/123456/domains/newcompany.com', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
  'moveDomain' =&amp;gt; 'true'&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Delete (Reseller Only)==&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[DELETE] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Deletes the domain.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The domain and all the mailboxes, mailbox contents, groups, and contacts are deleted permanently.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
delete '/customers/12345678/domains/newcompany.com', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Alternate Domains ==&lt;br /&gt;
&lt;br /&gt;
=== Index (Reseller Only) ===&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/&lt;br /&gt;
                domains/(domain name)/alternatedomains&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
This operation returns a list of Domain Aliases and Accepted Domains for the domain. The type of the alternate domain is indicated by the 'type' data field. The XML schema for the returned data is [http://api.emailsrvr.com/v0/Schemas/DomainSplitRouting.xsd DomainAlternateList.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/test.com/alternatedomains', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;alternateDomainList 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; xmlns=&amp;quot;urn:xml:domainAlternateList&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;alternateDomains&amp;gt;&lt;br /&gt;
    &amp;lt;alternateDomain&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;domainalias.com&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;type&amp;gt;DomainAlias&amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;/alternateDomain&amp;gt;&lt;br /&gt;
    &amp;lt;alternateDomain&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;accepteddomain.com&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;type&amp;gt;AcceptedDomain&amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;/alternateDomain&amp;gt;&lt;br /&gt;
  &amp;lt;/alternateDomains&amp;gt;&lt;br /&gt;
&amp;lt;/alternateDomainList&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{&amp;quot;alternateDomains&amp;quot;:[{&amp;quot;name&amp;quot;:&amp;quot;domainalias.com&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;DomainAlias&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;accepteddomain.com&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;AcceptedDomain&amp;quot;}]}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add (Reseller Only) ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
 [POST] https://api.emailsrvr.com/v0/customers/(customer account number)&lt;br /&gt;
    /domains/(domain name)/alternatedomains/(alternate domain name)&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Adds either a Domain Alias or Accepted Domain to the domain.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| type&lt;br /&gt;
| string&lt;br /&gt;
| Alternate domain type. Send &amp;quot;DomainAlias&amp;quot; for a domain alias, and &amp;quot;AcceptedDomain&amp;quot; for an accepted domain. (Required)&lt;br /&gt;
|-&lt;br /&gt;
| createForExistingRecipients&lt;br /&gt;
| boolean&lt;br /&gt;
| Whether the alternate addresses should be created for existing mailboxes when adding an Accepted Domain. Sending this field in the request when the type is Domain Alias will throw an error. This defaults to false.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post '/customers/123456/domains/example.com/alternatedomains/accepteddomain.com', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
  'type' =&amp;gt; 'AcceptedDomain'&lt;br /&gt;
  'createForExistingRecipients' =&amp;gt; 'true'&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| New domain name doesn't meet the naming requirements&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid domain name&lt;br /&gt;
|-&lt;br /&gt;
| Alternate domain already exists&lt;br /&gt;
| 400&lt;br /&gt;
| abc.com already exists as a domain or alternate domain&lt;br /&gt;
|-&lt;br /&gt;
| The 'createForExistingRecipients' field was sent with either data, or as a null field. It should not be included in the form data at all.&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid Alternate Domain Setting: createForExistingRecipients is an invalid setting for Domain Aliases&lt;br /&gt;
|-&lt;br /&gt;
| The only valid values for 'type' are 'DomainAlias' and 'AcceptedDomain', for a Domain Alias and Accepted Domain respectively.&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid Alternate Domain type&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Delete (Reseller Only) ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[DELETE] https://api.emailsrvr.com/v0/customers/(customer account number)/&lt;br /&gt;
      domains/(domain name)/alternatedomains/(alternate domain name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Deletes the alternate domain.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
delete '/customers/12345678/domains/example.com/alternatedomains/accepteddomain.com'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Split Domain Routing ==&lt;br /&gt;
&lt;br /&gt;
=== Show Settings ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain)/splitdomainrouting&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
''Description'':&lt;br /&gt;
Shows the current external email server. The XML schema document for the output of this command is [http://api.emailsrvr.com/v0/Schemas/DomainSplitRouting.xsd DomainSplitRouting.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/company.com/splitdomainrouting', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;splitDomainRouting 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; xmlns=&amp;quot;urn:xml:splitDomainRouting&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;externalServer&amp;gt;email.externalserver.com&amp;lt;/externalServer&amp;gt;&lt;br /&gt;
&amp;lt;/splitDomainRouting&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''JSON Result Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&amp;quot;externalServer&amp;quot;:&amp;quot;email.externalserver.com&amp;quot;}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Edit Settings ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[PUT] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain)/splitdomainrouting&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
This command sets the external email server. This command will return a success when the verification passes. Since this involves communication to the external server the request may take some time. If the verification fails a 400 return code will be sent back with the verification's error message.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| externalServer&lt;br /&gt;
| string&lt;br /&gt;
| The address of the external email server. To turn off split domain routing send 'none'. (Required)&lt;br /&gt;
|-&lt;br /&gt;
| verificationAddress&lt;br /&gt;
| string&lt;br /&gt;
| An email address part of your domain or one of the alternate domains that the external server is already set up to handle. (Required only when turning on split domain routing, Do not send this field if turning off.)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
put '/customers/12345678/domains/company.com/splitdomainrouting', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
  'externalServer' =&amp;gt; 'email.externalserver.com',&lt;br /&gt;
  'verificationAddress' =&amp;gt; 'externalaccount@company.com',&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| The SMTP host could not be found.&lt;br /&gt;
| 400&lt;br /&gt;
| One of the verification error messages.&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
== Archiving SSO Login URL ==&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain)/archivingSSOLoginURL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Gets the domain archiving service SSO login URL.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The retrieved URL can be used in browser to access the domain archiving control panel.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/company.com/archivingSSOLoginURL', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| No archiving service&lt;br /&gt;
| 404&lt;br /&gt;
| Domain abc.com has no archiving service enabled&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Domain Public Folders ==&lt;br /&gt;
&lt;br /&gt;
=== Show Status ===&lt;br /&gt;
''URL'': &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
   [GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)/ex/publicfolders&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Retrieves the Exchange Public Folders status for the domain. The XML schema for the returned data is [http://api.emailsrvr.com/v0/Schemas/DomainPublicFolders.xsd DomainPublicFolders.xsd]&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/company.com/ex/publicFolders', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;domainPublicFolders xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:domainPublicFolders&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;enabled&amp;gt;true&amp;lt;/enabled&amp;gt;&lt;br /&gt;
&amp;lt;/domainPublicFolders&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enable ===&lt;br /&gt;
''URL'': &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
   [PUT] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)/ex/publicfolders&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Enables the Exchange Public Folders feature on the domain. Once enabled, it cannot be disabled.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| enabled&lt;br /&gt;
| string&lt;br /&gt;
| Whether to enable public folders. Once enabled, it cannot be disabled.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
put '/customers/12345678/domains/company.com/ex/publicFolders', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
  'enabled' =&amp;gt; 'true'&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Public folders cannot be turned off after it's been turned on.&lt;br /&gt;
| 400&lt;br /&gt;
| Public Folders cannot be disabled once enabled&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Domain Email Everyone ==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
   [POST] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)/emaileveryone&lt;br /&gt;
   [POST] https://api.emailsrvr.com/v0/domains/(domain name)/emaileveryone&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
Send an email to all mailboxes for the domain. This request returns a list of recipients.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| fromName&lt;br /&gt;
| string&lt;br /&gt;
| Sender's Name.&lt;br /&gt;
|-&lt;br /&gt;
| fromAddress&lt;br /&gt;
| string&lt;br /&gt;
| Sender's Email Address.&lt;br /&gt;
|-&lt;br /&gt;
| subject&lt;br /&gt;
| string&lt;br /&gt;
| Message subject.&lt;br /&gt;
|-&lt;br /&gt;
| body&lt;br /&gt;
| string&lt;br /&gt;
| Message body.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post'/customers/12345678/domains/example.com/emaileveryone', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
  'fromName' =&amp;gt; 'John Doe',&lt;br /&gt;
  'fromAddress' =&amp;gt; 'john.doe@test.com',&lt;br /&gt;
  'subject' =&amp;gt; 'Hi All',&lt;br /&gt;
  'body' =&amp;gt; 'Hello World.',&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;emailAddressList xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:emailAddressList&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;emailAddresses&amp;gt;&lt;br /&gt;
    &amp;lt;address&amp;gt;a@example.com&amp;lt;/address&amp;gt;&lt;br /&gt;
    &amp;lt;address&amp;gt;b@example.com&amp;lt;/address&amp;gt;&lt;br /&gt;
  &amp;lt;/emailAddresses&amp;gt;&lt;br /&gt;
&amp;lt;/emailAddressList&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;emailAddresses&amp;quot;:[&amp;quot;a@example.com&amp;quot;,&amp;quot;b@example.com&amp;quot;]}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Show Domain Catch-All Address ==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)/catchalladdress&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/domains/(domain name)/catchalladdress&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Return the Catch-All Address for the domain. Returns empty string when no Catch-All Address set for the domain.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
When an email is sent to a mailbox that does not exist on your domain, deliver the email to this address. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/999999/domains/example.com/catchalladdress', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&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;emailAddress xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:emailAddress&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;address&amp;gt;abc@example.com&amp;lt;/address&amp;gt;&lt;br /&gt;
&amp;lt;/emailAddress&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&amp;quot;address&amp;quot;:&amp;quot;abc@example.com&amp;quot;}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Edit Domain Catch-All Address ==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[PUT] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)/catchalladdress&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[PUT] https://api.emailsrvr.com/v0/domains/(domain name)/catchalladdress&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Edit the Catch-All Address for the domain.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
When an email is sent to a mailbox that does not exist on your domain, deliver the email to this address. &lt;br /&gt;
&lt;br /&gt;
''Notes'':&lt;br /&gt;
&lt;br /&gt;
This request may take about 1-2 minutes to be applied to the domain.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| address&lt;br /&gt;
| string&lt;br /&gt;
| The Catch-All email address. Set address to empty string to remove Catch-All Address.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post'/customers/12345678/domains/example.com/emaileveryone', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
  'address' =&amp;gt; 'abc@example.com'&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zhen.wei</name></author>	</entry>

	<entry>
		<id>http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Rackspace_Storage_Notification_(Rest_API)&amp;diff=445</id>
		<title>Rackspace Storage Notification (Rest API)</title>
		<link rel="alternate" type="text/html" href="http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Rackspace_Storage_Notification_(Rest_API)&amp;diff=445"/>
				<updated>2011-06-21T15:50:09Z</updated>
		
		<summary type="html">&lt;p&gt;Zhen.wei: minor typo fix.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== Show ==&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)/rs/storageNotification&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
The show operation will return detailed information about a given domain's Rackspace Mailbox storage notification settings that control whether an email notification is sent to users when their mailbox reaches a certain capacity.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The show operation only supports the GET HTTP verb. For .xml format refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/RSMailbox.xsd RSMailbox.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/example.com/rs/storageNotification', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;rsStorageNotification xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:rsStorageNotification&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;enabled&amp;gt;true&amp;lt;/enabled&amp;gt;&lt;br /&gt;
  &amp;lt;notificationCC&amp;gt;test@email.net&amp;lt;/notificationCC&amp;gt;&lt;br /&gt;
  &amp;lt;notificationMessage&amp;gt;The mailbox is getting full.&amp;lt;/notificationMessage&amp;gt;&lt;br /&gt;
  &amp;lt;notificationPercentage&amp;gt;99&amp;lt;/notificationPercentage&amp;gt;&lt;br /&gt;
&amp;lt;/rsStorageNotification&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&amp;quot;enabled&amp;quot;:true, &amp;quot;notificationCC&amp;quot;:&amp;quot;test@email.net&amp;quot;, &amp;quot;notificationMessage&amp;quot;:&amp;quot;Test&amp;quot;, &amp;quot;notificationPercentage&amp;quot;:99}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Edit ==&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[PUT] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)/rs/storageNotification&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
The edit operation will set detailed information about a given domain's Rackspace Mailbox storage notification settings.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| enabled&lt;br /&gt;
| boolean&lt;br /&gt;
| Activates domain storage notification. (Required)&lt;br /&gt;
|-&lt;br /&gt;
| notificationPercentage&lt;br /&gt;
| int&lt;br /&gt;
| The storage percentage that triggers the notification. (Required for Add) (Valid Values: 50, 60, 70, 80, 90, 99)&lt;br /&gt;
|-&lt;br /&gt;
| notificationMessage&lt;br /&gt;
| string&lt;br /&gt;
| The notification message. (The special tag &amp;lt;*USER*&amp;gt; will substitute in the username. The special tag &amp;lt;*DOMAIN*&amp;gt; will substitute in the domain.)&lt;br /&gt;
|-&lt;br /&gt;
| notificationCC&lt;br /&gt;
| string&lt;br /&gt;
| An email address the notification message will be carbon copied to.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post '/customers/12345678/domains/example.com/rs/mailboxes/alex.smith', 'text/xml',&lt;br /&gt;
{ &lt;br /&gt;
  'enabled' =&amp;gt; 'true',&lt;br /&gt;
  'notificationPercentage' =&amp;gt; '90',&lt;br /&gt;
  'notificationMessage' =&amp;gt; 'Your mailbox &amp;quot;&amp;lt;*USER*&amp;gt;@&amp;lt;*DOMAIN*&amp;gt;&amp;quot; is almost full.',&lt;br /&gt;
  'notificationCC' =&amp;gt; 'test@testdomain.com'&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zhen.wei</name></author>	</entry>

	<entry>
		<id>http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Main_Page&amp;diff=442</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Main_Page&amp;diff=442"/>
				<updated>2010-11-01T21:39:45Z</updated>
		
		<summary type="html">&lt;p&gt;Zhen.wei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The The Rackspace Email Rest API provides most of the functions of the Control Panel through a REST-based [http://en.wikipedia.org/wiki/Web_service web API]. Whether it is adding a new customer account, adding mailboxes, or any other of the supported features the API allows your application to administer the changes regardless of your application's language or nature. For more information on RESTful web services refer to the following sites:&lt;br /&gt;
&lt;br /&gt;
[http://www.peej.co.uk/articles/restfully-delicious.html Paul James's Homepage: A RESTful Web service, an example]&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Representational_State_Transfer#External_links Wikipedia: Representational State Transfer - External Links]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The API is accessible to all with access to Control Panel, including resellers, business customers, enterprise customers, and indirect customers. However, not all operations are available to non-resellers. See the [[Rest_API#Operations|Operations]] section for more details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Rackspace Email Soap API Homepage has been moved to [[Soap_API| here]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Recent Changes ==&lt;br /&gt;
&lt;br /&gt;
'''10/31/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Rackspace Mailbox indexes now support custom fields.&lt;br /&gt;
* A Login Token may now be generated for Rackspace Mailboxes.&lt;br /&gt;
* Users can set Rackspace Mailbox storage notification settings. See [[Rackspace_Storage_Notification_(Rest_API)| here]] for more details.&lt;br /&gt;
* Users can now manage admins. See [[Admin_(Rest_API)| here]] for more details.&lt;br /&gt;
* Added Email Everyone to Domain operations. See [[Domain_(Rest_API)#Domain_Email_Everyone | here]] for more details.&lt;br /&gt;
* Added Show/Edit Catch-All Address to Domain operations. See [[Domain_(Rest_API)#Show_Domain_Catch-All_Address | here]] for more details.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''09/01/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Now Rackspace Email Mailbox can be marked as visible in Exchange Global Address List. &lt;br /&gt;
* Exchange Mailbox can be marked as visible in Rackspace Email Company Directory.&lt;br /&gt;
* Rackspace Email/Exchange Mailbox last login time.&lt;br /&gt;
* Filter Rackspace Email/Exchange Mailbox by &amp;quot;Enabled&amp;quot; flag.&lt;br /&gt;
* Resellers now can create Login Token that only can be used to log into sub-account Control Panel. See [[Customer_(Rest_API)#Create_Login_Tokens| here]].&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''08/01/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Added Rackspace Email Mailbox Contact info. See [[Rackspace_Mailbox_(Rest_API)| here]].&lt;br /&gt;
* Added Create Login Token. See [[Customer_(Rest_API)#Create_Login_Tokens| here]].&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''06/20/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Added [[Rackspace_Alias(Rest_API)| Rackspace Email Alias]].&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''06/11/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Added Rackspace Email Mailbox Spam Settings/Blacklist/Safelist. See [[Rackspace_Mailbox_Spam_(Rest_API)| here]].&lt;br /&gt;
* Now Rackspace Email Mailbox can Show/Edit vacation message and email forwarding address. See [[Rackspace_Mailbox_(Rest_API)| here]].&lt;br /&gt;
* Added SharePoint Service Settings. See [[SharePoint_(Rest_API)| here]].&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''05/16/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Added shortened URLs. Any URLs that starts with '/customers/me/domains/~' is equivalent to '/domains/~'.&lt;br /&gt;
* Added Rackspace Email Mailbox Add/Edit/Delete/Index. See [[Rackspace_Mailbox_(Rest_API)| here]].&lt;br /&gt;
* Allows to customize Exchange mailbox list result. See [[Exchange_Mailbox_(Rest_API)#Index| Exchange Mailbox Index]] action 'Custom Fields' section.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
Changes:&lt;br /&gt;
* Server throttling section has been updated. See [[Rest_API#Throttling| here]].&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
Bug fix:&lt;br /&gt;
* Fixed a bug that request without User-Agent Header gets 500 error. Now it gets &amp;quot;Authentication failed&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''03/28/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Rest API can be accessed by Business Users. However, not all operations are available.&lt;br /&gt;
* Domain Public Folders can be enabled now.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
Deprecated:&lt;br /&gt;
* Good Mobile Service is no longer supported.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''03/14/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Index/Add/Edit/Delete Mailbox Permissions.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
Known Issues:&lt;br /&gt;
* Domain public folders can't be enabled using Rest API at this moment. The next release (on 03/21/2010) will fix this problem.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Operations ==&lt;br /&gt;
&lt;br /&gt;
The following pages detail the operations that the API supports. The operations are grouped into sections based on the entity/object types that each operation interacts with. Non-resellers do not have access to all functions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Resource&lt;br /&gt;
!Example URI&lt;br /&gt;
!Business User Access&lt;br /&gt;
|-&lt;br /&gt;
| [[Customer_(Rest_API)| Customer]]&lt;br /&gt;
| /customers/123456789&lt;br /&gt;
| [[Customer_(Rest_API)#Create_Login_Tokens | Create Login Tokens]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Admin_(Rest_API)| Admin]]&lt;br /&gt;
| /customers/123456789/admins/my_admin&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Domain_(Rest_API)| Domain]]&lt;br /&gt;
| /customers/123456789/domains/example.com&lt;br /&gt;
| [[Domain_(Rest_API)#Index| Index]], [[Domain_(Rest_API)#Show| Show]], [[Domain_(Rest_API)#Split Domain Routing| Split Domain Routing]], [[Domain_(Rest_API)#Archiving SSO Login URL| Archiving SSO Login URL]], [[Domain_(Rest_API)#Domain_Public_Folders_.28Reseller_Only.29|Domain Public Folders]], [[Domain_(Rest_API)#Domain Email Everyone| Email Everyone ]], [[Domain_(Rest_API)#Show_Domain_Catch-All_Address | Catch-All Address]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Domain_Spam_(Rest_API)| Domain Spam Settings]]&lt;br /&gt;
| /customers/123456789/domains/example.com/spam/settings&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Rackspace_Mailbox_(Rest_API)|  Rackspace Email Mailbox]]&lt;br /&gt;
|  /customers/123456789/domains/example.com/rs/mailboxes/john.smith&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Rackspace_Mailbox_Spam_(Rest_API)| Rackspace Email Mailbox Spam Settings]]&lt;br /&gt;
|  /customers/123456789/domains/example.com/rs/mailboxes/john.smith/spam&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Rackspace_Storage_Notification_(Rest_API)| Rackspace Storage Notification Settings]]&lt;br /&gt;
|  /customers/123456789/domains/example.com/rs/storageNotification&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Rackspace_Alias(Rest_API)|  Rackspace Email Alias]]&lt;br /&gt;
|  /customers/123456789/domains/example.com/rs/mailboxes/john.smith/alias&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Mailbox_(Rest_API)| Exchange Mailbox]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/mailboxes/john.smith&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Mailbox_Spam_(Rest_API)| Exchange Mailbox Spam Settings]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/mailboxes/john.smith/spam&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Contact_(Rest_API)| Exchange Contact]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/contacts/john.smith&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Distribution_List_(Rest_API)| Exchange Distribution List]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/distributionlists/group.name&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Resource_Mailbox_(Rest_API)| Exchange Resource Mailbox]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/resources/conference.room&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[SharePoint_(Rest_API)| SharePoint]]&lt;br /&gt;
| /customers/123456789/sharepoint/settings&lt;br /&gt;
| [[SharePoint_(Rest_API)#Show | Show]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The examples shown in the operation pages are written in Ruby and extensively use the helper functions shown in the Ruby Examples below.&lt;br /&gt;
&lt;br /&gt;
== Quick Start ==&lt;br /&gt;
&lt;br /&gt;
'''What you need:'''&lt;br /&gt;
* A Rackspace Email and Apps Control Panel admin account&lt;br /&gt;
* A HTTP class library that supports TLS and the HTTP methods: GET, POST, PUT, DELETE.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Making your first API call, an Show Customer request:'''&lt;br /&gt;
# Obtain your API keys&lt;br /&gt;
#:* Click on My Account at the top of the [https://apps.rackspace.com/?cp Control Panel web interface]. Under the Administrators heading there will be an link for the API keys page.&lt;br /&gt;
# Set up your client's HTTP request&lt;br /&gt;
#:* Set up your client to make calls to a URL beginning with &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/v0&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
#:* Populate the Accept, User-Agent and X-Api-Signature HTTP request headers correctly. This is explained in detail [[#HTTP Headers|here]].&lt;br /&gt;
# Make a GET request to /customers/me.&lt;br /&gt;
#:* The complete URI will be &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/v0/customers/me&amp;lt;/nowiki&amp;gt;. Use your HTTP library to retrieve the HTTP response code, 'x-error-message' HTTP response header and HTTP response body so that they may be displayed to help debug and determine success.&lt;br /&gt;
'''From here:'''&lt;br /&gt;
* Learn about the operations you'll be implementing at the subpages [[#Operations|here]].&lt;br /&gt;
&lt;br /&gt;
== Accessing the API ==&lt;br /&gt;
&lt;br /&gt;
Your application will need to make HTTP requests to remote servers. Most programming languages have this function provided in its class library. In addition to the common GET and POST HTTP methods, the library used will also need to support PUT and DELETE.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&lt;br /&gt;
Calls without [http://en.wikipedia.org/wiki/Transport_Layer_Security TLS] (formerly SSL) will complete successfully but it is HIGHLY RECOMMENDED that TLS always be used. Interception of unencrypted communication will allow a third party to have complete access to all functions available via the API.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For some language libraries just using an URL with https:// will cause the library to use TLS. In some other libraries however some options specific to the library may have to be configured to utilize TLS. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All API calls should be directed to a URL in the following format:&lt;br /&gt;
&amp;lt;pre&amp;gt;https://api.emailsrvr.com/(version)/(resource)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;https://api.emailsrvr.com/v0/customers/12345678/domains/customerbusiness.com&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Versions ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Supported Versions''&lt;br /&gt;
!''URL''&lt;br /&gt;
!''Version Documentation''&lt;br /&gt;
|-&lt;br /&gt;
| v0 (current)&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/v0/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
| http://signup.apps.rackspace.com/api-wiki/index.php/Rest_API&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The API version number is a component of the URL that is used to access the API. For example, to access the root of the API, the URL is https://api.emailsrvr.com/v0/. Bug fixes and minor non-breaking changes will be made without changing the version number. When major features or breaking changes are introduced, the version number will be incremented. It is not yet determined how many versions are going to be supported at any one time.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Non-breaking Changes''&lt;br /&gt;
!''Breaking Changes''&lt;br /&gt;
|-&lt;br /&gt;
| Adding new fields or attributes to form fields sent&lt;br /&gt;
| Changing or deleting any fields in form fields sent&lt;br /&gt;
|-&lt;br /&gt;
| Adding fields in returned data&lt;br /&gt;
| Changing or removing fields in returned data&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| Changing the URI of any resource&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Authentication ===&lt;br /&gt;
&lt;br /&gt;
To gain access to the API, your request must include a properly constructed X-Api-Signature HTTP header. Details on what to put in the header are below. To construct the header, you must have the following keys that that are generated from the [https://apps.rackspace.com/?cp Control Panel Web interface]. The key generation page can be found by clicking 'My Account' at the top, then 'Generate API Keys' in the Administrators section.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Key Name&lt;br /&gt;
!Description&lt;br /&gt;
!Example&lt;br /&gt;
|-&lt;br /&gt;
| User Key&lt;br /&gt;
| A public key that corresponds to your admin id&lt;br /&gt;
| ''eGbq9/2hcZsRlr1JV1Pi''&lt;br /&gt;
|-&lt;br /&gt;
| Secret Key&lt;br /&gt;
| A shared secret key&lt;br /&gt;
| ''QHOvchm/40czXhJ1OxfxK7jDHr3t''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An unsuccessful authentication will result in a 403 HTTP code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== X-Api-Signature Header ====&lt;br /&gt;
&lt;br /&gt;
Format is as follows:&lt;br /&gt;
&amp;lt;'''User Key'''&amp;gt;:&amp;lt;'''Timestamp'''&amp;gt;:&amp;lt;'''SHA1 Hash'''&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Example: ''eGbq9/2hcZsRlr1JV1Pi:20010317143725:46VIwd66mOFGG8IkbgnLlXnfnkU=''&lt;br /&gt;
&lt;br /&gt;
Remember to include the colons between the data strings!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''User Key''':&amp;lt;br&amp;gt;&lt;br /&gt;
This is the public key issued by the Control Panel browser interface.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Timestamp''':&amp;lt;br&amp;gt;&lt;br /&gt;
The format is YYYYMMDDHHmmss. All values besides year are zero-padded to two spaces. For example, March 08th 2001 at 2:37.25pm would be ''20010308143725''.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|YYYY&lt;br /&gt;
|Four-digit year&lt;br /&gt;
|-&lt;br /&gt;
| MM&lt;br /&gt;
| Month&lt;br /&gt;
|-&lt;br /&gt;
| DD&lt;br /&gt;
| Day&lt;br /&gt;
|-&lt;br /&gt;
| HH&lt;br /&gt;
| Hour in 24h format&lt;br /&gt;
|-&lt;br /&gt;
| mm&lt;br /&gt;
| Minute&lt;br /&gt;
|-&lt;br /&gt;
| ss&lt;br /&gt;
| Second&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''SHA1 Hash''':&lt;br /&gt;
&lt;br /&gt;
A SHA1 (Secure Hash Algorithm) hash must be applied to a string with the following information:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;'''User Key'''&amp;gt;&amp;lt;'''User Agent'''&amp;gt;&amp;lt;'''Timestamp'''&amp;gt;&amp;lt;'''Secret Key'''&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that the 'User Agent' must be the exact same as what is specified in the User-Agent HTTP header. Using the above example data, the string before hashing is:&amp;lt;br&amp;gt;''eGbq9/2hcZsRlr1JV1PiRackspace Management Interface20010308143725QHOvchm/40czXhJ1OxfxK7jDHr3t''&lt;br /&gt;
&lt;br /&gt;
Resulting base-64 SHA1 Hash:&amp;lt;br&amp;gt;''46VIwd66mOFGG8IkbgnLlXnfnkU=''&lt;br /&gt;
&lt;br /&gt;
Be sure to encode the binary hash, not the hex hash, into base-64. The resulting string should be 28 characters long.&lt;br /&gt;
&lt;br /&gt;
== Using the API ==&lt;br /&gt;
&lt;br /&gt;
=== Requests ===&lt;br /&gt;
&lt;br /&gt;
HTTP requests should be sent to the server with the correct URL, HTTP method, HTTP headers and form data (if needed). The URL specifies the resource, the HTTP method specifies what operation is done on the resource, and form data is used to specify the details of the resource when the resource is added or edited.&lt;br /&gt;
&lt;br /&gt;
The URLs, corresponding HTTP methods, and necessary form data for the desired operations are detailed in the [[#Operations|operation pages]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you're getting the HTTP status code 417 see [[Handling HTTP code 417:  Expectation failed]]&lt;br /&gt;
&lt;br /&gt;
==== URL ====&lt;br /&gt;
&lt;br /&gt;
The URLs are specifies the resource or resource collection. Objects are organized in a tree collection, starting with customers at the top, then domains, then domain objects next (such as mailboxes, contacts, and distribution lists) and so on. The URLs of the resources and collections accessible are found on the operation pages.&lt;br /&gt;
&lt;br /&gt;
==== HTTP Method ====&lt;br /&gt;
&lt;br /&gt;
It is the HTTP method that specifies what operation will be done on the resource. For example, to get the details of a mailbox a HTTP GET will be done on /customers/12345678/domains/example.com/ex/mailboxes/john.smith. If the mailbox does not exist, a HTTP POST to the same URL with the necessary form data will add the mailbox. Then, a HTTP PUT to the same URL will edit mailbox. And to delete the mailbox, an HTTP DELETE would be used.&lt;br /&gt;
&lt;br /&gt;
The types of operations a certain method performs is outlined below.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''HTTP Method''&lt;br /&gt;
!''Operations''&lt;br /&gt;
!''Response''&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=2|GET&lt;br /&gt;
|Index - returns a list of the resources&lt;br /&gt;
|rowspan=2|XML or JSON formatted data&lt;br /&gt;
|-&lt;br /&gt;
|Show - returns the details of the resource&lt;br /&gt;
|-&lt;br /&gt;
|POST&lt;br /&gt;
|Add - adds a new resource&lt;br /&gt;
|rowspan=3|Response code and error message (if applicable) only&lt;br /&gt;
|-&lt;br /&gt;
|PUT&lt;br /&gt;
|Edit - changes the details of the resource&lt;br /&gt;
|-&lt;br /&gt;
|DELETE&lt;br /&gt;
|Delete - deletes the resource&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== HTTP Headers ====&lt;br /&gt;
&lt;br /&gt;
All requests to the API must then include HTTP headers with the following information:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Header Name''&lt;br /&gt;
!''Description''&lt;br /&gt;
!''Example Header Value''&lt;br /&gt;
|-&lt;br /&gt;
| Accept&lt;br /&gt;
| The requested content type (required for Index and Show actions). Fill this with either 'text/xml' or 'application/json'. See [[#Formats|Response Formats]]&lt;br /&gt;
| ''text/xml''&lt;br /&gt;
|-&lt;br /&gt;
| User-Agent&lt;br /&gt;
| An identifier you choose for your client software&lt;br /&gt;
| ''Rackspace Management Interface''&lt;br /&gt;
|-&lt;br /&gt;
| X-Api-Signature&lt;br /&gt;
| An authentication string explained in detail [[#X-Api-Signature_Header|here]]&lt;br /&gt;
| ''eGbq9/2hcZsRlr1JV1Pi:20010317143725:HKUn0aajpSDx7qqGK3vqzn3FglI=''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Form Data ====&lt;br /&gt;
&lt;br /&gt;
When using Add and Edit operations, the details of the resource are sent to the API server via HTTP form data. Your HTTP library should include methods for sending form data along with an HTTP request. The library should by default send the data in the HTTP request body using the 'application/x-www-form-urlencoded' data format.&lt;br /&gt;
&lt;br /&gt;
==== Index Filter/Search ====&lt;br /&gt;
&lt;br /&gt;
The results of Index actions can be filtered/searched. The index URLs can take either one of the query strings: &amp;quot;?startswith=xx&amp;quot; or &amp;quot;?contains=xx,&amp;quot; where &amp;quot;xx&amp;quot; is the key word. If the request specifies more than one of these two query strings, a 400 HTTP error will be returned. Different fields will be searched depending on the resource type, see below.&lt;br /&gt;
&lt;br /&gt;
Note that &amp;quot;0-9&amp;quot; is a reserved key word for query string &amp;quot;startswith.&amp;quot; It represents any result starting with numbers.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Index Actions''&lt;br /&gt;
!''Where the key word will be searched''&lt;br /&gt;
|-&lt;br /&gt;
| Customer&lt;br /&gt;
| Customer name, account number, reference number&lt;br /&gt;
|-&lt;br /&gt;
| Domain&lt;br /&gt;
| Domain name&lt;br /&gt;
|-&lt;br /&gt;
| Mailbox&lt;br /&gt;
| Mailbox name, mailbox display name&lt;br /&gt;
|-&lt;br /&gt;
| Contact&lt;br /&gt;
| Contact display name, external email&lt;br /&gt;
|-&lt;br /&gt;
| Group&lt;br /&gt;
| Group name, group display name&lt;br /&gt;
|-&lt;br /&gt;
| Mobile Service&lt;br /&gt;
| Associated mailbox name, mailbox display name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Throttling ====&lt;br /&gt;
&lt;br /&gt;
The server limits the number of requests allowed per user in a certain period of time.  The number of requests made are logged per minute. Calls that were made correctly with a user's API key, but not completed for any reason, including those exceeding the throttle limit, are included in this count.&lt;br /&gt;
&lt;br /&gt;
If a user is over the throttling limit then a 403 HTTP code will be returned with an &amp;quot;Exceeded request limits&amp;quot; message.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Operation Category''&lt;br /&gt;
!''Request Limit''&lt;br /&gt;
|-&lt;br /&gt;
| GET&lt;br /&gt;
| 60 per minute&lt;br /&gt;
|-&lt;br /&gt;
| PUT, POST, DELETE&lt;br /&gt;
| 30 per minute&lt;br /&gt;
|-&lt;br /&gt;
| POST, PUT, DELETE on a domain&lt;br /&gt;
| 2 per minute&lt;br /&gt;
|-&lt;br /&gt;
| POST, DELETE on alternate domains&lt;br /&gt;
| 2 per minute&lt;br /&gt;
|-&lt;br /&gt;
| Enabling public folders for a domain&lt;br /&gt;
| 1 per 5 minutes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&lt;br /&gt;
Index of Exchange Mailboxes:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hypertext Transfer Protocol&lt;br /&gt;
    GET /v0/customers/12345678/domains/example.com/ex/mailboxes?size=100&amp;amp;offset=100 HTTP/1.1&lt;br /&gt;
    Host: api.emailsrvr.com&lt;br /&gt;
    User-Agent: Rackspace Management Interface&lt;br /&gt;
    X-Api-Signature: eGbq9/2hcZsRlr1JV1Pi:20010317143725:HKUn0aajpSDx7qqGK3vqzn3FglI=&lt;br /&gt;
    Accept: text/xml&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Adding New Exchange Mailbox:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hypertext Transfer Protocol&lt;br /&gt;
    POST /v0/customers/12345678/domains/example.com/ex/mailboxes/john.smith HTTP/1.1&lt;br /&gt;
    Host: api.emailsrvr.com&lt;br /&gt;
    User-Agent: Rackspace Management Interface&lt;br /&gt;
    X-Api-Signature: eGbq9/2hcZsRlr1JV1Pi:20010317143725:HKUn0aajpSDx7qqGK3vqzn3FglI=&lt;br /&gt;
    Content-Length: 53&lt;br /&gt;
        [Content length: 53]&lt;br /&gt;
    Content-Type: application/x-www-form-urlencoded&lt;br /&gt;
 &lt;br /&gt;
Line-based text data: application/x-www-form-urlencoded&lt;br /&gt;
    size=2048&amp;amp;displayName=John%20Smith&amp;amp;password=abcABC123&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Responses ===&lt;br /&gt;
&lt;br /&gt;
==== HTTP Status Code ====&lt;br /&gt;
&lt;br /&gt;
On a successfully executed request, a 200 HTTP Code is returned. If the request was unsuccessful however, an HTTP error code in the 400s or 500s will be returned.&lt;br /&gt;
&lt;br /&gt;
==== HTTP Response Body ====&lt;br /&gt;
&lt;br /&gt;
If the request is an Index or Show request, the request data will be returned in the format specified in the HTTP Body.&lt;br /&gt;
&lt;br /&gt;
===== Formats =====&lt;br /&gt;
&lt;br /&gt;
Requests for data (index and show requests) are returned with XML or JSON data based on what your application populates the [[#HTTP_Headers|HTTP Accept headers]] with.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For XML, populate the header with 'text/xml' (ex: Headers![&amp;quot;Accept&amp;quot;] = &amp;quot;text/xml&amp;quot;). The XML document returned will conform to a published XSD (XML Schema Document). There are many ways to parse the data in an XML document, but we have found that the [http://www.w3schools.com/XPath/default.asp XPath] tree-style traversal has served our purposes. In any case, your application will likely need to use a class library for your chosen method.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For JSON, populate the header with 'application/json' (ex: Headers![&amp;quot;Accept&amp;quot;] = &amp;quot;application/json&amp;quot;). As with XML, a library will likely be needed to parse the data.&lt;br /&gt;
&lt;br /&gt;
==== HTTP Headers ====&lt;br /&gt;
&lt;br /&gt;
The only data returned in the header is the error message (if any).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Header Name''&lt;br /&gt;
!''Description''&lt;br /&gt;
!''Example Header Value''&lt;br /&gt;
|-&lt;br /&gt;
| x-error-message&lt;br /&gt;
| The error message. See [[#Errors|Errors]].&lt;br /&gt;
| Missing required field: name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Errors ====&lt;br /&gt;
&lt;br /&gt;
In the event of an error, the error message will be returned the HTTP header '''x-error-message''' and an HTTP Status Code in the '''400'''s or '''500'''s will be returned.&lt;br /&gt;
&lt;br /&gt;
Note: Every language's HTTP library provides methods for retrieving HTTP response codes and response headers.&lt;br /&gt;
&lt;br /&gt;
Below are some errors that are common to many operations. Each operation also has some specific errors which are outlined with the operation. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
|Format is invalid&lt;br /&gt;
|400&lt;br /&gt;
|When requesting an index or show on a resource the 'Accept' header should be either 'text/xml' or 'application/json'&lt;br /&gt;
|-&lt;br /&gt;
|Expectation  Failed: See [[Handling HTTP code 417: Expectation failed]]&lt;br /&gt;
|417&lt;br /&gt;
|(none)&lt;br /&gt;
|-&lt;br /&gt;
|Customer account number is invalid&lt;br /&gt;
|404&lt;br /&gt;
|Invalid account number&lt;br /&gt;
|-&lt;br /&gt;
|Domain is not found&lt;br /&gt;
|404&lt;br /&gt;
|&amp;lt;domain name&amp;gt; not found&lt;br /&gt;
|-&lt;br /&gt;
|Mailbox is not found&lt;br /&gt;
|404&lt;br /&gt;
|Mailbox not found&lt;br /&gt;
|-&lt;br /&gt;
|Required form field is missing&lt;br /&gt;
|400&lt;br /&gt;
|Missing required field: &amp;lt;required field&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Required form field has null or empty string input&lt;br /&gt;
|400&lt;br /&gt;
|Required field &amp;lt;required field&amp;gt; cannot be empty&lt;br /&gt;
|-&lt;br /&gt;
|Integer form field has non-integer input&lt;br /&gt;
|400&lt;br /&gt;
|Invalid format for &amp;lt;field&amp;gt;, input must be an integer&lt;br /&gt;
|-&lt;br /&gt;
|Boolean form field has non-boolean input&lt;br /&gt;
|400&lt;br /&gt;
|Invalid format for &amp;lt;field&amp;gt;, input must be True or False&lt;br /&gt;
|-&lt;br /&gt;
|Form data has an unrecognized field&lt;br /&gt;
|400&lt;br /&gt;
|Unrecognized field: &amp;lt;field&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Entered invalid IP address&lt;br /&gt;
| 400&lt;br /&gt;
| invalid ip address: 123&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Paging ====&lt;br /&gt;
&lt;br /&gt;
The results of Index actions are split into pages to lessen potentially high resource usage. The index URLs have a query string with parameters in the format &amp;quot;?size=xx&amp;amp;offset=xx.&amp;quot; If a query parameter is omitted, the default value is used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Query Parameter''&lt;br /&gt;
!''Default''&lt;br /&gt;
!''Maximum''&lt;br /&gt;
!''Notes''&lt;br /&gt;
|-&lt;br /&gt;
| size&lt;br /&gt;
| 50&lt;br /&gt;
| 250&lt;br /&gt;
| This is the number of elements per page.&lt;br /&gt;
|-&lt;br /&gt;
| offset&lt;br /&gt;
| 0&lt;br /&gt;
| N/A&lt;br /&gt;
| This is the number of items to offset away from the first item in the list.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Example =====&lt;br /&gt;
&lt;br /&gt;
A PHP Example of paging can be found [[PHP_Examples_(Rest_API)| here]].&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 200 OK&lt;br /&gt;
Cache-Control: private&lt;br /&gt;
Content-Type: text/xml; charset=utf-8&lt;br /&gt;
Server: Microsoft-IIS/7.0&lt;br /&gt;
Date: Fri, 04 Dec 2009 19:08:11 GMT&lt;br /&gt;
Content-Length: 430&lt;br /&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;domainList xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:domainList&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;offset&amp;gt;0&amp;lt;/offset&amp;gt;&lt;br /&gt;
  &amp;lt;size&amp;gt;50&amp;lt;/size&amp;gt;&lt;br /&gt;
  &amp;lt;total&amp;gt;1&amp;lt;/total&amp;gt;&lt;br /&gt;
  &amp;lt;domains&amp;gt;&lt;br /&gt;
    &amp;lt;domain&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;customer.com&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;accountNumber&amp;gt;123456&amp;lt;/accountNumber&amp;gt;&lt;br /&gt;
      &amp;lt;serviceType&amp;gt;rsemail&amp;lt;/serviceType&amp;gt;&lt;br /&gt;
    &amp;lt;/domain&amp;gt;&lt;br /&gt;
  &amp;lt;/domains&amp;gt;&lt;br /&gt;
&amp;lt;/domainList&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 404 Not Found&lt;br /&gt;
Cache-Control: private&lt;br /&gt;
Server: Microsoft-IIS/7.0&lt;br /&gt;
x-error-message: Customer Not Found&lt;br /&gt;
Date: Fri, 04 Dec 2009 19:13:59 GMT&lt;br /&gt;
Content-Length: 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 400 Bad Request&lt;br /&gt;
Cache-Control: private&lt;br /&gt;
Server: Microsoft-IIS/7.0&lt;br /&gt;
x-error-message: Missing required field: type&lt;br /&gt;
Date: Fri, 04 Dec 2009 19:17:29 GMT&lt;br /&gt;
Content-Length: 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
This examples is written in [http://www.ruby-lang.org/en/ Ruby]. To make the examples shorter, helper methods have been written. These methods are part of a NetMethods module. The contents of the NetMethods module is listed below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require  'server.rb'&lt;br /&gt;
&lt;br /&gt;
server = Server.new&lt;br /&gt;
&lt;br /&gt;
response = server.get  '/customers', server.xml_format&lt;br /&gt;
&lt;br /&gt;
#fields = Hash['serviceType' =&amp;gt;  'exchange', 'exchangeMaxNumMailboxes' =&amp;gt; '4']&lt;br /&gt;
#response =  server.post '/customers/me/domains/newdomain.com', fields&lt;br /&gt;
&lt;br /&gt;
puts response.code&lt;br /&gt;
puts response['x-error-message']&lt;br /&gt;
puts response.body&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require 'test/unit/assertions'&lt;br /&gt;
require 'net/http'&lt;br /&gt;
require 'date'&lt;br /&gt;
require 'date/format'&lt;br /&gt;
require 'digest/sha1'&lt;br /&gt;
require 'base64'&lt;br /&gt;
require 'time'&lt;br /&gt;
&lt;br /&gt;
class Server&lt;br /&gt;
  include Test::Unit::Assertions&lt;br /&gt;
  &lt;br /&gt;
  def initialize(server='api.emailsrvr.com', version_prefix='/v0', user_key='xxxxxxxxxxxxxxxxxxxx', secret_hash='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')&lt;br /&gt;
    @server = server&lt;br /&gt;
    @version_prefix = version_prefix&lt;br /&gt;
    @user_key = user_key&lt;br /&gt;
    @secret_hash = secret_hash&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
# Response Type Enums&lt;br /&gt;
&lt;br /&gt;
  def xml_format&lt;br /&gt;
    'text/xml'&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def json_format&lt;br /&gt;
    'application/json'&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# HTTP Request Verbs&lt;br /&gt;
#  &lt;br /&gt;
  def get(url_string, format)&lt;br /&gt;
    uri = full_uri(url_string)&lt;br /&gt;
    headers = prepared_headers&lt;br /&gt;
    headers['Accept'] = format&lt;br /&gt;
    request = Net::HTTP::Get.new(request_uri(uri), headers)&lt;br /&gt;
    http_response = make_request request, uri&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def delete(url_string)&lt;br /&gt;
    uri = full_uri(url_string)&lt;br /&gt;
    request = Net::HTTP::Delete.new(request_uri(uri), prepared_headers)&lt;br /&gt;
    http_response = make_request request, uri&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def put(url_string, fields_hash)&lt;br /&gt;
    uri = full_uri(url_string)&lt;br /&gt;
    request = Net::HTTP::Put.new(request_uri(uri), prepared_headers)&lt;br /&gt;
    request.set_form_data(fields_hash)&lt;br /&gt;
    http_response = make_request request, uri&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def post(url_string, fields_hash)&lt;br /&gt;
    uri = full_uri(url_string)&lt;br /&gt;
    request = Net::HTTP::Post.new(request_uri(uri), prepared_headers)&lt;br /&gt;
    request.set_form_data(fields_hash)&lt;br /&gt;
    http_response = make_request request, uri&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
#&lt;br /&gt;
# HTTP Request Helpers&lt;br /&gt;
# &lt;br /&gt;
  def make_request request, uri&lt;br /&gt;
    response = Net::HTTP::start(uri.host, uri.port)  do |http|&lt;br /&gt;
      http.request request&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    response&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def full_uri url_string&lt;br /&gt;
    URI.parse('http://' + @server + @version_prefix + url_string)&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def request_uri uri&lt;br /&gt;
    request = uri.path&lt;br /&gt;
    if ! uri.query.nil?&lt;br /&gt;
      request = request + '?' + uri.query&lt;br /&gt;
    end&lt;br /&gt;
    request&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def prepared_headers&lt;br /&gt;
    headers = Hash.new&lt;br /&gt;
    headers.merge! headers_auth_creds(@user_key, @secret_hash)&lt;br /&gt;
    headers['Accept'] = xml_format&lt;br /&gt;
    headers&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def headers_auth_creds apiKey, secretKey&lt;br /&gt;
    userAgent = 'Ruby Test Client'&lt;br /&gt;
    timestamp = DateTime.now.strftime('%Y%m%d%H%M%S')&lt;br /&gt;
    &lt;br /&gt;
    data_to_sign = apiKey + userAgent + timestamp + secretKey&lt;br /&gt;
    &lt;br /&gt;
    hash = Base64.encode64(Digest::SHA1.digest(data_to_sign))&lt;br /&gt;
    signature = apiKey + &amp;quot;:&amp;quot; + timestamp + &amp;quot;:&amp;quot; + hash&lt;br /&gt;
    &lt;br /&gt;
    headers = Hash['User-Agent' =&amp;gt; userAgent, 'X-Api-Signature' =&amp;gt; signature]&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== C# ===&lt;br /&gt;
&lt;br /&gt;
This examples is written in [http://msdn.microsoft.com/en-us/vcsharp/default.aspx C#].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Specialized;&lt;br /&gt;
using System.Security.Cryptography;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Net;&lt;br /&gt;
&lt;br /&gt;
public class WebMethods&lt;br /&gt;
{&lt;br /&gt;
  private WebClientBase client;&lt;br /&gt;
  private string baseUrl;&lt;br /&gt;
  private string apiKey;&lt;br /&gt;
  private string secretKey;&lt;br /&gt;
&lt;br /&gt;
  public WebMethods(WebClientBase client, string baseUrl, string apiKey, string secretKey)&lt;br /&gt;
  {&lt;br /&gt;
    this.client = client;&lt;br /&gt;
    this.baseUrl = baseUrl;&lt;br /&gt;
    this.apiKey = apiKey;&lt;br /&gt;
    this.secretKey = secretKey;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  public virtual string Get(string url)&lt;br /&gt;
  {&lt;br /&gt;
    return MakeRemoteCall((client) =&amp;gt;&lt;br /&gt;
      {&lt;br /&gt;
        return client.DownloadString(baseUrl + url);&lt;br /&gt;
      },&lt;br /&gt;
      format);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  public virtual string Post(string url, NameValueCollection data)&lt;br /&gt;
  {&lt;br /&gt;
    return MakeRemoteCall((client) =&amp;gt;&lt;br /&gt;
      {&lt;br /&gt;
        var bytes = client.UploadValues(baseUrl + url, data);&lt;br /&gt;
        return Encoding.UTF8.GetString(bytes);&lt;br /&gt;
      },&lt;br /&gt;
      format);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  private void SignMessage()&lt;br /&gt;
  {&lt;br /&gt;
    var userAgent = &amp;quot;C# Client Library&amp;quot;;&lt;br /&gt;
    client.Headers[&amp;quot;User-Agent&amp;quot;] = userAgent;&lt;br /&gt;
&lt;br /&gt;
    var dateTime = DateTime.UtcNow.ToString(&amp;quot;yyyyMMddHHmmss&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    var dataToSign = apiKey + userAgent + dateTime + secretKey;&lt;br /&gt;
    var hash = SHA1.Create();&lt;br /&gt;
    var signedBytes = hash.ComputeHash(Encoding.UTF8.GetBytes(dataToSign));&lt;br /&gt;
    var signature = Convert.ToBase64String(signedBytes);&lt;br /&gt;
&lt;br /&gt;
    client.Headers[&amp;quot;X-Api-Signature&amp;quot;] = apiKey + &amp;quot;:&amp;quot; + dateTime + &amp;quot;:&amp;quot; + signature;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  private void AssignFormat(string format)&lt;br /&gt;
  {&lt;br /&gt;
    client.Headers[&amp;quot;Accept&amp;quot;] = format;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  private string MakeRemoteCall(Func&amp;lt;WebClientBase, string&amp;gt; remoteCall, string format)&lt;br /&gt;
  {&lt;br /&gt;
    try&lt;br /&gt;
    {&lt;br /&gt;
      SignMessage();&lt;br /&gt;
      AssignFormat(format);&lt;br /&gt;
      return remoteCall.Invoke(client);&lt;br /&gt;
    }&lt;br /&gt;
    catch (WebException e)&lt;br /&gt;
    {&lt;br /&gt;
      throw new ApiException(e);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PHP ===&lt;br /&gt;
&lt;br /&gt;
The PHP Example can be found [[PHP_Examples_(Rest_API)| here]].&lt;/div&gt;</summary>
		<author><name>Zhen.wei</name></author>	</entry>

	<entry>
		<id>http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Domain_(Rest_API)&amp;diff=441</id>
		<title>Domain (Rest API)</title>
		<link rel="alternate" type="text/html" href="http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Domain_(Rest_API)&amp;diff=441"/>
				<updated>2010-11-01T21:39:27Z</updated>
		
		<summary type="html">&lt;p&gt;Zhen.wei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Index ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
This operation returns a list of domains under the account. If a customer account is specified, then a list of domains under that specific account will be returned.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
To retrieve a list of domains owned by the account that is logged in, use &amp;quot;me&amp;quot; as the customer account number i.e. &amp;lt;nowiki&amp;gt;'https://api.emailsrvr.com/v0/customers/me/domains'&amp;lt;/nowiki&amp;gt;. To retrieve a list of domains owned by all customer sub-accounts and your own account, use &amp;quot;all&amp;quot; as the customer account number.&lt;br /&gt;
&lt;br /&gt;
The index operation only supports the GET HTTP verb. For text/xml format, refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/DomainList.xsd DomainList.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/all/domains?size=100&amp;amp;offset=10', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;domainList 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; xmlns=&amp;quot;urn:xml:domainList&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;offset&amp;gt;0&amp;lt;/offset&amp;gt;&lt;br /&gt;
  &amp;lt;size&amp;gt;50&amp;lt;/size&amp;gt;&lt;br /&gt;
  &amp;lt;total&amp;gt;3&amp;lt;/total&amp;gt;&lt;br /&gt;
  &amp;lt;domains&amp;gt;&lt;br /&gt;
    &amp;lt;domain&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;apidomain53.com&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;accountNumber&amp;gt;100000&amp;lt;/accountNumber&amp;gt;&lt;br /&gt;
      &amp;lt;serviceType&amp;gt;both&amp;lt;/serviceType&amp;gt;&lt;br /&gt;
    &amp;lt;/domain&amp;gt;&lt;br /&gt;
    &amp;lt;domain&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;apidomain66.com&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;accountNumber&amp;gt;100001&amp;lt;/accountNumber&amp;gt;&lt;br /&gt;
      &amp;lt;serviceType&amp;gt;both&amp;lt;/serviceType&amp;gt;&lt;br /&gt;
    &amp;lt;/domain&amp;gt;&lt;br /&gt;
    &amp;lt;domain&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;apidomain68.com&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;accountNumber&amp;gt;100002&amp;lt;/accountNumber&amp;gt;&lt;br /&gt;
      &amp;lt;serviceType&amp;gt;both&amp;lt;/serviceType&amp;gt;&lt;br /&gt;
    &amp;lt;/domain&amp;gt;&lt;br /&gt;
  &amp;lt;/domains&amp;gt;&lt;br /&gt;
&amp;lt;/domainList&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&amp;quot;offset&amp;quot;:0,&amp;quot;size&amp;quot;:50,&amp;quot;total&amp;quot;:3,&amp;quot;domains&amp;quot;:&lt;br /&gt;
[{&amp;quot;name&amp;quot;:&amp;quot;apidomain53.com&amp;quot;,&amp;quot;accountNumber&amp;quot;:&amp;quot;100000&amp;quot;,&amp;quot;serviceType&amp;quot;:&amp;quot;both&amp;quot;},&lt;br /&gt;
{&amp;quot;name&amp;quot;:&amp;quot;apidomain66.com&amp;quot;,&amp;quot;accountNumber&amp;quot;:&amp;quot;100001&amp;quot;,&amp;quot;serviceType&amp;quot;:&amp;quot;both&amp;quot;},&lt;br /&gt;
{&amp;quot;name&amp;quot;:&amp;quot;apidomain68.com&amp;quot;,&amp;quot;accountNumber&amp;quot;:&amp;quot;100002&amp;quot;,&amp;quot;serviceType&amp;quot;:&amp;quot;both&amp;quot;}]}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Show ==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
The show operation will return detailed information about the specified domain name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The show operation only supports the GET HTTP verb. For text/xml format, refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/Domain.xsd Domain.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Note'':&lt;br /&gt;
&lt;br /&gt;
These two fields 'exchangeUsedStorage' and 'rsEmailUsedStorage' actually return the number of active mailboxes in each service respectively. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/999999/domains/example.com', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;domain 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; xmlns=&amp;quot;urn:xml:domain&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;name&amp;gt;apidomain21.com&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;accountNumber&amp;gt;100000&amp;lt;/accountNumber&amp;gt;&lt;br /&gt;
  &amp;lt;serviceType&amp;gt;both&amp;lt;/serviceType&amp;gt;&lt;br /&gt;
  &amp;lt;exchangeBaseMailboxSize&amp;gt;2048&amp;lt;/exchangeBaseMailboxSize&amp;gt;&lt;br /&gt;
  &amp;lt;exchangeUsedStorage&amp;gt;0&amp;lt;/exchangeUsedStorage&amp;gt;&lt;br /&gt;
  &amp;lt;exchangeTotalStorage&amp;gt;18432&amp;lt;/exchangeTotalStorage&amp;gt;&lt;br /&gt;
  &amp;lt;exchangeExtraStorage&amp;gt;10240&amp;lt;/exchangeExtraStorage&amp;gt;&lt;br /&gt;
  &amp;lt;exchangeMaxNumMailboxes&amp;gt;4&amp;lt;/exchangeMaxNumMailboxes&amp;gt;&lt;br /&gt;
  &amp;lt;rsEmailBaseMailboxSize&amp;gt;2048&amp;lt;/rsEmailBaseMailboxSize&amp;gt;&lt;br /&gt;
  &amp;lt;rsEmailMaxNumberMailboxes&amp;gt;4&amp;lt;/rsEmailMaxNumberMailboxes&amp;gt;&lt;br /&gt;
  &amp;lt;rsEmailExtraStorage&amp;gt;10240&amp;lt;/rsEmailExtraStorage&amp;gt;&lt;br /&gt;
  &amp;lt;rsEmailUsedStorage&amp;gt;0&amp;lt;/rsEmailUsedStorage&amp;gt;&lt;br /&gt;
  &amp;lt;aliases /&amp;gt;&lt;br /&gt;
  &amp;lt;archivingServiceEnabled&amp;gt;false&amp;lt;/archivingServiceEnabled&amp;gt;&lt;br /&gt;
  &amp;lt;publicFoldersEnabled&amp;gt;false&amp;lt;/publicFoldersEnabled&amp;gt;&lt;br /&gt;
  &amp;lt;blackBerryMobileServiceEnabled&amp;gt;true&amp;lt;/blackBerryMobileServiceEnabled&amp;gt;&lt;br /&gt;
  &amp;lt;blackBerryLicenses&amp;gt;4&amp;lt;/blackBerryLicenses&amp;gt;&lt;br /&gt;
  &amp;lt;activeSyncMobileServiceEnabled&amp;gt;true&amp;lt;/activeSyncMobileServiceEnabled&amp;gt;&lt;br /&gt;
  &amp;lt;activeSyncLicenses&amp;gt;4&amp;lt;/activeSyncLicenses&amp;gt;&lt;br /&gt;
&amp;lt;/domain&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&amp;quot;name&amp;quot;:&amp;quot;apidomain21.com&amp;quot;,&amp;quot;accountNumber&amp;quot;:&amp;quot;100000&amp;quot;,&amp;quot;serviceType&amp;quot;:&amp;quot;both&amp;quot;,&lt;br /&gt;
&amp;quot;exchangeBaseMailboxSize&amp;quot;:2048,&amp;quot;exchangeUsedStorage&amp;quot;:0,&amp;quot;exchangeTotalStorage&amp;quot;:18432,&lt;br /&gt;
&amp;quot;exchangeExtraStorage&amp;quot;:10240,&amp;quot;exchangeMaxNumMailboxes&amp;quot;:4,&amp;quot;rsEmailBaseMailboxSize&amp;quot;:2048,&lt;br /&gt;
&amp;quot;rsEmailMaxNumberMailboxes&amp;quot;:4,&amp;quot;rsEmailExtraStorage&amp;quot;:10240,&amp;quot;rsEmailUsedStorage&amp;quot;:0,&lt;br /&gt;
&amp;quot;aliases&amp;quot;:[],&amp;quot;archivingServiceEnabled&amp;quot;:false,&amp;quot;publicFoldersEnabled&amp;quot;:false,&lt;br /&gt;
&amp;quot;blackBerryMobileServiceEnabled&amp;quot;:true,&amp;quot;blackBerryLicenses&amp;quot;:4,&amp;quot;activeSyncMobileServiceEnabled&amp;quot;:true,&lt;br /&gt;
&amp;quot;activeSyncLicenses&amp;quot;:4}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Add/Edit (Reseller Only)==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
 Add: [POST] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
 Edit: [PUT] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Adds/edits a new domain to the account with the data specified. To add a domain to your own account, use your own account id.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| serviceType&lt;br /&gt;
| string&lt;br /&gt;
| Domain service type. &amp;quot;rsemail&amp;quot; = &amp;quot;Rackspace Email Only&amp;quot;. &amp;quot;exchange&amp;quot; = &amp;quot;Exchange Only&amp;quot;. &amp;quot;both&amp;quot; = &amp;quot;Rackspace Email and Exchange&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| exchangeExtraStorage&lt;br /&gt;
| int&lt;br /&gt;
| Exchange service extra storage in megabytes&lt;br /&gt;
|-&lt;br /&gt;
| exchangeMaxNumMailboxes&lt;br /&gt;
| int&lt;br /&gt;
| Maximum number of mailboxes allowed under the domain Exchange service. Required for Adding Exchange service&lt;br /&gt;
|-&lt;br /&gt;
| rsEmailBaseMailboxSize&lt;br /&gt;
| int&lt;br /&gt;
| Rackspace Email base mailbox size in megabytes&lt;br /&gt;
|-&lt;br /&gt;
| rsEmailMaxNumberMailboxes&lt;br /&gt;
| int&lt;br /&gt;
| Maximum number of mailboxes allowed under the domain Rackspace Email service. Required for Adding Rackspace Email service&lt;br /&gt;
|-&lt;br /&gt;
| rsEmailExtraStorage&lt;br /&gt;
| int&lt;br /&gt;
| Rackspace Email service extra storage in megabytes&lt;br /&gt;
|-&lt;br /&gt;
| blackBerryMobileServiceEnabled&lt;br /&gt;
| boolean&lt;br /&gt;
| Enable or disable domain BlackBerry Mobile service&lt;br /&gt;
|-&lt;br /&gt;
| blackBerryLicenses&lt;br /&gt;
| int&lt;br /&gt;
| Maximum number of mailboxes allowed to have BlackBerry Mobile service. 0 means unlimited&lt;br /&gt;
|-&lt;br /&gt;
| activeSyncMobileServiceEnabled&lt;br /&gt;
| boolean&lt;br /&gt;
| Enable or disable domain ActiveSync Mobile service&lt;br /&gt;
|-&lt;br /&gt;
| activeSyncLicenses&lt;br /&gt;
| int&lt;br /&gt;
| Maximum number of mailboxes allowed to have ActiveSync Mobile service. 0 means unlimited&lt;br /&gt;
|-&lt;br /&gt;
| goodMobileServiceEnabled (deprecated)&lt;br /&gt;
| boolean&lt;br /&gt;
| Enable or disable domain Good Mobile service&lt;br /&gt;
|-&lt;br /&gt;
| goodMobileLicenses (deprecated)&lt;br /&gt;
| int&lt;br /&gt;
| Maximum number of mailboxes allowed to have Good Mobile service. 0 means unlimited&lt;br /&gt;
|-&lt;br /&gt;
| archivingServiceEnabled&lt;br /&gt;
| boolean&lt;br /&gt;
| Enable or disable domain archiving service&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post '/customers/123455/domains/newcompany.com', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
  'maxNumMailboxes' =&amp;gt; '5',&lt;br /&gt;
  'extraStorage' =&amp;gt; '1024'&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
put '/customers/123455/domains/newcompany.com', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
  'maxNumMailboxes' =&amp;gt; '25',&lt;br /&gt;
  'extraStorage' =&amp;gt; '2048'&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| New domain name doesn't meet the naming requirements&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid domain name&lt;br /&gt;
|-&lt;br /&gt;
| New domain name already exists&lt;br /&gt;
| 400&lt;br /&gt;
| abc.com already exists as a domain or alternate domain&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Move (Reseller Only)==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[PUT] https://api.emailsrvr.com/v0/customers/&lt;br /&gt;
      (new customer account number)/domains/(domain name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Moves the domain to another customer account.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| moveDomain&lt;br /&gt;
| boolean&lt;br /&gt;
| Indicate whether or not moving the domain&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
Note 'Move Domain' and 'Edit Domain' share the same URI and HTTP verb. When the domain doesn't belong to the customer and 'moveDomain' is set to 'true', API will take the request as a 'Move Domain' call.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
put '/customers/123456/domains/newcompany.com', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
  'moveDomain' =&amp;gt; 'true'&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Delete (Reseller Only)==&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[DELETE] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Deletes the domain.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The domain and all the mailboxes, mailbox contents, groups, and contacts are deleted permanently.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
delete '/customers/12345678/domains/newcompany.com', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Alternate Domains ==&lt;br /&gt;
&lt;br /&gt;
=== Index (Reseller Only) ===&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/&lt;br /&gt;
                domains/(domain name)/alternatedomains&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
This operation returns a list of Domain Aliases and Accepted Domains for the domain. The type of the alternate domain is indicated by the 'type' data field. The XML schema for the returned data is [http://api.emailsrvr.com/v0/Schemas/DomainSplitRouting.xsd DomainAlternateList.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/test.com/alternatedomains', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;alternateDomainList 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; xmlns=&amp;quot;urn:xml:domainAlternateList&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;alternateDomains&amp;gt;&lt;br /&gt;
    &amp;lt;alternateDomain&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;domainalias.com&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;type&amp;gt;DomainAlias&amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;/alternateDomain&amp;gt;&lt;br /&gt;
    &amp;lt;alternateDomain&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;accepteddomain.com&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;type&amp;gt;AcceptedDomain&amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;/alternateDomain&amp;gt;&lt;br /&gt;
  &amp;lt;/alternateDomains&amp;gt;&lt;br /&gt;
&amp;lt;/alternateDomainList&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{&amp;quot;alternateDomains&amp;quot;:[{&amp;quot;name&amp;quot;:&amp;quot;domainalias.com&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;DomainAlias&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;accepteddomain.com&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;AcceptedDomain&amp;quot;}]}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add (Reseller Only) ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
 [POST] https://api.emailsrvr.com/v0/customers/(customer account number)&lt;br /&gt;
    /domains/(domain name)/alternatedomains/(alternate domain name)&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Adds either a Domain Alias or Accepted Domain to the domain.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| type&lt;br /&gt;
| string&lt;br /&gt;
| Alternate domain type. Send &amp;quot;DomainAlias&amp;quot; for a domain alias, and &amp;quot;AcceptedDomain&amp;quot; for an accepted domain. (Required)&lt;br /&gt;
|-&lt;br /&gt;
| createForExistingRecipients&lt;br /&gt;
| boolean&lt;br /&gt;
| Whether the alternate addresses should be created for existing mailboxes when adding an Accepted Domain. Sending this field in the request when the type is Domain Alias will throw an error. This defaults to false.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post '/customers/123456/domains/example.com/alternatedomains/accepteddomain.com', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
  'type' =&amp;gt; 'AcceptedDomain'&lt;br /&gt;
  'createForExistingRecipients' =&amp;gt; 'true'&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| New domain name doesn't meet the naming requirements&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid domain name&lt;br /&gt;
|-&lt;br /&gt;
| Alternate domain already exists&lt;br /&gt;
| 400&lt;br /&gt;
| abc.com already exists as a domain or alternate domain&lt;br /&gt;
|-&lt;br /&gt;
| The 'createForExistingRecipients' field was sent with either data, or as a null field. It should not be included in the form data at all.&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid Alternate Domain Setting: createForExistingRecipients is an invalid setting for Domain Aliases&lt;br /&gt;
|-&lt;br /&gt;
| The only valid values for 'type' are 'DomainAlias' and 'AcceptedDomain', for a Domain Alias and Accepted Domain respectively.&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid Alternate Domain type&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Delete (Reseller Only) ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[DELETE] https://api.emailsrvr.com/v0/customers/(customer account number)/&lt;br /&gt;
      domains/(domain name)/alternatedomains/(alternate domain name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Deletes the alternate domain.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
delete '/customers/12345678/domains/example.com/alternatedomains/accepteddomain.com'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Split Domain Routing ==&lt;br /&gt;
&lt;br /&gt;
=== Show Settings ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain)/splitdomainrouting&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
''Description'':&lt;br /&gt;
Shows the current external email server. The XML schema document for the output of this command is [http://api.emailsrvr.com/v0/Schemas/DomainSplitRouting.xsd DomainSplitRouting.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/company.com/splitdomainrouting', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;splitDomainRouting 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; xmlns=&amp;quot;urn:xml:splitDomainRouting&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;externalServer&amp;gt;email.externalserver.com&amp;lt;/externalServer&amp;gt;&lt;br /&gt;
&amp;lt;/splitDomainRouting&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''JSON Result Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&amp;quot;externalServer&amp;quot;:&amp;quot;email.externalserver.com&amp;quot;}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Edit Settings ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[PUT] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain)/splitdomainrouting&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
This command sets the external email server. This command will return a success when the verification passes. Since this involves communication to the external server the request may take some time. If the verification fails a 400 return code will be sent back with the verification's error message.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| externalServer&lt;br /&gt;
| string&lt;br /&gt;
| The address of the external email server. To turn off split domain routing send 'none'. (Required)&lt;br /&gt;
|-&lt;br /&gt;
| verificationAddress&lt;br /&gt;
| string&lt;br /&gt;
| An email address part of your domain or one of the alternate domains that the external server is already set up to handle. (Required only when turning on split domain routing, Do not send this field if turning off.)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
put '/customers/12345678/domains/company.com/splitdomainrouting', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
  'externalServer' =&amp;gt; 'email.externalserver.com',&lt;br /&gt;
  'verificationAddress' =&amp;gt; 'externalaccount@company.com',&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| The SMTP host could not be found.&lt;br /&gt;
| 400&lt;br /&gt;
| One of the verification error messages.&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
== Archiving SSO Login URL ==&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain)/archivingSSOLoginURL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Gets the domain archiving service SSO login URL.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The retrieved URL can be used in browser to access the domain archiving control panel.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/company.com/archivingSSOLoginURL', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| No archiving service&lt;br /&gt;
| 404&lt;br /&gt;
| Domain abc.com has no archiving service enabled&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Domain Public Folders (Reseller Only) ==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
   [PUT] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)/ex/publicfolders&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Enables the Exchange Public Folders feature on the domain. Once enabled, it cannot be disabled.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| enabled&lt;br /&gt;
| string&lt;br /&gt;
| Whether to enable public folders. Once enabled, it cannot be disabled.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
put '/customers/12345678/domains/company.com/ex/publicFolders', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
  'enabled' =&amp;gt; 'true'&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Public folders cannot be turned off after it's been turned on.&lt;br /&gt;
| 400&lt;br /&gt;
| Public Folders cannot be disabled once enabled&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Domain Email Everyone ==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
   [POST] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)/emaileveryone&lt;br /&gt;
   [POST] https://api.emailsrvr.com/v0/domains/(domain name)/emaileveryone&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
Send an email to all mailboxes for the domain. This request returns a list of recipients.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| fromName&lt;br /&gt;
| string&lt;br /&gt;
| Sender's Name.&lt;br /&gt;
|-&lt;br /&gt;
| fromAddress&lt;br /&gt;
| string&lt;br /&gt;
| Sender's Email Address.&lt;br /&gt;
|-&lt;br /&gt;
| subject&lt;br /&gt;
| string&lt;br /&gt;
| Message subject.&lt;br /&gt;
|-&lt;br /&gt;
| body&lt;br /&gt;
| string&lt;br /&gt;
| Message body.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post'/customers/12345678/domains/example.com/emaileveryone', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
  'fromName' =&amp;gt; 'John Doe',&lt;br /&gt;
  'fromAddress' =&amp;gt; 'john.doe@test.com',&lt;br /&gt;
  'subject' =&amp;gt; 'Hi All',&lt;br /&gt;
  'body' =&amp;gt; 'Hello World.',&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;emailAddressList xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:emailAddressList&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;emailAddresses&amp;gt;&lt;br /&gt;
    &amp;lt;address&amp;gt;a@example.com&amp;lt;/address&amp;gt;&lt;br /&gt;
    &amp;lt;address&amp;gt;b@example.com&amp;lt;/address&amp;gt;&lt;br /&gt;
  &amp;lt;/emailAddresses&amp;gt;&lt;br /&gt;
&amp;lt;/emailAddressList&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;emailAddresses&amp;quot;:[&amp;quot;a@example.com&amp;quot;,&amp;quot;b@example.com&amp;quot;]}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Show Domain Catch-All Address ==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)/catchalladdress&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/domains/(domain name)/catchalladdress&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Return the Catch-All Address for the domain. Returns empty string when no Catch-All Address set for the domain.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
When an email is sent to a mailbox that does not exist on your domain, deliver the email to this address. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/999999/domains/example.com/catchalladdress', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&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;emailAddress xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:emailAddress&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;address&amp;gt;abc@example.com&amp;lt;/address&amp;gt;&lt;br /&gt;
&amp;lt;/emailAddress&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&amp;quot;address&amp;quot;:&amp;quot;abc@example.com&amp;quot;}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Edit Domain Catch-All Address ==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[PUT] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)/catchalladdress&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[PUT] https://api.emailsrvr.com/v0/domains/(domain name)/catchalladdress&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Edit the Catch-All Address for the domain.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
When an email is sent to a mailbox that does not exist on your domain, deliver the email to this address. &lt;br /&gt;
&lt;br /&gt;
''Notes'':&lt;br /&gt;
&lt;br /&gt;
This request may take about 1-2 minutes to be applied to the domain.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| address&lt;br /&gt;
| string&lt;br /&gt;
| The Catch-All email address. Set address to empty string to remove Catch-All Address.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post'/customers/12345678/domains/example.com/emaileveryone', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
  'address' =&amp;gt; 'abc@example.com'&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zhen.wei</name></author>	</entry>

	<entry>
		<id>http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Main_Page&amp;diff=440</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Main_Page&amp;diff=440"/>
				<updated>2010-11-01T19:29:10Z</updated>
		
		<summary type="html">&lt;p&gt;Zhen.wei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The The Rackspace Email Rest API provides most of the functions of the Control Panel through a REST-based [http://en.wikipedia.org/wiki/Web_service web API]. Whether it is adding a new customer account, adding mailboxes, or any other of the supported features the API allows your application to administer the changes regardless of your application's language or nature. For more information on RESTful web services refer to the following sites:&lt;br /&gt;
&lt;br /&gt;
[http://www.peej.co.uk/articles/restfully-delicious.html Paul James's Homepage: A RESTful Web service, an example]&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Representational_State_Transfer#External_links Wikipedia: Representational State Transfer - External Links]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The API is accessible to all with access to Control Panel, including resellers, business customers, enterprise customers, and indirect customers. However, not all operations are available to non-resellers. See the [[Rest_API#Operations|Operations]] section for more details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Rackspace Email Soap API Homepage has been moved to [[Soap_API| here]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Recent Changes ==&lt;br /&gt;
&lt;br /&gt;
'''10/31/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Rackspace Mailbox indexes now support custom fields.&lt;br /&gt;
* A Login Token may now be generated for Rackspace Mailboxes.&lt;br /&gt;
* Users can set Rackspace Mailbox storage notification settings. See [[Rackspace_Storage_Notification_(Rest_API)| here]] for more details.&lt;br /&gt;
* Users can now manage admins. See [[Admin_(Rest_API)| here]] for more details.&lt;br /&gt;
* Added Email Everyone to Domain operations. See [[Domain_(Rest_API)#Domain_Email_Everyone | here]] for more details.&lt;br /&gt;
* Added Show/Edit Catch-All Address to Domain operations. See [[Domain_(Rest_API)#Show_Domain_Catch-All_Address | here]] for more details.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''09/01/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Now Rackspace Email Mailbox can be marked as visible in Exchange Global Address List. &lt;br /&gt;
* Exchange Mailbox can be marked as visible in Rackspace Email Company Directory.&lt;br /&gt;
* Rackspace Email/Exchange Mailbox last login time.&lt;br /&gt;
* Filter Rackspace Email/Exchange Mailbox by &amp;quot;Enabled&amp;quot; flag.&lt;br /&gt;
* Resellers now can create Login Token that only can be used to log into sub-account Control Panel. See [[Customer_(Rest_API)#Create_Login_Tokens| here]].&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''08/01/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Added Rackspace Email Mailbox Contact info. See [[Rackspace_Mailbox_(Rest_API)| here]].&lt;br /&gt;
* Added Create Login Token. See [[Customer_(Rest_API)#Create_Login_Tokens| here]].&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''06/20/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Added [[Rackspace_Alias(Rest_API)| Rackspace Email Alias]].&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''06/11/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Added Rackspace Email Mailbox Spam Settings/Blacklist/Safelist. See [[Rackspace_Mailbox_Spam_(Rest_API)| here]].&lt;br /&gt;
* Now Rackspace Email Mailbox can Show/Edit vacation message and email forwarding address. See [[Rackspace_Mailbox_(Rest_API)| here]].&lt;br /&gt;
* Added SharePoint Service Settings. See [[SharePoint_(Rest_API)| here]].&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''05/16/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Added shortened URLs. Any URLs that starts with '/customers/me/domains/~' is equivalent to '/domains/~'.&lt;br /&gt;
* Added Rackspace Email Mailbox Add/Edit/Delete/Index. See [[Rackspace_Mailbox_(Rest_API)| here]].&lt;br /&gt;
* Allows to customize Exchange mailbox list result. See [[Exchange_Mailbox_(Rest_API)#Index| Exchange Mailbox Index]] action 'Custom Fields' section.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
Changes:&lt;br /&gt;
* Server throttling section has been updated. See [[Rest_API#Throttling| here]].&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
Bug fix:&lt;br /&gt;
* Fixed a bug that request without User-Agent Header gets 500 error. Now it gets &amp;quot;Authentication failed&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''03/28/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Rest API can be accessed by Business Users. However, not all operations are available.&lt;br /&gt;
* Domain Public Folders can be enabled now.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
Deprecated:&lt;br /&gt;
* Good Mobile Service is no longer supported.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''03/14/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Index/Add/Edit/Delete Mailbox Permissions.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
Known Issues:&lt;br /&gt;
* Domain public folders can't be enabled using Rest API at this moment. The next release (on 03/21/2010) will fix this problem.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Operations ==&lt;br /&gt;
&lt;br /&gt;
The following pages detail the operations that the API supports. The operations are grouped into sections based on the entity/object types that each operation interacts with. Non-resellers do not have access to all functions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Resource&lt;br /&gt;
!Example URI&lt;br /&gt;
!Business User Access&lt;br /&gt;
|-&lt;br /&gt;
| [[Customer_(Rest_API)| Customer]]&lt;br /&gt;
| /customers/123456789&lt;br /&gt;
| [[Customer_(Rest_API)#Create_Login_Tokens | Create Login Tokens]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Admin_(Rest_API)| Admin]]&lt;br /&gt;
| /customers/123456789/admins/my_admin&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Domain_(Rest_API)| Domain]]&lt;br /&gt;
| /customers/123456789/domains/example.com&lt;br /&gt;
| [[Domain_(Rest_API)#Index| Index]], [[Domain_(Rest_API)#Show| Show]], [[Domain_(Rest_API)#Split Domain Routing| Split Domain Routing]], [[Domain_(Rest_API)#Archiving SSO Login URL| Archiving SSO Login URL]], [[Domain_(Rest_API)#Domain_Public_Folders_.28Reseller_Only.29|Domain Public Folders]], [[Domain_(Rest_API)#Domain Email Everyone| Domain Email Everyone ]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Domain_Spam_(Rest_API)| Domain Spam Settings]]&lt;br /&gt;
| /customers/123456789/domains/example.com/spam/settings&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Rackspace_Mailbox_(Rest_API)|  Rackspace Email Mailbox]]&lt;br /&gt;
|  /customers/123456789/domains/example.com/rs/mailboxes/john.smith&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Rackspace_Mailbox_Spam_(Rest_API)| Rackspace Email Mailbox Spam Settings]]&lt;br /&gt;
|  /customers/123456789/domains/example.com/rs/mailboxes/john.smith/spam&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Rackspace_Storage_Notification_(Rest_API)| Rackspace Storage Notification Settings]]&lt;br /&gt;
|  /customers/123456789/domains/example.com/rs/storageNotification&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Rackspace_Alias(Rest_API)|  Rackspace Email Alias]]&lt;br /&gt;
|  /customers/123456789/domains/example.com/rs/mailboxes/john.smith/alias&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Mailbox_(Rest_API)| Exchange Mailbox]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/mailboxes/john.smith&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Mailbox_Spam_(Rest_API)| Exchange Mailbox Spam Settings]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/mailboxes/john.smith/spam&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Contact_(Rest_API)| Exchange Contact]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/contacts/john.smith&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Distribution_List_(Rest_API)| Exchange Distribution List]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/distributionlists/group.name&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Resource_Mailbox_(Rest_API)| Exchange Resource Mailbox]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/resources/conference.room&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[SharePoint_(Rest_API)| SharePoint]]&lt;br /&gt;
| /customers/123456789/sharepoint/settings&lt;br /&gt;
| [[SharePoint_(Rest_API)#Show | Show]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The examples shown in the operation pages are written in Ruby and extensively use the helper functions shown in the Ruby Examples below.&lt;br /&gt;
&lt;br /&gt;
== Quick Start ==&lt;br /&gt;
&lt;br /&gt;
'''What you need:'''&lt;br /&gt;
* A Rackspace Email and Apps Control Panel admin account&lt;br /&gt;
* A HTTP class library that supports TLS and the HTTP methods: GET, POST, PUT, DELETE.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Making your first API call, an Show Customer request:'''&lt;br /&gt;
# Obtain your API keys&lt;br /&gt;
#:* Click on My Account at the top of the [https://apps.rackspace.com/?cp Control Panel web interface]. Under the Administrators heading there will be an link for the API keys page.&lt;br /&gt;
# Set up your client's HTTP request&lt;br /&gt;
#:* Set up your client to make calls to a URL beginning with &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/v0&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
#:* Populate the Accept, User-Agent and X-Api-Signature HTTP request headers correctly. This is explained in detail [[#HTTP Headers|here]].&lt;br /&gt;
# Make a GET request to /customers/me.&lt;br /&gt;
#:* The complete URI will be &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/v0/customers/me&amp;lt;/nowiki&amp;gt;. Use your HTTP library to retrieve the HTTP response code, 'x-error-message' HTTP response header and HTTP response body so that they may be displayed to help debug and determine success.&lt;br /&gt;
'''From here:'''&lt;br /&gt;
* Learn about the operations you'll be implementing at the subpages [[#Operations|here]].&lt;br /&gt;
&lt;br /&gt;
== Accessing the API ==&lt;br /&gt;
&lt;br /&gt;
Your application will need to make HTTP requests to remote servers. Most programming languages have this function provided in its class library. In addition to the common GET and POST HTTP methods, the library used will also need to support PUT and DELETE.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&lt;br /&gt;
Calls without [http://en.wikipedia.org/wiki/Transport_Layer_Security TLS] (formerly SSL) will complete successfully but it is HIGHLY RECOMMENDED that TLS always be used. Interception of unencrypted communication will allow a third party to have complete access to all functions available via the API.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For some language libraries just using an URL with https:// will cause the library to use TLS. In some other libraries however some options specific to the library may have to be configured to utilize TLS. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All API calls should be directed to a URL in the following format:&lt;br /&gt;
&amp;lt;pre&amp;gt;https://api.emailsrvr.com/(version)/(resource)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;https://api.emailsrvr.com/v0/customers/12345678/domains/customerbusiness.com&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Versions ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Supported Versions''&lt;br /&gt;
!''URL''&lt;br /&gt;
!''Version Documentation''&lt;br /&gt;
|-&lt;br /&gt;
| v0 (current)&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/v0/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
| http://signup.apps.rackspace.com/api-wiki/index.php/Rest_API&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The API version number is a component of the URL that is used to access the API. For example, to access the root of the API, the URL is https://api.emailsrvr.com/v0/. Bug fixes and minor non-breaking changes will be made without changing the version number. When major features or breaking changes are introduced, the version number will be incremented. It is not yet determined how many versions are going to be supported at any one time.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Non-breaking Changes''&lt;br /&gt;
!''Breaking Changes''&lt;br /&gt;
|-&lt;br /&gt;
| Adding new fields or attributes to form fields sent&lt;br /&gt;
| Changing or deleting any fields in form fields sent&lt;br /&gt;
|-&lt;br /&gt;
| Adding fields in returned data&lt;br /&gt;
| Changing or removing fields in returned data&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| Changing the URI of any resource&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Authentication ===&lt;br /&gt;
&lt;br /&gt;
To gain access to the API, your request must include a properly constructed X-Api-Signature HTTP header. Details on what to put in the header are below. To construct the header, you must have the following keys that that are generated from the [https://apps.rackspace.com/?cp Control Panel Web interface]. The key generation page can be found by clicking 'My Account' at the top, then 'Generate API Keys' in the Administrators section.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Key Name&lt;br /&gt;
!Description&lt;br /&gt;
!Example&lt;br /&gt;
|-&lt;br /&gt;
| User Key&lt;br /&gt;
| A public key that corresponds to your admin id&lt;br /&gt;
| ''eGbq9/2hcZsRlr1JV1Pi''&lt;br /&gt;
|-&lt;br /&gt;
| Secret Key&lt;br /&gt;
| A shared secret key&lt;br /&gt;
| ''QHOvchm/40czXhJ1OxfxK7jDHr3t''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An unsuccessful authentication will result in a 403 HTTP code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== X-Api-Signature Header ====&lt;br /&gt;
&lt;br /&gt;
Format is as follows:&lt;br /&gt;
&amp;lt;'''User Key'''&amp;gt;:&amp;lt;'''Timestamp'''&amp;gt;:&amp;lt;'''SHA1 Hash'''&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Example: ''eGbq9/2hcZsRlr1JV1Pi:20010317143725:46VIwd66mOFGG8IkbgnLlXnfnkU=''&lt;br /&gt;
&lt;br /&gt;
Remember to include the colons between the data strings!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''User Key''':&amp;lt;br&amp;gt;&lt;br /&gt;
This is the public key issued by the Control Panel browser interface.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Timestamp''':&amp;lt;br&amp;gt;&lt;br /&gt;
The format is YYYYMMDDHHmmss. All values besides year are zero-padded to two spaces. For example, March 08th 2001 at 2:37.25pm would be ''20010308143725''.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|YYYY&lt;br /&gt;
|Four-digit year&lt;br /&gt;
|-&lt;br /&gt;
| MM&lt;br /&gt;
| Month&lt;br /&gt;
|-&lt;br /&gt;
| DD&lt;br /&gt;
| Day&lt;br /&gt;
|-&lt;br /&gt;
| HH&lt;br /&gt;
| Hour in 24h format&lt;br /&gt;
|-&lt;br /&gt;
| mm&lt;br /&gt;
| Minute&lt;br /&gt;
|-&lt;br /&gt;
| ss&lt;br /&gt;
| Second&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''SHA1 Hash''':&lt;br /&gt;
&lt;br /&gt;
A SHA1 (Secure Hash Algorithm) hash must be applied to a string with the following information:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;'''User Key'''&amp;gt;&amp;lt;'''User Agent'''&amp;gt;&amp;lt;'''Timestamp'''&amp;gt;&amp;lt;'''Secret Key'''&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that the 'User Agent' must be the exact same as what is specified in the User-Agent HTTP header. Using the above example data, the string before hashing is:&amp;lt;br&amp;gt;''eGbq9/2hcZsRlr1JV1PiRackspace Management Interface20010308143725QHOvchm/40czXhJ1OxfxK7jDHr3t''&lt;br /&gt;
&lt;br /&gt;
Resulting base-64 SHA1 Hash:&amp;lt;br&amp;gt;''46VIwd66mOFGG8IkbgnLlXnfnkU=''&lt;br /&gt;
&lt;br /&gt;
Be sure to encode the binary hash, not the hex hash, into base-64. The resulting string should be 28 characters long.&lt;br /&gt;
&lt;br /&gt;
== Using the API ==&lt;br /&gt;
&lt;br /&gt;
=== Requests ===&lt;br /&gt;
&lt;br /&gt;
HTTP requests should be sent to the server with the correct URL, HTTP method, HTTP headers and form data (if needed). The URL specifies the resource, the HTTP method specifies what operation is done on the resource, and form data is used to specify the details of the resource when the resource is added or edited.&lt;br /&gt;
&lt;br /&gt;
The URLs, corresponding HTTP methods, and necessary form data for the desired operations are detailed in the [[#Operations|operation pages]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you're getting the HTTP status code 417 see [[Handling HTTP code 417:  Expectation failed]]&lt;br /&gt;
&lt;br /&gt;
==== URL ====&lt;br /&gt;
&lt;br /&gt;
The URLs are specifies the resource or resource collection. Objects are organized in a tree collection, starting with customers at the top, then domains, then domain objects next (such as mailboxes, contacts, and distribution lists) and so on. The URLs of the resources and collections accessible are found on the operation pages.&lt;br /&gt;
&lt;br /&gt;
==== HTTP Method ====&lt;br /&gt;
&lt;br /&gt;
It is the HTTP method that specifies what operation will be done on the resource. For example, to get the details of a mailbox a HTTP GET will be done on /customers/12345678/domains/example.com/ex/mailboxes/john.smith. If the mailbox does not exist, a HTTP POST to the same URL with the necessary form data will add the mailbox. Then, a HTTP PUT to the same URL will edit mailbox. And to delete the mailbox, an HTTP DELETE would be used.&lt;br /&gt;
&lt;br /&gt;
The types of operations a certain method performs is outlined below.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''HTTP Method''&lt;br /&gt;
!''Operations''&lt;br /&gt;
!''Response''&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=2|GET&lt;br /&gt;
|Index - returns a list of the resources&lt;br /&gt;
|rowspan=2|XML or JSON formatted data&lt;br /&gt;
|-&lt;br /&gt;
|Show - returns the details of the resource&lt;br /&gt;
|-&lt;br /&gt;
|POST&lt;br /&gt;
|Add - adds a new resource&lt;br /&gt;
|rowspan=3|Response code and error message (if applicable) only&lt;br /&gt;
|-&lt;br /&gt;
|PUT&lt;br /&gt;
|Edit - changes the details of the resource&lt;br /&gt;
|-&lt;br /&gt;
|DELETE&lt;br /&gt;
|Delete - deletes the resource&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== HTTP Headers ====&lt;br /&gt;
&lt;br /&gt;
All requests to the API must then include HTTP headers with the following information:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Header Name''&lt;br /&gt;
!''Description''&lt;br /&gt;
!''Example Header Value''&lt;br /&gt;
|-&lt;br /&gt;
| Accept&lt;br /&gt;
| The requested content type (required for Index and Show actions). Fill this with either 'text/xml' or 'application/json'. See [[#Formats|Response Formats]]&lt;br /&gt;
| ''text/xml''&lt;br /&gt;
|-&lt;br /&gt;
| User-Agent&lt;br /&gt;
| An identifier you choose for your client software&lt;br /&gt;
| ''Rackspace Management Interface''&lt;br /&gt;
|-&lt;br /&gt;
| X-Api-Signature&lt;br /&gt;
| An authentication string explained in detail [[#X-Api-Signature_Header|here]]&lt;br /&gt;
| ''eGbq9/2hcZsRlr1JV1Pi:20010317143725:HKUn0aajpSDx7qqGK3vqzn3FglI=''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Form Data ====&lt;br /&gt;
&lt;br /&gt;
When using Add and Edit operations, the details of the resource are sent to the API server via HTTP form data. Your HTTP library should include methods for sending form data along with an HTTP request. The library should by default send the data in the HTTP request body using the 'application/x-www-form-urlencoded' data format.&lt;br /&gt;
&lt;br /&gt;
==== Index Filter/Search ====&lt;br /&gt;
&lt;br /&gt;
The results of Index actions can be filtered/searched. The index URLs can take either one of the query strings: &amp;quot;?startswith=xx&amp;quot; or &amp;quot;?contains=xx,&amp;quot; where &amp;quot;xx&amp;quot; is the key word. If the request specifies more than one of these two query strings, a 400 HTTP error will be returned. Different fields will be searched depending on the resource type, see below.&lt;br /&gt;
&lt;br /&gt;
Note that &amp;quot;0-9&amp;quot; is a reserved key word for query string &amp;quot;startswith.&amp;quot; It represents any result starting with numbers.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Index Actions''&lt;br /&gt;
!''Where the key word will be searched''&lt;br /&gt;
|-&lt;br /&gt;
| Customer&lt;br /&gt;
| Customer name, account number, reference number&lt;br /&gt;
|-&lt;br /&gt;
| Domain&lt;br /&gt;
| Domain name&lt;br /&gt;
|-&lt;br /&gt;
| Mailbox&lt;br /&gt;
| Mailbox name, mailbox display name&lt;br /&gt;
|-&lt;br /&gt;
| Contact&lt;br /&gt;
| Contact display name, external email&lt;br /&gt;
|-&lt;br /&gt;
| Group&lt;br /&gt;
| Group name, group display name&lt;br /&gt;
|-&lt;br /&gt;
| Mobile Service&lt;br /&gt;
| Associated mailbox name, mailbox display name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Throttling ====&lt;br /&gt;
&lt;br /&gt;
The server limits the number of requests allowed per user in a certain period of time.  The number of requests made are logged per minute. Calls that were made correctly with a user's API key, but not completed for any reason, including those exceeding the throttle limit, are included in this count.&lt;br /&gt;
&lt;br /&gt;
If a user is over the throttling limit then a 403 HTTP code will be returned with an &amp;quot;Exceeded request limits&amp;quot; message.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Operation Category''&lt;br /&gt;
!''Request Limit''&lt;br /&gt;
|-&lt;br /&gt;
| GET&lt;br /&gt;
| 60 per minute&lt;br /&gt;
|-&lt;br /&gt;
| PUT, POST, DELETE&lt;br /&gt;
| 30 per minute&lt;br /&gt;
|-&lt;br /&gt;
| POST, PUT, DELETE on a domain&lt;br /&gt;
| 2 per minute&lt;br /&gt;
|-&lt;br /&gt;
| POST, DELETE on alternate domains&lt;br /&gt;
| 2 per minute&lt;br /&gt;
|-&lt;br /&gt;
| Enabling public folders for a domain&lt;br /&gt;
| 1 per 5 minutes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&lt;br /&gt;
Index of Exchange Mailboxes:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hypertext Transfer Protocol&lt;br /&gt;
    GET /v0/customers/12345678/domains/example.com/ex/mailboxes?size=100&amp;amp;offset=100 HTTP/1.1&lt;br /&gt;
    Host: api.emailsrvr.com&lt;br /&gt;
    User-Agent: Rackspace Management Interface&lt;br /&gt;
    X-Api-Signature: eGbq9/2hcZsRlr1JV1Pi:20010317143725:HKUn0aajpSDx7qqGK3vqzn3FglI=&lt;br /&gt;
    Accept: text/xml&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Adding New Exchange Mailbox:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hypertext Transfer Protocol&lt;br /&gt;
    POST /v0/customers/12345678/domains/example.com/ex/mailboxes/john.smith HTTP/1.1&lt;br /&gt;
    Host: api.emailsrvr.com&lt;br /&gt;
    User-Agent: Rackspace Management Interface&lt;br /&gt;
    X-Api-Signature: eGbq9/2hcZsRlr1JV1Pi:20010317143725:HKUn0aajpSDx7qqGK3vqzn3FglI=&lt;br /&gt;
    Content-Length: 53&lt;br /&gt;
        [Content length: 53]&lt;br /&gt;
    Content-Type: application/x-www-form-urlencoded&lt;br /&gt;
 &lt;br /&gt;
Line-based text data: application/x-www-form-urlencoded&lt;br /&gt;
    size=2048&amp;amp;displayName=John%20Smith&amp;amp;password=abcABC123&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Responses ===&lt;br /&gt;
&lt;br /&gt;
==== HTTP Status Code ====&lt;br /&gt;
&lt;br /&gt;
On a successfully executed request, a 200 HTTP Code is returned. If the request was unsuccessful however, an HTTP error code in the 400s or 500s will be returned.&lt;br /&gt;
&lt;br /&gt;
==== HTTP Response Body ====&lt;br /&gt;
&lt;br /&gt;
If the request is an Index or Show request, the request data will be returned in the format specified in the HTTP Body.&lt;br /&gt;
&lt;br /&gt;
===== Formats =====&lt;br /&gt;
&lt;br /&gt;
Requests for data (index and show requests) are returned with XML or JSON data based on what your application populates the [[#HTTP_Headers|HTTP Accept headers]] with.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For XML, populate the header with 'text/xml' (ex: Headers![&amp;quot;Accept&amp;quot;] = &amp;quot;text/xml&amp;quot;). The XML document returned will conform to a published XSD (XML Schema Document). There are many ways to parse the data in an XML document, but we have found that the [http://www.w3schools.com/XPath/default.asp XPath] tree-style traversal has served our purposes. In any case, your application will likely need to use a class library for your chosen method.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For JSON, populate the header with 'application/json' (ex: Headers![&amp;quot;Accept&amp;quot;] = &amp;quot;application/json&amp;quot;). As with XML, a library will likely be needed to parse the data.&lt;br /&gt;
&lt;br /&gt;
==== HTTP Headers ====&lt;br /&gt;
&lt;br /&gt;
The only data returned in the header is the error message (if any).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Header Name''&lt;br /&gt;
!''Description''&lt;br /&gt;
!''Example Header Value''&lt;br /&gt;
|-&lt;br /&gt;
| x-error-message&lt;br /&gt;
| The error message. See [[#Errors|Errors]].&lt;br /&gt;
| Missing required field: name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Errors ====&lt;br /&gt;
&lt;br /&gt;
In the event of an error, the error message will be returned the HTTP header '''x-error-message''' and an HTTP Status Code in the '''400'''s or '''500'''s will be returned.&lt;br /&gt;
&lt;br /&gt;
Note: Every language's HTTP library provides methods for retrieving HTTP response codes and response headers.&lt;br /&gt;
&lt;br /&gt;
Below are some errors that are common to many operations. Each operation also has some specific errors which are outlined with the operation. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
|Format is invalid&lt;br /&gt;
|400&lt;br /&gt;
|When requesting an index or show on a resource the 'Accept' header should be either 'text/xml' or 'application/json'&lt;br /&gt;
|-&lt;br /&gt;
|Expectation  Failed: See [[Handling HTTP code 417: Expectation failed]]&lt;br /&gt;
|417&lt;br /&gt;
|(none)&lt;br /&gt;
|-&lt;br /&gt;
|Customer account number is invalid&lt;br /&gt;
|404&lt;br /&gt;
|Invalid account number&lt;br /&gt;
|-&lt;br /&gt;
|Domain is not found&lt;br /&gt;
|404&lt;br /&gt;
|&amp;lt;domain name&amp;gt; not found&lt;br /&gt;
|-&lt;br /&gt;
|Mailbox is not found&lt;br /&gt;
|404&lt;br /&gt;
|Mailbox not found&lt;br /&gt;
|-&lt;br /&gt;
|Required form field is missing&lt;br /&gt;
|400&lt;br /&gt;
|Missing required field: &amp;lt;required field&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Required form field has null or empty string input&lt;br /&gt;
|400&lt;br /&gt;
|Required field &amp;lt;required field&amp;gt; cannot be empty&lt;br /&gt;
|-&lt;br /&gt;
|Integer form field has non-integer input&lt;br /&gt;
|400&lt;br /&gt;
|Invalid format for &amp;lt;field&amp;gt;, input must be an integer&lt;br /&gt;
|-&lt;br /&gt;
|Boolean form field has non-boolean input&lt;br /&gt;
|400&lt;br /&gt;
|Invalid format for &amp;lt;field&amp;gt;, input must be True or False&lt;br /&gt;
|-&lt;br /&gt;
|Form data has an unrecognized field&lt;br /&gt;
|400&lt;br /&gt;
|Unrecognized field: &amp;lt;field&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Entered invalid IP address&lt;br /&gt;
| 400&lt;br /&gt;
| invalid ip address: 123&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Paging ====&lt;br /&gt;
&lt;br /&gt;
The results of Index actions are split into pages to lessen potentially high resource usage. The index URLs have a query string with parameters in the format &amp;quot;?size=xx&amp;amp;offset=xx.&amp;quot; If a query parameter is omitted, the default value is used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Query Parameter''&lt;br /&gt;
!''Default''&lt;br /&gt;
!''Maximum''&lt;br /&gt;
!''Notes''&lt;br /&gt;
|-&lt;br /&gt;
| size&lt;br /&gt;
| 50&lt;br /&gt;
| 250&lt;br /&gt;
| This is the number of elements per page.&lt;br /&gt;
|-&lt;br /&gt;
| offset&lt;br /&gt;
| 0&lt;br /&gt;
| N/A&lt;br /&gt;
| This is the number of items to offset away from the first item in the list.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Example =====&lt;br /&gt;
&lt;br /&gt;
A PHP Example of paging can be found [[PHP_Examples_(Rest_API)| here]].&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 200 OK&lt;br /&gt;
Cache-Control: private&lt;br /&gt;
Content-Type: text/xml; charset=utf-8&lt;br /&gt;
Server: Microsoft-IIS/7.0&lt;br /&gt;
Date: Fri, 04 Dec 2009 19:08:11 GMT&lt;br /&gt;
Content-Length: 430&lt;br /&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;domainList xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:domainList&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;offset&amp;gt;0&amp;lt;/offset&amp;gt;&lt;br /&gt;
  &amp;lt;size&amp;gt;50&amp;lt;/size&amp;gt;&lt;br /&gt;
  &amp;lt;total&amp;gt;1&amp;lt;/total&amp;gt;&lt;br /&gt;
  &amp;lt;domains&amp;gt;&lt;br /&gt;
    &amp;lt;domain&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;customer.com&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;accountNumber&amp;gt;123456&amp;lt;/accountNumber&amp;gt;&lt;br /&gt;
      &amp;lt;serviceType&amp;gt;rsemail&amp;lt;/serviceType&amp;gt;&lt;br /&gt;
    &amp;lt;/domain&amp;gt;&lt;br /&gt;
  &amp;lt;/domains&amp;gt;&lt;br /&gt;
&amp;lt;/domainList&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 404 Not Found&lt;br /&gt;
Cache-Control: private&lt;br /&gt;
Server: Microsoft-IIS/7.0&lt;br /&gt;
x-error-message: Customer Not Found&lt;br /&gt;
Date: Fri, 04 Dec 2009 19:13:59 GMT&lt;br /&gt;
Content-Length: 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 400 Bad Request&lt;br /&gt;
Cache-Control: private&lt;br /&gt;
Server: Microsoft-IIS/7.0&lt;br /&gt;
x-error-message: Missing required field: type&lt;br /&gt;
Date: Fri, 04 Dec 2009 19:17:29 GMT&lt;br /&gt;
Content-Length: 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
This examples is written in [http://www.ruby-lang.org/en/ Ruby]. To make the examples shorter, helper methods have been written. These methods are part of a NetMethods module. The contents of the NetMethods module is listed below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require  'server.rb'&lt;br /&gt;
&lt;br /&gt;
server = Server.new&lt;br /&gt;
&lt;br /&gt;
response = server.get  '/customers', server.xml_format&lt;br /&gt;
&lt;br /&gt;
#fields = Hash['serviceType' =&amp;gt;  'exchange', 'exchangeMaxNumMailboxes' =&amp;gt; '4']&lt;br /&gt;
#response =  server.post '/customers/me/domains/newdomain.com', fields&lt;br /&gt;
&lt;br /&gt;
puts response.code&lt;br /&gt;
puts response['x-error-message']&lt;br /&gt;
puts response.body&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require 'test/unit/assertions'&lt;br /&gt;
require 'net/http'&lt;br /&gt;
require 'date'&lt;br /&gt;
require 'date/format'&lt;br /&gt;
require 'digest/sha1'&lt;br /&gt;
require 'base64'&lt;br /&gt;
require 'time'&lt;br /&gt;
&lt;br /&gt;
class Server&lt;br /&gt;
  include Test::Unit::Assertions&lt;br /&gt;
  &lt;br /&gt;
  def initialize(server='api.emailsrvr.com', version_prefix='/v0', user_key='xxxxxxxxxxxxxxxxxxxx', secret_hash='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')&lt;br /&gt;
    @server = server&lt;br /&gt;
    @version_prefix = version_prefix&lt;br /&gt;
    @user_key = user_key&lt;br /&gt;
    @secret_hash = secret_hash&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
# Response Type Enums&lt;br /&gt;
&lt;br /&gt;
  def xml_format&lt;br /&gt;
    'text/xml'&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def json_format&lt;br /&gt;
    'application/json'&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# HTTP Request Verbs&lt;br /&gt;
#  &lt;br /&gt;
  def get(url_string, format)&lt;br /&gt;
    uri = full_uri(url_string)&lt;br /&gt;
    headers = prepared_headers&lt;br /&gt;
    headers['Accept'] = format&lt;br /&gt;
    request = Net::HTTP::Get.new(request_uri(uri), headers)&lt;br /&gt;
    http_response = make_request request, uri&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def delete(url_string)&lt;br /&gt;
    uri = full_uri(url_string)&lt;br /&gt;
    request = Net::HTTP::Delete.new(request_uri(uri), prepared_headers)&lt;br /&gt;
    http_response = make_request request, uri&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def put(url_string, fields_hash)&lt;br /&gt;
    uri = full_uri(url_string)&lt;br /&gt;
    request = Net::HTTP::Put.new(request_uri(uri), prepared_headers)&lt;br /&gt;
    request.set_form_data(fields_hash)&lt;br /&gt;
    http_response = make_request request, uri&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def post(url_string, fields_hash)&lt;br /&gt;
    uri = full_uri(url_string)&lt;br /&gt;
    request = Net::HTTP::Post.new(request_uri(uri), prepared_headers)&lt;br /&gt;
    request.set_form_data(fields_hash)&lt;br /&gt;
    http_response = make_request request, uri&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
#&lt;br /&gt;
# HTTP Request Helpers&lt;br /&gt;
# &lt;br /&gt;
  def make_request request, uri&lt;br /&gt;
    response = Net::HTTP::start(uri.host, uri.port)  do |http|&lt;br /&gt;
      http.request request&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    response&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def full_uri url_string&lt;br /&gt;
    URI.parse('http://' + @server + @version_prefix + url_string)&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def request_uri uri&lt;br /&gt;
    request = uri.path&lt;br /&gt;
    if ! uri.query.nil?&lt;br /&gt;
      request = request + '?' + uri.query&lt;br /&gt;
    end&lt;br /&gt;
    request&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def prepared_headers&lt;br /&gt;
    headers = Hash.new&lt;br /&gt;
    headers.merge! headers_auth_creds(@user_key, @secret_hash)&lt;br /&gt;
    headers['Accept'] = xml_format&lt;br /&gt;
    headers&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def headers_auth_creds apiKey, secretKey&lt;br /&gt;
    userAgent = 'Ruby Test Client'&lt;br /&gt;
    timestamp = DateTime.now.strftime('%Y%m%d%H%M%S')&lt;br /&gt;
    &lt;br /&gt;
    data_to_sign = apiKey + userAgent + timestamp + secretKey&lt;br /&gt;
    &lt;br /&gt;
    hash = Base64.encode64(Digest::SHA1.digest(data_to_sign))&lt;br /&gt;
    signature = apiKey + &amp;quot;:&amp;quot; + timestamp + &amp;quot;:&amp;quot; + hash&lt;br /&gt;
    &lt;br /&gt;
    headers = Hash['User-Agent' =&amp;gt; userAgent, 'X-Api-Signature' =&amp;gt; signature]&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== C# ===&lt;br /&gt;
&lt;br /&gt;
This examples is written in [http://msdn.microsoft.com/en-us/vcsharp/default.aspx C#].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Specialized;&lt;br /&gt;
using System.Security.Cryptography;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Net;&lt;br /&gt;
&lt;br /&gt;
public class WebMethods&lt;br /&gt;
{&lt;br /&gt;
  private WebClientBase client;&lt;br /&gt;
  private string baseUrl;&lt;br /&gt;
  private string apiKey;&lt;br /&gt;
  private string secretKey;&lt;br /&gt;
&lt;br /&gt;
  public WebMethods(WebClientBase client, string baseUrl, string apiKey, string secretKey)&lt;br /&gt;
  {&lt;br /&gt;
    this.client = client;&lt;br /&gt;
    this.baseUrl = baseUrl;&lt;br /&gt;
    this.apiKey = apiKey;&lt;br /&gt;
    this.secretKey = secretKey;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  public virtual string Get(string url)&lt;br /&gt;
  {&lt;br /&gt;
    return MakeRemoteCall((client) =&amp;gt;&lt;br /&gt;
      {&lt;br /&gt;
        return client.DownloadString(baseUrl + url);&lt;br /&gt;
      },&lt;br /&gt;
      format);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  public virtual string Post(string url, NameValueCollection data)&lt;br /&gt;
  {&lt;br /&gt;
    return MakeRemoteCall((client) =&amp;gt;&lt;br /&gt;
      {&lt;br /&gt;
        var bytes = client.UploadValues(baseUrl + url, data);&lt;br /&gt;
        return Encoding.UTF8.GetString(bytes);&lt;br /&gt;
      },&lt;br /&gt;
      format);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  private void SignMessage()&lt;br /&gt;
  {&lt;br /&gt;
    var userAgent = &amp;quot;C# Client Library&amp;quot;;&lt;br /&gt;
    client.Headers[&amp;quot;User-Agent&amp;quot;] = userAgent;&lt;br /&gt;
&lt;br /&gt;
    var dateTime = DateTime.UtcNow.ToString(&amp;quot;yyyyMMddHHmmss&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    var dataToSign = apiKey + userAgent + dateTime + secretKey;&lt;br /&gt;
    var hash = SHA1.Create();&lt;br /&gt;
    var signedBytes = hash.ComputeHash(Encoding.UTF8.GetBytes(dataToSign));&lt;br /&gt;
    var signature = Convert.ToBase64String(signedBytes);&lt;br /&gt;
&lt;br /&gt;
    client.Headers[&amp;quot;X-Api-Signature&amp;quot;] = apiKey + &amp;quot;:&amp;quot; + dateTime + &amp;quot;:&amp;quot; + signature;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  private void AssignFormat(string format)&lt;br /&gt;
  {&lt;br /&gt;
    client.Headers[&amp;quot;Accept&amp;quot;] = format;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  private string MakeRemoteCall(Func&amp;lt;WebClientBase, string&amp;gt; remoteCall, string format)&lt;br /&gt;
  {&lt;br /&gt;
    try&lt;br /&gt;
    {&lt;br /&gt;
      SignMessage();&lt;br /&gt;
      AssignFormat(format);&lt;br /&gt;
      return remoteCall.Invoke(client);&lt;br /&gt;
    }&lt;br /&gt;
    catch (WebException e)&lt;br /&gt;
    {&lt;br /&gt;
      throw new ApiException(e);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PHP ===&lt;br /&gt;
&lt;br /&gt;
The PHP Example can be found [[PHP_Examples_(Rest_API)| here]].&lt;/div&gt;</summary>
		<author><name>Zhen.wei</name></author>	</entry>

	<entry>
		<id>http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Domain_(Rest_API)&amp;diff=439</id>
		<title>Domain (Rest API)</title>
		<link rel="alternate" type="text/html" href="http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Domain_(Rest_API)&amp;diff=439"/>
				<updated>2010-11-01T19:22:17Z</updated>
		
		<summary type="html">&lt;p&gt;Zhen.wei: add catch all&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Index ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
This operation returns a list of domains under the account. If a customer account is specified, then a list of domains under that specific account will be returned.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
To retrieve a list of domains owned by the account that is logged in, use &amp;quot;me&amp;quot; as the customer account number i.e. &amp;lt;nowiki&amp;gt;'https://api.emailsrvr.com/v0/customers/me/domains'&amp;lt;/nowiki&amp;gt;. To retrieve a list of domains owned by all customer sub-accounts and your own account, use &amp;quot;all&amp;quot; as the customer account number.&lt;br /&gt;
&lt;br /&gt;
The index operation only supports the GET HTTP verb. For text/xml format, refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/DomainList.xsd DomainList.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/all/domains?size=100&amp;amp;offset=10', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;domainList 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; xmlns=&amp;quot;urn:xml:domainList&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;offset&amp;gt;0&amp;lt;/offset&amp;gt;&lt;br /&gt;
  &amp;lt;size&amp;gt;50&amp;lt;/size&amp;gt;&lt;br /&gt;
  &amp;lt;total&amp;gt;3&amp;lt;/total&amp;gt;&lt;br /&gt;
  &amp;lt;domains&amp;gt;&lt;br /&gt;
    &amp;lt;domain&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;apidomain53.com&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;accountNumber&amp;gt;100000&amp;lt;/accountNumber&amp;gt;&lt;br /&gt;
      &amp;lt;serviceType&amp;gt;both&amp;lt;/serviceType&amp;gt;&lt;br /&gt;
    &amp;lt;/domain&amp;gt;&lt;br /&gt;
    &amp;lt;domain&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;apidomain66.com&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;accountNumber&amp;gt;100001&amp;lt;/accountNumber&amp;gt;&lt;br /&gt;
      &amp;lt;serviceType&amp;gt;both&amp;lt;/serviceType&amp;gt;&lt;br /&gt;
    &amp;lt;/domain&amp;gt;&lt;br /&gt;
    &amp;lt;domain&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;apidomain68.com&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;accountNumber&amp;gt;100002&amp;lt;/accountNumber&amp;gt;&lt;br /&gt;
      &amp;lt;serviceType&amp;gt;both&amp;lt;/serviceType&amp;gt;&lt;br /&gt;
    &amp;lt;/domain&amp;gt;&lt;br /&gt;
  &amp;lt;/domains&amp;gt;&lt;br /&gt;
&amp;lt;/domainList&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&amp;quot;offset&amp;quot;:0,&amp;quot;size&amp;quot;:50,&amp;quot;total&amp;quot;:3,&amp;quot;domains&amp;quot;:&lt;br /&gt;
[{&amp;quot;name&amp;quot;:&amp;quot;apidomain53.com&amp;quot;,&amp;quot;accountNumber&amp;quot;:&amp;quot;100000&amp;quot;,&amp;quot;serviceType&amp;quot;:&amp;quot;both&amp;quot;},&lt;br /&gt;
{&amp;quot;name&amp;quot;:&amp;quot;apidomain66.com&amp;quot;,&amp;quot;accountNumber&amp;quot;:&amp;quot;100001&amp;quot;,&amp;quot;serviceType&amp;quot;:&amp;quot;both&amp;quot;},&lt;br /&gt;
{&amp;quot;name&amp;quot;:&amp;quot;apidomain68.com&amp;quot;,&amp;quot;accountNumber&amp;quot;:&amp;quot;100002&amp;quot;,&amp;quot;serviceType&amp;quot;:&amp;quot;both&amp;quot;}]}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Show ==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
The show operation will return detailed information about the specified domain name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The show operation only supports the GET HTTP verb. For text/xml format, refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/Domain.xsd Domain.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Note'':&lt;br /&gt;
&lt;br /&gt;
These two fields 'exchangeUsedStorage' and 'rsEmailUsedStorage' actually return the number of active mailboxes in each service respectively. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/999999/domains/example.com', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;domain 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; xmlns=&amp;quot;urn:xml:domain&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;name&amp;gt;apidomain21.com&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;accountNumber&amp;gt;100000&amp;lt;/accountNumber&amp;gt;&lt;br /&gt;
  &amp;lt;serviceType&amp;gt;both&amp;lt;/serviceType&amp;gt;&lt;br /&gt;
  &amp;lt;exchangeBaseMailboxSize&amp;gt;2048&amp;lt;/exchangeBaseMailboxSize&amp;gt;&lt;br /&gt;
  &amp;lt;exchangeUsedStorage&amp;gt;0&amp;lt;/exchangeUsedStorage&amp;gt;&lt;br /&gt;
  &amp;lt;exchangeTotalStorage&amp;gt;18432&amp;lt;/exchangeTotalStorage&amp;gt;&lt;br /&gt;
  &amp;lt;exchangeExtraStorage&amp;gt;10240&amp;lt;/exchangeExtraStorage&amp;gt;&lt;br /&gt;
  &amp;lt;exchangeMaxNumMailboxes&amp;gt;4&amp;lt;/exchangeMaxNumMailboxes&amp;gt;&lt;br /&gt;
  &amp;lt;rsEmailBaseMailboxSize&amp;gt;2048&amp;lt;/rsEmailBaseMailboxSize&amp;gt;&lt;br /&gt;
  &amp;lt;rsEmailMaxNumberMailboxes&amp;gt;4&amp;lt;/rsEmailMaxNumberMailboxes&amp;gt;&lt;br /&gt;
  &amp;lt;rsEmailExtraStorage&amp;gt;10240&amp;lt;/rsEmailExtraStorage&amp;gt;&lt;br /&gt;
  &amp;lt;rsEmailUsedStorage&amp;gt;0&amp;lt;/rsEmailUsedStorage&amp;gt;&lt;br /&gt;
  &amp;lt;aliases /&amp;gt;&lt;br /&gt;
  &amp;lt;archivingServiceEnabled&amp;gt;false&amp;lt;/archivingServiceEnabled&amp;gt;&lt;br /&gt;
  &amp;lt;publicFoldersEnabled&amp;gt;false&amp;lt;/publicFoldersEnabled&amp;gt;&lt;br /&gt;
  &amp;lt;blackBerryMobileServiceEnabled&amp;gt;true&amp;lt;/blackBerryMobileServiceEnabled&amp;gt;&lt;br /&gt;
  &amp;lt;blackBerryLicenses&amp;gt;4&amp;lt;/blackBerryLicenses&amp;gt;&lt;br /&gt;
  &amp;lt;activeSyncMobileServiceEnabled&amp;gt;true&amp;lt;/activeSyncMobileServiceEnabled&amp;gt;&lt;br /&gt;
  &amp;lt;activeSyncLicenses&amp;gt;4&amp;lt;/activeSyncLicenses&amp;gt;&lt;br /&gt;
&amp;lt;/domain&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&amp;quot;name&amp;quot;:&amp;quot;apidomain21.com&amp;quot;,&amp;quot;accountNumber&amp;quot;:&amp;quot;100000&amp;quot;,&amp;quot;serviceType&amp;quot;:&amp;quot;both&amp;quot;,&lt;br /&gt;
&amp;quot;exchangeBaseMailboxSize&amp;quot;:2048,&amp;quot;exchangeUsedStorage&amp;quot;:0,&amp;quot;exchangeTotalStorage&amp;quot;:18432,&lt;br /&gt;
&amp;quot;exchangeExtraStorage&amp;quot;:10240,&amp;quot;exchangeMaxNumMailboxes&amp;quot;:4,&amp;quot;rsEmailBaseMailboxSize&amp;quot;:2048,&lt;br /&gt;
&amp;quot;rsEmailMaxNumberMailboxes&amp;quot;:4,&amp;quot;rsEmailExtraStorage&amp;quot;:10240,&amp;quot;rsEmailUsedStorage&amp;quot;:0,&lt;br /&gt;
&amp;quot;aliases&amp;quot;:[],&amp;quot;archivingServiceEnabled&amp;quot;:false,&amp;quot;publicFoldersEnabled&amp;quot;:false,&lt;br /&gt;
&amp;quot;blackBerryMobileServiceEnabled&amp;quot;:true,&amp;quot;blackBerryLicenses&amp;quot;:4,&amp;quot;activeSyncMobileServiceEnabled&amp;quot;:true,&lt;br /&gt;
&amp;quot;activeSyncLicenses&amp;quot;:4}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Add/Edit (Reseller Only)==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
 Add: [POST] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
 Edit: [PUT] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Adds/edits a new domain to the account with the data specified. To add a domain to your own account, use your own account id.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| serviceType&lt;br /&gt;
| string&lt;br /&gt;
| Domain service type. &amp;quot;rsemail&amp;quot; = &amp;quot;Rackspace Email Only&amp;quot;. &amp;quot;exchange&amp;quot; = &amp;quot;Exchange Only&amp;quot;. &amp;quot;both&amp;quot; = &amp;quot;Rackspace Email and Exchange&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| exchangeExtraStorage&lt;br /&gt;
| int&lt;br /&gt;
| Exchange service extra storage in megabytes&lt;br /&gt;
|-&lt;br /&gt;
| exchangeMaxNumMailboxes&lt;br /&gt;
| int&lt;br /&gt;
| Maximum number of mailboxes allowed under the domain Exchange service. Required for Adding Exchange service&lt;br /&gt;
|-&lt;br /&gt;
| rsEmailBaseMailboxSize&lt;br /&gt;
| int&lt;br /&gt;
| Rackspace Email base mailbox size in megabytes&lt;br /&gt;
|-&lt;br /&gt;
| rsEmailMaxNumberMailboxes&lt;br /&gt;
| int&lt;br /&gt;
| Maximum number of mailboxes allowed under the domain Rackspace Email service. Required for Adding Rackspace Email service&lt;br /&gt;
|-&lt;br /&gt;
| rsEmailExtraStorage&lt;br /&gt;
| int&lt;br /&gt;
| Rackspace Email service extra storage in megabytes&lt;br /&gt;
|-&lt;br /&gt;
| blackBerryMobileServiceEnabled&lt;br /&gt;
| boolean&lt;br /&gt;
| Enable or disable domain BlackBerry Mobile service&lt;br /&gt;
|-&lt;br /&gt;
| blackBerryLicenses&lt;br /&gt;
| int&lt;br /&gt;
| Maximum number of mailboxes allowed to have BlackBerry Mobile service. 0 means unlimited&lt;br /&gt;
|-&lt;br /&gt;
| activeSyncMobileServiceEnabled&lt;br /&gt;
| boolean&lt;br /&gt;
| Enable or disable domain ActiveSync Mobile service&lt;br /&gt;
|-&lt;br /&gt;
| activeSyncLicenses&lt;br /&gt;
| int&lt;br /&gt;
| Maximum number of mailboxes allowed to have ActiveSync Mobile service. 0 means unlimited&lt;br /&gt;
|-&lt;br /&gt;
| goodMobileServiceEnabled (deprecated)&lt;br /&gt;
| boolean&lt;br /&gt;
| Enable or disable domain Good Mobile service&lt;br /&gt;
|-&lt;br /&gt;
| goodMobileLicenses (deprecated)&lt;br /&gt;
| int&lt;br /&gt;
| Maximum number of mailboxes allowed to have Good Mobile service. 0 means unlimited&lt;br /&gt;
|-&lt;br /&gt;
| archivingServiceEnabled&lt;br /&gt;
| boolean&lt;br /&gt;
| Enable or disable domain archiving service&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post '/customers/123455/domains/newcompany.com', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
  'maxNumMailboxes' =&amp;gt; '5',&lt;br /&gt;
  'extraStorage' =&amp;gt; '1024'&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
put '/customers/123455/domains/newcompany.com', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
  'maxNumMailboxes' =&amp;gt; '25',&lt;br /&gt;
  'extraStorage' =&amp;gt; '2048'&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| New domain name doesn't meet the naming requirements&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid domain name&lt;br /&gt;
|-&lt;br /&gt;
| New domain name already exists&lt;br /&gt;
| 400&lt;br /&gt;
| abc.com already exists as a domain or alternate domain&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Move (Reseller Only)==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[PUT] https://api.emailsrvr.com/v0/customers/&lt;br /&gt;
      (new customer account number)/domains/(domain name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Moves the domain to another customer account.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| moveDomain&lt;br /&gt;
| boolean&lt;br /&gt;
| Indicate whether or not moving the domain&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
Note 'Move Domain' and 'Edit Domain' share the same URI and HTTP verb. When the domain doesn't belong to the customer and 'moveDomain' is set to 'true', API will take the request as a 'Move Domain' call.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
put '/customers/123456/domains/newcompany.com', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
  'moveDomain' =&amp;gt; 'true'&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Delete (Reseller Only)==&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[DELETE] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Deletes the domain.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The domain and all the mailboxes, mailbox contents, groups, and contacts are deleted permanently.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
delete '/customers/12345678/domains/newcompany.com', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Alternate Domains ==&lt;br /&gt;
&lt;br /&gt;
=== Index (Reseller Only) ===&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/&lt;br /&gt;
                domains/(domain name)/alternatedomains&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
This operation returns a list of Domain Aliases and Accepted Domains for the domain. The type of the alternate domain is indicated by the 'type' data field. The XML schema for the returned data is [http://api.emailsrvr.com/v0/Schemas/DomainSplitRouting.xsd DomainAlternateList.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/test.com/alternatedomains', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;alternateDomainList 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; xmlns=&amp;quot;urn:xml:domainAlternateList&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;alternateDomains&amp;gt;&lt;br /&gt;
    &amp;lt;alternateDomain&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;domainalias.com&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;type&amp;gt;DomainAlias&amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;/alternateDomain&amp;gt;&lt;br /&gt;
    &amp;lt;alternateDomain&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;accepteddomain.com&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;type&amp;gt;AcceptedDomain&amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;/alternateDomain&amp;gt;&lt;br /&gt;
  &amp;lt;/alternateDomains&amp;gt;&lt;br /&gt;
&amp;lt;/alternateDomainList&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{&amp;quot;alternateDomains&amp;quot;:[{&amp;quot;name&amp;quot;:&amp;quot;domainalias.com&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;DomainAlias&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;accepteddomain.com&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;AcceptedDomain&amp;quot;}]}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add (Reseller Only) ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
 [POST] https://api.emailsrvr.com/v0/customers/(customer account number)&lt;br /&gt;
    /domains/(domain name)/alternatedomains/(alternate domain name)&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Adds either a Domain Alias or Accepted Domain to the domain.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| type&lt;br /&gt;
| string&lt;br /&gt;
| Alternate domain type. Send &amp;quot;DomainAlias&amp;quot; for a domain alias, and &amp;quot;AcceptedDomain&amp;quot; for an accepted domain. (Required)&lt;br /&gt;
|-&lt;br /&gt;
| createForExistingRecipients&lt;br /&gt;
| boolean&lt;br /&gt;
| Whether the alternate addresses should be created for existing mailboxes when adding an Accepted Domain. Sending this field in the request when the type is Domain Alias will throw an error. This defaults to false.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post '/customers/123456/domains/example.com/alternatedomains/accepteddomain.com', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
  'type' =&amp;gt; 'AcceptedDomain'&lt;br /&gt;
  'createForExistingRecipients' =&amp;gt; 'true'&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| New domain name doesn't meet the naming requirements&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid domain name&lt;br /&gt;
|-&lt;br /&gt;
| Alternate domain already exists&lt;br /&gt;
| 400&lt;br /&gt;
| abc.com already exists as a domain or alternate domain&lt;br /&gt;
|-&lt;br /&gt;
| The 'createForExistingRecipients' field was sent with either data, or as a null field. It should not be included in the form data at all.&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid Alternate Domain Setting: createForExistingRecipients is an invalid setting for Domain Aliases&lt;br /&gt;
|-&lt;br /&gt;
| The only valid values for 'type' are 'DomainAlias' and 'AcceptedDomain', for a Domain Alias and Accepted Domain respectively.&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid Alternate Domain type&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Delete (Reseller Only) ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[DELETE] https://api.emailsrvr.com/v0/customers/(customer account number)/&lt;br /&gt;
      domains/(domain name)/alternatedomains/(alternate domain name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Deletes the alternate domain.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
delete '/customers/12345678/domains/example.com/alternatedomains/accepteddomain.com'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Split Domain Routing ==&lt;br /&gt;
&lt;br /&gt;
=== Show Settings ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain)/splitdomainrouting&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
''Description'':&lt;br /&gt;
Shows the current external email server. The XML schema document for the output of this command is [http://api.emailsrvr.com/v0/Schemas/DomainSplitRouting.xsd DomainSplitRouting.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/company.com/splitdomainrouting', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;splitDomainRouting 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; xmlns=&amp;quot;urn:xml:splitDomainRouting&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;externalServer&amp;gt;email.externalserver.com&amp;lt;/externalServer&amp;gt;&lt;br /&gt;
&amp;lt;/splitDomainRouting&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''JSON Result Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&amp;quot;externalServer&amp;quot;:&amp;quot;email.externalserver.com&amp;quot;}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Edit Settings ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[PUT] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain)/splitdomainrouting&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
This command sets the external email server. This command will return a success when the verification passes. Since this involves communication to the external server the request may take some time. If the verification fails a 400 return code will be sent back with the verification's error message.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| externalServer&lt;br /&gt;
| string&lt;br /&gt;
| The address of the external email server. To turn off split domain routing send 'none'. (Required)&lt;br /&gt;
|-&lt;br /&gt;
| verificationAddress&lt;br /&gt;
| string&lt;br /&gt;
| An email address part of your domain or one of the alternate domains that the external server is already set up to handle. (Required only when turning on split domain routing, Do not send this field if turning off.)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
put '/customers/12345678/domains/company.com/splitdomainrouting', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
  'externalServer' =&amp;gt; 'email.externalserver.com',&lt;br /&gt;
  'verificationAddress' =&amp;gt; 'externalaccount@company.com',&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| The SMTP host could not be found.&lt;br /&gt;
| 400&lt;br /&gt;
| One of the verification error messages.&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
== Archiving SSO Login URL ==&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain)/archivingSSOLoginURL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Gets the domain archiving service SSO login URL.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The retrieved URL can be used in browser to access the domain archiving control panel.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/company.com/archivingSSOLoginURL', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| No archiving service&lt;br /&gt;
| 404&lt;br /&gt;
| Domain abc.com has no archiving service enabled&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Domain Public Folders (Reseller Only) ==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
   [PUT] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)/ex/publicfolders&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Enables the Exchange Public Folders feature on the domain. Once enabled, it cannot be disabled.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| enabled&lt;br /&gt;
| string&lt;br /&gt;
| Whether to enable public folders. Once enabled, it cannot be disabled.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
put '/customers/12345678/domains/company.com/ex/publicFolders', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
  'enabled' =&amp;gt; 'true'&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Public folders cannot be turned off after it's been turned on.&lt;br /&gt;
| 400&lt;br /&gt;
| Public Folders cannot be disabled once enabled&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Domain Email Everyone ==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
   [POST] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)/emaileveryone&lt;br /&gt;
   [POST] https://api.emailsrvr.com/v0/domains/(domain name)/emaileveryone&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
Send an email to all mailboxes for the domain. This request returns a list of recipients.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| fromName&lt;br /&gt;
| string&lt;br /&gt;
| Sender's Name.&lt;br /&gt;
|-&lt;br /&gt;
| fromAddress&lt;br /&gt;
| string&lt;br /&gt;
| Sender's Email Address.&lt;br /&gt;
|-&lt;br /&gt;
| subject&lt;br /&gt;
| string&lt;br /&gt;
| Message subject.&lt;br /&gt;
|-&lt;br /&gt;
| body&lt;br /&gt;
| string&lt;br /&gt;
| Message body.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post'/customers/12345678/domains/example.com/emaileveryone', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
  'fromName' =&amp;gt; 'John Doe',&lt;br /&gt;
  'fromAddress' =&amp;gt; 'john.doe@test.com',&lt;br /&gt;
  'subject' =&amp;gt; 'Hi All',&lt;br /&gt;
  'body' =&amp;gt; 'Hello World.',&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;emailAddressList xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:emailAddressList&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;emailAddresses&amp;gt;&lt;br /&gt;
    &amp;lt;address&amp;gt;a@example.com&amp;lt;/address&amp;gt;&lt;br /&gt;
    &amp;lt;address&amp;gt;b@example.com&amp;lt;/address&amp;gt;&lt;br /&gt;
  &amp;lt;/emailAddresses&amp;gt;&lt;br /&gt;
&amp;lt;/emailAddressList&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;emailAddresses&amp;quot;:[&amp;quot;a@example.com&amp;quot;,&amp;quot;b@example.com&amp;quot;]}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Show Domain Catch-All Address ==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)/catchalladdress&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/domains/(domain name)/catchalladdress&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Return the Catch-All Address for the domain. Returns empty string when no Catch-All Address set for the domain.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
When an email is sent to a mailbox that does not exist on your domain, deliver the email to this address. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/999999/domains/example.com/catchalladdress', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&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;emailAddress xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:emailAddress&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;address&amp;gt;abc@example.com&amp;lt;/address&amp;gt;&lt;br /&gt;
&amp;lt;/emailAddress&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&amp;quot;address&amp;quot;:&amp;quot;abc@example.com&amp;quot;}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Edit Domain Catch-All Address ==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[PUT] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)/catchalladdress&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[PUT] https://api.emailsrvr.com/v0/domains/(domain name)/catchalladdress&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Edit the Catch-All Address for the domain.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
When an email is sent to a mailbox that does not exist on your domain, deliver the email to this address. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| address&lt;br /&gt;
| string&lt;br /&gt;
| The Catch-All email address. Set address to empty string to remove Catch-All Address.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post'/customers/12345678/domains/example.com/emaileveryone', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
  'address' =&amp;gt; 'abc@example.com'&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zhen.wei</name></author>	</entry>

	<entry>
		<id>http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Main_Page&amp;diff=438</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Main_Page&amp;diff=438"/>
				<updated>2010-11-01T03:10:21Z</updated>
		
		<summary type="html">&lt;p&gt;Zhen.wei: 10/31 update 2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The The Rackspace Email Rest API provides most of the functions of the Control Panel through a REST-based [http://en.wikipedia.org/wiki/Web_service web API]. Whether it is adding a new customer account, adding mailboxes, or any other of the supported features the API allows your application to administer the changes regardless of your application's language or nature. For more information on RESTful web services refer to the following sites:&lt;br /&gt;
&lt;br /&gt;
[http://www.peej.co.uk/articles/restfully-delicious.html Paul James's Homepage: A RESTful Web service, an example]&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Representational_State_Transfer#External_links Wikipedia: Representational State Transfer - External Links]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The API is accessible to all with access to Control Panel, including resellers, business customers, enterprise customers, and indirect customers. However, not all operations are available to non-resellers. See the [[Rest_API#Operations|Operations]] section for more details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Rackspace Email Soap API Homepage has been moved to [[Soap_API| here]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Recent Changes ==&lt;br /&gt;
&lt;br /&gt;
'''10/31/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Rackspace Mailbox indexes now support custom fields.&lt;br /&gt;
* A Login Token may now be generated for Rackspace Mailboxes.&lt;br /&gt;
* Users can set Rackspace Mailbox storage notification settings. See [[Rackspace_Storage_Notification_(Rest_API)| here]] for more details.&lt;br /&gt;
* Users can now manage admins. See [[Admin_(Rest_API)| here]] for more details.&lt;br /&gt;
* Added Email Everyone to Domain operations. See [[Domain_(Rest_API)#Domain_Email_Everyone | here]] for more details.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''09/01/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Now Rackspace Email Mailbox can be marked as visible in Exchange Global Address List. &lt;br /&gt;
* Exchange Mailbox can be marked as visible in Rackspace Email Company Directory.&lt;br /&gt;
* Rackspace Email/Exchange Mailbox last login time.&lt;br /&gt;
* Filter Rackspace Email/Exchange Mailbox by &amp;quot;Enabled&amp;quot; flag.&lt;br /&gt;
* Resellers now can create Login Token that only can be used to log into sub-account Control Panel. See [[Customer_(Rest_API)#Create_Login_Tokens| here]].&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''08/01/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Added Rackspace Email Mailbox Contact info. See [[Rackspace_Mailbox_(Rest_API)| here]].&lt;br /&gt;
* Added Create Login Token. See [[Customer_(Rest_API)#Create_Login_Tokens| here]].&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''06/20/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Added [[Rackspace_Alias(Rest_API)| Rackspace Email Alias]].&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''06/11/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Added Rackspace Email Mailbox Spam Settings/Blacklist/Safelist. See [[Rackspace_Mailbox_Spam_(Rest_API)| here]].&lt;br /&gt;
* Now Rackspace Email Mailbox can Show/Edit vacation message and email forwarding address. See [[Rackspace_Mailbox_(Rest_API)| here]].&lt;br /&gt;
* Added SharePoint Service Settings. See [[SharePoint_(Rest_API)| here]].&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''05/16/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Added shortened URLs. Any URLs that starts with '/customers/me/domains/~' is equivalent to '/domains/~'.&lt;br /&gt;
* Added Rackspace Email Mailbox Add/Edit/Delete/Index. See [[Rackspace_Mailbox_(Rest_API)| here]].&lt;br /&gt;
* Allows to customize Exchange mailbox list result. See [[Exchange_Mailbox_(Rest_API)#Index| Exchange Mailbox Index]] action 'Custom Fields' section.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
Changes:&lt;br /&gt;
* Server throttling section has been updated. See [[Rest_API#Throttling| here]].&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
Bug fix:&lt;br /&gt;
* Fixed a bug that request without User-Agent Header gets 500 error. Now it gets &amp;quot;Authentication failed&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''03/28/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Rest API can be accessed by Business Users. However, not all operations are available.&lt;br /&gt;
* Domain Public Folders can be enabled now.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
Deprecated:&lt;br /&gt;
* Good Mobile Service is no longer supported.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''03/14/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Index/Add/Edit/Delete Mailbox Permissions.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
Known Issues:&lt;br /&gt;
* Domain public folders can't be enabled using Rest API at this moment. The next release (on 03/21/2010) will fix this problem.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Operations ==&lt;br /&gt;
&lt;br /&gt;
The following pages detail the operations that the API supports. The operations are grouped into sections based on the entity/object types that each operation interacts with. Non-resellers do not have access to all functions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Resource&lt;br /&gt;
!Example URI&lt;br /&gt;
!Business User Access&lt;br /&gt;
|-&lt;br /&gt;
| [[Customer_(Rest_API)| Customer]]&lt;br /&gt;
| /customers/123456789&lt;br /&gt;
| [[Customer_(Rest_API)#Create_Login_Tokens | Create Login Tokens]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Admin_(Rest_API)| Admin]]&lt;br /&gt;
| /customers/123456789/admins/my_admin&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Domain_(Rest_API)| Domain]]&lt;br /&gt;
| /customers/123456789/domains/example.com&lt;br /&gt;
| [[Domain_(Rest_API)#Index| Index]], [[Domain_(Rest_API)#Show| Show]], [[Domain_(Rest_API)#Split Domain Routing| Split Domain Routing]], [[Domain_(Rest_API)#Archiving SSO Login URL| Archiving SSO Login URL]], [[Domain_(Rest_API)#Domain_Public_Folders_.28Reseller_Only.29|Domain Public Folders]], [[Domain_(Rest_API)#Domain Email Everyone| Domain Email Everyone ]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Domain_Spam_(Rest_API)| Domain Spam Settings]]&lt;br /&gt;
| /customers/123456789/domains/example.com/spam/settings&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Rackspace_Mailbox_(Rest_API)|  Rackspace Email Mailbox]]&lt;br /&gt;
|  /customers/123456789/domains/example.com/rs/mailboxes/john.smith&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Rackspace_Mailbox_Spam_(Rest_API)| Rackspace Email Mailbox Spam Settings]]&lt;br /&gt;
|  /customers/123456789/domains/example.com/rs/mailboxes/john.smith/spam&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Rackspace_Storage_Notification_(Rest_API)| Rackspace Storage Notification Settings]]&lt;br /&gt;
|  /customers/123456789/domains/example.com/rs/storageNotification&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Rackspace_Alias(Rest_API)|  Rackspace Email Alias]]&lt;br /&gt;
|  /customers/123456789/domains/example.com/rs/mailboxes/john.smith/alias&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Mailbox_(Rest_API)| Exchange Mailbox]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/mailboxes/john.smith&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Mailbox_Spam_(Rest_API)| Exchange Mailbox Spam Settings]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/mailboxes/john.smith/spam&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Contact_(Rest_API)| Exchange Contact]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/contacts/john.smith&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Distribution_List_(Rest_API)| Exchange Distribution List]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/distributionlists/group.name&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Resource_Mailbox_(Rest_API)| Exchange Resource Mailbox]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/resources/conference.room&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[SharePoint_(Rest_API)| SharePoint]]&lt;br /&gt;
| /customers/123456789/sharepoint/settings&lt;br /&gt;
| [[SharePoint_(Rest_API)#Show | Show]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The examples shown in the operation pages are written in Ruby and extensively use the helper functions shown in the Ruby Examples below.&lt;br /&gt;
&lt;br /&gt;
== Quick Start ==&lt;br /&gt;
&lt;br /&gt;
'''What you need:'''&lt;br /&gt;
* A Rackspace Email and Apps Control Panel admin account&lt;br /&gt;
* A HTTP class library that supports TLS and the HTTP methods: GET, POST, PUT, DELETE.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Making your first API call, an Show Customer request:'''&lt;br /&gt;
# Obtain your API keys&lt;br /&gt;
#:* Click on My Account at the top of the [https://apps.rackspace.com/?cp Control Panel web interface]. Under the Administrators heading there will be an link for the API keys page.&lt;br /&gt;
# Set up your client's HTTP request&lt;br /&gt;
#:* Set up your client to make calls to a URL beginning with &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/v0&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
#:* Populate the Accept, User-Agent and X-Api-Signature HTTP request headers correctly. This is explained in detail [[#HTTP Headers|here]].&lt;br /&gt;
# Make a GET request to /customers/me.&lt;br /&gt;
#:* The complete URI will be &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/v0/customers/me&amp;lt;/nowiki&amp;gt;. Use your HTTP library to retrieve the HTTP response code, 'x-error-message' HTTP response header and HTTP response body so that they may be displayed to help debug and determine success.&lt;br /&gt;
'''From here:'''&lt;br /&gt;
* Learn about the operations you'll be implementing at the subpages [[#Operations|here]].&lt;br /&gt;
&lt;br /&gt;
== Accessing the API ==&lt;br /&gt;
&lt;br /&gt;
Your application will need to make HTTP requests to remote servers. Most programming languages have this function provided in its class library. In addition to the common GET and POST HTTP methods, the library used will also need to support PUT and DELETE.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&lt;br /&gt;
Calls without [http://en.wikipedia.org/wiki/Transport_Layer_Security TLS] (formerly SSL) will complete successfully but it is HIGHLY RECOMMENDED that TLS always be used. Interception of unencrypted communication will allow a third party to have complete access to all functions available via the API.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For some language libraries just using an URL with https:// will cause the library to use TLS. In some other libraries however some options specific to the library may have to be configured to utilize TLS. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All API calls should be directed to a URL in the following format:&lt;br /&gt;
&amp;lt;pre&amp;gt;https://api.emailsrvr.com/(version)/(resource)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;https://api.emailsrvr.com/v0/customers/12345678/domains/customerbusiness.com&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Versions ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Supported Versions''&lt;br /&gt;
!''URL''&lt;br /&gt;
!''Version Documentation''&lt;br /&gt;
|-&lt;br /&gt;
| v0 (current)&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/v0/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
| http://signup.apps.rackspace.com/api-wiki/index.php/Rest_API&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The API version number is a component of the URL that is used to access the API. For example, to access the root of the API, the URL is https://api.emailsrvr.com/v0/. Bug fixes and minor non-breaking changes will be made without changing the version number. When major features or breaking changes are introduced, the version number will be incremented. It is not yet determined how many versions are going to be supported at any one time.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Non-breaking Changes''&lt;br /&gt;
!''Breaking Changes''&lt;br /&gt;
|-&lt;br /&gt;
| Adding new fields or attributes to form fields sent&lt;br /&gt;
| Changing or deleting any fields in form fields sent&lt;br /&gt;
|-&lt;br /&gt;
| Adding fields in returned data&lt;br /&gt;
| Changing or removing fields in returned data&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| Changing the URI of any resource&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Authentication ===&lt;br /&gt;
&lt;br /&gt;
To gain access to the API, your request must include a properly constructed X-Api-Signature HTTP header. Details on what to put in the header are below. To construct the header, you must have the following keys that that are generated from the [https://apps.rackspace.com/?cp Control Panel Web interface]. The key generation page can be found by clicking 'My Account' at the top, then 'Generate API Keys' in the Administrators section.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Key Name&lt;br /&gt;
!Description&lt;br /&gt;
!Example&lt;br /&gt;
|-&lt;br /&gt;
| User Key&lt;br /&gt;
| A public key that corresponds to your admin id&lt;br /&gt;
| ''eGbq9/2hcZsRlr1JV1Pi''&lt;br /&gt;
|-&lt;br /&gt;
| Secret Key&lt;br /&gt;
| A shared secret key&lt;br /&gt;
| ''QHOvchm/40czXhJ1OxfxK7jDHr3t''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An unsuccessful authentication will result in a 403 HTTP code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== X-Api-Signature Header ====&lt;br /&gt;
&lt;br /&gt;
Format is as follows:&lt;br /&gt;
&amp;lt;'''User Key'''&amp;gt;:&amp;lt;'''Timestamp'''&amp;gt;:&amp;lt;'''SHA1 Hash'''&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Example: ''eGbq9/2hcZsRlr1JV1Pi:20010317143725:46VIwd66mOFGG8IkbgnLlXnfnkU=''&lt;br /&gt;
&lt;br /&gt;
Remember to include the colons between the data strings!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''User Key''':&amp;lt;br&amp;gt;&lt;br /&gt;
This is the public key issued by the Control Panel browser interface.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Timestamp''':&amp;lt;br&amp;gt;&lt;br /&gt;
The format is YYYYMMDDHHmmss. All values besides year are zero-padded to two spaces. For example, March 08th 2001 at 2:37.25pm would be ''20010308143725''.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|YYYY&lt;br /&gt;
|Four-digit year&lt;br /&gt;
|-&lt;br /&gt;
| MM&lt;br /&gt;
| Month&lt;br /&gt;
|-&lt;br /&gt;
| DD&lt;br /&gt;
| Day&lt;br /&gt;
|-&lt;br /&gt;
| HH&lt;br /&gt;
| Hour in 24h format&lt;br /&gt;
|-&lt;br /&gt;
| mm&lt;br /&gt;
| Minute&lt;br /&gt;
|-&lt;br /&gt;
| ss&lt;br /&gt;
| Second&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''SHA1 Hash''':&lt;br /&gt;
&lt;br /&gt;
A SHA1 (Secure Hash Algorithm) hash must be applied to a string with the following information:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;'''User Key'''&amp;gt;&amp;lt;'''User Agent'''&amp;gt;&amp;lt;'''Timestamp'''&amp;gt;&amp;lt;'''Secret Key'''&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that the 'User Agent' must be the exact same as what is specified in the User-Agent HTTP header. Using the above example data, the string before hashing is:&amp;lt;br&amp;gt;''eGbq9/2hcZsRlr1JV1PiRackspace Management Interface20010308143725QHOvchm/40czXhJ1OxfxK7jDHr3t''&lt;br /&gt;
&lt;br /&gt;
Resulting base-64 SHA1 Hash:&amp;lt;br&amp;gt;''46VIwd66mOFGG8IkbgnLlXnfnkU=''&lt;br /&gt;
&lt;br /&gt;
Be sure to encode the binary hash, not the hex hash, into base-64. The resulting string should be 28 characters long.&lt;br /&gt;
&lt;br /&gt;
== Using the API ==&lt;br /&gt;
&lt;br /&gt;
=== Requests ===&lt;br /&gt;
&lt;br /&gt;
HTTP requests should be sent to the server with the correct URL, HTTP method, HTTP headers and form data (if needed). The URL specifies the resource, the HTTP method specifies what operation is done on the resource, and form data is used to specify the details of the resource when the resource is added or edited.&lt;br /&gt;
&lt;br /&gt;
The URLs, corresponding HTTP methods, and necessary form data for the desired operations are detailed in the [[#Operations|operation pages]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you're getting the HTTP status code 417 see [[Handling HTTP code 417:  Expectation failed]]&lt;br /&gt;
&lt;br /&gt;
==== URL ====&lt;br /&gt;
&lt;br /&gt;
The URLs are specifies the resource or resource collection. Objects are organized in a tree collection, starting with customers at the top, then domains, then domain objects next (such as mailboxes, contacts, and distribution lists) and so on. The URLs of the resources and collections accessible are found on the operation pages.&lt;br /&gt;
&lt;br /&gt;
==== HTTP Method ====&lt;br /&gt;
&lt;br /&gt;
It is the HTTP method that specifies what operation will be done on the resource. For example, to get the details of a mailbox a HTTP GET will be done on /customers/12345678/domains/example.com/ex/mailboxes/john.smith. If the mailbox does not exist, a HTTP POST to the same URL with the necessary form data will add the mailbox. Then, a HTTP PUT to the same URL will edit mailbox. And to delete the mailbox, an HTTP DELETE would be used.&lt;br /&gt;
&lt;br /&gt;
The types of operations a certain method performs is outlined below.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''HTTP Method''&lt;br /&gt;
!''Operations''&lt;br /&gt;
!''Response''&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=2|GET&lt;br /&gt;
|Index - returns a list of the resources&lt;br /&gt;
|rowspan=2|XML or JSON formatted data&lt;br /&gt;
|-&lt;br /&gt;
|Show - returns the details of the resource&lt;br /&gt;
|-&lt;br /&gt;
|POST&lt;br /&gt;
|Add - adds a new resource&lt;br /&gt;
|rowspan=3|Response code and error message (if applicable) only&lt;br /&gt;
|-&lt;br /&gt;
|PUT&lt;br /&gt;
|Edit - changes the details of the resource&lt;br /&gt;
|-&lt;br /&gt;
|DELETE&lt;br /&gt;
|Delete - deletes the resource&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== HTTP Headers ====&lt;br /&gt;
&lt;br /&gt;
All requests to the API must then include HTTP headers with the following information:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Header Name''&lt;br /&gt;
!''Description''&lt;br /&gt;
!''Example Header Value''&lt;br /&gt;
|-&lt;br /&gt;
| Accept&lt;br /&gt;
| The requested content type (required for Index and Show actions). Fill this with either 'text/xml' or 'application/json'. See [[#Formats|Response Formats]]&lt;br /&gt;
| ''text/xml''&lt;br /&gt;
|-&lt;br /&gt;
| User-Agent&lt;br /&gt;
| An identifier you choose for your client software&lt;br /&gt;
| ''Rackspace Management Interface''&lt;br /&gt;
|-&lt;br /&gt;
| X-Api-Signature&lt;br /&gt;
| An authentication string explained in detail [[#X-Api-Signature_Header|here]]&lt;br /&gt;
| ''eGbq9/2hcZsRlr1JV1Pi:20010317143725:HKUn0aajpSDx7qqGK3vqzn3FglI=''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Form Data ====&lt;br /&gt;
&lt;br /&gt;
When using Add and Edit operations, the details of the resource are sent to the API server via HTTP form data. Your HTTP library should include methods for sending form data along with an HTTP request. The library should by default send the data in the HTTP request body using the 'application/x-www-form-urlencoded' data format.&lt;br /&gt;
&lt;br /&gt;
==== Index Filter/Search ====&lt;br /&gt;
&lt;br /&gt;
The results of Index actions can be filtered/searched. The index URLs can take either one of the query strings: &amp;quot;?startswith=xx&amp;quot; or &amp;quot;?contains=xx,&amp;quot; where &amp;quot;xx&amp;quot; is the key word. If the request specifies more than one of these two query strings, a 400 HTTP error will be returned. Different fields will be searched depending on the resource type, see below.&lt;br /&gt;
&lt;br /&gt;
Note that &amp;quot;0-9&amp;quot; is a reserved key word for query string &amp;quot;startswith.&amp;quot; It represents any result starting with numbers.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Index Actions''&lt;br /&gt;
!''Where the key word will be searched''&lt;br /&gt;
|-&lt;br /&gt;
| Customer&lt;br /&gt;
| Customer name, account number, reference number&lt;br /&gt;
|-&lt;br /&gt;
| Domain&lt;br /&gt;
| Domain name&lt;br /&gt;
|-&lt;br /&gt;
| Mailbox&lt;br /&gt;
| Mailbox name, mailbox display name&lt;br /&gt;
|-&lt;br /&gt;
| Contact&lt;br /&gt;
| Contact display name, external email&lt;br /&gt;
|-&lt;br /&gt;
| Group&lt;br /&gt;
| Group name, group display name&lt;br /&gt;
|-&lt;br /&gt;
| Mobile Service&lt;br /&gt;
| Associated mailbox name, mailbox display name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Throttling ====&lt;br /&gt;
&lt;br /&gt;
The server limits the number of requests allowed per user in a certain period of time.  The number of requests made are logged per minute. Calls that were made correctly with a user's API key, but not completed for any reason, including those exceeding the throttle limit, are included in this count.&lt;br /&gt;
&lt;br /&gt;
If a user is over the throttling limit then a 403 HTTP code will be returned with an &amp;quot;Exceeded request limits&amp;quot; message.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Operation Category''&lt;br /&gt;
!''Request Limit''&lt;br /&gt;
|-&lt;br /&gt;
| GET&lt;br /&gt;
| 60 per minute&lt;br /&gt;
|-&lt;br /&gt;
| PUT, POST, DELETE&lt;br /&gt;
| 30 per minute&lt;br /&gt;
|-&lt;br /&gt;
| POST, PUT, DELETE on a domain&lt;br /&gt;
| 2 per minute&lt;br /&gt;
|-&lt;br /&gt;
| POST, DELETE on alternate domains&lt;br /&gt;
| 2 per minute&lt;br /&gt;
|-&lt;br /&gt;
| Enabling public folders for a domain&lt;br /&gt;
| 1 per 5 minutes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&lt;br /&gt;
Index of Exchange Mailboxes:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hypertext Transfer Protocol&lt;br /&gt;
    GET /v0/customers/12345678/domains/example.com/ex/mailboxes?size=100&amp;amp;offset=100 HTTP/1.1&lt;br /&gt;
    Host: api.emailsrvr.com&lt;br /&gt;
    User-Agent: Rackspace Management Interface&lt;br /&gt;
    X-Api-Signature: eGbq9/2hcZsRlr1JV1Pi:20010317143725:HKUn0aajpSDx7qqGK3vqzn3FglI=&lt;br /&gt;
    Accept: text/xml&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Adding New Exchange Mailbox:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hypertext Transfer Protocol&lt;br /&gt;
    POST /v0/customers/12345678/domains/example.com/ex/mailboxes/john.smith HTTP/1.1&lt;br /&gt;
    Host: api.emailsrvr.com&lt;br /&gt;
    User-Agent: Rackspace Management Interface&lt;br /&gt;
    X-Api-Signature: eGbq9/2hcZsRlr1JV1Pi:20010317143725:HKUn0aajpSDx7qqGK3vqzn3FglI=&lt;br /&gt;
    Content-Length: 53&lt;br /&gt;
        [Content length: 53]&lt;br /&gt;
    Content-Type: application/x-www-form-urlencoded&lt;br /&gt;
 &lt;br /&gt;
Line-based text data: application/x-www-form-urlencoded&lt;br /&gt;
    size=2048&amp;amp;displayName=John%20Smith&amp;amp;password=abcABC123&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Responses ===&lt;br /&gt;
&lt;br /&gt;
==== HTTP Status Code ====&lt;br /&gt;
&lt;br /&gt;
On a successfully executed request, a 200 HTTP Code is returned. If the request was unsuccessful however, an HTTP error code in the 400s or 500s will be returned.&lt;br /&gt;
&lt;br /&gt;
==== HTTP Response Body ====&lt;br /&gt;
&lt;br /&gt;
If the request is an Index or Show request, the request data will be returned in the format specified in the HTTP Body.&lt;br /&gt;
&lt;br /&gt;
===== Formats =====&lt;br /&gt;
&lt;br /&gt;
Requests for data (index and show requests) are returned with XML or JSON data based on what your application populates the [[#HTTP_Headers|HTTP Accept headers]] with.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For XML, populate the header with 'text/xml' (ex: Headers![&amp;quot;Accept&amp;quot;] = &amp;quot;text/xml&amp;quot;). The XML document returned will conform to a published XSD (XML Schema Document). There are many ways to parse the data in an XML document, but we have found that the [http://www.w3schools.com/XPath/default.asp XPath] tree-style traversal has served our purposes. In any case, your application will likely need to use a class library for your chosen method.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For JSON, populate the header with 'application/json' (ex: Headers![&amp;quot;Accept&amp;quot;] = &amp;quot;application/json&amp;quot;). As with XML, a library will likely be needed to parse the data.&lt;br /&gt;
&lt;br /&gt;
==== HTTP Headers ====&lt;br /&gt;
&lt;br /&gt;
The only data returned in the header is the error message (if any).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Header Name''&lt;br /&gt;
!''Description''&lt;br /&gt;
!''Example Header Value''&lt;br /&gt;
|-&lt;br /&gt;
| x-error-message&lt;br /&gt;
| The error message. See [[#Errors|Errors]].&lt;br /&gt;
| Missing required field: name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Errors ====&lt;br /&gt;
&lt;br /&gt;
In the event of an error, the error message will be returned the HTTP header '''x-error-message''' and an HTTP Status Code in the '''400'''s or '''500'''s will be returned.&lt;br /&gt;
&lt;br /&gt;
Note: Every language's HTTP library provides methods for retrieving HTTP response codes and response headers.&lt;br /&gt;
&lt;br /&gt;
Below are some errors that are common to many operations. Each operation also has some specific errors which are outlined with the operation. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
|Format is invalid&lt;br /&gt;
|400&lt;br /&gt;
|When requesting an index or show on a resource the 'Accept' header should be either 'text/xml' or 'application/json'&lt;br /&gt;
|-&lt;br /&gt;
|Expectation  Failed: See [[Handling HTTP code 417: Expectation failed]]&lt;br /&gt;
|417&lt;br /&gt;
|(none)&lt;br /&gt;
|-&lt;br /&gt;
|Customer account number is invalid&lt;br /&gt;
|404&lt;br /&gt;
|Invalid account number&lt;br /&gt;
|-&lt;br /&gt;
|Domain is not found&lt;br /&gt;
|404&lt;br /&gt;
|&amp;lt;domain name&amp;gt; not found&lt;br /&gt;
|-&lt;br /&gt;
|Mailbox is not found&lt;br /&gt;
|404&lt;br /&gt;
|Mailbox not found&lt;br /&gt;
|-&lt;br /&gt;
|Required form field is missing&lt;br /&gt;
|400&lt;br /&gt;
|Missing required field: &amp;lt;required field&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Required form field has null or empty string input&lt;br /&gt;
|400&lt;br /&gt;
|Required field &amp;lt;required field&amp;gt; cannot be empty&lt;br /&gt;
|-&lt;br /&gt;
|Integer form field has non-integer input&lt;br /&gt;
|400&lt;br /&gt;
|Invalid format for &amp;lt;field&amp;gt;, input must be an integer&lt;br /&gt;
|-&lt;br /&gt;
|Boolean form field has non-boolean input&lt;br /&gt;
|400&lt;br /&gt;
|Invalid format for &amp;lt;field&amp;gt;, input must be True or False&lt;br /&gt;
|-&lt;br /&gt;
|Form data has an unrecognized field&lt;br /&gt;
|400&lt;br /&gt;
|Unrecognized field: &amp;lt;field&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Entered invalid IP address&lt;br /&gt;
| 400&lt;br /&gt;
| invalid ip address: 123&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Paging ====&lt;br /&gt;
&lt;br /&gt;
The results of Index actions are split into pages to lessen potentially high resource usage. The index URLs have a query string with parameters in the format &amp;quot;?size=xx&amp;amp;offset=xx.&amp;quot; If a query parameter is omitted, the default value is used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Query Parameter''&lt;br /&gt;
!''Default''&lt;br /&gt;
!''Maximum''&lt;br /&gt;
!''Notes''&lt;br /&gt;
|-&lt;br /&gt;
| size&lt;br /&gt;
| 50&lt;br /&gt;
| 250&lt;br /&gt;
| This is the number of elements per page.&lt;br /&gt;
|-&lt;br /&gt;
| offset&lt;br /&gt;
| 0&lt;br /&gt;
| N/A&lt;br /&gt;
| This is the number of items to offset away from the first item in the list.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Example =====&lt;br /&gt;
&lt;br /&gt;
A PHP Example of paging can be found [[PHP_Examples_(Rest_API)| here]].&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 200 OK&lt;br /&gt;
Cache-Control: private&lt;br /&gt;
Content-Type: text/xml; charset=utf-8&lt;br /&gt;
Server: Microsoft-IIS/7.0&lt;br /&gt;
Date: Fri, 04 Dec 2009 19:08:11 GMT&lt;br /&gt;
Content-Length: 430&lt;br /&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;domainList xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:domainList&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;offset&amp;gt;0&amp;lt;/offset&amp;gt;&lt;br /&gt;
  &amp;lt;size&amp;gt;50&amp;lt;/size&amp;gt;&lt;br /&gt;
  &amp;lt;total&amp;gt;1&amp;lt;/total&amp;gt;&lt;br /&gt;
  &amp;lt;domains&amp;gt;&lt;br /&gt;
    &amp;lt;domain&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;customer.com&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;accountNumber&amp;gt;123456&amp;lt;/accountNumber&amp;gt;&lt;br /&gt;
      &amp;lt;serviceType&amp;gt;rsemail&amp;lt;/serviceType&amp;gt;&lt;br /&gt;
    &amp;lt;/domain&amp;gt;&lt;br /&gt;
  &amp;lt;/domains&amp;gt;&lt;br /&gt;
&amp;lt;/domainList&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 404 Not Found&lt;br /&gt;
Cache-Control: private&lt;br /&gt;
Server: Microsoft-IIS/7.0&lt;br /&gt;
x-error-message: Customer Not Found&lt;br /&gt;
Date: Fri, 04 Dec 2009 19:13:59 GMT&lt;br /&gt;
Content-Length: 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 400 Bad Request&lt;br /&gt;
Cache-Control: private&lt;br /&gt;
Server: Microsoft-IIS/7.0&lt;br /&gt;
x-error-message: Missing required field: type&lt;br /&gt;
Date: Fri, 04 Dec 2009 19:17:29 GMT&lt;br /&gt;
Content-Length: 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
This examples is written in [http://www.ruby-lang.org/en/ Ruby]. To make the examples shorter, helper methods have been written. These methods are part of a NetMethods module. The contents of the NetMethods module is listed below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require  'server.rb'&lt;br /&gt;
&lt;br /&gt;
server = Server.new&lt;br /&gt;
&lt;br /&gt;
response = server.get  '/customers', server.xml_format&lt;br /&gt;
&lt;br /&gt;
#fields = Hash['serviceType' =&amp;gt;  'exchange', 'exchangeMaxNumMailboxes' =&amp;gt; '4']&lt;br /&gt;
#response =  server.post '/customers/me/domains/newdomain.com', fields&lt;br /&gt;
&lt;br /&gt;
puts response.code&lt;br /&gt;
puts response['x-error-message']&lt;br /&gt;
puts response.body&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require 'test/unit/assertions'&lt;br /&gt;
require 'net/http'&lt;br /&gt;
require 'date'&lt;br /&gt;
require 'date/format'&lt;br /&gt;
require 'digest/sha1'&lt;br /&gt;
require 'base64'&lt;br /&gt;
require 'time'&lt;br /&gt;
&lt;br /&gt;
class Server&lt;br /&gt;
  include Test::Unit::Assertions&lt;br /&gt;
  &lt;br /&gt;
  def initialize(server='api.emailsrvr.com', version_prefix='/v0', user_key='xxxxxxxxxxxxxxxxxxxx', secret_hash='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')&lt;br /&gt;
    @server = server&lt;br /&gt;
    @version_prefix = version_prefix&lt;br /&gt;
    @user_key = user_key&lt;br /&gt;
    @secret_hash = secret_hash&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
# Response Type Enums&lt;br /&gt;
&lt;br /&gt;
  def xml_format&lt;br /&gt;
    'text/xml'&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def json_format&lt;br /&gt;
    'application/json'&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# HTTP Request Verbs&lt;br /&gt;
#  &lt;br /&gt;
  def get(url_string, format)&lt;br /&gt;
    uri = full_uri(url_string)&lt;br /&gt;
    headers = prepared_headers&lt;br /&gt;
    headers['Accept'] = format&lt;br /&gt;
    request = Net::HTTP::Get.new(request_uri(uri), headers)&lt;br /&gt;
    http_response = make_request request, uri&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def delete(url_string)&lt;br /&gt;
    uri = full_uri(url_string)&lt;br /&gt;
    request = Net::HTTP::Delete.new(request_uri(uri), prepared_headers)&lt;br /&gt;
    http_response = make_request request, uri&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def put(url_string, fields_hash)&lt;br /&gt;
    uri = full_uri(url_string)&lt;br /&gt;
    request = Net::HTTP::Put.new(request_uri(uri), prepared_headers)&lt;br /&gt;
    request.set_form_data(fields_hash)&lt;br /&gt;
    http_response = make_request request, uri&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def post(url_string, fields_hash)&lt;br /&gt;
    uri = full_uri(url_string)&lt;br /&gt;
    request = Net::HTTP::Post.new(request_uri(uri), prepared_headers)&lt;br /&gt;
    request.set_form_data(fields_hash)&lt;br /&gt;
    http_response = make_request request, uri&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
#&lt;br /&gt;
# HTTP Request Helpers&lt;br /&gt;
# &lt;br /&gt;
  def make_request request, uri&lt;br /&gt;
    response = Net::HTTP::start(uri.host, uri.port)  do |http|&lt;br /&gt;
      http.request request&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    response&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def full_uri url_string&lt;br /&gt;
    URI.parse('http://' + @server + @version_prefix + url_string)&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def request_uri uri&lt;br /&gt;
    request = uri.path&lt;br /&gt;
    if ! uri.query.nil?&lt;br /&gt;
      request = request + '?' + uri.query&lt;br /&gt;
    end&lt;br /&gt;
    request&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def prepared_headers&lt;br /&gt;
    headers = Hash.new&lt;br /&gt;
    headers.merge! headers_auth_creds(@user_key, @secret_hash)&lt;br /&gt;
    headers['Accept'] = xml_format&lt;br /&gt;
    headers&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def headers_auth_creds apiKey, secretKey&lt;br /&gt;
    userAgent = 'Ruby Test Client'&lt;br /&gt;
    timestamp = DateTime.now.strftime('%Y%m%d%H%M%S')&lt;br /&gt;
    &lt;br /&gt;
    data_to_sign = apiKey + userAgent + timestamp + secretKey&lt;br /&gt;
    &lt;br /&gt;
    hash = Base64.encode64(Digest::SHA1.digest(data_to_sign))&lt;br /&gt;
    signature = apiKey + &amp;quot;:&amp;quot; + timestamp + &amp;quot;:&amp;quot; + hash&lt;br /&gt;
    &lt;br /&gt;
    headers = Hash['User-Agent' =&amp;gt; userAgent, 'X-Api-Signature' =&amp;gt; signature]&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== C# ===&lt;br /&gt;
&lt;br /&gt;
This examples is written in [http://msdn.microsoft.com/en-us/vcsharp/default.aspx C#].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Specialized;&lt;br /&gt;
using System.Security.Cryptography;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Net;&lt;br /&gt;
&lt;br /&gt;
public class WebMethods&lt;br /&gt;
{&lt;br /&gt;
  private WebClientBase client;&lt;br /&gt;
  private string baseUrl;&lt;br /&gt;
  private string apiKey;&lt;br /&gt;
  private string secretKey;&lt;br /&gt;
&lt;br /&gt;
  public WebMethods(WebClientBase client, string baseUrl, string apiKey, string secretKey)&lt;br /&gt;
  {&lt;br /&gt;
    this.client = client;&lt;br /&gt;
    this.baseUrl = baseUrl;&lt;br /&gt;
    this.apiKey = apiKey;&lt;br /&gt;
    this.secretKey = secretKey;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  public virtual string Get(string url)&lt;br /&gt;
  {&lt;br /&gt;
    return MakeRemoteCall((client) =&amp;gt;&lt;br /&gt;
      {&lt;br /&gt;
        return client.DownloadString(baseUrl + url);&lt;br /&gt;
      },&lt;br /&gt;
      format);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  public virtual string Post(string url, NameValueCollection data)&lt;br /&gt;
  {&lt;br /&gt;
    return MakeRemoteCall((client) =&amp;gt;&lt;br /&gt;
      {&lt;br /&gt;
        var bytes = client.UploadValues(baseUrl + url, data);&lt;br /&gt;
        return Encoding.UTF8.GetString(bytes);&lt;br /&gt;
      },&lt;br /&gt;
      format);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  private void SignMessage()&lt;br /&gt;
  {&lt;br /&gt;
    var userAgent = &amp;quot;C# Client Library&amp;quot;;&lt;br /&gt;
    client.Headers[&amp;quot;User-Agent&amp;quot;] = userAgent;&lt;br /&gt;
&lt;br /&gt;
    var dateTime = DateTime.UtcNow.ToString(&amp;quot;yyyyMMddHHmmss&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    var dataToSign = apiKey + userAgent + dateTime + secretKey;&lt;br /&gt;
    var hash = SHA1.Create();&lt;br /&gt;
    var signedBytes = hash.ComputeHash(Encoding.UTF8.GetBytes(dataToSign));&lt;br /&gt;
    var signature = Convert.ToBase64String(signedBytes);&lt;br /&gt;
&lt;br /&gt;
    client.Headers[&amp;quot;X-Api-Signature&amp;quot;] = apiKey + &amp;quot;:&amp;quot; + dateTime + &amp;quot;:&amp;quot; + signature;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  private void AssignFormat(string format)&lt;br /&gt;
  {&lt;br /&gt;
    client.Headers[&amp;quot;Accept&amp;quot;] = format;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  private string MakeRemoteCall(Func&amp;lt;WebClientBase, string&amp;gt; remoteCall, string format)&lt;br /&gt;
  {&lt;br /&gt;
    try&lt;br /&gt;
    {&lt;br /&gt;
      SignMessage();&lt;br /&gt;
      AssignFormat(format);&lt;br /&gt;
      return remoteCall.Invoke(client);&lt;br /&gt;
    }&lt;br /&gt;
    catch (WebException e)&lt;br /&gt;
    {&lt;br /&gt;
      throw new ApiException(e);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PHP ===&lt;br /&gt;
&lt;br /&gt;
The PHP Example can be found [[PHP_Examples_(Rest_API)| here]].&lt;/div&gt;</summary>
		<author><name>Zhen.wei</name></author>	</entry>

	<entry>
		<id>http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Domain_(Rest_API)&amp;diff=436</id>
		<title>Domain (Rest API)</title>
		<link rel="alternate" type="text/html" href="http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Domain_(Rest_API)&amp;diff=436"/>
				<updated>2010-11-01T02:55:04Z</updated>
		
		<summary type="html">&lt;p&gt;Zhen.wei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Index ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
This operation returns a list of domains under the account. If a customer account is specified, then a list of domains under that specific account will be returned.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
To retrieve a list of domains owned by the account that is logged in, use &amp;quot;me&amp;quot; as the customer account number i.e. &amp;lt;nowiki&amp;gt;'https://api.emailsrvr.com/v0/customers/me/domains'&amp;lt;/nowiki&amp;gt;. To retrieve a list of domains owned by all customer sub-accounts and your own account, use &amp;quot;all&amp;quot; as the customer account number.&lt;br /&gt;
&lt;br /&gt;
The index operation only supports the GET HTTP verb. For text/xml format, refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/DomainList.xsd DomainList.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/all/domains?size=100&amp;amp;offset=10', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;domainList 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; xmlns=&amp;quot;urn:xml:domainList&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;offset&amp;gt;0&amp;lt;/offset&amp;gt;&lt;br /&gt;
  &amp;lt;size&amp;gt;50&amp;lt;/size&amp;gt;&lt;br /&gt;
  &amp;lt;total&amp;gt;3&amp;lt;/total&amp;gt;&lt;br /&gt;
  &amp;lt;domains&amp;gt;&lt;br /&gt;
    &amp;lt;domain&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;apidomain53.com&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;accountNumber&amp;gt;100000&amp;lt;/accountNumber&amp;gt;&lt;br /&gt;
      &amp;lt;serviceType&amp;gt;both&amp;lt;/serviceType&amp;gt;&lt;br /&gt;
    &amp;lt;/domain&amp;gt;&lt;br /&gt;
    &amp;lt;domain&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;apidomain66.com&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;accountNumber&amp;gt;100001&amp;lt;/accountNumber&amp;gt;&lt;br /&gt;
      &amp;lt;serviceType&amp;gt;both&amp;lt;/serviceType&amp;gt;&lt;br /&gt;
    &amp;lt;/domain&amp;gt;&lt;br /&gt;
    &amp;lt;domain&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;apidomain68.com&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;accountNumber&amp;gt;100002&amp;lt;/accountNumber&amp;gt;&lt;br /&gt;
      &amp;lt;serviceType&amp;gt;both&amp;lt;/serviceType&amp;gt;&lt;br /&gt;
    &amp;lt;/domain&amp;gt;&lt;br /&gt;
  &amp;lt;/domains&amp;gt;&lt;br /&gt;
&amp;lt;/domainList&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&amp;quot;offset&amp;quot;:0,&amp;quot;size&amp;quot;:50,&amp;quot;total&amp;quot;:3,&amp;quot;domains&amp;quot;:&lt;br /&gt;
[{&amp;quot;name&amp;quot;:&amp;quot;apidomain53.com&amp;quot;,&amp;quot;accountNumber&amp;quot;:&amp;quot;100000&amp;quot;,&amp;quot;serviceType&amp;quot;:&amp;quot;both&amp;quot;},&lt;br /&gt;
{&amp;quot;name&amp;quot;:&amp;quot;apidomain66.com&amp;quot;,&amp;quot;accountNumber&amp;quot;:&amp;quot;100001&amp;quot;,&amp;quot;serviceType&amp;quot;:&amp;quot;both&amp;quot;},&lt;br /&gt;
{&amp;quot;name&amp;quot;:&amp;quot;apidomain68.com&amp;quot;,&amp;quot;accountNumber&amp;quot;:&amp;quot;100002&amp;quot;,&amp;quot;serviceType&amp;quot;:&amp;quot;both&amp;quot;}]}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Show ==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
The show operation will return detailed information about the specified domain name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The show operation only supports the GET HTTP verb. For text/xml format, refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/Domain.xsd Domain.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Note'':&lt;br /&gt;
&lt;br /&gt;
These two fields 'exchangeUsedStorage' and 'rsEmailUsedStorage' actually return the number of active mailboxes in each service respectively. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/999999/domains/example.com', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;domain 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; xmlns=&amp;quot;urn:xml:domain&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;name&amp;gt;apidomain21.com&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;accountNumber&amp;gt;100000&amp;lt;/accountNumber&amp;gt;&lt;br /&gt;
  &amp;lt;serviceType&amp;gt;both&amp;lt;/serviceType&amp;gt;&lt;br /&gt;
  &amp;lt;exchangeBaseMailboxSize&amp;gt;2048&amp;lt;/exchangeBaseMailboxSize&amp;gt;&lt;br /&gt;
  &amp;lt;exchangeUsedStorage&amp;gt;0&amp;lt;/exchangeUsedStorage&amp;gt;&lt;br /&gt;
  &amp;lt;exchangeTotalStorage&amp;gt;18432&amp;lt;/exchangeTotalStorage&amp;gt;&lt;br /&gt;
  &amp;lt;exchangeExtraStorage&amp;gt;10240&amp;lt;/exchangeExtraStorage&amp;gt;&lt;br /&gt;
  &amp;lt;exchangeMaxNumMailboxes&amp;gt;4&amp;lt;/exchangeMaxNumMailboxes&amp;gt;&lt;br /&gt;
  &amp;lt;rsEmailBaseMailboxSize&amp;gt;2048&amp;lt;/rsEmailBaseMailboxSize&amp;gt;&lt;br /&gt;
  &amp;lt;rsEmailMaxNumberMailboxes&amp;gt;4&amp;lt;/rsEmailMaxNumberMailboxes&amp;gt;&lt;br /&gt;
  &amp;lt;rsEmailExtraStorage&amp;gt;10240&amp;lt;/rsEmailExtraStorage&amp;gt;&lt;br /&gt;
  &amp;lt;rsEmailUsedStorage&amp;gt;0&amp;lt;/rsEmailUsedStorage&amp;gt;&lt;br /&gt;
  &amp;lt;aliases /&amp;gt;&lt;br /&gt;
  &amp;lt;archivingServiceEnabled&amp;gt;false&amp;lt;/archivingServiceEnabled&amp;gt;&lt;br /&gt;
  &amp;lt;publicFoldersEnabled&amp;gt;false&amp;lt;/publicFoldersEnabled&amp;gt;&lt;br /&gt;
  &amp;lt;blackBerryMobileServiceEnabled&amp;gt;true&amp;lt;/blackBerryMobileServiceEnabled&amp;gt;&lt;br /&gt;
  &amp;lt;blackBerryLicenses&amp;gt;4&amp;lt;/blackBerryLicenses&amp;gt;&lt;br /&gt;
  &amp;lt;activeSyncMobileServiceEnabled&amp;gt;true&amp;lt;/activeSyncMobileServiceEnabled&amp;gt;&lt;br /&gt;
  &amp;lt;activeSyncLicenses&amp;gt;4&amp;lt;/activeSyncLicenses&amp;gt;&lt;br /&gt;
&amp;lt;/domain&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&amp;quot;name&amp;quot;:&amp;quot;apidomain21.com&amp;quot;,&amp;quot;accountNumber&amp;quot;:&amp;quot;100000&amp;quot;,&amp;quot;serviceType&amp;quot;:&amp;quot;both&amp;quot;,&lt;br /&gt;
&amp;quot;exchangeBaseMailboxSize&amp;quot;:2048,&amp;quot;exchangeUsedStorage&amp;quot;:0,&amp;quot;exchangeTotalStorage&amp;quot;:18432,&lt;br /&gt;
&amp;quot;exchangeExtraStorage&amp;quot;:10240,&amp;quot;exchangeMaxNumMailboxes&amp;quot;:4,&amp;quot;rsEmailBaseMailboxSize&amp;quot;:2048,&lt;br /&gt;
&amp;quot;rsEmailMaxNumberMailboxes&amp;quot;:4,&amp;quot;rsEmailExtraStorage&amp;quot;:10240,&amp;quot;rsEmailUsedStorage&amp;quot;:0,&lt;br /&gt;
&amp;quot;aliases&amp;quot;:[],&amp;quot;archivingServiceEnabled&amp;quot;:false,&amp;quot;publicFoldersEnabled&amp;quot;:false,&lt;br /&gt;
&amp;quot;blackBerryMobileServiceEnabled&amp;quot;:true,&amp;quot;blackBerryLicenses&amp;quot;:4,&amp;quot;activeSyncMobileServiceEnabled&amp;quot;:true,&lt;br /&gt;
&amp;quot;activeSyncLicenses&amp;quot;:4}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Add/Edit (Reseller Only)==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
 Add: [POST] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
 Edit: [PUT] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Adds/edits a new domain to the account with the data specified. To add a domain to your own account, use your own account id.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| serviceType&lt;br /&gt;
| string&lt;br /&gt;
| Domain service type. &amp;quot;rsemail&amp;quot; = &amp;quot;Rackspace Email Only&amp;quot;. &amp;quot;exchange&amp;quot; = &amp;quot;Exchange Only&amp;quot;. &amp;quot;both&amp;quot; = &amp;quot;Rackspace Email and Exchange&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| exchangeExtraStorage&lt;br /&gt;
| int&lt;br /&gt;
| Exchange service extra storage in megabytes&lt;br /&gt;
|-&lt;br /&gt;
| exchangeMaxNumMailboxes&lt;br /&gt;
| int&lt;br /&gt;
| Maximum number of mailboxes allowed under the domain Exchange service. Required for Adding Exchange service&lt;br /&gt;
|-&lt;br /&gt;
| rsEmailBaseMailboxSize&lt;br /&gt;
| int&lt;br /&gt;
| Rackspace Email base mailbox size in megabytes&lt;br /&gt;
|-&lt;br /&gt;
| rsEmailMaxNumberMailboxes&lt;br /&gt;
| int&lt;br /&gt;
| Maximum number of mailboxes allowed under the domain Rackspace Email service. Required for Adding Rackspace Email service&lt;br /&gt;
|-&lt;br /&gt;
| rsEmailExtraStorage&lt;br /&gt;
| int&lt;br /&gt;
| Rackspace Email service extra storage in megabytes&lt;br /&gt;
|-&lt;br /&gt;
| blackBerryMobileServiceEnabled&lt;br /&gt;
| boolean&lt;br /&gt;
| Enable or disable domain BlackBerry Mobile service&lt;br /&gt;
|-&lt;br /&gt;
| blackBerryLicenses&lt;br /&gt;
| int&lt;br /&gt;
| Maximum number of mailboxes allowed to have BlackBerry Mobile service. 0 means unlimited&lt;br /&gt;
|-&lt;br /&gt;
| activeSyncMobileServiceEnabled&lt;br /&gt;
| boolean&lt;br /&gt;
| Enable or disable domain ActiveSync Mobile service&lt;br /&gt;
|-&lt;br /&gt;
| activeSyncLicenses&lt;br /&gt;
| int&lt;br /&gt;
| Maximum number of mailboxes allowed to have ActiveSync Mobile service. 0 means unlimited&lt;br /&gt;
|-&lt;br /&gt;
| goodMobileServiceEnabled (deprecated)&lt;br /&gt;
| boolean&lt;br /&gt;
| Enable or disable domain Good Mobile service&lt;br /&gt;
|-&lt;br /&gt;
| goodMobileLicenses (deprecated)&lt;br /&gt;
| int&lt;br /&gt;
| Maximum number of mailboxes allowed to have Good Mobile service. 0 means unlimited&lt;br /&gt;
|-&lt;br /&gt;
| archivingServiceEnabled&lt;br /&gt;
| boolean&lt;br /&gt;
| Enable or disable domain archiving service&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post '/customers/123455/domains/newcompany.com', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
  'maxNumMailboxes' =&amp;gt; '5',&lt;br /&gt;
  'extraStorage' =&amp;gt; '1024'&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
put '/customers/123455/domains/newcompany.com', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
  'maxNumMailboxes' =&amp;gt; '25',&lt;br /&gt;
  'extraStorage' =&amp;gt; '2048'&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| New domain name doesn't meet the naming requirements&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid domain name&lt;br /&gt;
|-&lt;br /&gt;
| New domain name already exists&lt;br /&gt;
| 400&lt;br /&gt;
| abc.com already exists as a domain or alternate domain&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Move (Reseller Only)==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[PUT] https://api.emailsrvr.com/v0/customers/&lt;br /&gt;
      (new customer account number)/domains/(domain name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Moves the domain to another customer account.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| moveDomain&lt;br /&gt;
| boolean&lt;br /&gt;
| Indicate whether or not moving the domain&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
Note 'Move Domain' and 'Edit Domain' share the same URI and HTTP verb. When the domain doesn't belong to the customer and 'moveDomain' is set to 'true', API will take the request as a 'Move Domain' call.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
put '/customers/123456/domains/newcompany.com', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
  'moveDomain' =&amp;gt; 'true'&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Delete (Reseller Only)==&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[DELETE] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Deletes the domain.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The domain and all the mailboxes, mailbox contents, groups, and contacts are deleted permanently.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
delete '/customers/12345678/domains/newcompany.com', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Alternate Domains ==&lt;br /&gt;
&lt;br /&gt;
=== Index (Reseller Only) ===&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/&lt;br /&gt;
                domains/(domain name)/alternatedomains&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
This operation returns a list of Domain Aliases and Accepted Domains for the domain. The type of the alternate domain is indicated by the 'type' data field. The XML schema for the returned data is [http://api.emailsrvr.com/v0/Schemas/DomainSplitRouting.xsd DomainAlternateList.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/test.com/alternatedomains', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;alternateDomainList 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; xmlns=&amp;quot;urn:xml:domainAlternateList&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;alternateDomains&amp;gt;&lt;br /&gt;
    &amp;lt;alternateDomain&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;domainalias.com&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;type&amp;gt;DomainAlias&amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;/alternateDomain&amp;gt;&lt;br /&gt;
    &amp;lt;alternateDomain&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;accepteddomain.com&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;type&amp;gt;AcceptedDomain&amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;/alternateDomain&amp;gt;&lt;br /&gt;
  &amp;lt;/alternateDomains&amp;gt;&lt;br /&gt;
&amp;lt;/alternateDomainList&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{&amp;quot;alternateDomains&amp;quot;:[{&amp;quot;name&amp;quot;:&amp;quot;domainalias.com&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;DomainAlias&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;accepteddomain.com&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;AcceptedDomain&amp;quot;}]}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add (Reseller Only) ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
 [POST] https://api.emailsrvr.com/v0/customers/(customer account number)&lt;br /&gt;
    /domains/(domain name)/alternatedomains/(alternate domain name)&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Adds either a Domain Alias or Accepted Domain to the domain.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| type&lt;br /&gt;
| string&lt;br /&gt;
| Alternate domain type. Send &amp;quot;DomainAlias&amp;quot; for a domain alias, and &amp;quot;AcceptedDomain&amp;quot; for an accepted domain. (Required)&lt;br /&gt;
|-&lt;br /&gt;
| createForExistingRecipients&lt;br /&gt;
| boolean&lt;br /&gt;
| Whether the alternate addresses should be created for existing mailboxes when adding an Accepted Domain. Sending this field in the request when the type is Domain Alias will throw an error. This defaults to false.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post '/customers/123456/domains/example.com/alternatedomains/accepteddomain.com', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
  'type' =&amp;gt; 'AcceptedDomain'&lt;br /&gt;
  'createForExistingRecipients' =&amp;gt; 'true'&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| New domain name doesn't meet the naming requirements&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid domain name&lt;br /&gt;
|-&lt;br /&gt;
| Alternate domain already exists&lt;br /&gt;
| 400&lt;br /&gt;
| abc.com already exists as a domain or alternate domain&lt;br /&gt;
|-&lt;br /&gt;
| The 'createForExistingRecipients' field was sent with either data, or as a null field. It should not be included in the form data at all.&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid Alternate Domain Setting: createForExistingRecipients is an invalid setting for Domain Aliases&lt;br /&gt;
|-&lt;br /&gt;
| The only valid values for 'type' are 'DomainAlias' and 'AcceptedDomain', for a Domain Alias and Accepted Domain respectively.&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid Alternate Domain type&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Delete (Reseller Only) ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[DELETE] https://api.emailsrvr.com/v0/customers/(customer account number)/&lt;br /&gt;
      domains/(domain name)/alternatedomains/(alternate domain name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Deletes the alternate domain.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
delete '/customers/12345678/domains/example.com/alternatedomains/accepteddomain.com'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Split Domain Routing ==&lt;br /&gt;
&lt;br /&gt;
=== Show Settings ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain)/splitdomainrouting&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
''Description'':&lt;br /&gt;
Shows the current external email server. The XML schema document for the output of this command is [http://api.emailsrvr.com/v0/Schemas/DomainSplitRouting.xsd DomainSplitRouting.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/company.com/splitdomainrouting', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;splitDomainRouting 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; xmlns=&amp;quot;urn:xml:splitDomainRouting&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;externalServer&amp;gt;email.externalserver.com&amp;lt;/externalServer&amp;gt;&lt;br /&gt;
&amp;lt;/splitDomainRouting&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''JSON Result Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&amp;quot;externalServer&amp;quot;:&amp;quot;email.externalserver.com&amp;quot;}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Edit Settings ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[PUT] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain)/splitdomainrouting&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
This command sets the external email server. This command will return a success when the verification passes. Since this involves communication to the external server the request may take some time. If the verification fails a 400 return code will be sent back with the verification's error message.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| externalServer&lt;br /&gt;
| string&lt;br /&gt;
| The address of the external email server. To turn off split domain routing send 'none'. (Required)&lt;br /&gt;
|-&lt;br /&gt;
| verificationAddress&lt;br /&gt;
| string&lt;br /&gt;
| An email address part of your domain or one of the alternate domains that the external server is already set up to handle. (Required only when turning on split domain routing, Do not send this field if turning off.)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
put '/customers/12345678/domains/company.com/splitdomainrouting', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
  'externalServer' =&amp;gt; 'email.externalserver.com',&lt;br /&gt;
  'verificationAddress' =&amp;gt; 'externalaccount@company.com',&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| The SMTP host could not be found.&lt;br /&gt;
| 400&lt;br /&gt;
| One of the verification error messages.&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
== Archiving SSO Login URL ==&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain)/archivingSSOLoginURL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Gets the domain archiving service SSO login URL.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The retrieved URL can be used in browser to access the domain archiving control panel.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/company.com/archivingSSOLoginURL', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| No archiving service&lt;br /&gt;
| 404&lt;br /&gt;
| Domain abc.com has no archiving service enabled&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Domain Public Folders (Reseller Only) ==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
   [PUT] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)/ex/publicfolders&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Enables the Exchange Public Folders feature on the domain. Once enabled, it cannot be disabled.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| enabled&lt;br /&gt;
| string&lt;br /&gt;
| Whether to enable public folders. Once enabled, it cannot be disabled.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
put '/customers/12345678/domains/company.com/ex/publicFolders', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
  'enabled' =&amp;gt; 'true'&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Public folders cannot be turned off after it's been turned on.&lt;br /&gt;
| 400&lt;br /&gt;
| Public Folders cannot be disabled once enabled&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Domain Email Everyone ==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
   [POST] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)/emaileveryone&lt;br /&gt;
   [POST] https://api.emailsrvr.com/v0/domains/(domain name)/emaileveryone&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
Send an email to all mailboxes for the domain. This request returns a list of recipients.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| fromName&lt;br /&gt;
| string&lt;br /&gt;
| Sender's Name.&lt;br /&gt;
|-&lt;br /&gt;
| fromAddress&lt;br /&gt;
| string&lt;br /&gt;
| Sender's Email Address.&lt;br /&gt;
|-&lt;br /&gt;
| subject&lt;br /&gt;
| string&lt;br /&gt;
| Message subject.&lt;br /&gt;
|-&lt;br /&gt;
| body&lt;br /&gt;
| string&lt;br /&gt;
| Message body.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post'/customers/12345678/domains/example.com/emaileveryone', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
  'fromName' =&amp;gt; 'John Doe',&lt;br /&gt;
  'fromAddress' =&amp;gt; 'john.doe@test.com',&lt;br /&gt;
  'subject' =&amp;gt; 'Hi All',&lt;br /&gt;
  'body' =&amp;gt; 'Hello World.',&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;emailAddressList xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:emailAddressList&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;emailAddresses&amp;gt;&lt;br /&gt;
    &amp;lt;address&amp;gt;a@example.com&amp;lt;/address&amp;gt;&lt;br /&gt;
    &amp;lt;address&amp;gt;b@example.com&amp;lt;/address&amp;gt;&lt;br /&gt;
  &amp;lt;/emailAddresses&amp;gt;&lt;br /&gt;
&amp;lt;/emailAddressList&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;emailAddresses&amp;quot;:[&amp;quot;a@example.com&amp;quot;,&amp;quot;b@example.com&amp;quot;]}&lt;/div&gt;</summary>
		<author><name>Zhen.wei</name></author>	</entry>

	<entry>
		<id>http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Admin_(Rest_API)&amp;diff=432</id>
		<title>Admin (Rest API)</title>
		<link rel="alternate" type="text/html" href="http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Admin_(Rest_API)&amp;diff=432"/>
				<updated>2010-11-01T02:35:13Z</updated>
		
		<summary type="html">&lt;p&gt;Zhen.wei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Index ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/admins&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/admins&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
This operation returns a list of admins under the account. If a customer account is specified, then a list of admins under that specific account will be returned.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
To retrieve a list of admins owned by the account that is logged in, use &amp;quot;me&amp;quot; as the customer account number i.e. &amp;lt;nowiki&amp;gt;'https://api.emailsrvr.com/v0/customers/me/domains'&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The index operation only supports the GET HTTP verb. For text/xml format, refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/AdminList.xsd AdminList.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/999999/admins?size=5&amp;amp;page=1', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;adminList xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:adminList&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;offset&amp;gt;0&amp;lt;/offset&amp;gt;&lt;br /&gt;
  &amp;lt;size&amp;gt;50&amp;lt;/size&amp;gt;&lt;br /&gt;
  &amp;lt;total&amp;gt;3&amp;lt;/total&amp;gt;&lt;br /&gt;
  &amp;lt;admins&amp;gt;&lt;br /&gt;
    &amp;lt;admin&amp;gt;&lt;br /&gt;
      &amp;lt;adminId&amp;gt;apiadmin37&amp;lt;/adminId&amp;gt;&lt;br /&gt;
      &amp;lt;type&amp;gt;super&amp;lt;/type&amp;gt;&lt;br /&gt;
      &amp;lt;enabled&amp;gt;true&amp;lt;/enabled&amp;gt;&lt;br /&gt;
      &amp;lt;locked&amp;gt;false&amp;lt;/locked&amp;gt;&lt;br /&gt;
    &amp;lt;/admin&amp;gt;&lt;br /&gt;
    &amp;lt;admin&amp;gt;&lt;br /&gt;
      &amp;lt;adminId&amp;gt;apiadmin76&amp;lt;/adminId&amp;gt;&lt;br /&gt;
      &amp;lt;type&amp;gt;super&amp;lt;/type&amp;gt;&lt;br /&gt;
      &amp;lt;enabled&amp;gt;true&amp;lt;/enabled&amp;gt;&lt;br /&gt;
      &amp;lt;locked&amp;gt;false&amp;lt;/locked&amp;gt;&lt;br /&gt;
    &amp;lt;/admin&amp;gt;&lt;br /&gt;
    &amp;lt;admin&amp;gt;&lt;br /&gt;
      &amp;lt;adminId&amp;gt;apiadmin94&amp;lt;/adminId&amp;gt;&lt;br /&gt;
      &amp;lt;type&amp;gt;super&amp;lt;/type&amp;gt;&lt;br /&gt;
      &amp;lt;enabled&amp;gt;true&amp;lt;/enabled&amp;gt;&lt;br /&gt;
      &amp;lt;locked&amp;gt;false&amp;lt;/locked&amp;gt;&lt;br /&gt;
    &amp;lt;/admin&amp;gt;&lt;br /&gt;
  &amp;lt;/admins&amp;gt;&lt;br /&gt;
&amp;lt;/adminList&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&amp;quot;admins&amp;quot;:[{&amp;quot;adminId&amp;quot;:&amp;quot;apiadmin37&amp;quot;,&amp;quot;enabled&amp;quot;:true,&amp;quot;locked&amp;quot;:false,&amp;quot;type&amp;quot;:&amp;quot;super&amp;quot;},{&amp;quot;adminId&amp;quot;:&amp;quot;apiadmin76&amp;quot;,&amp;quot;enabled&amp;quot;:true,&amp;quot;locked&amp;quot;:false,&amp;quot;type&amp;quot;:&amp;quot;super&amp;quot;},{&amp;quot;adminId&amp;quot;:&amp;quot;apiadmin94&amp;quot;,&amp;quot;enabled&amp;quot;:true,&amp;quot;locked&amp;quot;:false,&amp;quot;type&amp;quot;:&amp;quot;super&amp;quot;}],&amp;quot;offset&amp;quot;:0,&amp;quot;size&amp;quot;:50,&amp;quot;total&amp;quot;:3}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Show ==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/admins/(admin name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/admins/(admin name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
The show operation will return detailed information about the specified admin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The show operation only supports the GET HTTP verb. For text/xml format, refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/Admin.xsd Admin.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/999999/admins/admin1', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;admin xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:admin&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;adminId&amp;gt;apiadmin1&amp;lt;/adminId&amp;gt;&lt;br /&gt;
  &amp;lt;type&amp;gt;super&amp;lt;/type&amp;gt;&lt;br /&gt;
  &amp;lt;enabled&amp;gt;true&amp;lt;/enabled&amp;gt;&lt;br /&gt;
  &amp;lt;locked&amp;gt;false&amp;lt;/locked&amp;gt;&lt;br /&gt;
  &amp;lt;firstName&amp;gt;First&amp;lt;/firstName&amp;gt;&lt;br /&gt;
  &amp;lt;lastName&amp;gt;Last&amp;lt;/lastName&amp;gt;&lt;br /&gt;
  &amp;lt;email&amp;gt;first.last@rackspace.com&amp;lt;/email&amp;gt;&lt;br /&gt;
  &amp;lt;passwordExpiration&amp;gt;10&amp;lt;/passwordExpiration&amp;gt;&lt;br /&gt;
  &amp;lt;allowSimultaneousLogins&amp;gt;false&amp;lt;/allowSimultaneousLogins&amp;gt;&lt;br /&gt;
  &amp;lt;restrictedIps&amp;gt;&lt;br /&gt;
    &amp;lt;restrictedIps&amp;gt;1.1.1.1&amp;lt;/restrictedIps&amp;gt;&lt;br /&gt;
    &amp;lt;restrictedIps&amp;gt;1.1.1.2&amp;lt;/restrictedIps&amp;gt;&lt;br /&gt;
    &amp;lt;restrictedIps&amp;gt;1.1.1.3&amp;lt;/restrictedIps&amp;gt;&lt;br /&gt;
  &amp;lt;/restrictedIps&amp;gt;&lt;br /&gt;
&amp;lt;/admin&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&amp;quot;adminId&amp;quot;:&amp;quot;apiadmin1&amp;quot;,&amp;quot;allowSimultaneousLogins&amp;quot;:false,&amp;quot;email&amp;quot;:&amp;quot;first.last@rackspace.com&amp;quot;,&amp;quot;firstName&amp;quot;:&amp;quot;First&amp;quot;,&amp;quot;enabled&amp;quot;:true,&amp;quot;locked&amp;quot;:false,&amp;quot;lastName&amp;quot;:&amp;quot;Last&amp;quot;,&amp;quot;passwordExpiration&amp;quot;:10,&amp;quot;restrictedIps&amp;quot;:[&amp;quot;1.1.1.1&amp;quot;,&amp;quot;1.1.1.2&amp;quot;,&amp;quot;1.1.1.3&amp;quot;],&amp;quot;type&amp;quot;:&amp;quot;super&amp;quot;}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Add/Edit ==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
 Add: [POST] https://api.emailsrvr.com/v0/customers/(customer account number)/admins/(admin name)&lt;br /&gt;
      [POST] https://api.emailsrvr.com/v0/admins/(admin name)&lt;br /&gt;
&lt;br /&gt;
 Edit: [PUT] https://api.emailsrvr.com/v0/customers/(customer account number)/admins/(admin name)&lt;br /&gt;
       [PUT] https://api.emailsrvr.com/v0/admins/(admin name)&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Add a new admin or edit an existing admin under the specified account.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| type&lt;br /&gt;
| string&lt;br /&gt;
| Admin type (Required for Add). Must be &amp;quot;super&amp;quot;, &amp;quot;standard&amp;quot; or &amp;quot;limited&amp;quot;. Can't change permissions and domain access for limited admin at this point.&lt;br /&gt;
|-&lt;br /&gt;
| password&lt;br /&gt;
| string&lt;br /&gt;
| Admin log in password (Required for Add)&lt;br /&gt;
|-&lt;br /&gt;
| firstName&lt;br /&gt;
| string&lt;br /&gt;
| Admin first name (Required for Add)&lt;br /&gt;
|-&lt;br /&gt;
| lastName&lt;br /&gt;
| string&lt;br /&gt;
| Admin last name (Required for Add)&lt;br /&gt;
|-&lt;br /&gt;
| email&lt;br /&gt;
| string&lt;br /&gt;
| Admin contact email (Required for Add)&lt;br /&gt;
|-&lt;br /&gt;
| securityQuestion&lt;br /&gt;
| string&lt;br /&gt;
| Security question (Required for Add)&lt;br /&gt;
|-&lt;br /&gt;
| securityAnswer&lt;br /&gt;
| string&lt;br /&gt;
| Security answer (Required for Add)&lt;br /&gt;
|-&lt;br /&gt;
| passwordExpiration&lt;br /&gt;
| int&lt;br /&gt;
| The number of days in which password expires. 0 means password never expires.&lt;br /&gt;
|-&lt;br /&gt;
| allowSimultaneousLogins&lt;br /&gt;
| boolean&lt;br /&gt;
| Allow simultaneous logins using this Administrative ID&lt;br /&gt;
|-&lt;br /&gt;
| restrictedIps&lt;br /&gt;
| string&lt;br /&gt;
| Login restricted to IP address(es). Can be up to 3 valid addresses separated by commas.&lt;br /&gt;
|-&lt;br /&gt;
| enabled&lt;br /&gt;
| boolean&lt;br /&gt;
| Enable/disable admin account&lt;br /&gt;
|-&lt;br /&gt;
| locked&lt;br /&gt;
| boolean&lt;br /&gt;
| Lock/unlock admin account&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post '/customers/999999/admins/admin1', &lt;br /&gt;
     { &lt;br /&gt;
       'type' =&amp;gt; 'super',&lt;br /&gt;
       'password' =&amp;gt; 'password',&lt;br /&gt;
       'firstName' =&amp;gt; 'First',&lt;br /&gt;
       'lastName' =&amp;gt; 'Last',&lt;br /&gt;
       'email' =&amp;gt; 'first.last@rackspace.com',&lt;br /&gt;
       'securityQuestion' =&amp;gt; 'Q',&lt;br /&gt;
       'securityAnswer' =&amp;gt; 'A'&lt;br /&gt;
     },&lt;br /&gt;
     'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
put '/customers/999999/admins/admin2', &lt;br /&gt;
     { &lt;br /&gt;
       'enabled' =&amp;gt; 'true',&lt;br /&gt;
       'locked' =&amp;gt; 'false',&lt;br /&gt;
       'passwordExpiration' =&amp;gt; '0',&lt;br /&gt;
       'allowSimultaneousLogins' =&amp;gt; 'true',&lt;br /&gt;
       'restrictedIps' =&amp;gt; '1.1.1.1'&lt;br /&gt;
     },&lt;br /&gt;
     'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Password doesn't meet the requirements&lt;br /&gt;
| 400&lt;br /&gt;
| Password must be 7 to 30 characters.&lt;br /&gt;
|-&lt;br /&gt;
| Invalid email address&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid email address.&lt;br /&gt;
|-&lt;br /&gt;
| Invalid restricted to IP address(es)&lt;br /&gt;
| 400&lt;br /&gt;
| IP addresses must be valid addresses separated by commas. A maximum of 3 addresses may be entered.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Delete ==&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[DELETE] https://api.emailsrvr.com/v0/customers/(customer account number)/admins/(admin name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[DELETE] https://api.emailsrvr.com/v0/admins/(admin name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Deletes the admin.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
delete '/customers/999999/admins/admin1', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zhen.wei</name></author>	</entry>

	<entry>
		<id>http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Admin_(Rest_API)&amp;diff=431</id>
		<title>Admin (Rest API)</title>
		<link rel="alternate" type="text/html" href="http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Admin_(Rest_API)&amp;diff=431"/>
				<updated>2010-11-01T02:32:29Z</updated>
		
		<summary type="html">&lt;p&gt;Zhen.wei: create admin page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Index ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/admins&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/admins&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
This operation returns a list of admins under the account. If a customer account is specified, then a list of admins under that specific account will be returned.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
To retrieve a list of admins owned by the account that is logged in, use &amp;quot;me&amp;quot; as the customer account number i.e. &amp;lt;nowiki&amp;gt;'https://api.emailsrvr.com/v0/customers/me/domains'&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The index operation only supports the GET HTTP verb. For text/xml format, refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/AdminList.xsd AdminList.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/999999/admins?size=5&amp;amp;page=1', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;adminList xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:adminList&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;offset&amp;gt;0&amp;lt;/offset&amp;gt;&lt;br /&gt;
  &amp;lt;size&amp;gt;50&amp;lt;/size&amp;gt;&lt;br /&gt;
  &amp;lt;total&amp;gt;3&amp;lt;/total&amp;gt;&lt;br /&gt;
  &amp;lt;admins&amp;gt;&lt;br /&gt;
    &amp;lt;admin&amp;gt;&lt;br /&gt;
      &amp;lt;adminId&amp;gt;apiadmin37&amp;lt;/adminId&amp;gt;&lt;br /&gt;
      &amp;lt;type&amp;gt;super&amp;lt;/type&amp;gt;&lt;br /&gt;
      &amp;lt;isActive&amp;gt;true&amp;lt;/isActive&amp;gt;&lt;br /&gt;
      &amp;lt;isLocked&amp;gt;false&amp;lt;/isLocked&amp;gt;&lt;br /&gt;
    &amp;lt;/admin&amp;gt;&lt;br /&gt;
    &amp;lt;admin&amp;gt;&lt;br /&gt;
      &amp;lt;adminId&amp;gt;apiadmin76&amp;lt;/adminId&amp;gt;&lt;br /&gt;
      &amp;lt;type&amp;gt;super&amp;lt;/type&amp;gt;&lt;br /&gt;
      &amp;lt;isActive&amp;gt;true&amp;lt;/isActive&amp;gt;&lt;br /&gt;
      &amp;lt;isLocked&amp;gt;false&amp;lt;/isLocked&amp;gt;&lt;br /&gt;
    &amp;lt;/admin&amp;gt;&lt;br /&gt;
    &amp;lt;admin&amp;gt;&lt;br /&gt;
      &amp;lt;adminId&amp;gt;apiadmin94&amp;lt;/adminId&amp;gt;&lt;br /&gt;
      &amp;lt;type&amp;gt;super&amp;lt;/type&amp;gt;&lt;br /&gt;
      &amp;lt;isActive&amp;gt;true&amp;lt;/isActive&amp;gt;&lt;br /&gt;
      &amp;lt;isLocked&amp;gt;false&amp;lt;/isLocked&amp;gt;&lt;br /&gt;
    &amp;lt;/admin&amp;gt;&lt;br /&gt;
  &amp;lt;/admins&amp;gt;&lt;br /&gt;
&amp;lt;/adminList&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&amp;quot;admins&amp;quot;:[{&amp;quot;adminId&amp;quot;:&amp;quot;apiadmin37&amp;quot;,&amp;quot;isActive&amp;quot;:true,&amp;quot;isLocked&amp;quot;:false,&amp;quot;type&amp;quot;:&amp;quot;super&amp;quot;},{&amp;quot;adminId&amp;quot;:&amp;quot;apiadmin76&amp;quot;,&amp;quot;isActive&amp;quot;:true,&amp;quot;isLocked&amp;quot;:false,&amp;quot;type&amp;quot;:&amp;quot;super&amp;quot;},{&amp;quot;adminId&amp;quot;:&amp;quot;apiadmin94&amp;quot;,&amp;quot;isActive&amp;quot;:true,&amp;quot;isLocked&amp;quot;:false,&amp;quot;type&amp;quot;:&amp;quot;super&amp;quot;}],&amp;quot;offset&amp;quot;:0,&amp;quot;size&amp;quot;:50,&amp;quot;total&amp;quot;:3}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Show ==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/admins/(admin name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/admins/(admin name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
The show operation will return detailed information about the specified admin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The show operation only supports the GET HTTP verb. For text/xml format, refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/Admin.xsd Admin.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/999999/admins/admin1', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;admin xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:admin&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;adminId&amp;gt;apiadmin1&amp;lt;/adminId&amp;gt;&lt;br /&gt;
  &amp;lt;type&amp;gt;super&amp;lt;/type&amp;gt;&lt;br /&gt;
  &amp;lt;isActive&amp;gt;true&amp;lt;/isActive&amp;gt;&lt;br /&gt;
  &amp;lt;isLocked&amp;gt;false&amp;lt;/isLocked&amp;gt;&lt;br /&gt;
  &amp;lt;firstName&amp;gt;First&amp;lt;/firstName&amp;gt;&lt;br /&gt;
  &amp;lt;lastName&amp;gt;Last&amp;lt;/lastName&amp;gt;&lt;br /&gt;
  &amp;lt;email&amp;gt;first.last@rackspace.com&amp;lt;/email&amp;gt;&lt;br /&gt;
  &amp;lt;passwordExpiration&amp;gt;10&amp;lt;/passwordExpiration&amp;gt;&lt;br /&gt;
  &amp;lt;allowSimultaneousLogins&amp;gt;false&amp;lt;/allowSimultaneousLogins&amp;gt;&lt;br /&gt;
  &amp;lt;restrictedIps&amp;gt;&lt;br /&gt;
    &amp;lt;restrictedIps&amp;gt;1.1.1.1&amp;lt;/restrictedIps&amp;gt;&lt;br /&gt;
    &amp;lt;restrictedIps&amp;gt;1.1.1.2&amp;lt;/restrictedIps&amp;gt;&lt;br /&gt;
    &amp;lt;restrictedIps&amp;gt;1.1.1.3&amp;lt;/restrictedIps&amp;gt;&lt;br /&gt;
  &amp;lt;/restrictedIps&amp;gt;&lt;br /&gt;
&amp;lt;/admin&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&amp;quot;adminId&amp;quot;:&amp;quot;apiadmin1&amp;quot;,&amp;quot;allowSimultaneousLogins&amp;quot;:false,&amp;quot;email&amp;quot;:&amp;quot;first.last@rackspace.com&amp;quot;,&amp;quot;firstName&amp;quot;:&amp;quot;First&amp;quot;,&amp;quot;isActive&amp;quot;:true,&amp;quot;isLocked&amp;quot;:false,&amp;quot;lastName&amp;quot;:&amp;quot;Last&amp;quot;,&amp;quot;passwordExpiration&amp;quot;:10,&amp;quot;restrictedIps&amp;quot;:[&amp;quot;1.1.1.1&amp;quot;,&amp;quot;1.1.1.2&amp;quot;,&amp;quot;1.1.1.3&amp;quot;],&amp;quot;type&amp;quot;:&amp;quot;super&amp;quot;}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Add/Edit ==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
 Add: [POST] https://api.emailsrvr.com/v0/customers/(customer account number)/admins/(admin name)&lt;br /&gt;
      [POST] https://api.emailsrvr.com/v0/admins/(admin name)&lt;br /&gt;
&lt;br /&gt;
 Edit: [PUT] https://api.emailsrvr.com/v0/customers/(customer account number)/admins/(admin name)&lt;br /&gt;
       [PUT] https://api.emailsrvr.com/v0/admins/(admin name)&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Add a new admin or edit an existing admin under the specified account.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| type&lt;br /&gt;
| string&lt;br /&gt;
| Admin type (Required for Add). Must be &amp;quot;super&amp;quot;, &amp;quot;standard&amp;quot; or &amp;quot;limited&amp;quot;. Can't change permissions and domain access for limited admin at this point.&lt;br /&gt;
|-&lt;br /&gt;
| password&lt;br /&gt;
| string&lt;br /&gt;
| Admin log in password (Required for Add)&lt;br /&gt;
|-&lt;br /&gt;
| firstName&lt;br /&gt;
| string&lt;br /&gt;
| Admin first name (Required for Add)&lt;br /&gt;
|-&lt;br /&gt;
| lastName&lt;br /&gt;
| string&lt;br /&gt;
| Admin last name (Required for Add)&lt;br /&gt;
|-&lt;br /&gt;
| email&lt;br /&gt;
| string&lt;br /&gt;
| Admin contact email (Required for Add)&lt;br /&gt;
|-&lt;br /&gt;
| securityQuestion&lt;br /&gt;
| string&lt;br /&gt;
| Security question (Required for Add)&lt;br /&gt;
|-&lt;br /&gt;
| securityAnswer&lt;br /&gt;
| string&lt;br /&gt;
| Security answer (Required for Add)&lt;br /&gt;
|-&lt;br /&gt;
| passwordExpiration&lt;br /&gt;
| int&lt;br /&gt;
| The number of days in which password expires. 0 means password never expires.&lt;br /&gt;
|-&lt;br /&gt;
| allowSimultaneousLogins&lt;br /&gt;
| boolean&lt;br /&gt;
| Allow simultaneous logins using this Administrative ID&lt;br /&gt;
|-&lt;br /&gt;
| restrictedIps&lt;br /&gt;
| string&lt;br /&gt;
| Login restricted to IP address(es). Can be up to 3 valid addresses separated by commas.&lt;br /&gt;
|-&lt;br /&gt;
| enabled&lt;br /&gt;
| boolean&lt;br /&gt;
| Enable/disable admin account&lt;br /&gt;
|-&lt;br /&gt;
| locked&lt;br /&gt;
| boolean&lt;br /&gt;
| Lock/unlock admin account&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post '/customers/999999/admins/admin1', &lt;br /&gt;
     { &lt;br /&gt;
       'type' =&amp;gt; 'super',&lt;br /&gt;
       'password' =&amp;gt; 'password',&lt;br /&gt;
       'firstName' =&amp;gt; 'First',&lt;br /&gt;
       'lastName' =&amp;gt; 'Last',&lt;br /&gt;
       'email' =&amp;gt; 'first.last@rackspace.com',&lt;br /&gt;
       'securityQuestion' =&amp;gt; 'Q',&lt;br /&gt;
       'securityAnswer' =&amp;gt; 'A'&lt;br /&gt;
     },&lt;br /&gt;
     'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
put '/customers/999999/admins/admin2', &lt;br /&gt;
     { &lt;br /&gt;
       'enabled' =&amp;gt; 'true',&lt;br /&gt;
       'locked' =&amp;gt; 'false',&lt;br /&gt;
       'passwordExpiration' =&amp;gt; '0',&lt;br /&gt;
       'allowSimultaneousLogins' =&amp;gt; 'true',&lt;br /&gt;
       'restrictedIps' =&amp;gt; '1.1.1.1'&lt;br /&gt;
     },&lt;br /&gt;
     'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Password doesn't meet the requirements&lt;br /&gt;
| 400&lt;br /&gt;
| Password must be 7 to 30 characters.&lt;br /&gt;
|-&lt;br /&gt;
| Invalid email address&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid email address.&lt;br /&gt;
|-&lt;br /&gt;
| Invalid restricted to IP address(es)&lt;br /&gt;
| 400&lt;br /&gt;
| IP addresses must be valid addresses separated by commas. A maximum of 3 addresses may be entered.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Delete ==&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[DELETE] https://api.emailsrvr.com/v0/customers/(customer account number)/admins/(admin name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[DELETE] https://api.emailsrvr.com/v0/admins/(admin name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Deletes the admin.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
delete '/customers/999999/admins/admin1', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zhen.wei</name></author>	</entry>

	<entry>
		<id>http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Rest_API/Test_Bug&amp;diff=430</id>
		<title>Rest API/Test Bug</title>
		<link rel="alternate" type="text/html" href="http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Rest_API/Test_Bug&amp;diff=430"/>
				<updated>2010-10-13T21:27:32Z</updated>
		
		<summary type="html">&lt;p&gt;Zhen.wei: test bug page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Test Bug&lt;/div&gt;</summary>
		<author><name>Zhen.wei</name></author>	</entry>

	<entry>
		<id>http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Exchange_Mailbox_Spam_(Rest_API)&amp;diff=422</id>
		<title>Exchange Mailbox Spam (Rest API)</title>
		<link rel="alternate" type="text/html" href="http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Exchange_Mailbox_Spam_(Rest_API)&amp;diff=422"/>
				<updated>2010-09-15T14:31:29Z</updated>
		
		<summary type="html">&lt;p&gt;Zhen.wei: add removeQuarantineOwner&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== Spam Settings ==&lt;br /&gt;
&lt;br /&gt;
=== Show ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET]  https://api.emailsrvr.com/v0/customers/(customer account  number)/domains/(domain name)&lt;br /&gt;
        /ex/mailboxes/(mailbox  name)/spam/settings&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
This operation returns the  spam settings associated with the mailbox.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The Show operation only  supports the GET HTTP verb. For .xml format refer to the following  schema document: [http://api.emailsrvr.com/v0/Schemas/MailboxSpamSetting.xsd  MailboxSpamSetting.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get  '/customers/12345678/domains/example.com/ex/mailboxes/alex.smith/spam/settings',  'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;MailboxSpamSettings xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;  xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;  xmlns=&amp;quot;urn:xml:MailboxSpamSettings&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;filterLevel&amp;gt;on&amp;lt;/filterLevel&amp;gt;&lt;br /&gt;
  &amp;lt;sendToDomainQuarantine&amp;gt;false&amp;lt;/sendToDomainQuarantine&amp;gt;&lt;br /&gt;
  &amp;lt;quarantineOwner /&amp;gt;&lt;br /&gt;
&amp;lt;/MailboxSpamSettings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;filterLevel&amp;quot;:&amp;quot;on&amp;quot;,&amp;quot;sendToDomainQuarantine&amp;quot;:false,&amp;quot;quarantineOwner&amp;quot;:&amp;quot;&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Edit ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[PUT]  https://api.emailsrvr.com/v0/customers/(customer account  number)/domains/(domain name)&lt;br /&gt;
        /ex/mailboxes/(mailbox  name)/spam/settings&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
This operation will modify  the mailbox spam setting. Only 'filterlevel' is the required form field.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| filterlevel&lt;br /&gt;
| string&lt;br /&gt;
| Spam filter  status, must be 'on' or 'off' or 'exclusive' (Required)&lt;br /&gt;
|-&lt;br /&gt;
|  sendtodomainquarantine&lt;br /&gt;
| boolean&lt;br /&gt;
| Indicates  whether or not send spam to domain quarantine&lt;br /&gt;
|-&lt;br /&gt;
|  quarantineowner&lt;br /&gt;
| string&lt;br /&gt;
| The email  address that quarantine notifications be sent to&lt;br /&gt;
|-&lt;br /&gt;
|  removeQuarantineOwner&lt;br /&gt;
| boolean&lt;br /&gt;
| Set this flag to &amp;quot;true&amp;quot; to remove quarantine owner&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
Form field &amp;quot;filterlevel&amp;quot; is  always required. &amp;lt;br&amp;gt;&lt;br /&gt;
When  &amp;quot;filterlevel&amp;quot; is &amp;quot;on&amp;quot;, spam will be sent to mailbox quarantine as  default, unless &amp;quot;sendtodomainquarantine&amp;quot; is set to &amp;quot;true&amp;quot;. &amp;lt;br&amp;gt;&lt;br /&gt;
Changing &amp;quot;filterlevel&amp;quot; to  &amp;quot;off&amp;quot; will force &amp;quot;sendtodomainquarantine&amp;quot; to be &amp;quot;false&amp;quot;. &amp;lt;br&amp;gt;&lt;br /&gt;
When &amp;quot;filterlevel&amp;quot; is  &amp;quot;exclusive&amp;quot;, spam will be sent to mailbox quarantine as default, unless  &amp;quot;sendtodomainquarantine&amp;quot; is set to &amp;quot;true&amp;quot;. In addition, mailbox will  only receive email from addresses and IPs on its safelist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
put  '/customers/12345678/domains/example.com/ex/mailboxes/alex.smith/spam/settings',  'text/xml',&lt;br /&gt;
{ &lt;br /&gt;
  'filterlevel' =&amp;gt; 'off'&lt;br /&gt;
}  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'': &lt;br /&gt;
&lt;br /&gt;
{|  class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Invalid  input for form field 'filterlevel'&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid  filterLevel, input must be: on/off/exclusive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Blacklist ==&lt;br /&gt;
&lt;br /&gt;
=== Index ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET]  https://api.emailsrvr.com/v0/customers/(customer account  number)/domains/(domain name)&lt;br /&gt;
        /ex/mailboxes/(mailbox  name)/spam/blacklist&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
This operation returns email  address blacklist associated with the mailbox. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The Index operation only  supports the GET HTTP verb. For .xml format refer to the following  schema document: [http://api.emailsrvr.com/v0/Schemas/Blacklist.xsd  Blacklist.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get  '/customers/12345678/domains/example.com/ex/mailboxes/alex.smith/spam/blacklist',  'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;blacklist xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;  xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;  xmlns=&amp;quot;urn:xml:blacklist&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;addresses&amp;gt;&lt;br /&gt;
    &amp;lt;address&amp;gt;name1@spam.com&amp;lt;/address&amp;gt;&lt;br /&gt;
    &amp;lt;address&amp;gt;name2@spam.com&amp;lt;/address&amp;gt;&lt;br /&gt;
  &amp;lt;/addresses&amp;gt;&lt;br /&gt;
&amp;lt;/blacklist&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;addresses&amp;quot;:[&amp;quot;name1@spam.com&amp;quot;,&amp;quot;name2@spam.com&amp;quot;]}&lt;br /&gt;
&lt;br /&gt;
=== Add ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[POST]  https://api.emailsrvr.com/v0/customers/(customer account  number)/domains/(domain name)&lt;br /&gt;
        /ex/mailboxes/(mailbox  name)/spam/blacklist/(email address)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Adds an email address or  domain to the blacklist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post   '/customers/12345678/domains/example.com/ex/mailboxes/alex.smith/spam/blacklist/anyone@spam.com',  {},'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'': &lt;br /&gt;
&lt;br /&gt;
{|  class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Entered  invalid email or domain&lt;br /&gt;
| 400&lt;br /&gt;
| invalid  email address: abc&lt;br /&gt;
|-&lt;br /&gt;
| Entered current domain&lt;br /&gt;
| 400&lt;br /&gt;
| Adding  example.com would blacklist the current domain&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Delete ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[DELETE]  https://api.emailsrvr.com/v0/customers/(customer account  number)/domains/(domain name)&lt;br /&gt;
            /ex/mailboxes/(mailbox  name)/spam/blacklist/(email address)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Removes an email address or  domain from the blacklist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
delete   '/customers/12345678/domains/example.com/ex/mailboxes/alex.smith/spam/blacklist/anyone@yahoo.com',  'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'': &lt;br /&gt;
&lt;br /&gt;
{|  class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Entered  invalid email or domain&lt;br /&gt;
| 400&lt;br /&gt;
| invalid  email address: abc&lt;br /&gt;
|-&lt;br /&gt;
| Entered email or domain is not on the  current blacklist&lt;br /&gt;
| 400&lt;br /&gt;
|  abc@junkmail.com is not found on the blacklist&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== IP Blacklist ==&lt;br /&gt;
&lt;br /&gt;
=== Index ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET]  https://api.emailsrvr.com/v0/customers/(customer account  number)/domains/(domain name)&lt;br /&gt;
        /ex/mailboxes/(mailbox  name)/spam/ipblacklist&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
This operation returns IP  blacklist associated with the mailbox. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The Index operation only  supports the GET HTTP verb. For .xml format refer to the following  schema document: [http://api.emailsrvr.com/v0/Schemas/IpBlacklist.xsd  IpBlacklist.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get  '/customers/12345678/domains/example.com/ex/mailboxes/alex.smith/spam/ipblacklist',  'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''XML Result Example':&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;ipBlacklist  xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;  xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;  xmlns=&amp;quot;urn:xml:ipBlacklist&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;addresses&amp;gt;&lt;br /&gt;
    &amp;lt;ip&amp;gt;216.12.34.1&amp;lt;/ip&amp;gt;&lt;br /&gt;
    &amp;lt;ip&amp;gt;216.12.34.2&amp;lt;/ip&amp;gt;&lt;br /&gt;
  &amp;lt;/addresses&amp;gt;&lt;br /&gt;
&amp;lt;/ipBlacklist&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;addresses&amp;quot;:[&amp;quot;216.12.34.1&amp;quot;,&amp;quot;216.12.34.2&amp;quot;]}&lt;br /&gt;
&lt;br /&gt;
=== Add ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[POST]  https://api.emailsrvr.com/v0/customers/(customer account  number)/domains/(domain name)&lt;br /&gt;
        /ex/mailboxes/(mailbox  name)/spam/ipblacklist/(ip address)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Adds an IP to the blacklist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post  '/customers/12345678/domains/example.com/ex/mailboxes/alex.smith/spam/blacklist/216.12.34.1',  {},'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[DELETE]  https://api.emailsrvr.com/v0/customers/(customer account  number)/domains/(domain name)&lt;br /&gt;
            /ex/mailboxes/(mailbox  name)/spam/ipblacklist/(ip address)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Removes an IP from the  blacklist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
delete  '/customers/12345678/domains/example.com/ex/mailboxes/alex.smith/spam/ipblacklist/216.12.34.1',  'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'': &lt;br /&gt;
&lt;br /&gt;
{|  class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Entered IP  is not on the current blacklist&lt;br /&gt;
| 400&lt;br /&gt;
| 216.12.34.1  is not found on the blacklist&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Safelist ==&lt;br /&gt;
&lt;br /&gt;
=== Index ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET]  https://api.emailsrvr.com/v0/customers/(customer account  number)/domains/(domain name)&lt;br /&gt;
        /ex/mailboxes/(mailbox  name)/spam/safelist&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
This operation returns email  address safelist associated with the mailbox. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The Index operation only  supports the GET HTTP verb. For .xml format refer to the following  schema document: [http://api.emailsrvr.com/v0/Schemas/Safelist.xsd  Safelist.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get  '/customers/12345678/domains/example.com/ex/mailboxes/alex.smith/spam/safelist',  'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;safelist xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;  xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;  xmlns=&amp;quot;urn:xml:safelist&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;addresses&amp;gt;&lt;br /&gt;
    &amp;lt;address&amp;gt;name1@notspam.com&amp;lt;/address&amp;gt;&lt;br /&gt;
    &amp;lt;address&amp;gt;name2@notspam.com&amp;lt;/address&amp;gt;&lt;br /&gt;
  &amp;lt;/addresses&amp;gt;&lt;br /&gt;
&amp;lt;/safelist&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;addresses&amp;quot;:[&amp;quot;name1@notspam.com&amp;quot;,&amp;quot;name2@notspam.com&amp;quot;]}&lt;br /&gt;
&lt;br /&gt;
=== Add ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[POST]  https://api.emailsrvr.com/v0/customers/(customer account  number)/domains/(domain name)&lt;br /&gt;
        /ex/mailboxes/(mailbox  name)/spam/safelist/(email address)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Adds an email address or  domain to the safelist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post   '/customers/12345678/domains/example.com/ex/mailboxes/alex.smith/spam/safelist/anyone@yahoo.com',  {},'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'': &lt;br /&gt;
&lt;br /&gt;
{|  class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Entered  invalid email or domain&lt;br /&gt;
| 400&lt;br /&gt;
| invalid  email address: abc&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Delete ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[DELETE]  https://api.emailsrvr.com/v0/customers/(customer account  number)/domains/(domain name)&lt;br /&gt;
            /ex/mailboxes/(mailbox  name)/spam/safelist/(email address)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Removes an email address or  domain from the safelist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
delete   '/customers/12345678/domains/example.com/ex/mailboxes/alex.smith/spam/safelist/anyone@yahoo.com',  'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'': &lt;br /&gt;
&lt;br /&gt;
{|  class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Entered  invalid email or domain&lt;br /&gt;
| 400&lt;br /&gt;
| invalid  email address: abc&lt;br /&gt;
|-&lt;br /&gt;
| Entered email or domain is not on the  current safelist&lt;br /&gt;
| 400&lt;br /&gt;
|  anyone@yahoo.com is not found on the safelist&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== IP Safelist ==&lt;br /&gt;
&lt;br /&gt;
=== Index ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET]  https://api.emailsrvr.com/v0/customers/(customer account  number)/domains/(domain name)&lt;br /&gt;
        /ex/mailboxes/(mailbox  name)/spam/ipsafelist&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
This operation returns IP  safelist associated with the mailbox. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The Index operation only  supports the GET HTTP verb. For .xml format refer to the following  schema document: [http://api.emailsrvr.com/v0/Schemas/IpSafelist.xsd  IpSafelist.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get  '/customers/12345678/domains/example.com/ex/mailboxes/alex.smith/spam/ipsafelist',  'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;ipSafelist xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;  xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;  xmlns=&amp;quot;urn:xml:ipSafelist&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;addresses&amp;gt;&lt;br /&gt;
    &amp;lt;ip&amp;gt;192.168.0.1&amp;lt;/ip&amp;gt;&lt;br /&gt;
    &amp;lt;ip&amp;gt;192.168.0.2&amp;lt;/ip&amp;gt;&lt;br /&gt;
  &amp;lt;/addresses&amp;gt;&lt;br /&gt;
&amp;lt;/ipSafelist&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;addresses&amp;quot;:[&amp;quot;192.168.0.1&amp;quot;,&amp;quot;192.168.0.2&amp;quot;]}&lt;br /&gt;
&lt;br /&gt;
=== Add ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[POST]  https://api.emailsrvr.com/v0/customers/(customer account  number)/domains/(domain name)&lt;br /&gt;
        /ex/mailboxes/(mailbox  name)/spam/ipsafelist/(ip address)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Adds an IP to the ipsafelist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post  '/customers/12345678/domains/example.com/ex/mailboxes/alex.smith/spam/ipsafelist/216.12.34.1',  {},'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'': &lt;br /&gt;
&lt;br /&gt;
{|  class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Entered  invalid IP address&lt;br /&gt;
| 400&lt;br /&gt;
| invalid ip  address: 123&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Delete ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[DELETE]  https://api.emailsrvr.com/v0/customers/(customer account  number)/domains/(domain name)&lt;br /&gt;
            /ex/mailboxes/(mailbox  name)/spam/ipsafelist/(email address)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Removes an IP from the  safelist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
delete  '/customers/12345678/domains/example.com/ex/mailboxes/alex.smith/spam/ipsafelist/216.12.34.1',  'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'': &lt;br /&gt;
&lt;br /&gt;
{|  class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Entered IP  is not on the current safelist&lt;br /&gt;
| 400&lt;br /&gt;
| 216.12.34.1  is not found on the safelist&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Zhen.wei</name></author>	</entry>

	<entry>
		<id>http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Rest_API&amp;diff=421</id>
		<title>Rest API</title>
		<link rel="alternate" type="text/html" href="http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Rest_API&amp;diff=421"/>
				<updated>2010-09-13T20:18:55Z</updated>
		
		<summary type="html">&lt;p&gt;Zhen.wei: 09/01/2010 update&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Recent Changes ==&lt;br /&gt;
&lt;br /&gt;
'''09/01/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Now Rackspace Email Mailboxes can be visible in Exchange Global Address List. And Exchange Mailboxes can be visible in Rackspace Email Company Directory.&lt;br /&gt;
* Now Index Rackspace Email/Exchange Mailbox can filter mailboxes by &amp;quot;enabled&amp;quot; flag.&lt;br /&gt;
* Added &amp;quot;lastLogin&amp;quot; to Rackspace Email/Exchange Mailbox Show.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''08/01/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Added Rackspace Email Mailbox Contact info. See [[Rackspace_Mailbox_(Rest_API)| here]].&lt;br /&gt;
* Added Create Login Token. See [[Customer_(Rest_API)#Create_Login_Tokens| here]].&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''06/20/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Added [[Rackspace_Alias(Rest_API)| Rackspace Email Alias]].&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''06/11/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Added Rackspace Email Mailbox Spam Settings/Blacklist/Safelist. See [[Rackspace_Mailbox_Spam_(Rest_API)| here]].&lt;br /&gt;
* Now Rackspace Email Mailbox can Show/Edit vacation message and email forwarding address. See [[Rackspace_Mailbox_(Rest_API)| here]].&lt;br /&gt;
* Added SharePoint Service Settings. See [[SharePoint_(Rest_API)| here]].&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The Email &amp;amp; Apps Control Panel API provides most of the functions of the Control Panel through a REST-based [http://en.wikipedia.org/wiki/Web_service web API]. Whether it is adding a new customer account, adding mailboxes, or any other of the supported features the API allows your application to administer the changes regardless of your application's language or nature. For more information on RESTful web services refer to the following sites:&lt;br /&gt;
&lt;br /&gt;
[http://www.peej.co.uk/articles/restfully-delicious.html Paul James's Homepage: A RESTful Web service, an example]&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Representational_State_Transfer#External_links Wikipedia: Representational State Transfer - External Links]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The API is accessible to all with access to Control Panel, including resellers, business customers, enterprise customers, and indirect customers. However, not all operations are available to non-resellers. See the [[Rest_API#Operations|Operations]] section for more details.&lt;br /&gt;
&lt;br /&gt;
== Operations ==&lt;br /&gt;
&lt;br /&gt;
The following pages detail the operations that the API supports. The operations are grouped into sections based on the entity/object types that each operation interacts with. Non-resellers do not have access to all functions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Resource&lt;br /&gt;
!Example URI&lt;br /&gt;
!Business User Access&lt;br /&gt;
|-&lt;br /&gt;
| [[Customer_(Rest_API)| Customer]]&lt;br /&gt;
| /customers/123456789&lt;br /&gt;
| [[Customer_(Rest_API)#Create_Login_Tokens| Create Login Token]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Domain_(Rest_API)| Domain]]&lt;br /&gt;
| /customers/123456789/domains/example.com&lt;br /&gt;
| [[Domain_(Rest_API)#Index| Index]], [[Domain_(Rest_API)#Show| Show]], [[Domain_(Rest_API)#Split Domain Routing| Split Domain Routing]], [[Domain_(Rest_API)#Archiving SSO Login URL| Archiving SSO Login URL]], [[Domain_(Rest_API)#Domain Public Folders|Domain Public Folders ]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Domain_Spam_(Rest_API)| Domain Spam Settings]]&lt;br /&gt;
| /customers/123456789/domains/example.com/spam/settings&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Rackspace_Mailbox_(Rest_API)|  Rackspace Email Mailbox]]&lt;br /&gt;
|  /customers/123456789/domains/example.com/rs/mailboxes/john.smith&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Rackspace_Mailbox_Spam_(Rest_API)| Rackspace Email Mailbox Spam Settings]]&lt;br /&gt;
|  /customers/123456789/domains/example.com/rs/mailboxes/john.smith/spam&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Rackspace_Alias(Rest_API)|  Rackspace Email Alias]]&lt;br /&gt;
|  /customers/123456789/domains/example.com/rs/mailboxes/john.smith/alias&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Mailbox_(Rest_API)| Exchange Mailbox]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/mailboxes/john.smith&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Mailbox_Spam_(Rest_API)| Exchange Mailbox Spam Settings]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/mailboxes/john.smith/spam&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Contact_(Rest_API)| Exchange Contact]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/contacts/john.smith&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Distribution_List_(Rest_API)| Exchange Distribution List]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/distributionlists/group.name&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Resource_Mailbox_(Rest_API)| Exchange Resource Mailbox]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/resources/conference.room&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[SharePoint_(Rest_API)| SharePoint]]&lt;br /&gt;
| /customers/123456789/sharepoint/settings&lt;br /&gt;
| [[SharePoint_(Rest_API)#Show | Show]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The examples shown in the operation pages are written in Ruby and extensively use the helper functions shown in the Ruby Examples below.&lt;br /&gt;
&lt;br /&gt;
== Quick Start ==&lt;br /&gt;
&lt;br /&gt;
'''What you need:'''&lt;br /&gt;
* A Rackspace Email and Apps Control Panel admin account&lt;br /&gt;
* A HTTP class library that supports TLS and the HTTP methods: GET, POST, PUT, DELETE.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Making your first API call, an Show Customer request:'''&lt;br /&gt;
# Obtain your API keys&lt;br /&gt;
#:* Click on My Account at the top of the [https://apps.rackspace.com/?cp Control Panel web interface]. Under the Administrators heading there will be an link for the API keys page.&lt;br /&gt;
# Set up your client's HTTP request&lt;br /&gt;
#:* Set up your client to make calls to a URL beginning with &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/v0&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
#:* Populate the Accept, User-Agent and X-Api-Signature HTTP request headers correctly. This is explained in detail [[#HTTP Headers|here]].&lt;br /&gt;
# Make a GET request to /customers/me.&lt;br /&gt;
#:* The complete URI will be &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/v0/customers/me&amp;lt;/nowiki&amp;gt;. Use your HTTP library to retrieve the HTTP response code, 'x-error-message' HTTP response header and HTTP response body so that they may be displayed to help debug and determine success.&lt;br /&gt;
'''From here:'''&lt;br /&gt;
* Learn about the operations you'll be implementing at the subpages [[#Operations|here]].&lt;br /&gt;
&lt;br /&gt;
== Accessing the API ==&lt;br /&gt;
&lt;br /&gt;
Your application will need to make HTTP requests to remote servers. Most programming languages have this function provided in its class library. In addition to the common GET and POST HTTP methods, the library used will also need to support PUT and DELETE.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&lt;br /&gt;
Calls without [http://en.wikipedia.org/wiki/Transport_Layer_Security TLS] (formerly SSL) will complete successfully but it is HIGHLY RECOMMENDED that TLS always be used. Interception of unencrypted communication will allow a third party to have complete access to all functions available via the API.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For some language libraries just using an URL with https:// will cause the library to use TLS. In some other libraries however some options specific to the library may have to be configured to utilize TLS. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All API calls should be directed to a URL in the following format:&lt;br /&gt;
&amp;lt;pre&amp;gt;https://api.emailsrvr.com/(version)/(resource)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;https://api.emailsrvr.com/v0/customers/12345678/domains/customerbusiness.com&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Versions ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Supported Versions''&lt;br /&gt;
!''URL''&lt;br /&gt;
!''Version Documentation''&lt;br /&gt;
|-&lt;br /&gt;
| v0 (current)&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/v0/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
| http://signup.apps.rackspace.com/api-wiki/index.php/Rest_API&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The API version number is a component of the URL that is used to access the API. For example, to access the root of the API, the URL is https://api.emailsrvr.com/v0/. Bug fixes and minor non-breaking changes will be made without changing the version number. When major features or breaking changes are introduced, the version number will be incremented. It is not yet determined how many versions are going to be supported at any one time.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Non-breaking Changes''&lt;br /&gt;
!''Breaking Changes''&lt;br /&gt;
|-&lt;br /&gt;
| Adding new fields or attributes to form fields sent&lt;br /&gt;
| Changing or deleting any fields in form fields sent&lt;br /&gt;
|-&lt;br /&gt;
| Adding fields in returned data&lt;br /&gt;
| Changing or removing fields in returned data&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| Changing the URI of any resource&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Authentication ===&lt;br /&gt;
&lt;br /&gt;
To gain access to the API, your request must include a properly constructed X-Api-Signature HTTP header. Details on what to put in the header are below. To construct the header, you must have the following keys that that are generated from the [https://apps.rackspace.com/?cp Control Panel Web interface]. The key generation page can be found by clicking 'My Account' at the top, then 'Generate API Keys' in the Administrators section.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Key Name&lt;br /&gt;
!Description&lt;br /&gt;
!Example&lt;br /&gt;
|-&lt;br /&gt;
| User Key&lt;br /&gt;
| A public key that corresponds to your admin id&lt;br /&gt;
| ''eGbq9/2hcZsRlr1JV1Pi''&lt;br /&gt;
|-&lt;br /&gt;
| Secret Key&lt;br /&gt;
| A shared secret key&lt;br /&gt;
| ''QHOvchm/40czXhJ1OxfxK7jDHr3t''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An unsuccessful authentication will result in a 403 HTTP code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== X-Api-Signature Header ====&lt;br /&gt;
&lt;br /&gt;
Format is as follows:&lt;br /&gt;
&amp;lt;'''User Key'''&amp;gt;:&amp;lt;'''Timestamp'''&amp;gt;:&amp;lt;'''SHA1 Hash'''&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Example: ''eGbq9/2hcZsRlr1JV1Pi:20010317143725:46VIwd66mOFGG8IkbgnLlXnfnkU=''&lt;br /&gt;
&lt;br /&gt;
Remember to include the colons between the data strings!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''User Key''':&amp;lt;br&amp;gt;&lt;br /&gt;
This is the public key issued by the Control Panel browser interface.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Timestamp''':&amp;lt;br&amp;gt;&lt;br /&gt;
The format is YYYYMMDDHHmmss. All values besides year are zero-padded to two spaces. For example, March 08th 2001 at 2:37.25pm would be ''20010308143725''.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|YYYY&lt;br /&gt;
|Four-digit year&lt;br /&gt;
|-&lt;br /&gt;
| MM&lt;br /&gt;
| Month&lt;br /&gt;
|-&lt;br /&gt;
| DD&lt;br /&gt;
| Day&lt;br /&gt;
|-&lt;br /&gt;
| HH&lt;br /&gt;
| Hour in 24h format&lt;br /&gt;
|-&lt;br /&gt;
| mm&lt;br /&gt;
| Minute&lt;br /&gt;
|-&lt;br /&gt;
| ss&lt;br /&gt;
| Second&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''SHA1 Hash''':&lt;br /&gt;
&lt;br /&gt;
A SHA1 (Secure Hash Algorithm) hash must be applied to a string with the following information:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;'''User Key'''&amp;gt;&amp;lt;'''User Agent'''&amp;gt;&amp;lt;'''Timestamp'''&amp;gt;&amp;lt;'''Secret Key'''&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that the 'User Agent' must be the exact same as what is specified in the User-Agent HTTP header. Using the above example data, the string before hashing is:&amp;lt;br&amp;gt;''eGbq9/2hcZsRlr1JV1PiRackspace Management Interface20010308143725QHOvchm/40czXhJ1OxfxK7jDHr3t''&lt;br /&gt;
&lt;br /&gt;
Resulting base-64 SHA1 Hash:&amp;lt;br&amp;gt;''46VIwd66mOFGG8IkbgnLlXnfnkU=''&lt;br /&gt;
&lt;br /&gt;
Be sure to encode the binary hash, not the hex hash, into base-64. The resulting string should be 28 characters long.&lt;br /&gt;
&lt;br /&gt;
== Using the API ==&lt;br /&gt;
&lt;br /&gt;
=== Requests ===&lt;br /&gt;
&lt;br /&gt;
HTTP requests should be sent to the server with the correct URL, HTTP method, HTTP headers and form data (if needed). The URL specifies the resource, the HTTP method specifies what operation is done on the resource, and form data is used to specify the details of the resource when the resource is added or edited.&lt;br /&gt;
&lt;br /&gt;
The URLs, corresponding HTTP methods, and necessary form data for the desired operations are detailed in the [[#Operations|operation pages]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you're getting the HTTP status code 417 see [[Handling HTTP code 417:  Expectation failed]]&lt;br /&gt;
&lt;br /&gt;
==== URL ====&lt;br /&gt;
&lt;br /&gt;
The URLs are specifies the resource or resource collection. Objects are organized in a tree collection, starting with customers at the top, then domains, then domain objects next (such as mailboxes, contacts, and distribution lists) and so on. The URLs of the resources and collections accessible are found on the operation pages.&lt;br /&gt;
&lt;br /&gt;
==== HTTP Method ====&lt;br /&gt;
&lt;br /&gt;
It is the HTTP method that specifies what operation will be done on the resource. For example, to get the details of a mailbox a HTTP GET will be done on /customers/12345678/domains/example.com/ex/mailboxes/john.smith. If the mailbox does not exist, a HTTP POST to the same URL with the necessary form data will add the mailbox. Then, a HTTP PUT to the same URL will edit mailbox. And to delete the mailbox, an HTTP DELETE would be used.&lt;br /&gt;
&lt;br /&gt;
The types of operations a certain method performs is outlined below.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''HTTP Method''&lt;br /&gt;
!''Operations''&lt;br /&gt;
!''Response''&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=2|GET&lt;br /&gt;
|Index - returns a list of the resources&lt;br /&gt;
|rowspan=2|XML or JSON formatted data&lt;br /&gt;
|-&lt;br /&gt;
|Show - returns the details of the resource&lt;br /&gt;
|-&lt;br /&gt;
|POST&lt;br /&gt;
|Add - adds a new resource&lt;br /&gt;
|rowspan=3|Response code and error message (if applicable) only&lt;br /&gt;
|-&lt;br /&gt;
|PUT&lt;br /&gt;
|Edit - changes the details of the resource&lt;br /&gt;
|-&lt;br /&gt;
|DELETE&lt;br /&gt;
|Delete - deletes the resource&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== HTTP Headers ====&lt;br /&gt;
&lt;br /&gt;
All requests to the API must then include HTTP headers with the following information:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Header Name''&lt;br /&gt;
!''Description''&lt;br /&gt;
!''Example Header Value''&lt;br /&gt;
|-&lt;br /&gt;
| Accept&lt;br /&gt;
| The requested content type (required for Index and Show actions). Fill this with either 'text/xml' or 'application/json'. See [[#Formats|Response Formats]]&lt;br /&gt;
| ''text/xml''&lt;br /&gt;
|-&lt;br /&gt;
| User-Agent&lt;br /&gt;
| An identifier you choose for your client software&lt;br /&gt;
| ''Rackspace Management Interface''&lt;br /&gt;
|-&lt;br /&gt;
| X-Api-Signature&lt;br /&gt;
| An authentication string explained in detail [[#X-Api-Signature_Header|here]]&lt;br /&gt;
| ''eGbq9/2hcZsRlr1JV1Pi:20010317143725:HKUn0aajpSDx7qqGK3vqzn3FglI=''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Form Data ====&lt;br /&gt;
&lt;br /&gt;
When using Add and Edit operations, the details of the resource are sent to the API server via HTTP form data. Your HTTP library should include methods for sending form data along with an HTTP request. The library should by default send the data in the HTTP request body using the 'application/x-www-form-urlencoded' data format.&lt;br /&gt;
&lt;br /&gt;
==== Index Filter/Search ====&lt;br /&gt;
&lt;br /&gt;
The results of Index actions can be filtered/searched. The index URLs can take either one of the query strings: &amp;quot;?startswith=xx&amp;quot; or &amp;quot;?contains=xx,&amp;quot; where &amp;quot;xx&amp;quot; is the key word. If the request specifies more than one of these two query strings, a 400 HTTP error will be returned. Different fields will be searched depending on the resource type, see below.&lt;br /&gt;
&lt;br /&gt;
Note that &amp;quot;0-9&amp;quot; is a reserved key word for query string &amp;quot;startswith.&amp;quot; It represents any result starting with numbers.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Index Actions''&lt;br /&gt;
!''Where the key word will be searched''&lt;br /&gt;
|-&lt;br /&gt;
| Customer&lt;br /&gt;
| Customer name, account number, reference number&lt;br /&gt;
|-&lt;br /&gt;
| Domain&lt;br /&gt;
| Domain name&lt;br /&gt;
|-&lt;br /&gt;
| Mailbox&lt;br /&gt;
| Mailbox name, mailbox display name&lt;br /&gt;
|-&lt;br /&gt;
| Contact&lt;br /&gt;
| Contact display name, external email&lt;br /&gt;
|-&lt;br /&gt;
| Group&lt;br /&gt;
| Group name, group display name&lt;br /&gt;
|-&lt;br /&gt;
| Mobile Service&lt;br /&gt;
| Associated mailbox name, mailbox display name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Throttling ====&lt;br /&gt;
&lt;br /&gt;
The server limits the number of requests allowed per user in a certain period of time.  The number of requests made are logged per minute. Calls that were made correctly with a user's API key, but not completed for any reason, including those exceeding the throttle limit, are included in this count.&lt;br /&gt;
&lt;br /&gt;
If a user is over the throttling limit then a 403 HTTP code will be returned with an &amp;quot;Exceeded request limits&amp;quot; message.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Operation Category''&lt;br /&gt;
!''Request Limit''&lt;br /&gt;
|-&lt;br /&gt;
| GET&lt;br /&gt;
| 60 per minute&lt;br /&gt;
|-&lt;br /&gt;
| PUT, POST, DELETE&lt;br /&gt;
| 30 per minute&lt;br /&gt;
|-&lt;br /&gt;
| POST, PUT, DELETE on a domain&lt;br /&gt;
| 2 per minute&lt;br /&gt;
|-&lt;br /&gt;
| POST, DELETE on alternate domains&lt;br /&gt;
| 2 per minute&lt;br /&gt;
|-&lt;br /&gt;
| Enabling public folders for a domain&lt;br /&gt;
| 1 per 5 minutes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&lt;br /&gt;
Index of Exchange Mailboxes:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hypertext Transfer Protocol&lt;br /&gt;
    GET /v0/customers/12345678/domains/example.com/ex/mailboxes?size=100&amp;amp;offset=100 HTTP/1.1&lt;br /&gt;
    Host: api.emailsrvr.com&lt;br /&gt;
    User-Agent: Rackspace Management Interface&lt;br /&gt;
    X-Api-Signature: eGbq9/2hcZsRlr1JV1Pi:20010317143725:HKUn0aajpSDx7qqGK3vqzn3FglI=&lt;br /&gt;
    Accept: text/xml&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Adding New Exchange Mailbox:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hypertext Transfer Protocol&lt;br /&gt;
    POST /v0/customers/12345678/domains/example.com/ex/mailboxes/john.smith HTTP/1.1&lt;br /&gt;
    Host: api.emailsrvr.com&lt;br /&gt;
    User-Agent: Rackspace Management Interface&lt;br /&gt;
    X-Api-Signature: eGbq9/2hcZsRlr1JV1Pi:20010317143725:HKUn0aajpSDx7qqGK3vqzn3FglI=&lt;br /&gt;
    Content-Length: 53&lt;br /&gt;
        [Content length: 53]&lt;br /&gt;
    Content-Type: application/x-www-form-urlencoded&lt;br /&gt;
 &lt;br /&gt;
Line-based text data: application/x-www-form-urlencoded&lt;br /&gt;
    size=2048&amp;amp;displayName=John%20Smith&amp;amp;password=abcABC123&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Responses ===&lt;br /&gt;
&lt;br /&gt;
==== HTTP Status Code ====&lt;br /&gt;
&lt;br /&gt;
On a successfully executed request, a 200 HTTP Code is returned. If the request was unsuccessful however, an HTTP error code in the 400s or 500s will be returned.&lt;br /&gt;
&lt;br /&gt;
==== HTTP Response Body ====&lt;br /&gt;
&lt;br /&gt;
If the request is an Index or Show request, the request data will be returned in the format specified in the HTTP Body.&lt;br /&gt;
&lt;br /&gt;
===== Formats =====&lt;br /&gt;
&lt;br /&gt;
Requests for data (index and show requests) are returned with XML or JSON data based on what your application populates the [[#HTTP_Headers|HTTP Accept headers]] with.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For XML, populate the header with 'text/xml' (ex: Headers![&amp;quot;Accept&amp;quot;] = &amp;quot;text/xml&amp;quot;). The XML document returned will conform to a published XSD (XML Schema Document). There are many ways to parse the data in an XML document, but we have found that the [http://www.w3schools.com/XPath/default.asp XPath] tree-style traversal has served our purposes. In any case, your application will likely need to use a class library for your chosen method.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For JSON, populate the header with 'application/json' (ex: Headers![&amp;quot;Accept&amp;quot;] = &amp;quot;application/json&amp;quot;). As with XML, a library will likely be needed to parse the data.&lt;br /&gt;
&lt;br /&gt;
==== HTTP Headers ====&lt;br /&gt;
&lt;br /&gt;
The only data returned in the header is the error message (if any).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Header Name''&lt;br /&gt;
!''Description''&lt;br /&gt;
!''Example Header Value''&lt;br /&gt;
|-&lt;br /&gt;
| x-error-message&lt;br /&gt;
| The error message. See [[#Errors|Errors]].&lt;br /&gt;
| Missing required field: name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Errors ====&lt;br /&gt;
&lt;br /&gt;
In the event of an error, the error message will be returned the HTTP header '''x-error-message''' and an HTTP Status Code in the '''400'''s or '''500'''s will be returned.&lt;br /&gt;
&lt;br /&gt;
Note: Every language's HTTP library provides methods for retrieving HTTP response codes and response headers.&lt;br /&gt;
&lt;br /&gt;
Below are some errors that are common to many operations. Each operation also has some specific errors which are outlined with the operation. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
|Format is invalid&lt;br /&gt;
|400&lt;br /&gt;
|When requesting an index or show on a resource the 'Accept' header should be either 'text/xml' or 'application/json'&lt;br /&gt;
|-&lt;br /&gt;
|Expectation  Failed: See [[Handling HTTP code 417: Expectation failed]]&lt;br /&gt;
|417&lt;br /&gt;
|(none)&lt;br /&gt;
|-&lt;br /&gt;
|Customer account number is invalid&lt;br /&gt;
|404&lt;br /&gt;
|Invalid account number&lt;br /&gt;
|-&lt;br /&gt;
|Domain is not found&lt;br /&gt;
|404&lt;br /&gt;
|&amp;lt;domain name&amp;gt; not found&lt;br /&gt;
|-&lt;br /&gt;
|Mailbox is not found&lt;br /&gt;
|404&lt;br /&gt;
|Mailbox not found&lt;br /&gt;
|-&lt;br /&gt;
|Required form field is missing&lt;br /&gt;
|400&lt;br /&gt;
|Missing required field: &amp;lt;required field&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Required form field has null or empty string input&lt;br /&gt;
|400&lt;br /&gt;
|Required field &amp;lt;required field&amp;gt; cannot be empty&lt;br /&gt;
|-&lt;br /&gt;
|Integer form field has non-integer input&lt;br /&gt;
|400&lt;br /&gt;
|Invalid format for &amp;lt;field&amp;gt;, input must be an integer&lt;br /&gt;
|-&lt;br /&gt;
|Boolean form field has non-boolean input&lt;br /&gt;
|400&lt;br /&gt;
|Invalid format for &amp;lt;field&amp;gt;, input must be True or False&lt;br /&gt;
|-&lt;br /&gt;
|Form data has an unrecognized field&lt;br /&gt;
|400&lt;br /&gt;
|Unrecognized field: &amp;lt;field&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Entered invalid IP address&lt;br /&gt;
| 400&lt;br /&gt;
| invalid ip address: 123&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Paging ====&lt;br /&gt;
&lt;br /&gt;
The results of Index actions are split into pages to lessen potentially high resource usage. The index URLs have a query string with parameters in the format &amp;quot;?size=xx&amp;amp;offset=xx.&amp;quot; If a query parameter is omitted, the default value is used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Query Parameter''&lt;br /&gt;
!''Default''&lt;br /&gt;
!''Maximum''&lt;br /&gt;
!''Notes''&lt;br /&gt;
|-&lt;br /&gt;
| size&lt;br /&gt;
| 50&lt;br /&gt;
| 250&lt;br /&gt;
| This is the number of elements per page.&lt;br /&gt;
|-&lt;br /&gt;
| offset&lt;br /&gt;
| 0&lt;br /&gt;
| N/A&lt;br /&gt;
| This is the number of items to offset away from the first item in the list.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Example =====&lt;br /&gt;
&lt;br /&gt;
A PHP Example of paging can be found [[PHP_Examples_(Rest_API)| here]].&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 200 OK&lt;br /&gt;
Cache-Control: private&lt;br /&gt;
Content-Type: text/xml; charset=utf-8&lt;br /&gt;
Server: Microsoft-IIS/7.0&lt;br /&gt;
Date: Fri, 04 Dec 2009 19:08:11 GMT&lt;br /&gt;
Content-Length: 430&lt;br /&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;domainList xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:domainList&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;offset&amp;gt;0&amp;lt;/offset&amp;gt;&lt;br /&gt;
  &amp;lt;size&amp;gt;50&amp;lt;/size&amp;gt;&lt;br /&gt;
  &amp;lt;total&amp;gt;1&amp;lt;/total&amp;gt;&lt;br /&gt;
  &amp;lt;domains&amp;gt;&lt;br /&gt;
    &amp;lt;domain&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;customer.com&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;accountNumber&amp;gt;123456&amp;lt;/accountNumber&amp;gt;&lt;br /&gt;
      &amp;lt;serviceType&amp;gt;rsemail&amp;lt;/serviceType&amp;gt;&lt;br /&gt;
    &amp;lt;/domain&amp;gt;&lt;br /&gt;
  &amp;lt;/domains&amp;gt;&lt;br /&gt;
&amp;lt;/domainList&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 404 Not Found&lt;br /&gt;
Cache-Control: private&lt;br /&gt;
Server: Microsoft-IIS/7.0&lt;br /&gt;
x-error-message: Customer Not Found&lt;br /&gt;
Date: Fri, 04 Dec 2009 19:13:59 GMT&lt;br /&gt;
Content-Length: 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 400 Bad Request&lt;br /&gt;
Cache-Control: private&lt;br /&gt;
Server: Microsoft-IIS/7.0&lt;br /&gt;
x-error-message: Missing required field: type&lt;br /&gt;
Date: Fri, 04 Dec 2009 19:17:29 GMT&lt;br /&gt;
Content-Length: 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
This examples is written in [http://www.ruby-lang.org/en/ Ruby]. To make the examples shorter, helper methods have been written. These methods are part of a NetMethods module. The contents of the NetMethods module is listed below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require  'server.rb'&lt;br /&gt;
&lt;br /&gt;
server = Server.new&lt;br /&gt;
&lt;br /&gt;
response = server.get  '/customers', server.xml_format&lt;br /&gt;
&lt;br /&gt;
#fields = Hash['serviceType' =&amp;gt;  'exchange', 'exchangeMaxNumMailboxes' =&amp;gt; '4']&lt;br /&gt;
#response =  server.post '/customers/me/domains/newdomain.com', fields&lt;br /&gt;
&lt;br /&gt;
puts response.code&lt;br /&gt;
puts response['x-error-message']&lt;br /&gt;
puts response.body&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require 'test/unit/assertions'&lt;br /&gt;
require 'net/http'&lt;br /&gt;
require 'date'&lt;br /&gt;
require 'date/format'&lt;br /&gt;
require 'digest/sha1'&lt;br /&gt;
require 'base64'&lt;br /&gt;
require 'time'&lt;br /&gt;
&lt;br /&gt;
class Server&lt;br /&gt;
  include Test::Unit::Assertions&lt;br /&gt;
  &lt;br /&gt;
  def initialize(server='api.emailsrvr.com', version_prefix='/v0', user_key='xxxxxxxxxxxxxxxxxxxx', secret_hash='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')&lt;br /&gt;
    @server = server&lt;br /&gt;
    @version_prefix = version_prefix&lt;br /&gt;
    @user_key = user_key&lt;br /&gt;
    @secret_hash = secret_hash&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
# Response Type Enums&lt;br /&gt;
&lt;br /&gt;
  def xml_format&lt;br /&gt;
    'text/xml'&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def json_format&lt;br /&gt;
    'application/json'&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# HTTP Request Verbs&lt;br /&gt;
#  &lt;br /&gt;
  def get(url_string, format)&lt;br /&gt;
    uri = full_uri(url_string)&lt;br /&gt;
    headers = prepared_headers&lt;br /&gt;
    headers['Accept'] = format&lt;br /&gt;
    request = Net::HTTP::Get.new(request_uri(uri), headers)&lt;br /&gt;
    http_response = make_request request, uri&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def delete(url_string)&lt;br /&gt;
    uri = full_uri(url_string)&lt;br /&gt;
    request = Net::HTTP::Delete.new(request_uri(uri), prepared_headers)&lt;br /&gt;
    http_response = make_request request, uri&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def put(url_string, fields_hash)&lt;br /&gt;
    uri = full_uri(url_string)&lt;br /&gt;
    request = Net::HTTP::Put.new(request_uri(uri), prepared_headers)&lt;br /&gt;
    request.set_form_data(fields_hash)&lt;br /&gt;
    http_response = make_request request, uri&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def post(url_string, fields_hash)&lt;br /&gt;
    uri = full_uri(url_string)&lt;br /&gt;
    request = Net::HTTP::Post.new(request_uri(uri), prepared_headers)&lt;br /&gt;
    request.set_form_data(fields_hash)&lt;br /&gt;
    http_response = make_request request, uri&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
#&lt;br /&gt;
# HTTP Request Helpers&lt;br /&gt;
# &lt;br /&gt;
  def make_request request, uri&lt;br /&gt;
    response = Net::HTTP::start(uri.host, uri.port)  do |http|&lt;br /&gt;
      http.request request&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    response&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def full_uri url_string&lt;br /&gt;
    URI.parse('http://' + @server + @version_prefix + url_string)&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def request_uri uri&lt;br /&gt;
    request = uri.path&lt;br /&gt;
    if ! uri.query.nil?&lt;br /&gt;
      request = request + '?' + uri.query&lt;br /&gt;
    end&lt;br /&gt;
    request&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def prepared_headers&lt;br /&gt;
    headers = Hash.new&lt;br /&gt;
    headers.merge! headers_auth_creds(@user_key, @secret_hash)&lt;br /&gt;
    headers['Accept'] = xml_format&lt;br /&gt;
    headers&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def headers_auth_creds apiKey, secretKey&lt;br /&gt;
    userAgent = 'Ruby Test Client'&lt;br /&gt;
    timestamp = DateTime.now.strftime('%Y%m%d%H%M%S')&lt;br /&gt;
    &lt;br /&gt;
    data_to_sign = apiKey + userAgent + timestamp + secretKey&lt;br /&gt;
    &lt;br /&gt;
    hash = Base64.encode64(Digest::SHA1.digest(data_to_sign))&lt;br /&gt;
    signature = apiKey + &amp;quot;:&amp;quot; + timestamp + &amp;quot;:&amp;quot; + hash&lt;br /&gt;
    &lt;br /&gt;
    headers = Hash['User-Agent' =&amp;gt; userAgent, 'X-Api-Signature' =&amp;gt; signature]&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== C# ===&lt;br /&gt;
&lt;br /&gt;
This examples is written in [http://msdn.microsoft.com/en-us/vcsharp/default.aspx C#].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Specialized;&lt;br /&gt;
using System.Security.Cryptography;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Net;&lt;br /&gt;
&lt;br /&gt;
public class WebMethods&lt;br /&gt;
{&lt;br /&gt;
  private WebClientBase client;&lt;br /&gt;
  private string baseUrl;&lt;br /&gt;
  private string apiKey;&lt;br /&gt;
  private string secretKey;&lt;br /&gt;
&lt;br /&gt;
  public WebMethods(WebClientBase client, string baseUrl, string apiKey, string secretKey)&lt;br /&gt;
  {&lt;br /&gt;
    this.client = client;&lt;br /&gt;
    this.baseUrl = baseUrl;&lt;br /&gt;
    this.apiKey = apiKey;&lt;br /&gt;
    this.secretKey = secretKey;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  public virtual string Get(string url)&lt;br /&gt;
  {&lt;br /&gt;
    return MakeRemoteCall((client) =&amp;gt;&lt;br /&gt;
      {&lt;br /&gt;
        return client.DownloadString(baseUrl + url);&lt;br /&gt;
      },&lt;br /&gt;
      format);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  public virtual string Post(string url, NameValueCollection data)&lt;br /&gt;
  {&lt;br /&gt;
    return MakeRemoteCall((client) =&amp;gt;&lt;br /&gt;
      {&lt;br /&gt;
        var bytes = client.UploadValues(baseUrl + url, data);&lt;br /&gt;
        return Encoding.UTF8.GetString(bytes);&lt;br /&gt;
      },&lt;br /&gt;
      format);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  private void SignMessage()&lt;br /&gt;
  {&lt;br /&gt;
    var userAgent = &amp;quot;C# Client Library&amp;quot;;&lt;br /&gt;
    client.Headers[&amp;quot;User-Agent&amp;quot;] = userAgent;&lt;br /&gt;
&lt;br /&gt;
    var dateTime = DateTime.UtcNow.ToString(&amp;quot;yyyyMMddHHmmss&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    var dataToSign = apiKey + userAgent + dateTime + secretKey;&lt;br /&gt;
    var hash = SHA1.Create();&lt;br /&gt;
    var signedBytes = hash.ComputeHash(Encoding.UTF8.GetBytes(dataToSign));&lt;br /&gt;
    var signature = Convert.ToBase64String(signedBytes);&lt;br /&gt;
&lt;br /&gt;
    client.Headers[&amp;quot;X-Api-Signature&amp;quot;] = apiKey + &amp;quot;:&amp;quot; + dateTime + &amp;quot;:&amp;quot; + signature;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  private void AssignFormat(string format)&lt;br /&gt;
  {&lt;br /&gt;
    client.Headers[&amp;quot;Accept&amp;quot;] = format;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  private string MakeRemoteCall(Func&amp;lt;WebClientBase, string&amp;gt; remoteCall, string format)&lt;br /&gt;
  {&lt;br /&gt;
    try&lt;br /&gt;
    {&lt;br /&gt;
      SignMessage();&lt;br /&gt;
      AssignFormat(format);&lt;br /&gt;
      return remoteCall.Invoke(client);&lt;br /&gt;
    }&lt;br /&gt;
    catch (WebException e)&lt;br /&gt;
    {&lt;br /&gt;
      throw new ApiException(e);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PHP ===&lt;br /&gt;
&lt;br /&gt;
The PHP Example can be found [[PHP_Examples_(Rest_API)| here]].&lt;/div&gt;</summary>
		<author><name>Zhen.wei</name></author>	</entry>

	<entry>
		<id>http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Main_Page&amp;diff=420</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Main_Page&amp;diff=420"/>
				<updated>2010-09-02T00:26:09Z</updated>
		
		<summary type="html">&lt;p&gt;Zhen.wei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The The Rackspace Email Rest API provides most of the functions of the Control Panel through a REST-based [http://en.wikipedia.org/wiki/Web_service web API]. Whether it is adding a new customer account, adding mailboxes, or any other of the supported features the API allows your application to administer the changes regardless of your application's language or nature. For more information on RESTful web services refer to the following sites:&lt;br /&gt;
&lt;br /&gt;
[http://www.peej.co.uk/articles/restfully-delicious.html Paul James's Homepage: A RESTful Web service, an example]&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Representational_State_Transfer#External_links Wikipedia: Representational State Transfer - External Links]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The API is accessible to all with access to Control Panel, including resellers, business customers, enterprise customers, and indirect customers. However, not all operations are available to non-resellers. See the [[Rest_API#Operations|Operations]] section for more details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Rackspace Email Soap API Homepage has been moved to [[Soap_API| here]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Recent Changes ==&lt;br /&gt;
&lt;br /&gt;
'''09/01/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Now Rackspace Email Mailbox can be marked as visible in Exchange Global Address List. &lt;br /&gt;
* Exchange Mailbox can be marked as visible in Rackspace Email Company Directory.&lt;br /&gt;
* Rackspace Email/Exchange Mailbox last login time.&lt;br /&gt;
* Filter Rackspace Email/Exchange Mailbox by &amp;quot;Enabled&amp;quot; flag.&lt;br /&gt;
* Resellers now can create Login Token that only can be used to log into sub-account Control Panel. See [[Customer_(Rest_API)#Create_Login_Tokens| here]].&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''08/01/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Added Rackspace Email Mailbox Contact info. See [[Rackspace_Mailbox_(Rest_API)| here]].&lt;br /&gt;
* Added Create Login Token. See [[Customer_(Rest_API)#Create_Login_Tokens| here]].&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''06/20/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Added [[Rackspace_Alias(Rest_API)| Rackspace Email Alias]].&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''06/11/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Added Rackspace Email Mailbox Spam Settings/Blacklist/Safelist. See [[Rackspace_Mailbox_Spam_(Rest_API)| here]].&lt;br /&gt;
* Now Rackspace Email Mailbox can Show/Edit vacation message and email forwarding address. See [[Rackspace_Mailbox_(Rest_API)| here]].&lt;br /&gt;
* Added SharePoint Service Settings. See [[SharePoint_(Rest_API)| here]].&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''05/16/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Added shortened URLs. Any URLs that starts with '/customers/me/domains/~' is equivalent to '/domains/~'.&lt;br /&gt;
* Added Rackspace Email Mailbox Add/Edit/Delete/Index. See [[Rackspace_Mailbox_(Rest_API)| here]].&lt;br /&gt;
* Allows to customize Exchange mailbox list result. See [[Exchange_Mailbox_(Rest_API)#Index| Exchange Mailbox Index]] action 'Custom Fields' section.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
Changes:&lt;br /&gt;
* Server throttling section has been updated. See [[Rest_API#Throttling| here]].&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
Bug fix:&lt;br /&gt;
* Fixed a bug that request without User-Agent Header gets 500 error. Now it gets &amp;quot;Authentication failed&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''03/28/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Rest API can be accessed by Business Users. However, not all operations are available.&lt;br /&gt;
* Domain Public Folders can be enabled now.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
Deprecated:&lt;br /&gt;
* Good Mobile Service is no longer supported.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''03/14/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Index/Add/Edit/Delete Mailbox Permissions.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
Known Issues:&lt;br /&gt;
* Domain public folders can't be enabled using Rest API at this moment. The next release (on 03/21/2010) will fix this problem.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Operations ==&lt;br /&gt;
&lt;br /&gt;
The following pages detail the operations that the API supports. The operations are grouped into sections based on the entity/object types that each operation interacts with. Non-resellers do not have access to all functions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Resource&lt;br /&gt;
!Example URI&lt;br /&gt;
!Business User Access&lt;br /&gt;
|-&lt;br /&gt;
| [[Customer_(Rest_API)| Customer]]&lt;br /&gt;
| /customers/123456789&lt;br /&gt;
| [[Customer_(Rest_API)#Create_Login_Tokens | Create Login Tokens]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Domain_(Rest_API)| Domain]]&lt;br /&gt;
| /customers/123456789/domains/example.com&lt;br /&gt;
| [[Domain_(Rest_API)#Index| Index]], [[Domain_(Rest_API)#Show| Show]], [[Domain_(Rest_API)#Split Domain Routing| Split Domain Routing]], [[Domain_(Rest_API)#Archiving SSO Login URL| Archiving SSO Login URL]], [[Domain_(Rest_API)#Domain Public Folders|Domain Public Folders ]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Domain_Spam_(Rest_API)| Domain Spam Settings]]&lt;br /&gt;
| /customers/123456789/domains/example.com/spam/settings&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Rackspace_Mailbox_(Rest_API)|  Rackspace Email Mailbox]]&lt;br /&gt;
|  /customers/123456789/domains/example.com/rs/mailboxes/john.smith&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Rackspace_Mailbox_Spam_(Rest_API)| Rackspace Email Mailbox Spam Settings]]&lt;br /&gt;
|  /customers/123456789/domains/example.com/rs/mailboxes/john.smith/spam&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Rackspace_Alias(Rest_API)|  Rackspace Email Alias]]&lt;br /&gt;
|  /customers/123456789/domains/example.com/rs/mailboxes/john.smith/alias&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Mailbox_(Rest_API)| Exchange Mailbox]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/mailboxes/john.smith&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Mailbox_Spam_(Rest_API)| Exchange Mailbox Spam Settings]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/mailboxes/john.smith/spam&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Contact_(Rest_API)| Exchange Contact]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/contacts/john.smith&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Distribution_List_(Rest_API)| Exchange Distribution List]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/distributionlists/group.name&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Resource_Mailbox_(Rest_API)| Exchange Resource Mailbox]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/resources/conference.room&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[SharePoint_(Rest_API)| SharePoint]]&lt;br /&gt;
| /customers/123456789/sharepoint/settings&lt;br /&gt;
| [[SharePoint_(Rest_API)#Show | Show]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The examples shown in the operation pages are written in Ruby and extensively use the helper functions shown in the Ruby Examples below.&lt;br /&gt;
&lt;br /&gt;
== Quick Start ==&lt;br /&gt;
&lt;br /&gt;
'''What you need:'''&lt;br /&gt;
* A Rackspace Email and Apps Control Panel admin account&lt;br /&gt;
* A HTTP class library that supports TLS and the HTTP methods: GET, POST, PUT, DELETE.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Making your first API call, an Show Customer request:'''&lt;br /&gt;
# Obtain your API keys&lt;br /&gt;
#:* Click on My Account at the top of the [https://apps.rackspace.com/?cp Control Panel web interface]. Under the Administrators heading there will be an link for the API keys page.&lt;br /&gt;
# Set up your client's HTTP request&lt;br /&gt;
#:* Set up your client to make calls to a URL beginning with &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/v0&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
#:* Populate the Accept, User-Agent and X-Api-Signature HTTP request headers correctly. This is explained in detail [[#HTTP Headers|here]].&lt;br /&gt;
# Make a GET request to /customers/me.&lt;br /&gt;
#:* The complete URI will be &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/v0/customers/me&amp;lt;/nowiki&amp;gt;. Use your HTTP library to retrieve the HTTP response code, 'x-error-message' HTTP response header and HTTP response body so that they may be displayed to help debug and determine success.&lt;br /&gt;
'''From here:'''&lt;br /&gt;
* Learn about the operations you'll be implementing at the subpages [[#Operations|here]].&lt;br /&gt;
&lt;br /&gt;
== Accessing the API ==&lt;br /&gt;
&lt;br /&gt;
Your application will need to make HTTP requests to remote servers. Most programming languages have this function provided in its class library. In addition to the common GET and POST HTTP methods, the library used will also need to support PUT and DELETE.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&lt;br /&gt;
Calls without [http://en.wikipedia.org/wiki/Transport_Layer_Security TLS] (formerly SSL) will complete successfully but it is HIGHLY RECOMMENDED that TLS always be used. Interception of unencrypted communication will allow a third party to have complete access to all functions available via the API.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For some language libraries just using an URL with https:// will cause the library to use TLS. In some other libraries however some options specific to the library may have to be configured to utilize TLS. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All API calls should be directed to a URL in the following format:&lt;br /&gt;
&amp;lt;pre&amp;gt;https://api.emailsrvr.com/(version)/(resource)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;https://api.emailsrvr.com/v0/customers/12345678/domains/customerbusiness.com&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Versions ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Supported Versions''&lt;br /&gt;
!''URL''&lt;br /&gt;
!''Version Documentation''&lt;br /&gt;
|-&lt;br /&gt;
| v0 (current)&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/v0/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
| http://signup.apps.rackspace.com/api-wiki/index.php/Rest_API&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The API version number is a component of the URL that is used to access the API. For example, to access the root of the API, the URL is https://api.emailsrvr.com/v0/. Bug fixes and minor non-breaking changes will be made without changing the version number. When major features or breaking changes are introduced, the version number will be incremented. It is not yet determined how many versions are going to be supported at any one time.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Non-breaking Changes''&lt;br /&gt;
!''Breaking Changes''&lt;br /&gt;
|-&lt;br /&gt;
| Adding new fields or attributes to form fields sent&lt;br /&gt;
| Changing or deleting any fields in form fields sent&lt;br /&gt;
|-&lt;br /&gt;
| Adding fields in returned data&lt;br /&gt;
| Changing or removing fields in returned data&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| Changing the URI of any resource&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Authentication ===&lt;br /&gt;
&lt;br /&gt;
To gain access to the API, your request must include a properly constructed X-Api-Signature HTTP header. Details on what to put in the header are below. To construct the header, you must have the following keys that that are generated from the [https://apps.rackspace.com/?cp Control Panel Web interface]. The key generation page can be found by clicking 'My Account' at the top, then 'Generate API Keys' in the Administrators section.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Key Name&lt;br /&gt;
!Description&lt;br /&gt;
!Example&lt;br /&gt;
|-&lt;br /&gt;
| User Key&lt;br /&gt;
| A public key that corresponds to your admin id&lt;br /&gt;
| ''eGbq9/2hcZsRlr1JV1Pi''&lt;br /&gt;
|-&lt;br /&gt;
| Secret Key&lt;br /&gt;
| A shared secret key&lt;br /&gt;
| ''QHOvchm/40czXhJ1OxfxK7jDHr3t''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An unsuccessful authentication will result in a 403 HTTP code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== X-Api-Signature Header ====&lt;br /&gt;
&lt;br /&gt;
Format is as follows:&lt;br /&gt;
&amp;lt;'''User Key'''&amp;gt;:&amp;lt;'''Timestamp'''&amp;gt;:&amp;lt;'''SHA1 Hash'''&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Example: ''eGbq9/2hcZsRlr1JV1Pi:20010317143725:46VIwd66mOFGG8IkbgnLlXnfnkU=''&lt;br /&gt;
&lt;br /&gt;
Remember to include the colons between the data strings!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''User Key''':&amp;lt;br&amp;gt;&lt;br /&gt;
This is the public key issued by the Control Panel browser interface.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Timestamp''':&amp;lt;br&amp;gt;&lt;br /&gt;
The format is YYYYMMDDHHmmss. All values besides year are zero-padded to two spaces. For example, March 08th 2001 at 2:37.25pm would be ''20010308143725''.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|YYYY&lt;br /&gt;
|Four-digit year&lt;br /&gt;
|-&lt;br /&gt;
| MM&lt;br /&gt;
| Month&lt;br /&gt;
|-&lt;br /&gt;
| DD&lt;br /&gt;
| Day&lt;br /&gt;
|-&lt;br /&gt;
| HH&lt;br /&gt;
| Hour in 24h format&lt;br /&gt;
|-&lt;br /&gt;
| mm&lt;br /&gt;
| Minute&lt;br /&gt;
|-&lt;br /&gt;
| ss&lt;br /&gt;
| Second&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''SHA1 Hash''':&lt;br /&gt;
&lt;br /&gt;
A SHA1 (Secure Hash Algorithm) hash must be applied to a string with the following information:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;'''User Key'''&amp;gt;&amp;lt;'''User Agent'''&amp;gt;&amp;lt;'''Timestamp'''&amp;gt;&amp;lt;'''Secret Key'''&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that the 'User Agent' must be the exact same as what is specified in the User-Agent HTTP header. Using the above example data, the string before hashing is:&amp;lt;br&amp;gt;''eGbq9/2hcZsRlr1JV1PiRackspace Management Interface20010308143725QHOvchm/40czXhJ1OxfxK7jDHr3t''&lt;br /&gt;
&lt;br /&gt;
Resulting base-64 SHA1 Hash:&amp;lt;br&amp;gt;''46VIwd66mOFGG8IkbgnLlXnfnkU=''&lt;br /&gt;
&lt;br /&gt;
Be sure to encode the binary hash, not the hex hash, into base-64. The resulting string should be 28 characters long.&lt;br /&gt;
&lt;br /&gt;
== Using the API ==&lt;br /&gt;
&lt;br /&gt;
=== Requests ===&lt;br /&gt;
&lt;br /&gt;
HTTP requests should be sent to the server with the correct URL, HTTP method, HTTP headers and form data (if needed). The URL specifies the resource, the HTTP method specifies what operation is done on the resource, and form data is used to specify the details of the resource when the resource is added or edited.&lt;br /&gt;
&lt;br /&gt;
The URLs, corresponding HTTP methods, and necessary form data for the desired operations are detailed in the [[#Operations|operation pages]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you're getting the HTTP status code 417 see [[Handling HTTP code 417:  Expectation failed]]&lt;br /&gt;
&lt;br /&gt;
==== URL ====&lt;br /&gt;
&lt;br /&gt;
The URLs are specifies the resource or resource collection. Objects are organized in a tree collection, starting with customers at the top, then domains, then domain objects next (such as mailboxes, contacts, and distribution lists) and so on. The URLs of the resources and collections accessible are found on the operation pages.&lt;br /&gt;
&lt;br /&gt;
==== HTTP Method ====&lt;br /&gt;
&lt;br /&gt;
It is the HTTP method that specifies what operation will be done on the resource. For example, to get the details of a mailbox a HTTP GET will be done on /customers/12345678/domains/example.com/ex/mailboxes/john.smith. If the mailbox does not exist, a HTTP POST to the same URL with the necessary form data will add the mailbox. Then, a HTTP PUT to the same URL will edit mailbox. And to delete the mailbox, an HTTP DELETE would be used.&lt;br /&gt;
&lt;br /&gt;
The types of operations a certain method performs is outlined below.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''HTTP Method''&lt;br /&gt;
!''Operations''&lt;br /&gt;
!''Response''&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=2|GET&lt;br /&gt;
|Index - returns a list of the resources&lt;br /&gt;
|rowspan=2|XML or JSON formatted data&lt;br /&gt;
|-&lt;br /&gt;
|Show - returns the details of the resource&lt;br /&gt;
|-&lt;br /&gt;
|POST&lt;br /&gt;
|Add - adds a new resource&lt;br /&gt;
|rowspan=3|Response code and error message (if applicable) only&lt;br /&gt;
|-&lt;br /&gt;
|PUT&lt;br /&gt;
|Edit - changes the details of the resource&lt;br /&gt;
|-&lt;br /&gt;
|DELETE&lt;br /&gt;
|Delete - deletes the resource&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== HTTP Headers ====&lt;br /&gt;
&lt;br /&gt;
All requests to the API must then include HTTP headers with the following information:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Header Name''&lt;br /&gt;
!''Description''&lt;br /&gt;
!''Example Header Value''&lt;br /&gt;
|-&lt;br /&gt;
| Accept&lt;br /&gt;
| The requested content type (required for Index and Show actions). Fill this with either 'text/xml' or 'application/json'. See [[#Formats|Response Formats]]&lt;br /&gt;
| ''text/xml''&lt;br /&gt;
|-&lt;br /&gt;
| User-Agent&lt;br /&gt;
| An identifier you choose for your client software&lt;br /&gt;
| ''Rackspace Management Interface''&lt;br /&gt;
|-&lt;br /&gt;
| X-Api-Signature&lt;br /&gt;
| An authentication string explained in detail [[#X-Api-Signature_Header|here]]&lt;br /&gt;
| ''eGbq9/2hcZsRlr1JV1Pi:20010317143725:HKUn0aajpSDx7qqGK3vqzn3FglI=''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Form Data ====&lt;br /&gt;
&lt;br /&gt;
When using Add and Edit operations, the details of the resource are sent to the API server via HTTP form data. Your HTTP library should include methods for sending form data along with an HTTP request. The library should by default send the data in the HTTP request body using the 'application/x-www-form-urlencoded' data format.&lt;br /&gt;
&lt;br /&gt;
==== Index Filter/Search ====&lt;br /&gt;
&lt;br /&gt;
The results of Index actions can be filtered/searched. The index URLs can take either one of the query strings: &amp;quot;?startswith=xx&amp;quot; or &amp;quot;?contains=xx,&amp;quot; where &amp;quot;xx&amp;quot; is the key word. If the request specifies more than one of these two query strings, a 400 HTTP error will be returned. Different fields will be searched depending on the resource type, see below.&lt;br /&gt;
&lt;br /&gt;
Note that &amp;quot;0-9&amp;quot; is a reserved key word for query string &amp;quot;startswith.&amp;quot; It represents any result starting with numbers.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Index Actions''&lt;br /&gt;
!''Where the key word will be searched''&lt;br /&gt;
|-&lt;br /&gt;
| Customer&lt;br /&gt;
| Customer name, account number, reference number&lt;br /&gt;
|-&lt;br /&gt;
| Domain&lt;br /&gt;
| Domain name&lt;br /&gt;
|-&lt;br /&gt;
| Mailbox&lt;br /&gt;
| Mailbox name, mailbox display name&lt;br /&gt;
|-&lt;br /&gt;
| Contact&lt;br /&gt;
| Contact display name, external email&lt;br /&gt;
|-&lt;br /&gt;
| Group&lt;br /&gt;
| Group name, group display name&lt;br /&gt;
|-&lt;br /&gt;
| Mobile Service&lt;br /&gt;
| Associated mailbox name, mailbox display name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Throttling ====&lt;br /&gt;
&lt;br /&gt;
The server limits the number of requests allowed per user in a certain period of time.  The number of requests made are logged per minute. Calls that were made correctly with a user's API key, but not completed for any reason, including those exceeding the throttle limit, are included in this count.&lt;br /&gt;
&lt;br /&gt;
If a user is over the throttling limit then a 403 HTTP code will be returned with an &amp;quot;Exceeded request limits&amp;quot; message.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Operation Category''&lt;br /&gt;
!''Request Limit''&lt;br /&gt;
|-&lt;br /&gt;
| GET&lt;br /&gt;
| 60 per minute&lt;br /&gt;
|-&lt;br /&gt;
| PUT, POST, DELETE&lt;br /&gt;
| 30 per minute&lt;br /&gt;
|-&lt;br /&gt;
| POST, PUT, DELETE on a domain&lt;br /&gt;
| 2 per minute&lt;br /&gt;
|-&lt;br /&gt;
| POST, DELETE on alternate domains&lt;br /&gt;
| 2 per minute&lt;br /&gt;
|-&lt;br /&gt;
| Enabling public folders for a domain&lt;br /&gt;
| 1 per 5 minutes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&lt;br /&gt;
Index of Exchange Mailboxes:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hypertext Transfer Protocol&lt;br /&gt;
    GET /v0/customers/12345678/domains/example.com/ex/mailboxes?size=100&amp;amp;offset=100 HTTP/1.1&lt;br /&gt;
    Host: api.emailsrvr.com&lt;br /&gt;
    User-Agent: Rackspace Management Interface&lt;br /&gt;
    X-Api-Signature: eGbq9/2hcZsRlr1JV1Pi:20010317143725:HKUn0aajpSDx7qqGK3vqzn3FglI=&lt;br /&gt;
    Accept: text/xml&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Adding New Exchange Mailbox:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hypertext Transfer Protocol&lt;br /&gt;
    POST /v0/customers/12345678/domains/example.com/ex/mailboxes/john.smith HTTP/1.1&lt;br /&gt;
    Host: api.emailsrvr.com&lt;br /&gt;
    User-Agent: Rackspace Management Interface&lt;br /&gt;
    X-Api-Signature: eGbq9/2hcZsRlr1JV1Pi:20010317143725:HKUn0aajpSDx7qqGK3vqzn3FglI=&lt;br /&gt;
    Content-Length: 53&lt;br /&gt;
        [Content length: 53]&lt;br /&gt;
    Content-Type: application/x-www-form-urlencoded&lt;br /&gt;
 &lt;br /&gt;
Line-based text data: application/x-www-form-urlencoded&lt;br /&gt;
    size=2048&amp;amp;displayName=John%20Smith&amp;amp;password=abcABC123&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Responses ===&lt;br /&gt;
&lt;br /&gt;
==== HTTP Status Code ====&lt;br /&gt;
&lt;br /&gt;
On a successfully executed request, a 200 HTTP Code is returned. If the request was unsuccessful however, an HTTP error code in the 400s or 500s will be returned.&lt;br /&gt;
&lt;br /&gt;
==== HTTP Response Body ====&lt;br /&gt;
&lt;br /&gt;
If the request is an Index or Show request, the request data will be returned in the format specified in the HTTP Body.&lt;br /&gt;
&lt;br /&gt;
===== Formats =====&lt;br /&gt;
&lt;br /&gt;
Requests for data (index and show requests) are returned with XML or JSON data based on what your application populates the [[#HTTP_Headers|HTTP Accept headers]] with.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For XML, populate the header with 'text/xml' (ex: Headers![&amp;quot;Accept&amp;quot;] = &amp;quot;text/xml&amp;quot;). The XML document returned will conform to a published XSD (XML Schema Document). There are many ways to parse the data in an XML document, but we have found that the [http://www.w3schools.com/XPath/default.asp XPath] tree-style traversal has served our purposes. In any case, your application will likely need to use a class library for your chosen method.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For JSON, populate the header with 'application/json' (ex: Headers![&amp;quot;Accept&amp;quot;] = &amp;quot;application/json&amp;quot;). As with XML, a library will likely be needed to parse the data.&lt;br /&gt;
&lt;br /&gt;
==== HTTP Headers ====&lt;br /&gt;
&lt;br /&gt;
The only data returned in the header is the error message (if any).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Header Name''&lt;br /&gt;
!''Description''&lt;br /&gt;
!''Example Header Value''&lt;br /&gt;
|-&lt;br /&gt;
| x-error-message&lt;br /&gt;
| The error message. See [[#Errors|Errors]].&lt;br /&gt;
| Missing required field: name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Errors ====&lt;br /&gt;
&lt;br /&gt;
In the event of an error, the error message will be returned the HTTP header '''x-error-message''' and an HTTP Status Code in the '''400'''s or '''500'''s will be returned.&lt;br /&gt;
&lt;br /&gt;
Note: Every language's HTTP library provides methods for retrieving HTTP response codes and response headers.&lt;br /&gt;
&lt;br /&gt;
Below are some errors that are common to many operations. Each operation also has some specific errors which are outlined with the operation. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
|Format is invalid&lt;br /&gt;
|400&lt;br /&gt;
|When requesting an index or show on a resource the 'Accept' header should be either 'text/xml' or 'application/json'&lt;br /&gt;
|-&lt;br /&gt;
|Expectation  Failed: See [[Handling HTTP code 417: Expectation failed]]&lt;br /&gt;
|417&lt;br /&gt;
|(none)&lt;br /&gt;
|-&lt;br /&gt;
|Customer account number is invalid&lt;br /&gt;
|404&lt;br /&gt;
|Invalid account number&lt;br /&gt;
|-&lt;br /&gt;
|Domain is not found&lt;br /&gt;
|404&lt;br /&gt;
|&amp;lt;domain name&amp;gt; not found&lt;br /&gt;
|-&lt;br /&gt;
|Mailbox is not found&lt;br /&gt;
|404&lt;br /&gt;
|Mailbox not found&lt;br /&gt;
|-&lt;br /&gt;
|Required form field is missing&lt;br /&gt;
|400&lt;br /&gt;
|Missing required field: &amp;lt;required field&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Required form field has null or empty string input&lt;br /&gt;
|400&lt;br /&gt;
|Required field &amp;lt;required field&amp;gt; cannot be empty&lt;br /&gt;
|-&lt;br /&gt;
|Integer form field has non-integer input&lt;br /&gt;
|400&lt;br /&gt;
|Invalid format for &amp;lt;field&amp;gt;, input must be an integer&lt;br /&gt;
|-&lt;br /&gt;
|Boolean form field has non-boolean input&lt;br /&gt;
|400&lt;br /&gt;
|Invalid format for &amp;lt;field&amp;gt;, input must be True or False&lt;br /&gt;
|-&lt;br /&gt;
|Form data has an unrecognized field&lt;br /&gt;
|400&lt;br /&gt;
|Unrecognized field: &amp;lt;field&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Entered invalid IP address&lt;br /&gt;
| 400&lt;br /&gt;
| invalid ip address: 123&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Paging ====&lt;br /&gt;
&lt;br /&gt;
The results of Index actions are split into pages to lessen potentially high resource usage. The index URLs have a query string with parameters in the format &amp;quot;?size=xx&amp;amp;offset=xx.&amp;quot; If a query parameter is omitted, the default value is used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Query Parameter''&lt;br /&gt;
!''Default''&lt;br /&gt;
!''Maximum''&lt;br /&gt;
!''Notes''&lt;br /&gt;
|-&lt;br /&gt;
| size&lt;br /&gt;
| 50&lt;br /&gt;
| 250&lt;br /&gt;
| This is the number of elements per page.&lt;br /&gt;
|-&lt;br /&gt;
| offset&lt;br /&gt;
| 0&lt;br /&gt;
| N/A&lt;br /&gt;
| This is the number of items to offset away from the first item in the list.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Example =====&lt;br /&gt;
&lt;br /&gt;
A PHP Example of paging can be found [[PHP_Examples_(Rest_API)| here]].&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 200 OK&lt;br /&gt;
Cache-Control: private&lt;br /&gt;
Content-Type: text/xml; charset=utf-8&lt;br /&gt;
Server: Microsoft-IIS/7.0&lt;br /&gt;
Date: Fri, 04 Dec 2009 19:08:11 GMT&lt;br /&gt;
Content-Length: 430&lt;br /&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;domainList xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:domainList&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;offset&amp;gt;0&amp;lt;/offset&amp;gt;&lt;br /&gt;
  &amp;lt;size&amp;gt;50&amp;lt;/size&amp;gt;&lt;br /&gt;
  &amp;lt;total&amp;gt;1&amp;lt;/total&amp;gt;&lt;br /&gt;
  &amp;lt;domains&amp;gt;&lt;br /&gt;
    &amp;lt;domain&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;customer.com&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;accountNumber&amp;gt;123456&amp;lt;/accountNumber&amp;gt;&lt;br /&gt;
      &amp;lt;serviceType&amp;gt;rsemail&amp;lt;/serviceType&amp;gt;&lt;br /&gt;
    &amp;lt;/domain&amp;gt;&lt;br /&gt;
  &amp;lt;/domains&amp;gt;&lt;br /&gt;
&amp;lt;/domainList&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 404 Not Found&lt;br /&gt;
Cache-Control: private&lt;br /&gt;
Server: Microsoft-IIS/7.0&lt;br /&gt;
x-error-message: Customer Not Found&lt;br /&gt;
Date: Fri, 04 Dec 2009 19:13:59 GMT&lt;br /&gt;
Content-Length: 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 400 Bad Request&lt;br /&gt;
Cache-Control: private&lt;br /&gt;
Server: Microsoft-IIS/7.0&lt;br /&gt;
x-error-message: Missing required field: type&lt;br /&gt;
Date: Fri, 04 Dec 2009 19:17:29 GMT&lt;br /&gt;
Content-Length: 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
This examples is written in [http://www.ruby-lang.org/en/ Ruby]. To make the examples shorter, helper methods have been written. These methods are part of a NetMethods module. The contents of the NetMethods module is listed below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require  'server.rb'&lt;br /&gt;
&lt;br /&gt;
server = Server.new&lt;br /&gt;
&lt;br /&gt;
response = server.get  '/customers', server.xml_format&lt;br /&gt;
&lt;br /&gt;
#fields = Hash['serviceType' =&amp;gt;  'exchange', 'exchangeMaxNumMailboxes' =&amp;gt; '4']&lt;br /&gt;
#response =  server.post '/customers/me/domains/newdomain.com', fields&lt;br /&gt;
&lt;br /&gt;
puts response.code&lt;br /&gt;
puts response['x-error-message']&lt;br /&gt;
puts response.body&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require 'test/unit/assertions'&lt;br /&gt;
require 'net/http'&lt;br /&gt;
require 'date'&lt;br /&gt;
require 'date/format'&lt;br /&gt;
require 'digest/sha1'&lt;br /&gt;
require 'base64'&lt;br /&gt;
require 'time'&lt;br /&gt;
&lt;br /&gt;
class Server&lt;br /&gt;
  include Test::Unit::Assertions&lt;br /&gt;
  &lt;br /&gt;
  def initialize(server='api.emailsrvr.com', version_prefix='/v0', user_key='xxxxxxxxxxxxxxxxxxxx', secret_hash='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')&lt;br /&gt;
    @server = server&lt;br /&gt;
    @version_prefix = version_prefix&lt;br /&gt;
    @user_key = user_key&lt;br /&gt;
    @secret_hash = secret_hash&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
# Response Type Enums&lt;br /&gt;
&lt;br /&gt;
  def xml_format&lt;br /&gt;
    'text/xml'&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def json_format&lt;br /&gt;
    'application/json'&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# HTTP Request Verbs&lt;br /&gt;
#  &lt;br /&gt;
  def get(url_string, format)&lt;br /&gt;
    uri = full_uri(url_string)&lt;br /&gt;
    headers = prepared_headers&lt;br /&gt;
    headers['Accept'] = format&lt;br /&gt;
    request = Net::HTTP::Get.new(request_uri(uri), headers)&lt;br /&gt;
    http_response = make_request request, uri&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def delete(url_string)&lt;br /&gt;
    uri = full_uri(url_string)&lt;br /&gt;
    request = Net::HTTP::Delete.new(request_uri(uri), prepared_headers)&lt;br /&gt;
    http_response = make_request request, uri&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def put(url_string, fields_hash)&lt;br /&gt;
    uri = full_uri(url_string)&lt;br /&gt;
    request = Net::HTTP::Put.new(request_uri(uri), prepared_headers)&lt;br /&gt;
    request.set_form_data(fields_hash)&lt;br /&gt;
    http_response = make_request request, uri&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def post(url_string, fields_hash)&lt;br /&gt;
    uri = full_uri(url_string)&lt;br /&gt;
    request = Net::HTTP::Post.new(request_uri(uri), prepared_headers)&lt;br /&gt;
    request.set_form_data(fields_hash)&lt;br /&gt;
    http_response = make_request request, uri&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
#&lt;br /&gt;
# HTTP Request Helpers&lt;br /&gt;
# &lt;br /&gt;
  def make_request request, uri&lt;br /&gt;
    response = Net::HTTP::start(uri.host, uri.port)  do |http|&lt;br /&gt;
      http.request request&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    response&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def full_uri url_string&lt;br /&gt;
    URI.parse('http://' + @server + @version_prefix + url_string)&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def request_uri uri&lt;br /&gt;
    request = uri.path&lt;br /&gt;
    if ! uri.query.nil?&lt;br /&gt;
      request = request + '?' + uri.query&lt;br /&gt;
    end&lt;br /&gt;
    request&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def prepared_headers&lt;br /&gt;
    headers = Hash.new&lt;br /&gt;
    headers.merge! headers_auth_creds(@user_key, @secret_hash)&lt;br /&gt;
    headers['Accept'] = xml_format&lt;br /&gt;
    headers&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def headers_auth_creds apiKey, secretKey&lt;br /&gt;
    userAgent = 'Ruby Test Client'&lt;br /&gt;
    timestamp = DateTime.now.strftime('%Y%m%d%H%M%S')&lt;br /&gt;
    &lt;br /&gt;
    data_to_sign = apiKey + userAgent + timestamp + secretKey&lt;br /&gt;
    &lt;br /&gt;
    hash = Base64.encode64(Digest::SHA1.digest(data_to_sign))&lt;br /&gt;
    signature = apiKey + &amp;quot;:&amp;quot; + timestamp + &amp;quot;:&amp;quot; + hash&lt;br /&gt;
    &lt;br /&gt;
    headers = Hash['User-Agent' =&amp;gt; userAgent, 'X-Api-Signature' =&amp;gt; signature]&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== C# ===&lt;br /&gt;
&lt;br /&gt;
This examples is written in [http://msdn.microsoft.com/en-us/vcsharp/default.aspx C#].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Specialized;&lt;br /&gt;
using System.Security.Cryptography;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Net;&lt;br /&gt;
&lt;br /&gt;
public class WebMethods&lt;br /&gt;
{&lt;br /&gt;
  private WebClientBase client;&lt;br /&gt;
  private string baseUrl;&lt;br /&gt;
  private string apiKey;&lt;br /&gt;
  private string secretKey;&lt;br /&gt;
&lt;br /&gt;
  public WebMethods(WebClientBase client, string baseUrl, string apiKey, string secretKey)&lt;br /&gt;
  {&lt;br /&gt;
    this.client = client;&lt;br /&gt;
    this.baseUrl = baseUrl;&lt;br /&gt;
    this.apiKey = apiKey;&lt;br /&gt;
    this.secretKey = secretKey;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  public virtual string Get(string url)&lt;br /&gt;
  {&lt;br /&gt;
    return MakeRemoteCall((client) =&amp;gt;&lt;br /&gt;
      {&lt;br /&gt;
        return client.DownloadString(baseUrl + url);&lt;br /&gt;
      },&lt;br /&gt;
      format);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  public virtual string Post(string url, NameValueCollection data)&lt;br /&gt;
  {&lt;br /&gt;
    return MakeRemoteCall((client) =&amp;gt;&lt;br /&gt;
      {&lt;br /&gt;
        var bytes = client.UploadValues(baseUrl + url, data);&lt;br /&gt;
        return Encoding.UTF8.GetString(bytes);&lt;br /&gt;
      },&lt;br /&gt;
      format);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  private void SignMessage()&lt;br /&gt;
  {&lt;br /&gt;
    var userAgent = &amp;quot;C# Client Library&amp;quot;;&lt;br /&gt;
    client.Headers[&amp;quot;User-Agent&amp;quot;] = userAgent;&lt;br /&gt;
&lt;br /&gt;
    var dateTime = DateTime.UtcNow.ToString(&amp;quot;yyyyMMddHHmmss&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    var dataToSign = apiKey + userAgent + dateTime + secretKey;&lt;br /&gt;
    var hash = SHA1.Create();&lt;br /&gt;
    var signedBytes = hash.ComputeHash(Encoding.UTF8.GetBytes(dataToSign));&lt;br /&gt;
    var signature = Convert.ToBase64String(signedBytes);&lt;br /&gt;
&lt;br /&gt;
    client.Headers[&amp;quot;X-Api-Signature&amp;quot;] = apiKey + &amp;quot;:&amp;quot; + dateTime + &amp;quot;:&amp;quot; + signature;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  private void AssignFormat(string format)&lt;br /&gt;
  {&lt;br /&gt;
    client.Headers[&amp;quot;Accept&amp;quot;] = format;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  private string MakeRemoteCall(Func&amp;lt;WebClientBase, string&amp;gt; remoteCall, string format)&lt;br /&gt;
  {&lt;br /&gt;
    try&lt;br /&gt;
    {&lt;br /&gt;
      SignMessage();&lt;br /&gt;
      AssignFormat(format);&lt;br /&gt;
      return remoteCall.Invoke(client);&lt;br /&gt;
    }&lt;br /&gt;
    catch (WebException e)&lt;br /&gt;
    {&lt;br /&gt;
      throw new ApiException(e);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PHP ===&lt;br /&gt;
&lt;br /&gt;
The PHP Example can be found [[PHP_Examples_(Rest_API)| here]].&lt;/div&gt;</summary>
		<author><name>Zhen.wei</name></author>	</entry>

	<entry>
		<id>http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Main_Page&amp;diff=419</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Main_Page&amp;diff=419"/>
				<updated>2010-09-02T00:25:21Z</updated>
		
		<summary type="html">&lt;p&gt;Zhen.wei: 09/01/2010 update&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The The Rackspace Email Rest API provides most of the functions of the Control Panel through a REST-based [http://en.wikipedia.org/wiki/Web_service web API]. Whether it is adding a new customer account, adding mailboxes, or any other of the supported features the API allows your application to administer the changes regardless of your application's language or nature. For more information on RESTful web services refer to the following sites:&lt;br /&gt;
&lt;br /&gt;
[http://www.peej.co.uk/articles/restfully-delicious.html Paul James's Homepage: A RESTful Web service, an example]&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Representational_State_Transfer#External_links Wikipedia: Representational State Transfer - External Links]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The API is accessible to all with access to Control Panel, including resellers, business customers, enterprise customers, and indirect customers. However, not all operations are available to non-resellers. See the [[Rest_API#Operations|Operations]] section for more details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Rackspace Email Soap API Homepage has been moved to [[Soap_API| here]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Recent Changes ==&lt;br /&gt;
&lt;br /&gt;
'''09/01/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Now Rackspace Email Mailbox can be marked as visible in Exchange Global Address List. &lt;br /&gt;
* Exchange Mailbox can be marked as visible in Rackspace Email Company Directory.&lt;br /&gt;
* Rackspace Email/Exchange Mailbox last login time.&lt;br /&gt;
* Filter Rackspace Email/Exchange Mailbox by &amp;quot;Enabled&amp;quot; flag.&lt;br /&gt;
* Resellers now can create Login Token that only can be used by their sub-account. See [[Customer_(Rest_API)#Create_Login_Tokens| here]].&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''08/01/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Added Rackspace Email Mailbox Contact info. See [[Rackspace_Mailbox_(Rest_API)| here]].&lt;br /&gt;
* Added Create Login Token. See [[Customer_(Rest_API)#Create_Login_Tokens| here]].&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''06/20/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Added [[Rackspace_Alias(Rest_API)| Rackspace Email Alias]].&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''06/11/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Added Rackspace Email Mailbox Spam Settings/Blacklist/Safelist. See [[Rackspace_Mailbox_Spam_(Rest_API)| here]].&lt;br /&gt;
* Now Rackspace Email Mailbox can Show/Edit vacation message and email forwarding address. See [[Rackspace_Mailbox_(Rest_API)| here]].&lt;br /&gt;
* Added SharePoint Service Settings. See [[SharePoint_(Rest_API)| here]].&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''05/16/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Added shortened URLs. Any URLs that starts with '/customers/me/domains/~' is equivalent to '/domains/~'.&lt;br /&gt;
* Added Rackspace Email Mailbox Add/Edit/Delete/Index. See [[Rackspace_Mailbox_(Rest_API)| here]].&lt;br /&gt;
* Allows to customize Exchange mailbox list result. See [[Exchange_Mailbox_(Rest_API)#Index| Exchange Mailbox Index]] action 'Custom Fields' section.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
Changes:&lt;br /&gt;
* Server throttling section has been updated. See [[Rest_API#Throttling| here]].&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
Bug fix:&lt;br /&gt;
* Fixed a bug that request without User-Agent Header gets 500 error. Now it gets &amp;quot;Authentication failed&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''03/28/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Rest API can be accessed by Business Users. However, not all operations are available.&lt;br /&gt;
* Domain Public Folders can be enabled now.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
Deprecated:&lt;br /&gt;
* Good Mobile Service is no longer supported.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''03/14/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Index/Add/Edit/Delete Mailbox Permissions.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
Known Issues:&lt;br /&gt;
* Domain public folders can't be enabled using Rest API at this moment. The next release (on 03/21/2010) will fix this problem.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Operations ==&lt;br /&gt;
&lt;br /&gt;
The following pages detail the operations that the API supports. The operations are grouped into sections based on the entity/object types that each operation interacts with. Non-resellers do not have access to all functions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Resource&lt;br /&gt;
!Example URI&lt;br /&gt;
!Business User Access&lt;br /&gt;
|-&lt;br /&gt;
| [[Customer_(Rest_API)| Customer]]&lt;br /&gt;
| /customers/123456789&lt;br /&gt;
| [[Customer_(Rest_API)#Create_Login_Tokens | Create Login Tokens]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Domain_(Rest_API)| Domain]]&lt;br /&gt;
| /customers/123456789/domains/example.com&lt;br /&gt;
| [[Domain_(Rest_API)#Index| Index]], [[Domain_(Rest_API)#Show| Show]], [[Domain_(Rest_API)#Split Domain Routing| Split Domain Routing]], [[Domain_(Rest_API)#Archiving SSO Login URL| Archiving SSO Login URL]], [[Domain_(Rest_API)#Domain Public Folders|Domain Public Folders ]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Domain_Spam_(Rest_API)| Domain Spam Settings]]&lt;br /&gt;
| /customers/123456789/domains/example.com/spam/settings&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Rackspace_Mailbox_(Rest_API)|  Rackspace Email Mailbox]]&lt;br /&gt;
|  /customers/123456789/domains/example.com/rs/mailboxes/john.smith&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Rackspace_Mailbox_Spam_(Rest_API)| Rackspace Email Mailbox Spam Settings]]&lt;br /&gt;
|  /customers/123456789/domains/example.com/rs/mailboxes/john.smith/spam&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Rackspace_Alias(Rest_API)|  Rackspace Email Alias]]&lt;br /&gt;
|  /customers/123456789/domains/example.com/rs/mailboxes/john.smith/alias&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Mailbox_(Rest_API)| Exchange Mailbox]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/mailboxes/john.smith&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Mailbox_Spam_(Rest_API)| Exchange Mailbox Spam Settings]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/mailboxes/john.smith/spam&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Contact_(Rest_API)| Exchange Contact]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/contacts/john.smith&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Distribution_List_(Rest_API)| Exchange Distribution List]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/distributionlists/group.name&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Resource_Mailbox_(Rest_API)| Exchange Resource Mailbox]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/resources/conference.room&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[SharePoint_(Rest_API)| SharePoint]]&lt;br /&gt;
| /customers/123456789/sharepoint/settings&lt;br /&gt;
| [[SharePoint_(Rest_API)#Show | Show]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The examples shown in the operation pages are written in Ruby and extensively use the helper functions shown in the Ruby Examples below.&lt;br /&gt;
&lt;br /&gt;
== Quick Start ==&lt;br /&gt;
&lt;br /&gt;
'''What you need:'''&lt;br /&gt;
* A Rackspace Email and Apps Control Panel admin account&lt;br /&gt;
* A HTTP class library that supports TLS and the HTTP methods: GET, POST, PUT, DELETE.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Making your first API call, an Show Customer request:'''&lt;br /&gt;
# Obtain your API keys&lt;br /&gt;
#:* Click on My Account at the top of the [https://apps.rackspace.com/?cp Control Panel web interface]. Under the Administrators heading there will be an link for the API keys page.&lt;br /&gt;
# Set up your client's HTTP request&lt;br /&gt;
#:* Set up your client to make calls to a URL beginning with &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/v0&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
#:* Populate the Accept, User-Agent and X-Api-Signature HTTP request headers correctly. This is explained in detail [[#HTTP Headers|here]].&lt;br /&gt;
# Make a GET request to /customers/me.&lt;br /&gt;
#:* The complete URI will be &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/v0/customers/me&amp;lt;/nowiki&amp;gt;. Use your HTTP library to retrieve the HTTP response code, 'x-error-message' HTTP response header and HTTP response body so that they may be displayed to help debug and determine success.&lt;br /&gt;
'''From here:'''&lt;br /&gt;
* Learn about the operations you'll be implementing at the subpages [[#Operations|here]].&lt;br /&gt;
&lt;br /&gt;
== Accessing the API ==&lt;br /&gt;
&lt;br /&gt;
Your application will need to make HTTP requests to remote servers. Most programming languages have this function provided in its class library. In addition to the common GET and POST HTTP methods, the library used will also need to support PUT and DELETE.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&lt;br /&gt;
Calls without [http://en.wikipedia.org/wiki/Transport_Layer_Security TLS] (formerly SSL) will complete successfully but it is HIGHLY RECOMMENDED that TLS always be used. Interception of unencrypted communication will allow a third party to have complete access to all functions available via the API.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For some language libraries just using an URL with https:// will cause the library to use TLS. In some other libraries however some options specific to the library may have to be configured to utilize TLS. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All API calls should be directed to a URL in the following format:&lt;br /&gt;
&amp;lt;pre&amp;gt;https://api.emailsrvr.com/(version)/(resource)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;https://api.emailsrvr.com/v0/customers/12345678/domains/customerbusiness.com&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Versions ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Supported Versions''&lt;br /&gt;
!''URL''&lt;br /&gt;
!''Version Documentation''&lt;br /&gt;
|-&lt;br /&gt;
| v0 (current)&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/v0/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
| http://signup.apps.rackspace.com/api-wiki/index.php/Rest_API&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The API version number is a component of the URL that is used to access the API. For example, to access the root of the API, the URL is https://api.emailsrvr.com/v0/. Bug fixes and minor non-breaking changes will be made without changing the version number. When major features or breaking changes are introduced, the version number will be incremented. It is not yet determined how many versions are going to be supported at any one time.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Non-breaking Changes''&lt;br /&gt;
!''Breaking Changes''&lt;br /&gt;
|-&lt;br /&gt;
| Adding new fields or attributes to form fields sent&lt;br /&gt;
| Changing or deleting any fields in form fields sent&lt;br /&gt;
|-&lt;br /&gt;
| Adding fields in returned data&lt;br /&gt;
| Changing or removing fields in returned data&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| Changing the URI of any resource&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Authentication ===&lt;br /&gt;
&lt;br /&gt;
To gain access to the API, your request must include a properly constructed X-Api-Signature HTTP header. Details on what to put in the header are below. To construct the header, you must have the following keys that that are generated from the [https://apps.rackspace.com/?cp Control Panel Web interface]. The key generation page can be found by clicking 'My Account' at the top, then 'Generate API Keys' in the Administrators section.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Key Name&lt;br /&gt;
!Description&lt;br /&gt;
!Example&lt;br /&gt;
|-&lt;br /&gt;
| User Key&lt;br /&gt;
| A public key that corresponds to your admin id&lt;br /&gt;
| ''eGbq9/2hcZsRlr1JV1Pi''&lt;br /&gt;
|-&lt;br /&gt;
| Secret Key&lt;br /&gt;
| A shared secret key&lt;br /&gt;
| ''QHOvchm/40czXhJ1OxfxK7jDHr3t''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An unsuccessful authentication will result in a 403 HTTP code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== X-Api-Signature Header ====&lt;br /&gt;
&lt;br /&gt;
Format is as follows:&lt;br /&gt;
&amp;lt;'''User Key'''&amp;gt;:&amp;lt;'''Timestamp'''&amp;gt;:&amp;lt;'''SHA1 Hash'''&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Example: ''eGbq9/2hcZsRlr1JV1Pi:20010317143725:46VIwd66mOFGG8IkbgnLlXnfnkU=''&lt;br /&gt;
&lt;br /&gt;
Remember to include the colons between the data strings!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''User Key''':&amp;lt;br&amp;gt;&lt;br /&gt;
This is the public key issued by the Control Panel browser interface.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Timestamp''':&amp;lt;br&amp;gt;&lt;br /&gt;
The format is YYYYMMDDHHmmss. All values besides year are zero-padded to two spaces. For example, March 08th 2001 at 2:37.25pm would be ''20010308143725''.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|YYYY&lt;br /&gt;
|Four-digit year&lt;br /&gt;
|-&lt;br /&gt;
| MM&lt;br /&gt;
| Month&lt;br /&gt;
|-&lt;br /&gt;
| DD&lt;br /&gt;
| Day&lt;br /&gt;
|-&lt;br /&gt;
| HH&lt;br /&gt;
| Hour in 24h format&lt;br /&gt;
|-&lt;br /&gt;
| mm&lt;br /&gt;
| Minute&lt;br /&gt;
|-&lt;br /&gt;
| ss&lt;br /&gt;
| Second&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''SHA1 Hash''':&lt;br /&gt;
&lt;br /&gt;
A SHA1 (Secure Hash Algorithm) hash must be applied to a string with the following information:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;'''User Key'''&amp;gt;&amp;lt;'''User Agent'''&amp;gt;&amp;lt;'''Timestamp'''&amp;gt;&amp;lt;'''Secret Key'''&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that the 'User Agent' must be the exact same as what is specified in the User-Agent HTTP header. Using the above example data, the string before hashing is:&amp;lt;br&amp;gt;''eGbq9/2hcZsRlr1JV1PiRackspace Management Interface20010308143725QHOvchm/40czXhJ1OxfxK7jDHr3t''&lt;br /&gt;
&lt;br /&gt;
Resulting base-64 SHA1 Hash:&amp;lt;br&amp;gt;''46VIwd66mOFGG8IkbgnLlXnfnkU=''&lt;br /&gt;
&lt;br /&gt;
Be sure to encode the binary hash, not the hex hash, into base-64. The resulting string should be 28 characters long.&lt;br /&gt;
&lt;br /&gt;
== Using the API ==&lt;br /&gt;
&lt;br /&gt;
=== Requests ===&lt;br /&gt;
&lt;br /&gt;
HTTP requests should be sent to the server with the correct URL, HTTP method, HTTP headers and form data (if needed). The URL specifies the resource, the HTTP method specifies what operation is done on the resource, and form data is used to specify the details of the resource when the resource is added or edited.&lt;br /&gt;
&lt;br /&gt;
The URLs, corresponding HTTP methods, and necessary form data for the desired operations are detailed in the [[#Operations|operation pages]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you're getting the HTTP status code 417 see [[Handling HTTP code 417:  Expectation failed]]&lt;br /&gt;
&lt;br /&gt;
==== URL ====&lt;br /&gt;
&lt;br /&gt;
The URLs are specifies the resource or resource collection. Objects are organized in a tree collection, starting with customers at the top, then domains, then domain objects next (such as mailboxes, contacts, and distribution lists) and so on. The URLs of the resources and collections accessible are found on the operation pages.&lt;br /&gt;
&lt;br /&gt;
==== HTTP Method ====&lt;br /&gt;
&lt;br /&gt;
It is the HTTP method that specifies what operation will be done on the resource. For example, to get the details of a mailbox a HTTP GET will be done on /customers/12345678/domains/example.com/ex/mailboxes/john.smith. If the mailbox does not exist, a HTTP POST to the same URL with the necessary form data will add the mailbox. Then, a HTTP PUT to the same URL will edit mailbox. And to delete the mailbox, an HTTP DELETE would be used.&lt;br /&gt;
&lt;br /&gt;
The types of operations a certain method performs is outlined below.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''HTTP Method''&lt;br /&gt;
!''Operations''&lt;br /&gt;
!''Response''&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=2|GET&lt;br /&gt;
|Index - returns a list of the resources&lt;br /&gt;
|rowspan=2|XML or JSON formatted data&lt;br /&gt;
|-&lt;br /&gt;
|Show - returns the details of the resource&lt;br /&gt;
|-&lt;br /&gt;
|POST&lt;br /&gt;
|Add - adds a new resource&lt;br /&gt;
|rowspan=3|Response code and error message (if applicable) only&lt;br /&gt;
|-&lt;br /&gt;
|PUT&lt;br /&gt;
|Edit - changes the details of the resource&lt;br /&gt;
|-&lt;br /&gt;
|DELETE&lt;br /&gt;
|Delete - deletes the resource&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== HTTP Headers ====&lt;br /&gt;
&lt;br /&gt;
All requests to the API must then include HTTP headers with the following information:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Header Name''&lt;br /&gt;
!''Description''&lt;br /&gt;
!''Example Header Value''&lt;br /&gt;
|-&lt;br /&gt;
| Accept&lt;br /&gt;
| The requested content type (required for Index and Show actions). Fill this with either 'text/xml' or 'application/json'. See [[#Formats|Response Formats]]&lt;br /&gt;
| ''text/xml''&lt;br /&gt;
|-&lt;br /&gt;
| User-Agent&lt;br /&gt;
| An identifier you choose for your client software&lt;br /&gt;
| ''Rackspace Management Interface''&lt;br /&gt;
|-&lt;br /&gt;
| X-Api-Signature&lt;br /&gt;
| An authentication string explained in detail [[#X-Api-Signature_Header|here]]&lt;br /&gt;
| ''eGbq9/2hcZsRlr1JV1Pi:20010317143725:HKUn0aajpSDx7qqGK3vqzn3FglI=''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Form Data ====&lt;br /&gt;
&lt;br /&gt;
When using Add and Edit operations, the details of the resource are sent to the API server via HTTP form data. Your HTTP library should include methods for sending form data along with an HTTP request. The library should by default send the data in the HTTP request body using the 'application/x-www-form-urlencoded' data format.&lt;br /&gt;
&lt;br /&gt;
==== Index Filter/Search ====&lt;br /&gt;
&lt;br /&gt;
The results of Index actions can be filtered/searched. The index URLs can take either one of the query strings: &amp;quot;?startswith=xx&amp;quot; or &amp;quot;?contains=xx,&amp;quot; where &amp;quot;xx&amp;quot; is the key word. If the request specifies more than one of these two query strings, a 400 HTTP error will be returned. Different fields will be searched depending on the resource type, see below.&lt;br /&gt;
&lt;br /&gt;
Note that &amp;quot;0-9&amp;quot; is a reserved key word for query string &amp;quot;startswith.&amp;quot; It represents any result starting with numbers.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Index Actions''&lt;br /&gt;
!''Where the key word will be searched''&lt;br /&gt;
|-&lt;br /&gt;
| Customer&lt;br /&gt;
| Customer name, account number, reference number&lt;br /&gt;
|-&lt;br /&gt;
| Domain&lt;br /&gt;
| Domain name&lt;br /&gt;
|-&lt;br /&gt;
| Mailbox&lt;br /&gt;
| Mailbox name, mailbox display name&lt;br /&gt;
|-&lt;br /&gt;
| Contact&lt;br /&gt;
| Contact display name, external email&lt;br /&gt;
|-&lt;br /&gt;
| Group&lt;br /&gt;
| Group name, group display name&lt;br /&gt;
|-&lt;br /&gt;
| Mobile Service&lt;br /&gt;
| Associated mailbox name, mailbox display name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Throttling ====&lt;br /&gt;
&lt;br /&gt;
The server limits the number of requests allowed per user in a certain period of time.  The number of requests made are logged per minute. Calls that were made correctly with a user's API key, but not completed for any reason, including those exceeding the throttle limit, are included in this count.&lt;br /&gt;
&lt;br /&gt;
If a user is over the throttling limit then a 403 HTTP code will be returned with an &amp;quot;Exceeded request limits&amp;quot; message.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Operation Category''&lt;br /&gt;
!''Request Limit''&lt;br /&gt;
|-&lt;br /&gt;
| GET&lt;br /&gt;
| 60 per minute&lt;br /&gt;
|-&lt;br /&gt;
| PUT, POST, DELETE&lt;br /&gt;
| 30 per minute&lt;br /&gt;
|-&lt;br /&gt;
| POST, PUT, DELETE on a domain&lt;br /&gt;
| 2 per minute&lt;br /&gt;
|-&lt;br /&gt;
| POST, DELETE on alternate domains&lt;br /&gt;
| 2 per minute&lt;br /&gt;
|-&lt;br /&gt;
| Enabling public folders for a domain&lt;br /&gt;
| 1 per 5 minutes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&lt;br /&gt;
Index of Exchange Mailboxes:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hypertext Transfer Protocol&lt;br /&gt;
    GET /v0/customers/12345678/domains/example.com/ex/mailboxes?size=100&amp;amp;offset=100 HTTP/1.1&lt;br /&gt;
    Host: api.emailsrvr.com&lt;br /&gt;
    User-Agent: Rackspace Management Interface&lt;br /&gt;
    X-Api-Signature: eGbq9/2hcZsRlr1JV1Pi:20010317143725:HKUn0aajpSDx7qqGK3vqzn3FglI=&lt;br /&gt;
    Accept: text/xml&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Adding New Exchange Mailbox:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hypertext Transfer Protocol&lt;br /&gt;
    POST /v0/customers/12345678/domains/example.com/ex/mailboxes/john.smith HTTP/1.1&lt;br /&gt;
    Host: api.emailsrvr.com&lt;br /&gt;
    User-Agent: Rackspace Management Interface&lt;br /&gt;
    X-Api-Signature: eGbq9/2hcZsRlr1JV1Pi:20010317143725:HKUn0aajpSDx7qqGK3vqzn3FglI=&lt;br /&gt;
    Content-Length: 53&lt;br /&gt;
        [Content length: 53]&lt;br /&gt;
    Content-Type: application/x-www-form-urlencoded&lt;br /&gt;
 &lt;br /&gt;
Line-based text data: application/x-www-form-urlencoded&lt;br /&gt;
    size=2048&amp;amp;displayName=John%20Smith&amp;amp;password=abcABC123&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Responses ===&lt;br /&gt;
&lt;br /&gt;
==== HTTP Status Code ====&lt;br /&gt;
&lt;br /&gt;
On a successfully executed request, a 200 HTTP Code is returned. If the request was unsuccessful however, an HTTP error code in the 400s or 500s will be returned.&lt;br /&gt;
&lt;br /&gt;
==== HTTP Response Body ====&lt;br /&gt;
&lt;br /&gt;
If the request is an Index or Show request, the request data will be returned in the format specified in the HTTP Body.&lt;br /&gt;
&lt;br /&gt;
===== Formats =====&lt;br /&gt;
&lt;br /&gt;
Requests for data (index and show requests) are returned with XML or JSON data based on what your application populates the [[#HTTP_Headers|HTTP Accept headers]] with.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For XML, populate the header with 'text/xml' (ex: Headers![&amp;quot;Accept&amp;quot;] = &amp;quot;text/xml&amp;quot;). The XML document returned will conform to a published XSD (XML Schema Document). There are many ways to parse the data in an XML document, but we have found that the [http://www.w3schools.com/XPath/default.asp XPath] tree-style traversal has served our purposes. In any case, your application will likely need to use a class library for your chosen method.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For JSON, populate the header with 'application/json' (ex: Headers![&amp;quot;Accept&amp;quot;] = &amp;quot;application/json&amp;quot;). As with XML, a library will likely be needed to parse the data.&lt;br /&gt;
&lt;br /&gt;
==== HTTP Headers ====&lt;br /&gt;
&lt;br /&gt;
The only data returned in the header is the error message (if any).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Header Name''&lt;br /&gt;
!''Description''&lt;br /&gt;
!''Example Header Value''&lt;br /&gt;
|-&lt;br /&gt;
| x-error-message&lt;br /&gt;
| The error message. See [[#Errors|Errors]].&lt;br /&gt;
| Missing required field: name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Errors ====&lt;br /&gt;
&lt;br /&gt;
In the event of an error, the error message will be returned the HTTP header '''x-error-message''' and an HTTP Status Code in the '''400'''s or '''500'''s will be returned.&lt;br /&gt;
&lt;br /&gt;
Note: Every language's HTTP library provides methods for retrieving HTTP response codes and response headers.&lt;br /&gt;
&lt;br /&gt;
Below are some errors that are common to many operations. Each operation also has some specific errors which are outlined with the operation. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
|Format is invalid&lt;br /&gt;
|400&lt;br /&gt;
|When requesting an index or show on a resource the 'Accept' header should be either 'text/xml' or 'application/json'&lt;br /&gt;
|-&lt;br /&gt;
|Expectation  Failed: See [[Handling HTTP code 417: Expectation failed]]&lt;br /&gt;
|417&lt;br /&gt;
|(none)&lt;br /&gt;
|-&lt;br /&gt;
|Customer account number is invalid&lt;br /&gt;
|404&lt;br /&gt;
|Invalid account number&lt;br /&gt;
|-&lt;br /&gt;
|Domain is not found&lt;br /&gt;
|404&lt;br /&gt;
|&amp;lt;domain name&amp;gt; not found&lt;br /&gt;
|-&lt;br /&gt;
|Mailbox is not found&lt;br /&gt;
|404&lt;br /&gt;
|Mailbox not found&lt;br /&gt;
|-&lt;br /&gt;
|Required form field is missing&lt;br /&gt;
|400&lt;br /&gt;
|Missing required field: &amp;lt;required field&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Required form field has null or empty string input&lt;br /&gt;
|400&lt;br /&gt;
|Required field &amp;lt;required field&amp;gt; cannot be empty&lt;br /&gt;
|-&lt;br /&gt;
|Integer form field has non-integer input&lt;br /&gt;
|400&lt;br /&gt;
|Invalid format for &amp;lt;field&amp;gt;, input must be an integer&lt;br /&gt;
|-&lt;br /&gt;
|Boolean form field has non-boolean input&lt;br /&gt;
|400&lt;br /&gt;
|Invalid format for &amp;lt;field&amp;gt;, input must be True or False&lt;br /&gt;
|-&lt;br /&gt;
|Form data has an unrecognized field&lt;br /&gt;
|400&lt;br /&gt;
|Unrecognized field: &amp;lt;field&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Entered invalid IP address&lt;br /&gt;
| 400&lt;br /&gt;
| invalid ip address: 123&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Paging ====&lt;br /&gt;
&lt;br /&gt;
The results of Index actions are split into pages to lessen potentially high resource usage. The index URLs have a query string with parameters in the format &amp;quot;?size=xx&amp;amp;offset=xx.&amp;quot; If a query parameter is omitted, the default value is used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Query Parameter''&lt;br /&gt;
!''Default''&lt;br /&gt;
!''Maximum''&lt;br /&gt;
!''Notes''&lt;br /&gt;
|-&lt;br /&gt;
| size&lt;br /&gt;
| 50&lt;br /&gt;
| 250&lt;br /&gt;
| This is the number of elements per page.&lt;br /&gt;
|-&lt;br /&gt;
| offset&lt;br /&gt;
| 0&lt;br /&gt;
| N/A&lt;br /&gt;
| This is the number of items to offset away from the first item in the list.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Example =====&lt;br /&gt;
&lt;br /&gt;
A PHP Example of paging can be found [[PHP_Examples_(Rest_API)| here]].&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 200 OK&lt;br /&gt;
Cache-Control: private&lt;br /&gt;
Content-Type: text/xml; charset=utf-8&lt;br /&gt;
Server: Microsoft-IIS/7.0&lt;br /&gt;
Date: Fri, 04 Dec 2009 19:08:11 GMT&lt;br /&gt;
Content-Length: 430&lt;br /&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;domainList xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:domainList&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;offset&amp;gt;0&amp;lt;/offset&amp;gt;&lt;br /&gt;
  &amp;lt;size&amp;gt;50&amp;lt;/size&amp;gt;&lt;br /&gt;
  &amp;lt;total&amp;gt;1&amp;lt;/total&amp;gt;&lt;br /&gt;
  &amp;lt;domains&amp;gt;&lt;br /&gt;
    &amp;lt;domain&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;customer.com&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;accountNumber&amp;gt;123456&amp;lt;/accountNumber&amp;gt;&lt;br /&gt;
      &amp;lt;serviceType&amp;gt;rsemail&amp;lt;/serviceType&amp;gt;&lt;br /&gt;
    &amp;lt;/domain&amp;gt;&lt;br /&gt;
  &amp;lt;/domains&amp;gt;&lt;br /&gt;
&amp;lt;/domainList&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 404 Not Found&lt;br /&gt;
Cache-Control: private&lt;br /&gt;
Server: Microsoft-IIS/7.0&lt;br /&gt;
x-error-message: Customer Not Found&lt;br /&gt;
Date: Fri, 04 Dec 2009 19:13:59 GMT&lt;br /&gt;
Content-Length: 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 400 Bad Request&lt;br /&gt;
Cache-Control: private&lt;br /&gt;
Server: Microsoft-IIS/7.0&lt;br /&gt;
x-error-message: Missing required field: type&lt;br /&gt;
Date: Fri, 04 Dec 2009 19:17:29 GMT&lt;br /&gt;
Content-Length: 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
This examples is written in [http://www.ruby-lang.org/en/ Ruby]. To make the examples shorter, helper methods have been written. These methods are part of a NetMethods module. The contents of the NetMethods module is listed below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require  'server.rb'&lt;br /&gt;
&lt;br /&gt;
server = Server.new&lt;br /&gt;
&lt;br /&gt;
response = server.get  '/customers', server.xml_format&lt;br /&gt;
&lt;br /&gt;
#fields = Hash['serviceType' =&amp;gt;  'exchange', 'exchangeMaxNumMailboxes' =&amp;gt; '4']&lt;br /&gt;
#response =  server.post '/customers/me/domains/newdomain.com', fields&lt;br /&gt;
&lt;br /&gt;
puts response.code&lt;br /&gt;
puts response['x-error-message']&lt;br /&gt;
puts response.body&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require 'test/unit/assertions'&lt;br /&gt;
require 'net/http'&lt;br /&gt;
require 'date'&lt;br /&gt;
require 'date/format'&lt;br /&gt;
require 'digest/sha1'&lt;br /&gt;
require 'base64'&lt;br /&gt;
require 'time'&lt;br /&gt;
&lt;br /&gt;
class Server&lt;br /&gt;
  include Test::Unit::Assertions&lt;br /&gt;
  &lt;br /&gt;
  def initialize(server='api.emailsrvr.com', version_prefix='/v0', user_key='xxxxxxxxxxxxxxxxxxxx', secret_hash='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')&lt;br /&gt;
    @server = server&lt;br /&gt;
    @version_prefix = version_prefix&lt;br /&gt;
    @user_key = user_key&lt;br /&gt;
    @secret_hash = secret_hash&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
# Response Type Enums&lt;br /&gt;
&lt;br /&gt;
  def xml_format&lt;br /&gt;
    'text/xml'&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def json_format&lt;br /&gt;
    'application/json'&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# HTTP Request Verbs&lt;br /&gt;
#  &lt;br /&gt;
  def get(url_string, format)&lt;br /&gt;
    uri = full_uri(url_string)&lt;br /&gt;
    headers = prepared_headers&lt;br /&gt;
    headers['Accept'] = format&lt;br /&gt;
    request = Net::HTTP::Get.new(request_uri(uri), headers)&lt;br /&gt;
    http_response = make_request request, uri&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def delete(url_string)&lt;br /&gt;
    uri = full_uri(url_string)&lt;br /&gt;
    request = Net::HTTP::Delete.new(request_uri(uri), prepared_headers)&lt;br /&gt;
    http_response = make_request request, uri&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def put(url_string, fields_hash)&lt;br /&gt;
    uri = full_uri(url_string)&lt;br /&gt;
    request = Net::HTTP::Put.new(request_uri(uri), prepared_headers)&lt;br /&gt;
    request.set_form_data(fields_hash)&lt;br /&gt;
    http_response = make_request request, uri&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def post(url_string, fields_hash)&lt;br /&gt;
    uri = full_uri(url_string)&lt;br /&gt;
    request = Net::HTTP::Post.new(request_uri(uri), prepared_headers)&lt;br /&gt;
    request.set_form_data(fields_hash)&lt;br /&gt;
    http_response = make_request request, uri&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
#&lt;br /&gt;
# HTTP Request Helpers&lt;br /&gt;
# &lt;br /&gt;
  def make_request request, uri&lt;br /&gt;
    response = Net::HTTP::start(uri.host, uri.port)  do |http|&lt;br /&gt;
      http.request request&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    response&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def full_uri url_string&lt;br /&gt;
    URI.parse('http://' + @server + @version_prefix + url_string)&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def request_uri uri&lt;br /&gt;
    request = uri.path&lt;br /&gt;
    if ! uri.query.nil?&lt;br /&gt;
      request = request + '?' + uri.query&lt;br /&gt;
    end&lt;br /&gt;
    request&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def prepared_headers&lt;br /&gt;
    headers = Hash.new&lt;br /&gt;
    headers.merge! headers_auth_creds(@user_key, @secret_hash)&lt;br /&gt;
    headers['Accept'] = xml_format&lt;br /&gt;
    headers&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def headers_auth_creds apiKey, secretKey&lt;br /&gt;
    userAgent = 'Ruby Test Client'&lt;br /&gt;
    timestamp = DateTime.now.strftime('%Y%m%d%H%M%S')&lt;br /&gt;
    &lt;br /&gt;
    data_to_sign = apiKey + userAgent + timestamp + secretKey&lt;br /&gt;
    &lt;br /&gt;
    hash = Base64.encode64(Digest::SHA1.digest(data_to_sign))&lt;br /&gt;
    signature = apiKey + &amp;quot;:&amp;quot; + timestamp + &amp;quot;:&amp;quot; + hash&lt;br /&gt;
    &lt;br /&gt;
    headers = Hash['User-Agent' =&amp;gt; userAgent, 'X-Api-Signature' =&amp;gt; signature]&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== C# ===&lt;br /&gt;
&lt;br /&gt;
This examples is written in [http://msdn.microsoft.com/en-us/vcsharp/default.aspx C#].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Specialized;&lt;br /&gt;
using System.Security.Cryptography;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Net;&lt;br /&gt;
&lt;br /&gt;
public class WebMethods&lt;br /&gt;
{&lt;br /&gt;
  private WebClientBase client;&lt;br /&gt;
  private string baseUrl;&lt;br /&gt;
  private string apiKey;&lt;br /&gt;
  private string secretKey;&lt;br /&gt;
&lt;br /&gt;
  public WebMethods(WebClientBase client, string baseUrl, string apiKey, string secretKey)&lt;br /&gt;
  {&lt;br /&gt;
    this.client = client;&lt;br /&gt;
    this.baseUrl = baseUrl;&lt;br /&gt;
    this.apiKey = apiKey;&lt;br /&gt;
    this.secretKey = secretKey;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  public virtual string Get(string url)&lt;br /&gt;
  {&lt;br /&gt;
    return MakeRemoteCall((client) =&amp;gt;&lt;br /&gt;
      {&lt;br /&gt;
        return client.DownloadString(baseUrl + url);&lt;br /&gt;
      },&lt;br /&gt;
      format);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  public virtual string Post(string url, NameValueCollection data)&lt;br /&gt;
  {&lt;br /&gt;
    return MakeRemoteCall((client) =&amp;gt;&lt;br /&gt;
      {&lt;br /&gt;
        var bytes = client.UploadValues(baseUrl + url, data);&lt;br /&gt;
        return Encoding.UTF8.GetString(bytes);&lt;br /&gt;
      },&lt;br /&gt;
      format);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  private void SignMessage()&lt;br /&gt;
  {&lt;br /&gt;
    var userAgent = &amp;quot;C# Client Library&amp;quot;;&lt;br /&gt;
    client.Headers[&amp;quot;User-Agent&amp;quot;] = userAgent;&lt;br /&gt;
&lt;br /&gt;
    var dateTime = DateTime.UtcNow.ToString(&amp;quot;yyyyMMddHHmmss&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    var dataToSign = apiKey + userAgent + dateTime + secretKey;&lt;br /&gt;
    var hash = SHA1.Create();&lt;br /&gt;
    var signedBytes = hash.ComputeHash(Encoding.UTF8.GetBytes(dataToSign));&lt;br /&gt;
    var signature = Convert.ToBase64String(signedBytes);&lt;br /&gt;
&lt;br /&gt;
    client.Headers[&amp;quot;X-Api-Signature&amp;quot;] = apiKey + &amp;quot;:&amp;quot; + dateTime + &amp;quot;:&amp;quot; + signature;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  private void AssignFormat(string format)&lt;br /&gt;
  {&lt;br /&gt;
    client.Headers[&amp;quot;Accept&amp;quot;] = format;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  private string MakeRemoteCall(Func&amp;lt;WebClientBase, string&amp;gt; remoteCall, string format)&lt;br /&gt;
  {&lt;br /&gt;
    try&lt;br /&gt;
    {&lt;br /&gt;
      SignMessage();&lt;br /&gt;
      AssignFormat(format);&lt;br /&gt;
      return remoteCall.Invoke(client);&lt;br /&gt;
    }&lt;br /&gt;
    catch (WebException e)&lt;br /&gt;
    {&lt;br /&gt;
      throw new ApiException(e);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PHP ===&lt;br /&gt;
&lt;br /&gt;
The PHP Example can be found [[PHP_Examples_(Rest_API)| here]].&lt;/div&gt;</summary>
		<author><name>Zhen.wei</name></author>	</entry>

	<entry>
		<id>http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Exchange_Mailbox_(Rest_API)&amp;diff=418</id>
		<title>Exchange Mailbox (Rest API)</title>
		<link rel="alternate" type="text/html" href="http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Exchange_Mailbox_(Rest_API)&amp;diff=418"/>
				<updated>2010-09-02T00:15:29Z</updated>
		
		<summary type="html">&lt;p&gt;Zhen.wei: 09/01/2010 update&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Index ==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] http://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /ex/mailboxes&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Shows a list of mailboxes under the domain&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Filter/Search'':&lt;br /&gt;
&lt;br /&gt;
Mailbox searches may be filtered by the 'enabled' flag using query methods ?enabled=true and ?enabled=false.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The show operation only supports the GET HTTP verb. For .xml format refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/MailboxList.xsd MailboxList.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/example.com/ex/mailboxes', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;mailboxList xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:mailboxList&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;offset&amp;gt;0&amp;lt;/offset&amp;gt;&lt;br /&gt;
  &amp;lt;size&amp;gt;50&amp;lt;/size&amp;gt;&lt;br /&gt;
  &amp;lt;total&amp;gt;3&amp;lt;/total&amp;gt;&lt;br /&gt;
  &amp;lt;mailboxes&amp;gt;&lt;br /&gt;
    &amp;lt;mailbox&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;apiexmailbox55&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;displayName&amp;gt;API Test&amp;lt;/displayName&amp;gt;&lt;br /&gt;
    &amp;lt;/mailbox&amp;gt;&lt;br /&gt;
    &amp;lt;mailbox&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;apiexmailbox6&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;displayName&amp;gt;API Test&amp;lt;/displayName&amp;gt;&lt;br /&gt;
    &amp;lt;/mailbox&amp;gt;&lt;br /&gt;
    &amp;lt;mailbox&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;apiexmailbox90&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;displayName&amp;gt;API Test&amp;lt;/displayName&amp;gt;&lt;br /&gt;
    &amp;lt;/mailbox&amp;gt;&lt;br /&gt;
  &amp;lt;/mailboxes&amp;gt;&lt;br /&gt;
&amp;lt;/mailboxList&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;offset&amp;quot;:0,&amp;quot;size&amp;quot;:50,&amp;quot;total&amp;quot;:3,&amp;quot;mailboxes&amp;quot;:[{&amp;quot;name&amp;quot;:&amp;quot;apiexmailbox55&amp;quot;,&amp;quot;displayName&amp;quot;:&amp;quot;API Test&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;apiexmailbox6&amp;quot;,&amp;quot;displayName&amp;quot;:&amp;quot;API Test&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;apiexmailbox90&amp;quot;,&amp;quot;displayName&amp;quot;:&amp;quot;API Test&amp;quot;}]}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Custom Fields'':&lt;br /&gt;
&lt;br /&gt;
The result displays each mailbox's 'name' and 'displayName' as default. There is a query string 'fields' that allows the result to display more mailbox properties. The additional properties are: 'size', 'currentUsage', 'hasBlackBerryMobileService', 'hasActiveSyncMobileService'.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/example.com/ex/mailboxes?fields=size,currentUsage', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Show ==&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /ex/mailboxes/(mailbox name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
The show operation will return detailed information about the specified mailbox.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The show operation only supports the GET HTTP verb. For .xml format refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/Mailbox.xsd Mailbox.xsd]&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;samAccountName&amp;quot; is the logon name used to support clients and servers running older versions of the operating system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/example.com/ex/mailboxes/alex.smith', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;mailbox xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:mailbox&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;name&amp;gt;apiexmailbox90&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;displayName&amp;gt;API Test&amp;lt;/displayName&amp;gt;&lt;br /&gt;
  &amp;lt;size&amp;gt;2048&amp;lt;/size&amp;gt;&lt;br /&gt;
  &amp;lt;currentUsage&amp;gt;0&amp;lt;/currentUsage&amp;gt;&lt;br /&gt;
  &amp;lt;isHidden&amp;gt;false&amp;lt;/isHidden&amp;gt;&lt;br /&gt;
  &amp;lt;visibleInRackspaceEmailCompanyDirectory&amp;gt;false&amp;lt;/visibleInRackspaceEmailCompanyDirectory&amp;gt;&lt;br /&gt;
  &amp;lt;isPublicFolderAdmin&amp;gt;true&amp;lt;/isPublicFolderAdmin&amp;gt;&lt;br /&gt;
  &amp;lt;enabled&amp;gt;true&amp;lt;/enabled&amp;gt;&lt;br /&gt;
  &amp;lt;lastLogin&amp;gt;2/12/2010 1:00:00 AM&amp;lt;/lastLogin&amp;gt;&lt;br /&gt;
  &amp;lt;contactInfo&amp;gt;&lt;br /&gt;
    &amp;lt;firstName&amp;gt;API&amp;lt;/firstName&amp;gt;&lt;br /&gt;
    &amp;lt;lastName&amp;gt;Test&amp;lt;/lastName&amp;gt;&lt;br /&gt;
    &amp;lt;jobTitle&amp;gt;Dev&amp;lt;/jobTitle&amp;gt;&lt;br /&gt;
    &amp;lt;company&amp;gt;My Company&amp;lt;/company&amp;gt;&lt;br /&gt;
    &amp;lt;department&amp;gt;R&amp;amp;amp;D&amp;lt;/department&amp;gt;&lt;br /&gt;
    &amp;lt;businessNumber&amp;gt;111-1111&amp;lt;/businessNumber&amp;gt;&lt;br /&gt;
    &amp;lt;homeNumber&amp;gt;222-2222&amp;lt;/homeNumber&amp;gt;&lt;br /&gt;
    &amp;lt;mobileNumber&amp;gt;333-3333&amp;lt;/mobileNumber&amp;gt;&lt;br /&gt;
    &amp;lt;faxNumber&amp;gt;444-4444&amp;lt;/faxNumber&amp;gt;&lt;br /&gt;
    &amp;lt;pagerNumber&amp;gt;1234&amp;lt;/pagerNumber&amp;gt;&lt;br /&gt;
    &amp;lt;addressLine1&amp;gt;123 Main Street&amp;lt;/addressLine1&amp;gt;&lt;br /&gt;
    &amp;lt;city&amp;gt;Blacksburg&amp;lt;/city&amp;gt;&lt;br /&gt;
    &amp;lt;state&amp;gt;VA&amp;lt;/state&amp;gt;&lt;br /&gt;
    &amp;lt;zip&amp;gt;24060&amp;lt;/zip&amp;gt;&lt;br /&gt;
    &amp;lt;country&amp;gt;USA&amp;lt;/country&amp;gt;&lt;br /&gt;
    &amp;lt;notes&amp;gt;My Notes&amp;lt;/notes&amp;gt;&lt;br /&gt;
  &amp;lt;/contactInfo&amp;gt;&lt;br /&gt;
  &amp;lt;emailForwardingAddress&amp;gt;apiexmailbox8@apidomain24.com&amp;lt;/emailForwardingAddress&amp;gt;&lt;br /&gt;
  &amp;lt;emailAddressList&amp;gt;&lt;br /&gt;
    &amp;lt;emailAddress&amp;gt;&lt;br /&gt;
      &amp;lt;address&amp;gt;apiexmailbox90@apidomain92.com&amp;lt;/address&amp;gt;&lt;br /&gt;
      &amp;lt;replyTo&amp;gt;true&amp;lt;/replyTo&amp;gt;&lt;br /&gt;
    &amp;lt;/emailAddress&amp;gt;&lt;br /&gt;
  &amp;lt;/emailAddressList&amp;gt;&lt;br /&gt;
  &amp;lt;hasBlackBerryMobileService&amp;gt;false&amp;lt;/hasBlackBerryMobileService&amp;gt;&lt;br /&gt;
  &amp;lt;hasActiveSyncMobileService&amp;gt;false&amp;lt;/hasActiveSyncMobileService&amp;gt;&lt;br /&gt;
  &amp;lt;samAccountName&amp;gt;apiexmailbox90_53B5B&amp;lt;/samAccountName&amp;gt;&lt;br /&gt;
&amp;lt;/mailbox&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;name&amp;quot;:&amp;quot;apiexmailbox90&amp;quot;, &amp;quot;displayName&amp;quot;:&amp;quot;API Test&amp;quot;, &amp;quot;size&amp;quot;:2048, &amp;quot;currentUsage&amp;quot;:0, &amp;quot;isHidden&amp;quot;:false, &amp;quot;isPublicFolderAdmin&amp;quot;:true, &amp;quot;enabled&amp;quot;:true, &amp;quot;lastLogin&amp;quot;:&amp;quot;2\/12\/2006 1:00:00 AM&amp;quot;, &amp;quot;contactInfo&amp;quot;:{&amp;quot;firstName&amp;quot;:&amp;quot;API&amp;quot;, &amp;quot;lastName&amp;quot;:&amp;quot;Test&amp;quot;, &amp;quot;jobTitle&amp;quot;:&amp;quot;Dev&amp;quot;, &amp;quot;company&amp;quot;:&amp;quot;My Company&amp;quot;, &amp;quot;department&amp;quot;:&amp;quot;R&amp;amp;D&amp;quot;, &amp;quot;businessNumber&amp;quot;:&amp;quot;111-1111&amp;quot;, &amp;quot;homeNumber&amp;quot;:&amp;quot;222-2222&amp;quot;, &amp;quot;mobileNumber&amp;quot;:&amp;quot;333-3333&amp;quot;, &amp;quot;faxNumber&amp;quot;:&amp;quot;444-4444&amp;quot;, &amp;quot;pagerNumber&amp;quot;:&amp;quot;1234&amp;quot;, &amp;quot;addressLine1&amp;quot;:&amp;quot;123 Main Street&amp;quot;, &amp;quot;city&amp;quot;:&amp;quot;Blacksburg&amp;quot;, &amp;quot;state&amp;quot;:&amp;quot;VA&amp;quot;, &amp;quot;zip&amp;quot;:&amp;quot;24060&amp;quot;, &amp;quot;country&amp;quot;:&amp;quot;USA&amp;quot;, &amp;quot;notes&amp;quot;:&amp;quot;My Notes&amp;quot;}, &amp;quot;emailForwardingAddress&amp;quot;:&amp;quot;apiexmailbox8@apidomain24.com&amp;quot;, &amp;quot;emailAddressList&amp;quot;:[{&amp;quot;address&amp;quot;:&amp;quot;apiexmailbox90@apidomain92.com&amp;quot;, &amp;quot;replyTo&amp;quot;:true}], &amp;quot;hasBlackBerryMobileService&amp;quot;:false, &amp;quot;hasActiveSyncMobileService&amp;quot;:false, &amp;quot;samAccountName&amp;quot;:&amp;quot;apiexmailbox90_53B5B&amp;quot;, &amp;quot;visibleInRackspaceEmailCompanyDirectory&amp;quot;:false}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Add/Edit ==&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Add: [POST] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /ex/mailboxes/(mailbox name)&lt;br /&gt;
Edit: [PUT] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /ex/mailboxes/(mailbox name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Adds/edits a mailbox using the specified form fields. All required fields must be supplied when adding. Other fields may be omitted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| displayName&lt;br /&gt;
| string&lt;br /&gt;
| Display name (Required for Add)&lt;br /&gt;
|-&lt;br /&gt;
| password&lt;br /&gt;
| string&lt;br /&gt;
| Password (Required for Add)&lt;br /&gt;
|-&lt;br /&gt;
| size&lt;br /&gt;
| positive integer&lt;br /&gt;
| Mailbox size in megabytes (Required for Add)&lt;br /&gt;
|-&lt;br /&gt;
| isHidden&lt;br /&gt;
| boolean&lt;br /&gt;
| Indicates whether or not the mailbox is hidden from the Global Address List&lt;br /&gt;
|-&lt;br /&gt;
| isPublicFolderAdmin&lt;br /&gt;
| boolean&lt;br /&gt;
| Indicates whether or not the account is a public folder administrator&lt;br /&gt;
|-&lt;br /&gt;
| firstName&lt;br /&gt;
| string&lt;br /&gt;
| First name&lt;br /&gt;
|-&lt;br /&gt;
| lastName&lt;br /&gt;
| string&lt;br /&gt;
| Last name&lt;br /&gt;
|-&lt;br /&gt;
| company&lt;br /&gt;
| string&lt;br /&gt;
| Company&lt;br /&gt;
|-&lt;br /&gt;
| department&lt;br /&gt;
| string&lt;br /&gt;
| Department&lt;br /&gt;
|-&lt;br /&gt;
| jobTitle&lt;br /&gt;
| string&lt;br /&gt;
| Job title&lt;br /&gt;
|-&lt;br /&gt;
| addressLine1&lt;br /&gt;
| string&lt;br /&gt;
| Street address&lt;br /&gt;
|-&lt;br /&gt;
| city&lt;br /&gt;
| string&lt;br /&gt;
| City&lt;br /&gt;
|-&lt;br /&gt;
| state&lt;br /&gt;
| string&lt;br /&gt;
| State&lt;br /&gt;
|-&lt;br /&gt;
| zip&lt;br /&gt;
| string&lt;br /&gt;
| Zip or postal code&lt;br /&gt;
|-&lt;br /&gt;
| country&lt;br /&gt;
| string&lt;br /&gt;
| Country&lt;br /&gt;
|-&lt;br /&gt;
| businessNumber&lt;br /&gt;
| string&lt;br /&gt;
| Business phone number&lt;br /&gt;
|-&lt;br /&gt;
| pagerNumber&lt;br /&gt;
| string&lt;br /&gt;
| Pager phone number&lt;br /&gt;
|-&lt;br /&gt;
| homeNumber&lt;br /&gt;
| string&lt;br /&gt;
| Home phone number&lt;br /&gt;
|-&lt;br /&gt;
| mobileNumber&lt;br /&gt;
| string&lt;br /&gt;
| Mobile phone number&lt;br /&gt;
|-&lt;br /&gt;
| faxNumber&lt;br /&gt;
| string&lt;br /&gt;
| Fax phone number&lt;br /&gt;
|-&lt;br /&gt;
| notes&lt;br /&gt;
| string&lt;br /&gt;
| Notes field&lt;br /&gt;
|-&lt;br /&gt;
| emailForwardingAddress&lt;br /&gt;
| string&lt;br /&gt;
| Forwarding email address (If this field is assigned an email address, then email forwarding will be turned on. If this field is not assigned or assigned an empty string, then email forwarding will be disabled.)&lt;br /&gt;
|-&lt;br /&gt;
| visibleInRackspaceEmailCompanyDirectory&lt;br /&gt;
| boolean&lt;br /&gt;
| Flag indicating whether the mailbox is visible in the company directory&lt;br /&gt;
|-&lt;br /&gt;
| enabled&lt;br /&gt;
| boolean&lt;br /&gt;
| Enable/Disable mailbox, input must be &amp;quot;true&amp;quot; or &amp;quot;false&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| lastLogin '''''(read only)'''''&lt;br /&gt;
| string&lt;br /&gt;
| Date of last login, EST Time (in string format)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post '/customers/12345678/domains/example.com/ex/mailboxes/alex.smith', 'text/xml', &lt;br /&gt;
{ &lt;br /&gt;
  'displayName' =&amp;gt; 'Alex Smith',&lt;br /&gt;
  'password' =&amp;gt; 'Secret123!@#',&lt;br /&gt;
  'size' =&amp;gt; '2048'&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
put '/customers/12345678/domains/example.com/ex/mailboxes/alex.smith', 'text/xml',&lt;br /&gt;
{ &lt;br /&gt;
  'homeNumber' =&amp;gt; '8005551234'&lt;br /&gt;
}  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| New mailbox name (user name) doesn't meet the naming requirements&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid user name&lt;br /&gt;
|-&lt;br /&gt;
| New mailbox display name doesn't meet the naming requirements&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid display name&lt;br /&gt;
|-&lt;br /&gt;
| New mailbox password doesn't meet the password pattern requirements&lt;br /&gt;
| 400&lt;br /&gt;
| Password must be at least 8 characters long&lt;br /&gt;
|-&lt;br /&gt;
| New mailbox name (user name) already exists&lt;br /&gt;
| 400&lt;br /&gt;
| The email address john.doe@abc.com is already in use&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Delete ==&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[DELETE] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
            /ex/mailboxes/(mailbox name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Deletes the mailbox. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The mailbox and mailbox contents are deleted permanently.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
delete '/customers/12345678/domains/example.com/ex/mailboxes/alex.smith', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Add Email Address ==&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[POST] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /ex/mailboxes/(mailbox name)/emailaddresses/(email address)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Adds a mailbox's email address.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post '/customers/12345678/domains/example.com/ex/mailboxes/alex.smith/emailaddresses/alex@example.com', {}, 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Delete Email Address ==&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[DELETE] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
            /ex/mailboxes/(mailbox name)/emailaddresses/(email address)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Deletes the email address. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The operation will fail if the email address does not exist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
delete '/customers/12345678/domains/example.com/ex/mailboxes/alex.smith/emailaddresses/alex@example.com', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Spam Settings ==&lt;br /&gt;
&lt;br /&gt;
See [[Mailbox_Spam_(Rest_API)| Exchange Mailbox Spam Settings]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mailbox Permissions ==&lt;br /&gt;
&lt;br /&gt;
Exchange mailboxes can be given permissions. A permission is defined as a tuple (mailbox, permissionType).&lt;br /&gt;
&lt;br /&gt;
permissionType:= (SendAs | FullAccess | Both)&lt;br /&gt;
&lt;br /&gt;
=== Index Permissions ===&lt;br /&gt;
''URL'':&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] http://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /ex/mailboxes/(user)/permissions&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Shows the current set of permissions granted on a user's mailbox.&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/100012/domains/enterpriseallservices.net/ex/mailboxes/jane.doe/permissions', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;permissionList 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; xmlns=&amp;quot;urn:xml:permissionList&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;offset&amp;gt;0&amp;lt;/offset&amp;gt;&lt;br /&gt;
  &amp;lt;size&amp;gt;50&amp;lt;/size&amp;gt;&lt;br /&gt;
  &amp;lt;total&amp;gt;0&amp;lt;/total&amp;gt;&lt;br /&gt;
  &amp;lt;permissions&amp;gt;&lt;br /&gt;
    &amp;lt;permission&amp;gt;&lt;br /&gt;
      &amp;lt;emailAddress&amp;gt;joe.schmoe@enterpriseallservices.net&amp;lt;/emailAddress&amp;gt;&lt;br /&gt;
      &amp;lt;permissionType&amp;gt;fullAccess&amp;lt;/permissionType&amp;gt;&lt;br /&gt;
    &amp;lt;/permission&amp;gt;&lt;br /&gt;
  &amp;lt;/permissions&amp;gt;&lt;br /&gt;
&amp;lt;/permissionList&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;offset&amp;quot;:0,&amp;quot;size&amp;quot;:50,&amp;quot;total&amp;quot;:0,&amp;quot;permissions&amp;quot;:[{&amp;quot;emailAddress&amp;quot;:&amp;quot;joe.schmoe@enterpriseallservices.net&amp;quot;,&amp;quot;permissionType&amp;quot;:&amp;quot;fullAccess&amp;quot;}]}&lt;br /&gt;
&lt;br /&gt;
''Comments'':&lt;br /&gt;
The above result shows the permission list for user Jane Doe's mailbox. The list contains one entry corresponding to &lt;br /&gt;
that of user Joe Schmoe with permission type of &amp;quot;FullAccess&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Adding Permission ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[POST] http://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /ex/mailboxes/(user1)/permissions/(user2)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Grants user2 the specified permission on mailbox of user1.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| permission&lt;br /&gt;
| string&lt;br /&gt;
| permissionType (Required)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post '/customers/100012/domains/enterpriseallservices.net/ex/mailboxes/jane.doe/permissions/john.doe', {'permission' =&amp;gt; 'fullAccess'}, 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Comments'':&lt;br /&gt;
The above result shows that on the mailbox of user Jane Doe, the user John Doe has been granted the permission of type &amp;quot;fullAccess&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Editing Permission ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[PUT] http://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /ex/mailboxes/(user1)/permissions/(user2)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Modifies permission granted to user2 on the mailbox of user1.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| permission&lt;br /&gt;
| string&lt;br /&gt;
| permissionType (Required)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
put '/customers/100012/domains/enterpriseallservices.net/ex/mailboxes/jane.doe/permissions/john.doe', &lt;br /&gt;
{'permission' =&amp;gt; 'both'}, 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Comments'':&lt;br /&gt;
The permission granted to user John Doe on the mailbox of Jane Doe is modified to &amp;quot;both&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Deleting Permission ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[DELETE] http://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /ex/mailboxes/(user1)/permissions/(user2)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Deletes permission granted to user2 on the mailbox of user1.&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
delete '/customers/100012/domains/enterpriseallservices.net/ex/mailboxes/jane.doe/permissions/john.doe', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Comments'':&lt;br /&gt;
The permission granted to user John Doe on the mailbox of Jane Doe is deleted.&lt;br /&gt;
&lt;br /&gt;
== BlackBerry Mobile Service ==&lt;br /&gt;
&lt;br /&gt;
=== Index ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /ex/blackberrymobileservices&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Returns a list of mailboxes that has BlackBerry mobile service enabled.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The index operation only supports the GET HTTP verb. For .xml format refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/BlackberryMobileServiceList.xsd BlackberryMobileServiceList.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/example.com/ex/blackberrymobileservices', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;blackBerryMobileServiceList xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; &lt;br /&gt;
xmlns=&amp;quot;urn:xml:blackBerryMobileServiceList&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;offset&amp;gt;0&amp;lt;/offset&amp;gt;&lt;br /&gt;
  &amp;lt;size&amp;gt;50&amp;lt;/size&amp;gt;&lt;br /&gt;
  &amp;lt;total&amp;gt;3&amp;lt;/total&amp;gt;&lt;br /&gt;
  &amp;lt;mailboxes&amp;gt;&lt;br /&gt;
    &amp;lt;mailbox&amp;gt;apiexmailbox36&amp;lt;/mailbox&amp;gt;&lt;br /&gt;
    &amp;lt;mailbox&amp;gt;apiexmailbox66&amp;lt;/mailbox&amp;gt;&lt;br /&gt;
    &amp;lt;mailbox&amp;gt;apiexmailbox85&amp;lt;/mailbox&amp;gt;&lt;br /&gt;
  &amp;lt;/mailboxes&amp;gt;&lt;br /&gt;
&amp;lt;/blackBerryMobileServiceList&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;offset&amp;quot;:0,&amp;quot;size&amp;quot;:50,&amp;quot;total&amp;quot;:3,&amp;quot;mailboxes&amp;quot;:[&amp;quot;apiexmailbox36&amp;quot;,&amp;quot;apiexmailbox66&amp;quot;,&amp;quot;apiexmailbox85&amp;quot;]}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Add ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[POST] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /ex/mailboxes/(mailbox name)/blackberrymobileservice&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Attaches a BlackBerry mobile service to the mailbox.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| activationPassword&lt;br /&gt;
| string&lt;br /&gt;
| Activation password (Required)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post '/customers/12345678/domains/example.com/ex/mailboxes/john.smith/blackberrymobileservice', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
  'activationPassword' =&amp;gt; '12345'&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Mailbox already has BlackBerry Service&lt;br /&gt;
| 400&lt;br /&gt;
| User john.smith@example.com has BlackBerry Mobile Service already&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Delete ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[DELETE] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
            /ex/mailboxes/(mailbox name)/blackberrymobileservice&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Detaches a BlackBerry mobile service from a mailbox.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
delete '/customers/12345678/domains/example.com/ex/mailboxes/john.smith/blackberrymobileservice', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ActiveSync Mobile Service ==&lt;br /&gt;
&lt;br /&gt;
=== Index ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /ex/activesyncmobileservices&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Returns a list of mailboxes that have ActiveSync mobile service enabled.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The index operation only supports the GET HTTP verb. For .xml format refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/ActiveSyncMobileServiceList.xsd ActiveSyncMobileServiceList.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/example.com/ex/activesyncmobileservices', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;activeSyncMobileServiceList xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; &lt;br /&gt;
xmlns=&amp;quot;urn:xml:activeSyncMobileServiceList&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;offset&amp;gt;0&amp;lt;/offset&amp;gt;&lt;br /&gt;
  &amp;lt;size&amp;gt;50&amp;lt;/size&amp;gt;&lt;br /&gt;
  &amp;lt;total&amp;gt;3&amp;lt;/total&amp;gt;&lt;br /&gt;
  &amp;lt;mailboxes&amp;gt;&lt;br /&gt;
    &amp;lt;mailbox&amp;gt;apiexmailbox36&amp;lt;/mailbox&amp;gt;&lt;br /&gt;
    &amp;lt;mailbox&amp;gt;apiexmailbox66&amp;lt;/mailbox&amp;gt;&lt;br /&gt;
    &amp;lt;mailbox&amp;gt;apiexmailbox85&amp;lt;/mailbox&amp;gt;&lt;br /&gt;
  &amp;lt;/mailboxes&amp;gt;&lt;br /&gt;
&amp;lt;/activeSyncMobileServiceList&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;offset&amp;quot;:0,&amp;quot;size&amp;quot;:50,&amp;quot;total&amp;quot;:3,&amp;quot;mailboxes&amp;quot;:[&amp;quot;apiexmailbox36&amp;quot;,&amp;quot;apiexmailbox66&amp;quot;,&amp;quot;apiexmailbox85&amp;quot;]}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Show ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /ex/mailboxes/(mailbox name)/activesyncmobileservice&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Returns the mailbox ActiveSync mobile service setup information to access Hosted Exchange 2007.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The index operation only supports the GET HTTP verb. For .xml format, refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/ActiveSyncMobileService.xsd ActiveSyncMobileService.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/example.com/ex/mailboxes/john.smith/activesyncmobileservice', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;activeSyncMobileService xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:activeSyncMobileService&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;emailAddress&amp;gt;john.smith@example.com&amp;lt;/emailAddress&amp;gt;&lt;br /&gt;
  &amp;lt;serverAddress&amp;gt;mex07A.emailsrvr.com&amp;lt;/serverAddress&amp;gt;&lt;br /&gt;
  &amp;lt;userName&amp;gt;johnsmith1234&amp;lt;/userName&amp;gt;&lt;br /&gt;
  &amp;lt;domainAddress&amp;gt;mex07A.mlsrvr.com&amp;lt;/domainAddress&amp;gt;&lt;br /&gt;
&amp;lt;/activeSyncMobileService&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;emailAddress&amp;quot;:&amp;quot;john.smith@example.com&amp;quot;,&amp;quot;serverAddress&amp;quot;:&amp;quot;mex07A.emailsrvr.com&amp;quot;,&amp;quot;userName&amp;quot;:&amp;quot;johnsmith1234&amp;quot;,&amp;quot;domainAddress&amp;quot;:&amp;quot;mex07A.mlsrvr.com&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Mailbox has no ActiveSync service&lt;br /&gt;
| 404&lt;br /&gt;
| User john.smith@example.com has no active ActiveSync Mobile Service.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Add ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[POST] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /ex/mailboxes/(mailbox name)/activesyncmobileservice&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Attaches a ActiveSync service to the mailbox.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post '/customers/12345678/domains/example.com/ex/mailboxes/john.smith/activesyncmobileservice', 'text/xml', {}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Mailbox already has ActiveSync Service&lt;br /&gt;
| 400&lt;br /&gt;
| User john.smith@example.com has ActiveSync Mobile Service already&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Delete ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[DELETE] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
            /ex/mailboxes/(mailbox name)/activesyncmobileservice&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Detaches a ActiveSync mobile service from a mailbox.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
delete '/customers/12345678/domains/example.com/ex/mailboxes/john.smith/activesyncmobileservice', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zhen.wei</name></author>	</entry>

	<entry>
		<id>http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Rackspace_Mailbox_(Rest_API)&amp;diff=417</id>
		<title>Rackspace Mailbox (Rest API)</title>
		<link rel="alternate" type="text/html" href="http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Rackspace_Mailbox_(Rest_API)&amp;diff=417"/>
				<updated>2010-09-02T00:12:45Z</updated>
		
		<summary type="html">&lt;p&gt;Zhen.wei: 09/01/2010 update&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== Index ==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] http://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /rs/mailboxes&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Shows a list of mailboxes under the domain&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Filter/Search'':&lt;br /&gt;
&lt;br /&gt;
Mailbox searches may be filtered by the 'enabled' flag using query methods ?enabled=true and ?enabled=false.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The show operation only supports the GET HTTP verb. For .xml format refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/RSMailboxList.xsd RSMailboxList.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/example.com/rs/mailboxes', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;rsMailboxList xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:rsMailboxList&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;offset&amp;gt;0&amp;lt;/offset&amp;gt;&lt;br /&gt;
  &amp;lt;size&amp;gt;50&amp;lt;/size&amp;gt;&lt;br /&gt;
  &amp;lt;total&amp;gt;2&amp;lt;/total&amp;gt;&lt;br /&gt;
  &amp;lt;rsMailboxes&amp;gt;&lt;br /&gt;
    &amp;lt;rsMailbox&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;apirsmailbox37&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/rsMailbox&amp;gt;&lt;br /&gt;
    &amp;lt;rsMailbox&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;apirsmailbox91&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/rsMailbox&amp;gt;&lt;br /&gt;
  &amp;lt;/rsMailboxes&amp;gt;&lt;br /&gt;
&amp;lt;/rsMailboxList&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;offset&amp;quot;:0,&amp;quot;size&amp;quot;:50,&amp;quot;total&amp;quot;:2,&amp;quot;rsMailboxes&amp;quot;:[{&amp;quot;name&amp;quot;:&amp;quot;apirsmailbox37&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;apirsmailbox91&amp;quot;}]}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Show ==&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /rs/mailboxes/(mailbox name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
The show operation will return detailed information about the specified mailbox.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The show operation only supports the GET HTTP verb. For .xml format refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/RSMailbox.xsd RSMailbox.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/example.com/rs/mailboxes/alex.smith', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;rsMailbox xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:rsMailbox&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;name&amp;gt;apirsmailbox37&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;size&amp;gt;10240&amp;lt;/size&amp;gt;&lt;br /&gt;
  &amp;lt;currentUsage&amp;gt;1024&amp;lt;/currentUsage&amp;gt;&lt;br /&gt;
  &amp;lt;vacationMessage&amp;gt;My Test Vacation Message&amp;lt;/vacationMessage&amp;gt;&lt;br /&gt;
  &amp;lt;enableVacationMessage&amp;gt;true&amp;lt;/enableVacationMessage&amp;gt;&lt;br /&gt;
  &amp;lt;emailForwardingAddressList&amp;gt;&lt;br /&gt;
    &amp;lt;emailAddress&amp;gt;notreal0@apidomain.net&amp;lt;/emailAddress&amp;gt;&lt;br /&gt;
    &amp;lt;emailAddress&amp;gt;notreal1@apidomain.net&amp;lt;/emailAddress&amp;gt;&lt;br /&gt;
  &amp;lt;/emailForwardingAddressList&amp;gt;&lt;br /&gt;
  &amp;lt;saveForwardedEmail&amp;gt;false&amp;lt;/saveForwardedEmail&amp;gt;&lt;br /&gt;
  &amp;lt;lastLogin&amp;gt;2/12/2009 1:00:00 AM&amp;lt;/lastLogin&amp;gt;&lt;br /&gt;
  &amp;lt;createdDate&amp;gt;4/10/2006 7:47:34 PM&amp;lt;/createdDate&amp;gt;&lt;br /&gt;
  &amp;lt;visibleInRackspaceEmailCompanyDirectory&amp;gt;false&amp;lt;/visibleInRackspaceEmailCompanyDirectory&amp;gt;&lt;br /&gt;
  &amp;lt;visibleInExchangeGAL&amp;gt;false&amp;lt;/visibleInExchangeGAL&amp;gt;&lt;br /&gt;
  &amp;lt;contactInfo&amp;gt;&lt;br /&gt;
    &amp;lt;lastName&amp;gt;Testlast&amp;lt;/lastName&amp;gt;&lt;br /&gt;
    &amp;lt;firstName&amp;gt;Jayfirst&amp;lt;/firstName&amp;gt;&lt;br /&gt;
    &amp;lt;generationQualifier&amp;gt;Jr&amp;lt;/generationQualifier&amp;gt;&lt;br /&gt;
    &amp;lt;initials&amp;gt;A&amp;lt;/initials&amp;gt;&lt;br /&gt;
    &amp;lt;organizationUnit&amp;gt;IT&amp;lt;/organizationUnit&amp;gt;&lt;br /&gt;
    &amp;lt;businessStreet&amp;gt;123 Biz St&amp;lt;/businessStreet&amp;gt;&lt;br /&gt;
    &amp;lt;businessCity&amp;gt;Blacksburg&amp;lt;/businessCity&amp;gt;&lt;br /&gt;
    &amp;lt;businessState&amp;gt;VA&amp;lt;/businessState&amp;gt;&lt;br /&gt;
    &amp;lt;businessPostalCode&amp;gt;24060&amp;lt;/businessPostalCode&amp;gt;&lt;br /&gt;
    &amp;lt;businessCountry&amp;gt;USA&amp;lt;/businessCountry&amp;gt;&lt;br /&gt;
    &amp;lt;homeStreet&amp;gt;456 Home St&amp;lt;/homeStreet&amp;gt;&lt;br /&gt;
    &amp;lt;homeCity&amp;gt;Charlotte&amp;lt;/homeCity&amp;gt;&lt;br /&gt;
    &amp;lt;homeState&amp;gt;NC&amp;lt;/homeState&amp;gt;&lt;br /&gt;
    &amp;lt;homePostalCode&amp;gt;28210&amp;lt;/homePostalCode&amp;gt;&lt;br /&gt;
    &amp;lt;homeCountry&amp;gt;USA&amp;lt;/homeCountry&amp;gt;&lt;br /&gt;
    &amp;lt;businessNumber&amp;gt;555.123.0001&amp;lt;/businessNumber&amp;gt;&lt;br /&gt;
    &amp;lt;homeNumber&amp;gt;555.123.0003&amp;lt;/homeNumber&amp;gt;&lt;br /&gt;
    &amp;lt;mobileNumber&amp;gt;555.123.0004&amp;lt;/mobileNumber&amp;gt;&lt;br /&gt;
    &amp;lt;faxNumber&amp;gt;555.123.0005&amp;lt;/faxNumber&amp;gt;&lt;br /&gt;
    &amp;lt;homeFaxNumber&amp;gt;555.123.0006&amp;lt;/homeFaxNumber&amp;gt;&lt;br /&gt;
    &amp;lt;pagerNumber&amp;gt;555.123.0002&amp;lt;/pagerNumber&amp;gt;&lt;br /&gt;
    &amp;lt;notes&amp;gt;This is my note about my mailbox.&amp;lt;/notes&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;My Title&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;userID&amp;gt;J.Test&amp;lt;/userID&amp;gt;&lt;br /&gt;
    &amp;lt;organizationalStatus&amp;gt;OrgStatus&amp;lt;/organizationalStatus&amp;gt;&lt;br /&gt;
    &amp;lt;employeeType&amp;gt;Full-Time&amp;lt;/employeeType&amp;gt;&lt;br /&gt;
  &amp;lt;/contactInfo&amp;gt;&lt;br /&gt;
  &amp;lt;enabled&amp;gt;true&amp;lt;/enabled&amp;gt;&lt;br /&gt;
&amp;lt;/rsMailbox&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
''{&amp;quot;emailForwardingAddressList&amp;quot;:[&amp;quot;test@resellerallservices.net&amp;quot;],&amp;quot;enableVacationMessage&amp;quot;:true,&amp;quot;enabled&amp;quot;:true,&amp;quot;contactInfo&amp;quot;:{&amp;quot;businessNumber&amp;quot;:&amp;quot;555.123.0001&amp;quot; ,&amp;quot;faxNumber&amp;quot;:&amp;quot;555.123.0005&amp;quot; ,&amp;quot;firstName&amp;quot;:&amp;quot;Jimmy&amp;quot; ,&amp;quot;homeNumber&amp;quot;:&amp;quot;555.123.0003&amp;quot; ,&amp;quot;lastName&amp;quot;:&amp;quot;TestLaste&amp;quot; ,&amp;quot;mobileNumber&amp;quot;:&amp;quot;555.123.0004&amp;quot; ,&amp;quot;notes&amp;quot;:&amp;quot;This is my note about my mailbox.&amp;quot; ,&amp;quot;pagerNumber&amp;quot;:&amp;quot;555.123.0002&amp;quot; ,&amp;quot;businessCity&amp;quot;:&amp;quot;&amp;quot; ,&amp;quot;businessCountry&amp;quot;:&amp;quot;&amp;quot; ,&amp;quot;businessPostalCode&amp;quot;:&amp;quot;&amp;quot; ,&amp;quot;businessState&amp;quot;:&amp;quot;&amp;quot; ,&amp;quot;businessStreet&amp;quot;:&amp;quot;&amp;quot; ,&amp;quot;employeeType&amp;quot;:&amp;quot;DoesNotExist&amp;quot; ,&amp;quot;generationQualifier&amp;quot;:&amp;quot;Jr&amp;quot; ,&amp;quot;homeCity&amp;quot;:&amp;quot;&amp;quot; ,&amp;quot;homeCountry&amp;quot;:&amp;quot;&amp;quot; ,&amp;quot;homeFaxNumber&amp;quot;:&amp;quot;555.123.0006&amp;quot; ,&amp;quot;homePostalCode&amp;quot;:&amp;quot;&amp;quot; ,&amp;quot;homeState&amp;quot;:&amp;quot;&amp;quot; ,&amp;quot;homeStreet&amp;quot;:&amp;quot;&amp;quot; ,&amp;quot;initials&amp;quot;:&amp;quot;A&amp;quot; ,&amp;quot;organizationUnit&amp;quot;:&amp;quot;IT&amp;quot; ,&amp;quot;organizationalStatus&amp;quot;:&amp;quot;gainfully employed&amp;quot; ,&amp;quot;title&amp;quot;:&amp;quot;My Title&amp;quot; ,&amp;quot;userID&amp;quot;:&amp;quot;J.Test&amp;quot;},&amp;quot;name&amp;quot;:&amp;quot;unittestexist&amp;quot; ,&amp;quot;saveForwardedEmail&amp;quot;:false,&amp;quot;size&amp;quot;:10240,&amp;quot;vacationMessage&amp;quot;:&amp;quot;Test Vacation Message&amp;quot;, &amp;quot;createdDate&amp;quot;:&amp;quot;4\/10\/2006 7:47:34 PM&amp;quot;, &amp;quot;currentUsage&amp;quot;:1024, &amp;quot;visibleInExchangeGAL&amp;quot;:false, &amp;quot;visibleInRackspaceEmailCompanyDirectory&amp;quot;:false}''&lt;br /&gt;
&lt;br /&gt;
== Add/Edit ==&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Add: [POST] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /rs/mailboxes/(mailbox name)&lt;br /&gt;
Edit: [PUT] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /rs/mailboxes/(mailbox name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Adds/Edits a Rackspace Email mailbox using the following form fields.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| password&lt;br /&gt;
| string&lt;br /&gt;
| Password (Required for Add)&lt;br /&gt;
|-&lt;br /&gt;
| size&lt;br /&gt;
| positive integer&lt;br /&gt;
| Mailbox size in megabytes (Required for Add)&lt;br /&gt;
|-&lt;br /&gt;
| enableVacationMessage&lt;br /&gt;
| boolean&lt;br /&gt;
| indicates whether vacation message has been enabled&lt;br /&gt;
|-&lt;br /&gt;
| vacationMessage&lt;br /&gt;
| string&lt;br /&gt;
| A mailbox's vacation message&lt;br /&gt;
|-&lt;br /&gt;
| emailForwardingAddresses&lt;br /&gt;
| string&lt;br /&gt;
| A comma delimited list, Maximum 15 addresses, 4 of which can be outside of this domain&lt;br /&gt;
|-&lt;br /&gt;
| saveForwardedEmail&lt;br /&gt;
| string&lt;br /&gt;
| Indicates whether to save a copy of any forwarded email&lt;br /&gt;
|-&lt;br /&gt;
| lastName&lt;br /&gt;
| string&lt;br /&gt;
| A last name&lt;br /&gt;
|-&lt;br /&gt;
| firstName&lt;br /&gt;
| string&lt;br /&gt;
| A first name&lt;br /&gt;
|-&lt;br /&gt;
| generationQualifier&lt;br /&gt;
| string&lt;br /&gt;
| A person's generation (ex. Jr., Sr., III)&lt;br /&gt;
|-&lt;br /&gt;
| initials&lt;br /&gt;
| string&lt;br /&gt;
| A person's middle initial&lt;br /&gt;
|-&lt;br /&gt;
| organizationUnit&lt;br /&gt;
| string&lt;br /&gt;
| A person's organization unit (ex. Marketing)&lt;br /&gt;
|-&lt;br /&gt;
| businessNumber&lt;br /&gt;
| string&lt;br /&gt;
| Business phone number&lt;br /&gt;
|-&lt;br /&gt;
| pagerNumber&lt;br /&gt;
| string&lt;br /&gt;
| Pager phone number&lt;br /&gt;
|-&lt;br /&gt;
| homeNumber&lt;br /&gt;
| string&lt;br /&gt;
| Home phone number&lt;br /&gt;
|-&lt;br /&gt;
| mobileNumber&lt;br /&gt;
| string&lt;br /&gt;
| Mobile phone number&lt;br /&gt;
|-&lt;br /&gt;
| faxNumber&lt;br /&gt;
| string&lt;br /&gt;
| Fax phone number &lt;br /&gt;
|-&lt;br /&gt;
| homeFaxNumber&lt;br /&gt;
| string&lt;br /&gt;
| Home Fax phone number &lt;br /&gt;
|-&lt;br /&gt;
| businessStreet&lt;br /&gt;
| string&lt;br /&gt;
| The business street address for a contact&lt;br /&gt;
|-&lt;br /&gt;
| businessCity&lt;br /&gt;
| string&lt;br /&gt;
| The business city for a contact&lt;br /&gt;
|-&lt;br /&gt;
| businessState&lt;br /&gt;
| string&lt;br /&gt;
| The business state for a contact&lt;br /&gt;
|-&lt;br /&gt;
| businessPostalCode&lt;br /&gt;
| string&lt;br /&gt;
| The business postal code/zip code for a contact&lt;br /&gt;
|-&lt;br /&gt;
| businessCountry&lt;br /&gt;
| string&lt;br /&gt;
| The business country for a contact&lt;br /&gt;
|-&lt;br /&gt;
| homeStreet&lt;br /&gt;
| string&lt;br /&gt;
| The home street address for a contact&lt;br /&gt;
|-&lt;br /&gt;
| homeCity&lt;br /&gt;
| string&lt;br /&gt;
| The home city for a contact&lt;br /&gt;
|-&lt;br /&gt;
| homeState&lt;br /&gt;
| string&lt;br /&gt;
| The home state for a contact&lt;br /&gt;
|-&lt;br /&gt;
| homePostalCode&lt;br /&gt;
| string&lt;br /&gt;
| The home postal code/zip code for a contact&lt;br /&gt;
|-&lt;br /&gt;
| homeCountry&lt;br /&gt;
| string&lt;br /&gt;
| The home country for a contact&lt;br /&gt;
|-&lt;br /&gt;
| notes&lt;br /&gt;
| string&lt;br /&gt;
| Any notes for the mailbox&lt;br /&gt;
|-&lt;br /&gt;
| title&lt;br /&gt;
| string&lt;br /&gt;
| A contact's title&lt;br /&gt;
|-&lt;br /&gt;
| userID&lt;br /&gt;
| string&lt;br /&gt;
| A user ID for a contact&lt;br /&gt;
|-&lt;br /&gt;
| organizationalStatus&lt;br /&gt;
| string&lt;br /&gt;
| A contact's organization status&lt;br /&gt;
|-&lt;br /&gt;
| employeeType&lt;br /&gt;
| string&lt;br /&gt;
| A contact's employee type&lt;br /&gt;
|-&lt;br /&gt;
| enabled&lt;br /&gt;
| boolean&lt;br /&gt;
| Status of the mailbox: true = enabled, false = disabled.&lt;br /&gt;
|-&lt;br /&gt;
| visibleInRackspaceEmailCompanyDirectory&lt;br /&gt;
| boolean&lt;br /&gt;
| Flag indicating whether the mailbox is visible in the company directory&lt;br /&gt;
|-&lt;br /&gt;
| visibleInExchangeGAL&lt;br /&gt;
| boolean&lt;br /&gt;
| Flag indicating whether the mailbox is visible in the Exchange Global Address List&lt;br /&gt;
|- &lt;br /&gt;
| currentUsage '''''(read only)'''''&lt;br /&gt;
| positive integer&lt;br /&gt;
| Current space used in mailbox (in MB)&lt;br /&gt;
|- &lt;br /&gt;
| createdDate '''''(read only)'''''&lt;br /&gt;
| string&lt;br /&gt;
| Date of mailbox creation, EST Time (in string format)&lt;br /&gt;
|- &lt;br /&gt;
| lastLogin '''''(read only)'''''&lt;br /&gt;
| string&lt;br /&gt;
| Date of last login, EST Time (in string format)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post '/customers/12345678/domains/example.com/rs/mailboxes/alex.smith', 'text/xml',&lt;br /&gt;
{ &lt;br /&gt;
  'password' =&amp;gt; 'Secret13!@#',&lt;br /&gt;
  'size' =&amp;gt; '2048',&lt;br /&gt;
  'enableVacationMessage' =&amp;gt; 'true',&lt;br /&gt;
  'vacationMessage' =&amp;gt; 'My Vacation Message',&lt;br /&gt;
  'emailForwardingAddresses' =&amp;gt; 'sampletest@example.com,sampletest2@example.com',&lt;br /&gt;
  'saveForwardedEmail' =&amp;gt; 'false'&lt;br /&gt;
  'lastName' =&amp;gt; 'Testlastname',&lt;br /&gt;
  'firstName' =&amp;gt;  'Jay',&lt;br /&gt;
  'generationQualifier' =&amp;gt;  'III',&lt;br /&gt;
  'initials' =&amp;gt;  'A',&lt;br /&gt;
  'organizationUnit' =&amp;gt;  'IT',&lt;br /&gt;
  'businessStreet' =&amp;gt;  '123 Biz St.',&lt;br /&gt;
  'businessCity' =&amp;gt;  'Blacksburg',&lt;br /&gt;
  'businessState' =&amp;gt;  'VA',&lt;br /&gt;
  'businessPostalCode' =&amp;gt;  '24060',&lt;br /&gt;
  'businessCountry' =&amp;gt;  'USA',&lt;br /&gt;
  'homeStreet' =&amp;gt;  '456 Home St.',&lt;br /&gt;
  'homeCity' =&amp;gt;  'Charlotte',&lt;br /&gt;
  'homeState' =&amp;gt;  'NC',&lt;br /&gt;
  'homePostalCode' =&amp;gt;  '28210',&lt;br /&gt;
  'homeCountry' =&amp;gt;  'USA',&lt;br /&gt;
  'notes' =&amp;gt;  'This is my note about my mailbox.',&lt;br /&gt;
  'title' =&amp;gt;  'My Title',&lt;br /&gt;
  'userID' =&amp;gt;  'J.Test',&lt;br /&gt;
  'organizationalStatus' =&amp;gt;  'OrgStatus',&lt;br /&gt;
  'employeeType' =&amp;gt;  'Full-Time'&lt;br /&gt;
  'visibleInExchangeGAL'=&amp;gt;'true', &lt;br /&gt;
  'visibleInRackspaceEmailCompanyDirectory' =&amp;gt; 'false'&lt;br /&gt;
  &lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Delete ==&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[DELETE] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
            /rs/mailboxes/(mailbox name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Deletes the mailbox. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The mailbox and mailbox contents are deleted permanently.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
delete '/customers/12345678/domains/example.com/rs/mailboxes/alex.smith', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zhen.wei</name></author>	</entry>

	<entry>
		<id>http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Rest_API&amp;diff=416</id>
		<title>Rest API</title>
		<link rel="alternate" type="text/html" href="http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Rest_API&amp;diff=416"/>
				<updated>2010-08-23T18:40:23Z</updated>
		
		<summary type="html">&lt;p&gt;Zhen.wei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Recent Changes ==&lt;br /&gt;
&lt;br /&gt;
'''08/01/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Added Rackspace Email Mailbox Contact info. See [[Rackspace_Mailbox_(Rest_API)| here]].&lt;br /&gt;
* Added Create Login Token. See [[Customer_(Rest_API)#Create_Login_Tokens| here]].&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''06/20/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Added [[Rackspace_Alias(Rest_API)| Rackspace Email Alias]].&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''06/11/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Added Rackspace Email Mailbox Spam Settings/Blacklist/Safelist. See [[Rackspace_Mailbox_Spam_(Rest_API)| here]].&lt;br /&gt;
* Now Rackspace Email Mailbox can Show/Edit vacation message and email forwarding address. See [[Rackspace_Mailbox_(Rest_API)| here]].&lt;br /&gt;
* Added SharePoint Service Settings. See [[SharePoint_(Rest_API)| here]].&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''05/16/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Added shortened URLs. Any URLs that starts with '/customers/me/domains/~' is equivalent to '/domains/~'.&lt;br /&gt;
* Added Rackspace Email Mailbox Add/Edit/Delete/Index. See [[Rackspace_Mailbox_(Rest_API)| here]].&lt;br /&gt;
* Allows to customize Exchange mailbox list result. See [[Exchange_Mailbox_(Rest_API)#Index| Exchange Mailbox Index]] action 'Custom Fields' section.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
Changes:&lt;br /&gt;
* Server throttling section has been updated. See [[Rest_API#Throttling| here]].&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
Bug fix:&lt;br /&gt;
* Fixed a bug that request without User-Agent Header gets 500 error. Now it gets &amp;quot;Authentication failed&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''03/28/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Rest API can be accessed by Business Users. However, not all operations are available.&lt;br /&gt;
* Domain Public Folders can be enabled now.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
Deprecated:&lt;br /&gt;
* Good Mobile Service is no longer supported.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''03/14/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Index/Add/Edit/Delete Mailbox Permissions.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
Known Issues:&lt;br /&gt;
* Domain public folders can't be enabled using Rest API at this moment. The next release (on 03/21/2010) will fix this problem.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The Email &amp;amp; Apps Control Panel API provides most of the functions of the Control Panel through a REST-based [http://en.wikipedia.org/wiki/Web_service web API]. Whether it is adding a new customer account, adding mailboxes, or any other of the supported features the API allows your application to administer the changes regardless of your application's language or nature. For more information on RESTful web services refer to the following sites:&lt;br /&gt;
&lt;br /&gt;
[http://www.peej.co.uk/articles/restfully-delicious.html Paul James's Homepage: A RESTful Web service, an example]&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Representational_State_Transfer#External_links Wikipedia: Representational State Transfer - External Links]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The API is accessible to all with access to Control Panel, including resellers, business customers, enterprise customers, and indirect customers. However, not all operations are available to non-resellers. See the [[Rest_API#Operations|Operations]] section for more details.&lt;br /&gt;
&lt;br /&gt;
== Operations ==&lt;br /&gt;
&lt;br /&gt;
The following pages detail the operations that the API supports. The operations are grouped into sections based on the entity/object types that each operation interacts with. Non-resellers do not have access to all functions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Resource&lt;br /&gt;
!Example URI&lt;br /&gt;
!Business User Access&lt;br /&gt;
|-&lt;br /&gt;
| [[Customer_(Rest_API)| Customer]]&lt;br /&gt;
| /customers/123456789&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| [[Domain_(Rest_API)| Domain]]&lt;br /&gt;
| /customers/123456789/domains/example.com&lt;br /&gt;
| [[Domain_(Rest_API)#Index| Index]], [[Domain_(Rest_API)#Show| Show]], [[Domain_(Rest_API)#Split Domain Routing| Split Domain Routing]], [[Domain_(Rest_API)#Archiving SSO Login URL| Archiving SSO Login URL]], [[Domain_(Rest_API)#Domain Public Folders|Domain Public Folders ]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Domain_Spam_(Rest_API)| Domain Spam Settings]]&lt;br /&gt;
| /customers/123456789/domains/example.com/spam/settings&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Rackspace_Mailbox_(Rest_API)|  Rackspace Email Mailbox]]&lt;br /&gt;
|  /customers/123456789/domains/example.com/rs/mailboxes/john.smith&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Rackspace_Mailbox_Spam_(Rest_API)| Rackspace Email Mailbox Spam Settings]]&lt;br /&gt;
|  /customers/123456789/domains/example.com/rs/mailboxes/john.smith/spam&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Rackspace_Alias(Rest_API)|  Rackspace Email Alias]]&lt;br /&gt;
|  /customers/123456789/domains/example.com/rs/mailboxes/john.smith/alias&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Mailbox_(Rest_API)| Exchange Mailbox]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/mailboxes/john.smith&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Mailbox_Spam_(Rest_API)| Exchange Mailbox Spam Settings]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/mailboxes/john.smith/spam&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Contact_(Rest_API)| Exchange Contact]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/contacts/john.smith&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Distribution_List_(Rest_API)| Exchange Distribution List]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/distributionlists/group.name&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Resource_Mailbox_(Rest_API)| Exchange Resource Mailbox]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/resources/conference.room&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[SharePoint_(Rest_API)| SharePoint]]&lt;br /&gt;
| /customers/123456789/sharepoint/settings&lt;br /&gt;
| [[SharePoint_(Rest_API)#Show | Show]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The examples shown in the operation pages are written in Ruby and extensively use the helper functions shown in the Ruby Examples below.&lt;br /&gt;
&lt;br /&gt;
== Quick Start ==&lt;br /&gt;
&lt;br /&gt;
'''What you need:'''&lt;br /&gt;
* A Rackspace Email and Apps Control Panel admin account&lt;br /&gt;
* A HTTP class library that supports TLS and the HTTP methods: GET, POST, PUT, DELETE.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Making your first API call, an Show Customer request:'''&lt;br /&gt;
# Obtain your API keys&lt;br /&gt;
#:* Click on My Account at the top of the [https://apps.rackspace.com/?cp Control Panel web interface]. Under the Administrators heading there will be an link for the API keys page.&lt;br /&gt;
# Set up your client's HTTP request&lt;br /&gt;
#:* Set up your client to make calls to a URL beginning with &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/v0&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
#:* Populate the Accept, User-Agent and X-Api-Signature HTTP request headers correctly. This is explained in detail [[#HTTP Headers|here]].&lt;br /&gt;
# Make a GET request to /customers/me.&lt;br /&gt;
#:* The complete URI will be &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/v0/customers/me&amp;lt;/nowiki&amp;gt;. Use your HTTP library to retrieve the HTTP response code, 'x-error-message' HTTP response header and HTTP response body so that they may be displayed to help debug and determine success.&lt;br /&gt;
'''From here:'''&lt;br /&gt;
* Learn about the operations you'll be implementing at the subpages [[#Operations|here]].&lt;br /&gt;
&lt;br /&gt;
== Accessing the API ==&lt;br /&gt;
&lt;br /&gt;
Your application will need to make HTTP requests to remote servers. Most programming languages have this function provided in its class library. In addition to the common GET and POST HTTP methods, the library used will also need to support PUT and DELETE.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&lt;br /&gt;
Calls without [http://en.wikipedia.org/wiki/Transport_Layer_Security TLS] (formerly SSL) will complete successfully but it is HIGHLY RECOMMENDED that TLS always be used. Interception of unencrypted communication will allow a third party to have complete access to all functions available via the API.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For some language libraries just using an URL with https:// will cause the library to use TLS. In some other libraries however some options specific to the library may have to be configured to utilize TLS. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All API calls should be directed to a URL in the following format:&lt;br /&gt;
&amp;lt;pre&amp;gt;https://api.emailsrvr.com/(version)/(resource)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;https://api.emailsrvr.com/v0/customers/12345678/domains/customerbusiness.com&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Versions ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Supported Versions''&lt;br /&gt;
!''URL''&lt;br /&gt;
!''Version Documentation''&lt;br /&gt;
|-&lt;br /&gt;
| v0 (current)&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/v0/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
| http://signup.apps.rackspace.com/api-wiki/index.php/Rest_API&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The API version number is a component of the URL that is used to access the API. For example, to access the root of the API, the URL is https://api.emailsrvr.com/v0/. Bug fixes and minor non-breaking changes will be made without changing the version number. When major features or breaking changes are introduced, the version number will be incremented. It is not yet determined how many versions are going to be supported at any one time.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Non-breaking Changes''&lt;br /&gt;
!''Breaking Changes''&lt;br /&gt;
|-&lt;br /&gt;
| Adding new fields or attributes to form fields sent&lt;br /&gt;
| Changing or deleting any fields in form fields sent&lt;br /&gt;
|-&lt;br /&gt;
| Adding fields in returned data&lt;br /&gt;
| Changing or removing fields in returned data&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| Changing the URI of any resource&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Authentication ===&lt;br /&gt;
&lt;br /&gt;
To gain access to the API, your request must include a properly constructed X-Api-Signature HTTP header. Details on what to put in the header are below. To construct the header, you must have the following keys that that are generated from the [https://apps.rackspace.com/?cp Control Panel Web interface]. The key generation page can be found by clicking 'My Account' at the top, then 'Generate API Keys' in the Administrators section.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Key Name&lt;br /&gt;
!Description&lt;br /&gt;
!Example&lt;br /&gt;
|-&lt;br /&gt;
| User Key&lt;br /&gt;
| A public key that corresponds to your admin id&lt;br /&gt;
| ''eGbq9/2hcZsRlr1JV1Pi''&lt;br /&gt;
|-&lt;br /&gt;
| Secret Key&lt;br /&gt;
| A shared secret key&lt;br /&gt;
| ''QHOvchm/40czXhJ1OxfxK7jDHr3t''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An unsuccessful authentication will result in a 403 HTTP code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== X-Api-Signature Header ====&lt;br /&gt;
&lt;br /&gt;
Format is as follows:&lt;br /&gt;
&amp;lt;'''User Key'''&amp;gt;:&amp;lt;'''Timestamp'''&amp;gt;:&amp;lt;'''SHA1 Hash'''&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Example: ''eGbq9/2hcZsRlr1JV1Pi:20010317143725:46VIwd66mOFGG8IkbgnLlXnfnkU=''&lt;br /&gt;
&lt;br /&gt;
Remember to include the colons between the data strings!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''User Key''':&amp;lt;br&amp;gt;&lt;br /&gt;
This is the public key issued by the Control Panel browser interface.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Timestamp''':&amp;lt;br&amp;gt;&lt;br /&gt;
The format is YYYYMMDDHHmmss. All values besides year are zero-padded to two spaces. For example, March 08th 2001 at 2:37.25pm would be ''20010308143725''.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|YYYY&lt;br /&gt;
|Four-digit year&lt;br /&gt;
|-&lt;br /&gt;
| MM&lt;br /&gt;
| Month&lt;br /&gt;
|-&lt;br /&gt;
| DD&lt;br /&gt;
| Day&lt;br /&gt;
|-&lt;br /&gt;
| HH&lt;br /&gt;
| Hour in 24h format&lt;br /&gt;
|-&lt;br /&gt;
| mm&lt;br /&gt;
| Minute&lt;br /&gt;
|-&lt;br /&gt;
| ss&lt;br /&gt;
| Second&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''SHA1 Hash''':&lt;br /&gt;
&lt;br /&gt;
A SHA1 (Secure Hash Algorithm) hash must be applied to a string with the following information:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;'''User Key'''&amp;gt;&amp;lt;'''User Agent'''&amp;gt;&amp;lt;'''Timestamp'''&amp;gt;&amp;lt;'''Secret Key'''&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that the 'User Agent' must be the exact same as what is specified in the User-Agent HTTP header. Using the above example data, the string before hashing is:&amp;lt;br&amp;gt;''eGbq9/2hcZsRlr1JV1PiRackspace Management Interface20010308143725QHOvchm/40czXhJ1OxfxK7jDHr3t''&lt;br /&gt;
&lt;br /&gt;
Resulting base-64 SHA1 Hash:&amp;lt;br&amp;gt;''46VIwd66mOFGG8IkbgnLlXnfnkU=''&lt;br /&gt;
&lt;br /&gt;
Be sure to encode the binary hash, not the hex hash, into base-64. The resulting string should be 28 characters long.&lt;br /&gt;
&lt;br /&gt;
== Using the API ==&lt;br /&gt;
&lt;br /&gt;
=== Requests ===&lt;br /&gt;
&lt;br /&gt;
HTTP requests should be sent to the server with the correct URL, HTTP method, HTTP headers and form data (if needed). The URL specifies the resource, the HTTP method specifies what operation is done on the resource, and form data is used to specify the details of the resource when the resource is added or edited.&lt;br /&gt;
&lt;br /&gt;
The URLs, corresponding HTTP methods, and necessary form data for the desired operations are detailed in the [[#Operations|operation pages]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you're getting the HTTP status code 417 see [[Handling HTTP code 417:  Expectation failed]]&lt;br /&gt;
&lt;br /&gt;
==== URL ====&lt;br /&gt;
&lt;br /&gt;
The URLs are specifies the resource or resource collection. Objects are organized in a tree collection, starting with customers at the top, then domains, then domain objects next (such as mailboxes, contacts, and distribution lists) and so on. The URLs of the resources and collections accessible are found on the operation pages.&lt;br /&gt;
&lt;br /&gt;
==== HTTP Method ====&lt;br /&gt;
&lt;br /&gt;
It is the HTTP method that specifies what operation will be done on the resource. For example, to get the details of a mailbox a HTTP GET will be done on /customers/12345678/domains/example.com/ex/mailboxes/john.smith. If the mailbox does not exist, a HTTP POST to the same URL with the necessary form data will add the mailbox. Then, a HTTP PUT to the same URL will edit mailbox. And to delete the mailbox, an HTTP DELETE would be used.&lt;br /&gt;
&lt;br /&gt;
The types of operations a certain method performs is outlined below.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''HTTP Method''&lt;br /&gt;
!''Operations''&lt;br /&gt;
!''Response''&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=2|GET&lt;br /&gt;
|Index - returns a list of the resources&lt;br /&gt;
|rowspan=2|XML or JSON formatted data&lt;br /&gt;
|-&lt;br /&gt;
|Show - returns the details of the resource&lt;br /&gt;
|-&lt;br /&gt;
|POST&lt;br /&gt;
|Add - adds a new resource&lt;br /&gt;
|rowspan=3|Response code and error message (if applicable) only&lt;br /&gt;
|-&lt;br /&gt;
|PUT&lt;br /&gt;
|Edit - changes the details of the resource&lt;br /&gt;
|-&lt;br /&gt;
|DELETE&lt;br /&gt;
|Delete - deletes the resource&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== HTTP Headers ====&lt;br /&gt;
&lt;br /&gt;
All requests to the API must then include HTTP headers with the following information:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Header Name''&lt;br /&gt;
!''Description''&lt;br /&gt;
!''Example Header Value''&lt;br /&gt;
|-&lt;br /&gt;
| Accept&lt;br /&gt;
| The requested content type (required for Index and Show actions). Fill this with either 'text/xml' or 'application/json'. See [[#Formats|Response Formats]]&lt;br /&gt;
| ''text/xml''&lt;br /&gt;
|-&lt;br /&gt;
| User-Agent&lt;br /&gt;
| An identifier you choose for your client software&lt;br /&gt;
| ''Rackspace Management Interface''&lt;br /&gt;
|-&lt;br /&gt;
| X-Api-Signature&lt;br /&gt;
| An authentication string explained in detail [[#X-Api-Signature_Header|here]]&lt;br /&gt;
| ''eGbq9/2hcZsRlr1JV1Pi:20010317143725:HKUn0aajpSDx7qqGK3vqzn3FglI=''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Form Data ====&lt;br /&gt;
&lt;br /&gt;
When using Add and Edit operations, the details of the resource are sent to the API server via HTTP form data. Your HTTP library should include methods for sending form data along with an HTTP request. The library should by default send the data in the HTTP request body using the 'application/x-www-form-urlencoded' data format.&lt;br /&gt;
&lt;br /&gt;
==== Index Filter/Search ====&lt;br /&gt;
&lt;br /&gt;
The results of Index actions can be filtered/searched. The index URLs can take either one of the query strings: &amp;quot;?startswith=xx&amp;quot; or &amp;quot;?contains=xx,&amp;quot; where &amp;quot;xx&amp;quot; is the key word. If the request specifies more than one of these two query strings, a 400 HTTP error will be returned. Different fields will be searched depending on the resource type, see below.&lt;br /&gt;
&lt;br /&gt;
Note that &amp;quot;0-9&amp;quot; is a reserved key word for query string &amp;quot;startswith.&amp;quot; It represents any result starting with numbers.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Index Actions''&lt;br /&gt;
!''Where the key word will be searched''&lt;br /&gt;
|-&lt;br /&gt;
| Customer&lt;br /&gt;
| Customer name, account number, reference number&lt;br /&gt;
|-&lt;br /&gt;
| Domain&lt;br /&gt;
| Domain name&lt;br /&gt;
|-&lt;br /&gt;
| Mailbox&lt;br /&gt;
| Mailbox name, mailbox display name&lt;br /&gt;
|-&lt;br /&gt;
| Contact&lt;br /&gt;
| Contact display name, external email&lt;br /&gt;
|-&lt;br /&gt;
| Group&lt;br /&gt;
| Group name, group display name&lt;br /&gt;
|-&lt;br /&gt;
| Mobile Service&lt;br /&gt;
| Associated mailbox name, mailbox display name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Throttling ====&lt;br /&gt;
&lt;br /&gt;
The server limits the number of requests allowed per user in a certain period of time.  The number of requests made are logged per minute. Calls that were made correctly with a user's API key, but not completed for any reason, including those exceeding the throttle limit, are included in this count.&lt;br /&gt;
&lt;br /&gt;
If a user is over the throttling limit then a 403 HTTP code will be returned with an &amp;quot;Exceeded request limits&amp;quot; message.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Operation Category''&lt;br /&gt;
!''Request Limit''&lt;br /&gt;
|-&lt;br /&gt;
| GET&lt;br /&gt;
| 60 per minute&lt;br /&gt;
|-&lt;br /&gt;
| PUT, POST, DELETE&lt;br /&gt;
| 30 per minute&lt;br /&gt;
|-&lt;br /&gt;
| POST, PUT, DELETE on a domain&lt;br /&gt;
| 2 per minute&lt;br /&gt;
|-&lt;br /&gt;
| POST, DELETE on alternate domains&lt;br /&gt;
| 2 per minute&lt;br /&gt;
|-&lt;br /&gt;
| Enabling public folders for a domain&lt;br /&gt;
| 1 per 5 minutes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&lt;br /&gt;
Index of Exchange Mailboxes:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hypertext Transfer Protocol&lt;br /&gt;
    GET /v0/customers/12345678/domains/example.com/ex/mailboxes?size=100&amp;amp;offset=100 HTTP/1.1&lt;br /&gt;
    Host: api.emailsrvr.com&lt;br /&gt;
    User-Agent: Rackspace Management Interface&lt;br /&gt;
    X-Api-Signature: eGbq9/2hcZsRlr1JV1Pi:20010317143725:HKUn0aajpSDx7qqGK3vqzn3FglI=&lt;br /&gt;
    Accept: text/xml&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Adding New Exchange Mailbox:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hypertext Transfer Protocol&lt;br /&gt;
    POST /v0/customers/12345678/domains/example.com/ex/mailboxes/john.smith HTTP/1.1&lt;br /&gt;
    Host: api.emailsrvr.com&lt;br /&gt;
    User-Agent: Rackspace Management Interface&lt;br /&gt;
    X-Api-Signature: eGbq9/2hcZsRlr1JV1Pi:20010317143725:HKUn0aajpSDx7qqGK3vqzn3FglI=&lt;br /&gt;
    Content-Length: 53&lt;br /&gt;
        [Content length: 53]&lt;br /&gt;
    Content-Type: application/x-www-form-urlencoded&lt;br /&gt;
 &lt;br /&gt;
Line-based text data: application/x-www-form-urlencoded&lt;br /&gt;
    size=2048&amp;amp;displayName=John%20Smith&amp;amp;password=abcABC123&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Responses ===&lt;br /&gt;
&lt;br /&gt;
==== HTTP Status Code ====&lt;br /&gt;
&lt;br /&gt;
On a successfully executed request, a 200 HTTP Code is returned. If the request was unsuccessful however, an HTTP error code in the 400s or 500s will be returned.&lt;br /&gt;
&lt;br /&gt;
==== HTTP Response Body ====&lt;br /&gt;
&lt;br /&gt;
If the request is an Index or Show request, the request data will be returned in the format specified in the HTTP Body.&lt;br /&gt;
&lt;br /&gt;
===== Formats =====&lt;br /&gt;
&lt;br /&gt;
Requests for data (index and show requests) are returned with XML or JSON data based on what your application populates the [[#HTTP_Headers|HTTP Accept headers]] with.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For XML, populate the header with 'text/xml' (ex: Headers![&amp;quot;Accept&amp;quot;] = &amp;quot;text/xml&amp;quot;). The XML document returned will conform to a published XSD (XML Schema Document). There are many ways to parse the data in an XML document, but we have found that the [http://www.w3schools.com/XPath/default.asp XPath] tree-style traversal has served our purposes. In any case, your application will likely need to use a class library for your chosen method.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For JSON, populate the header with 'application/json' (ex: Headers![&amp;quot;Accept&amp;quot;] = &amp;quot;application/json&amp;quot;). As with XML, a library will likely be needed to parse the data.&lt;br /&gt;
&lt;br /&gt;
==== HTTP Headers ====&lt;br /&gt;
&lt;br /&gt;
The only data returned in the header is the error message (if any).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Header Name''&lt;br /&gt;
!''Description''&lt;br /&gt;
!''Example Header Value''&lt;br /&gt;
|-&lt;br /&gt;
| x-error-message&lt;br /&gt;
| The error message. See [[#Errors|Errors]].&lt;br /&gt;
| Missing required field: name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Errors ====&lt;br /&gt;
&lt;br /&gt;
In the event of an error, the error message will be returned the HTTP header '''x-error-message''' and an HTTP Status Code in the '''400'''s or '''500'''s will be returned.&lt;br /&gt;
&lt;br /&gt;
Note: Every language's HTTP library provides methods for retrieving HTTP response codes and response headers.&lt;br /&gt;
&lt;br /&gt;
Below are some errors that are common to many operations. Each operation also has some specific errors which are outlined with the operation. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
|Format is invalid&lt;br /&gt;
|400&lt;br /&gt;
|When requesting an index or show on a resource the 'Accept' header should be either 'text/xml' or 'application/json'&lt;br /&gt;
|-&lt;br /&gt;
|Expectation  Failed: See [[Handling HTTP code 417: Expectation failed]]&lt;br /&gt;
|417&lt;br /&gt;
|(none)&lt;br /&gt;
|-&lt;br /&gt;
|Customer account number is invalid&lt;br /&gt;
|404&lt;br /&gt;
|Invalid account number&lt;br /&gt;
|-&lt;br /&gt;
|Domain is not found&lt;br /&gt;
|404&lt;br /&gt;
|&amp;lt;domain name&amp;gt; not found&lt;br /&gt;
|-&lt;br /&gt;
|Mailbox is not found&lt;br /&gt;
|404&lt;br /&gt;
|Mailbox not found&lt;br /&gt;
|-&lt;br /&gt;
|Required form field is missing&lt;br /&gt;
|400&lt;br /&gt;
|Missing required field: &amp;lt;required field&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Required form field has null or empty string input&lt;br /&gt;
|400&lt;br /&gt;
|Required field &amp;lt;required field&amp;gt; cannot be empty&lt;br /&gt;
|-&lt;br /&gt;
|Integer form field has non-integer input&lt;br /&gt;
|400&lt;br /&gt;
|Invalid format for &amp;lt;field&amp;gt;, input must be an integer&lt;br /&gt;
|-&lt;br /&gt;
|Boolean form field has non-boolean input&lt;br /&gt;
|400&lt;br /&gt;
|Invalid format for &amp;lt;field&amp;gt;, input must be True or False&lt;br /&gt;
|-&lt;br /&gt;
|Form data has an unrecognized field&lt;br /&gt;
|400&lt;br /&gt;
|Unrecognized field: &amp;lt;field&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Entered invalid IP address&lt;br /&gt;
| 400&lt;br /&gt;
| invalid ip address: 123&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Paging ====&lt;br /&gt;
&lt;br /&gt;
The results of Index actions are split into pages to lessen potentially high resource usage. The index URLs have a query string with parameters in the format &amp;quot;?size=xx&amp;amp;offset=xx.&amp;quot; If a query parameter is omitted, the default value is used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Query Parameter''&lt;br /&gt;
!''Default''&lt;br /&gt;
!''Maximum''&lt;br /&gt;
!''Notes''&lt;br /&gt;
|-&lt;br /&gt;
| size&lt;br /&gt;
| 50&lt;br /&gt;
| 250&lt;br /&gt;
| This is the number of elements per page.&lt;br /&gt;
|-&lt;br /&gt;
| offset&lt;br /&gt;
| 0&lt;br /&gt;
| N/A&lt;br /&gt;
| This is the number of items to offset away from the first item in the list.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Example =====&lt;br /&gt;
&lt;br /&gt;
A PHP Example of paging can be found [[PHP_Examples_(Rest_API)| here]].&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 200 OK&lt;br /&gt;
Cache-Control: private&lt;br /&gt;
Content-Type: text/xml; charset=utf-8&lt;br /&gt;
Server: Microsoft-IIS/7.0&lt;br /&gt;
Date: Fri, 04 Dec 2009 19:08:11 GMT&lt;br /&gt;
Content-Length: 430&lt;br /&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;domainList xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:domainList&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;offset&amp;gt;0&amp;lt;/offset&amp;gt;&lt;br /&gt;
  &amp;lt;size&amp;gt;50&amp;lt;/size&amp;gt;&lt;br /&gt;
  &amp;lt;total&amp;gt;1&amp;lt;/total&amp;gt;&lt;br /&gt;
  &amp;lt;domains&amp;gt;&lt;br /&gt;
    &amp;lt;domain&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;customer.com&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;accountNumber&amp;gt;123456&amp;lt;/accountNumber&amp;gt;&lt;br /&gt;
      &amp;lt;serviceType&amp;gt;rsemail&amp;lt;/serviceType&amp;gt;&lt;br /&gt;
    &amp;lt;/domain&amp;gt;&lt;br /&gt;
  &amp;lt;/domains&amp;gt;&lt;br /&gt;
&amp;lt;/domainList&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 404 Not Found&lt;br /&gt;
Cache-Control: private&lt;br /&gt;
Server: Microsoft-IIS/7.0&lt;br /&gt;
x-error-message: Customer Not Found&lt;br /&gt;
Date: Fri, 04 Dec 2009 19:13:59 GMT&lt;br /&gt;
Content-Length: 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 400 Bad Request&lt;br /&gt;
Cache-Control: private&lt;br /&gt;
Server: Microsoft-IIS/7.0&lt;br /&gt;
x-error-message: Missing required field: type&lt;br /&gt;
Date: Fri, 04 Dec 2009 19:17:29 GMT&lt;br /&gt;
Content-Length: 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
This examples is written in [http://www.ruby-lang.org/en/ Ruby]. To make the examples shorter, helper methods have been written. These methods are part of a NetMethods module. The contents of the NetMethods module is listed below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require  'server.rb'&lt;br /&gt;
&lt;br /&gt;
server = Server.new&lt;br /&gt;
&lt;br /&gt;
response = server.get  '/customers', server.xml_format&lt;br /&gt;
&lt;br /&gt;
#fields = Hash['serviceType' =&amp;gt;  'exchange', 'exchangeMaxNumMailboxes' =&amp;gt; '4']&lt;br /&gt;
#response =  server.post '/customers/me/domains/newdomain.com', fields&lt;br /&gt;
&lt;br /&gt;
puts response.code&lt;br /&gt;
puts response['x-error-message']&lt;br /&gt;
puts response.body&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require 'test/unit/assertions'&lt;br /&gt;
require 'net/http'&lt;br /&gt;
require 'date'&lt;br /&gt;
require 'date/format'&lt;br /&gt;
require 'digest/sha1'&lt;br /&gt;
require 'base64'&lt;br /&gt;
require 'time'&lt;br /&gt;
&lt;br /&gt;
class Server&lt;br /&gt;
  include Test::Unit::Assertions&lt;br /&gt;
  &lt;br /&gt;
  def initialize(server='api.emailsrvr.com', version_prefix='/v0', user_key='xxxxxxxxxxxxxxxxxxxx', secret_hash='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')&lt;br /&gt;
    @server = server&lt;br /&gt;
    @version_prefix = version_prefix&lt;br /&gt;
    @user_key = user_key&lt;br /&gt;
    @secret_hash = secret_hash&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
# Response Type Enums&lt;br /&gt;
&lt;br /&gt;
  def xml_format&lt;br /&gt;
    'text/xml'&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def json_format&lt;br /&gt;
    'application/json'&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# HTTP Request Verbs&lt;br /&gt;
#  &lt;br /&gt;
  def get(url_string, format)&lt;br /&gt;
    uri = full_uri(url_string)&lt;br /&gt;
    headers = prepared_headers&lt;br /&gt;
    headers['Accept'] = format&lt;br /&gt;
    request = Net::HTTP::Get.new(request_uri(uri), headers)&lt;br /&gt;
    http_response = make_request request, uri&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def delete(url_string)&lt;br /&gt;
    uri = full_uri(url_string)&lt;br /&gt;
    request = Net::HTTP::Delete.new(request_uri(uri), prepared_headers)&lt;br /&gt;
    http_response = make_request request, uri&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def put(url_string, fields_hash)&lt;br /&gt;
    uri = full_uri(url_string)&lt;br /&gt;
    request = Net::HTTP::Put.new(request_uri(uri), prepared_headers)&lt;br /&gt;
    request.set_form_data(fields_hash)&lt;br /&gt;
    http_response = make_request request, uri&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def post(url_string, fields_hash)&lt;br /&gt;
    uri = full_uri(url_string)&lt;br /&gt;
    request = Net::HTTP::Post.new(request_uri(uri), prepared_headers)&lt;br /&gt;
    request.set_form_data(fields_hash)&lt;br /&gt;
    http_response = make_request request, uri&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
#&lt;br /&gt;
# HTTP Request Helpers&lt;br /&gt;
# &lt;br /&gt;
  def make_request request, uri&lt;br /&gt;
    response = Net::HTTP::start(uri.host, uri.port)  do |http|&lt;br /&gt;
      http.request request&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    response&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def full_uri url_string&lt;br /&gt;
    URI.parse('http://' + @server + @version_prefix + url_string)&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def request_uri uri&lt;br /&gt;
    request = uri.path&lt;br /&gt;
    if ! uri.query.nil?&lt;br /&gt;
      request = request + '?' + uri.query&lt;br /&gt;
    end&lt;br /&gt;
    request&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def prepared_headers&lt;br /&gt;
    headers = Hash.new&lt;br /&gt;
    headers.merge! headers_auth_creds(@user_key, @secret_hash)&lt;br /&gt;
    headers['Accept'] = xml_format&lt;br /&gt;
    headers&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def headers_auth_creds apiKey, secretKey&lt;br /&gt;
    userAgent = 'Ruby Test Client'&lt;br /&gt;
    timestamp = DateTime.now.strftime('%Y%m%d%H%M%S')&lt;br /&gt;
    &lt;br /&gt;
    data_to_sign = apiKey + userAgent + timestamp + secretKey&lt;br /&gt;
    &lt;br /&gt;
    hash = Base64.encode64(Digest::SHA1.digest(data_to_sign))&lt;br /&gt;
    signature = apiKey + &amp;quot;:&amp;quot; + timestamp + &amp;quot;:&amp;quot; + hash&lt;br /&gt;
    &lt;br /&gt;
    headers = Hash['User-Agent' =&amp;gt; userAgent, 'X-Api-Signature' =&amp;gt; signature]&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== C# ===&lt;br /&gt;
&lt;br /&gt;
This examples is written in [http://msdn.microsoft.com/en-us/vcsharp/default.aspx C#].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Specialized;&lt;br /&gt;
using System.Security.Cryptography;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Net;&lt;br /&gt;
&lt;br /&gt;
public class WebMethods&lt;br /&gt;
{&lt;br /&gt;
  private WebClientBase client;&lt;br /&gt;
  private string baseUrl;&lt;br /&gt;
  private string apiKey;&lt;br /&gt;
  private string secretKey;&lt;br /&gt;
&lt;br /&gt;
  public WebMethods(WebClientBase client, string baseUrl, string apiKey, string secretKey)&lt;br /&gt;
  {&lt;br /&gt;
    this.client = client;&lt;br /&gt;
    this.baseUrl = baseUrl;&lt;br /&gt;
    this.apiKey = apiKey;&lt;br /&gt;
    this.secretKey = secretKey;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  public virtual string Get(string url)&lt;br /&gt;
  {&lt;br /&gt;
    return MakeRemoteCall((client) =&amp;gt;&lt;br /&gt;
      {&lt;br /&gt;
        return client.DownloadString(baseUrl + url);&lt;br /&gt;
      },&lt;br /&gt;
      format);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  public virtual string Post(string url, NameValueCollection data)&lt;br /&gt;
  {&lt;br /&gt;
    return MakeRemoteCall((client) =&amp;gt;&lt;br /&gt;
      {&lt;br /&gt;
        var bytes = client.UploadValues(baseUrl + url, data);&lt;br /&gt;
        return Encoding.UTF8.GetString(bytes);&lt;br /&gt;
      },&lt;br /&gt;
      format);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  private void SignMessage()&lt;br /&gt;
  {&lt;br /&gt;
    var userAgent = &amp;quot;C# Client Library&amp;quot;;&lt;br /&gt;
    client.Headers[&amp;quot;User-Agent&amp;quot;] = userAgent;&lt;br /&gt;
&lt;br /&gt;
    var dateTime = DateTime.UtcNow.ToString(&amp;quot;yyyyMMddHHmmss&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    var dataToSign = apiKey + userAgent + dateTime + secretKey;&lt;br /&gt;
    var hash = SHA1.Create();&lt;br /&gt;
    var signedBytes = hash.ComputeHash(Encoding.UTF8.GetBytes(dataToSign));&lt;br /&gt;
    var signature = Convert.ToBase64String(signedBytes);&lt;br /&gt;
&lt;br /&gt;
    client.Headers[&amp;quot;X-Api-Signature&amp;quot;] = apiKey + &amp;quot;:&amp;quot; + dateTime + &amp;quot;:&amp;quot; + signature;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  private void AssignFormat(string format)&lt;br /&gt;
  {&lt;br /&gt;
    client.Headers[&amp;quot;Accept&amp;quot;] = format;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  private string MakeRemoteCall(Func&amp;lt;WebClientBase, string&amp;gt; remoteCall, string format)&lt;br /&gt;
  {&lt;br /&gt;
    try&lt;br /&gt;
    {&lt;br /&gt;
      SignMessage();&lt;br /&gt;
      AssignFormat(format);&lt;br /&gt;
      return remoteCall.Invoke(client);&lt;br /&gt;
    }&lt;br /&gt;
    catch (WebException e)&lt;br /&gt;
    {&lt;br /&gt;
      throw new ApiException(e);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PHP ===&lt;br /&gt;
&lt;br /&gt;
The PHP Example can be found [[PHP_Examples_(Rest_API)| here]].&lt;/div&gt;</summary>
		<author><name>Zhen.wei</name></author>	</entry>

	<entry>
		<id>http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Customer_(Rest_API)&amp;diff=415</id>
		<title>Customer (Rest API)</title>
		<link rel="alternate" type="text/html" href="http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Customer_(Rest_API)&amp;diff=415"/>
				<updated>2010-08-19T15:57:20Z</updated>
		
		<summary type="html">&lt;p&gt;Zhen.wei: re-write customer search parameter explanation.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Index (Reseller Only) ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 [GET] &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/v0/customers&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
This operation returns the list of customers that the authenticated user has access to.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Filter/Search'':&lt;br /&gt;
&lt;br /&gt;
Search parameter 'startswith' and 'contains' will try to find the result in customer name, account number and reference number. We also provide a separate query method ?referenceNumber=123456 that will return a Show on the exact customer whose reference number is as specified.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
For the text/xml format, refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/CustomerList.xsd CustomerList.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers?size=100&amp;amp;offset=10', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;customerList 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; xmlns=&amp;quot;urn:xml:customerList&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;offset&amp;gt;0&amp;lt;/offset&amp;gt;&lt;br /&gt;
  &amp;lt;size&amp;gt;50&amp;lt;/size&amp;gt;&lt;br /&gt;
  &amp;lt;total&amp;gt;3&amp;lt;/total&amp;gt;&lt;br /&gt;
  &amp;lt;customers&amp;gt;&lt;br /&gt;
    &amp;lt;customer&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;API Customer 17&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;accountNumber&amp;gt;460182&amp;lt;/accountNumber&amp;gt;&lt;br /&gt;
      &amp;lt;referenceNumber&amp;gt;49&amp;lt;/referenceNumber&amp;gt;&lt;br /&gt;
    &amp;lt;/customer&amp;gt;&lt;br /&gt;
    &amp;lt;customer&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;API Customer 39&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;accountNumber&amp;gt;460181&amp;lt;/accountNumber&amp;gt;&lt;br /&gt;
      &amp;lt;referenceNumber&amp;gt;23&amp;lt;/referenceNumber&amp;gt;&lt;br /&gt;
    &amp;lt;/customer&amp;gt;&lt;br /&gt;
    &amp;lt;customer&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;API Customer 50&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;accountNumber&amp;gt;460183&amp;lt;/accountNumber&amp;gt;&lt;br /&gt;
      &amp;lt;referenceNumber&amp;gt;10&amp;lt;/referenceNumber&amp;gt;&lt;br /&gt;
    &amp;lt;/customer&amp;gt;&lt;br /&gt;
  &amp;lt;/customers&amp;gt;&lt;br /&gt;
&amp;lt;/customerList&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''JSON Result Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&amp;quot;offset&amp;quot;:0,&amp;quot;size&amp;quot;:50,&amp;quot;total&amp;quot;:3,&amp;quot;customers&amp;quot;:&lt;br /&gt;
[{&amp;quot;name&amp;quot;:&amp;quot;API Customer 17&amp;quot;,&amp;quot;accountNumber&amp;quot;:&amp;quot;460182&amp;quot;,&amp;quot;referenceNumber&amp;quot;:&amp;quot;49&amp;quot;},&lt;br /&gt;
{&amp;quot;name&amp;quot;:&amp;quot;API Customer 39&amp;quot;,&amp;quot;accountNumber&amp;quot;:&amp;quot;460181&amp;quot;,&amp;quot;referenceNumber&amp;quot;:&amp;quot;23&amp;quot;},&lt;br /&gt;
{&amp;quot;name&amp;quot;:&amp;quot;API Customer 50&amp;quot;,&amp;quot;accountNumber&amp;quot;:&amp;quot;460183&amp;quot;,&amp;quot;referenceNumber&amp;quot;:&amp;quot;10&amp;quot;}]}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Show (Reseller Only) ==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 [GET] &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/v0/customers/(customer account number)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
The show operation will return detailed information about the specified account.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
To do the show operation on the account that is logged in instead of a customer's account, use &amp;quot;me&amp;quot; in the place of the customer account number i.e. &amp;lt;nowiki&amp;gt;'https://api.emailsrvr.com/v0/customers/me'&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The show operation only supports the GET HTTP verb. For text/xml format, refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/Customer.xsd Customer.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Reference Number''&lt;br /&gt;
&lt;br /&gt;
The query string &amp;quot;referenceNumber=xx&amp;quot; searches for a customer with an exact reference number.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Examples'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/me', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;customer 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; xmlns=&amp;quot;urn:xml:customer&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;name&amp;gt;API Customer 17&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;accountNumber&amp;gt;460182&amp;lt;/accountNumber&amp;gt;&lt;br /&gt;
  &amp;lt;referenceNumber&amp;gt;49&amp;lt;/referenceNumber&amp;gt;&lt;br /&gt;
&amp;lt;/customer&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''JSON Result Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&amp;quot;name&amp;quot;:&amp;quot;API Customer 17&amp;quot;,&amp;quot;accountNumber&amp;quot;:&amp;quot;460182&amp;quot;,&amp;quot;referenceNumber&amp;quot;:&amp;quot;49&amp;quot;}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Example of querying with Reference Number''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers?referenceNumber=49', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;customer 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; xmlns=&amp;quot;urn:xml:customer&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;name&amp;gt;API Customer 17&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;accountNumber&amp;gt;460182&amp;lt;/accountNumber&amp;gt;&lt;br /&gt;
  &amp;lt;referenceNumber&amp;gt;49&amp;lt;/referenceNumber&amp;gt;&lt;br /&gt;
&amp;lt;/customer&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Add/Edit (Reseller Only)==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 Add: [POST] &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/customers&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 Edit: [PUT] &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/customers/(customer account number)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Add/Edit a new sub-account. Note that customer number is not known until the customer is added.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| name&lt;br /&gt;
| string&lt;br /&gt;
| The customer's display name (Required for Add)&lt;br /&gt;
|-&lt;br /&gt;
| referenceNumber&lt;br /&gt;
| string&lt;br /&gt;
| The reference number of this account&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post '/customers', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
 'name' =&amp;gt; 'Name'&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
put '/customers/999999', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
 'name' =&amp;gt; 'NewName',&lt;br /&gt;
 'referenceNumber' =&amp;gt; '12345'&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| The name field was not specified&lt;br /&gt;
| 400&lt;br /&gt;
| Missing required field: name&lt;br /&gt;
|-&lt;br /&gt;
| The name field cannot be blank&lt;br /&gt;
| 400&lt;br /&gt;
| Required field name cannot be empty&lt;br /&gt;
|-&lt;br /&gt;
| Names cannot start with a space&lt;br /&gt;
| 400&lt;br /&gt;
| Improper Customer Name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Delete (Reseller Only) ==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 [DELETE] &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/customers/(customer account number)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Deletes the account.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
delete '/customers/999999', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Create Login Tokens ==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
[POST] &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/customers/(customer account number)/loginToken&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Generate a login token using which a customer can use to SSO into the Control Panel.&lt;br /&gt;
&lt;br /&gt;
Login tokens can be generated for two kinds of users: virtual and non-virtual. The distinction between&lt;br /&gt;
the two users is that a virtual user gets the administrator's privileges when SSOed into the Control Panel.&lt;br /&gt;
On the other hand, the non-virtual user gets only as much privileges as are given to him/her when&lt;br /&gt;
his/her account was created.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| userName&lt;br /&gt;
| string&lt;br /&gt;
| The name for which login token needs to be created. &lt;br /&gt;
|-&lt;br /&gt;
| virtualUser&lt;br /&gt;
| string&lt;br /&gt;
| A flag indicating whether the user for whom the login token needs to be generated is virtual or non-virtual. Valid values: true/false. When set to true, the userName is treated as a virtual user. When set to false, the userName is treated as a non-virtual user. A non-virtual user must be an existing admin user.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post '/customers/460896/loginToken', {'userName' =&amp;gt; 'dev_cust_limitedadmin', 'virtualUser' =&amp;gt; 'true'}, 'text/xml'&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create login token for virtual user 'dev_cust_limitedadmin'.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&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;
&lt;br /&gt;
&amp;lt;loginToken xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; &lt;br /&gt;
&lt;br /&gt;
xmlns=&amp;quot;urn:xml:loginToken&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;user&amp;gt;dev_cust_limitedadmin_460896_vu&amp;lt;/user&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;token&amp;gt;EEB0012D8DBC2CAC26E28365D44B537FFF0D79350&amp;lt;/token&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;dateCreated&amp;gt;6/11/2010 10:53:46 AM&amp;lt;/dateCreated&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/loginToken&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The login token is valid for ten minutes after its creation. The &amp;quot;dateCreated&amp;quot; field indicates the time when the login token&lt;br /&gt;
is created. &lt;br /&gt;
&lt;br /&gt;
Using the above created login token the customer with account number 460896 can SSO into the Control Panel using&lt;br /&gt;
the following URL: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://ControlPanelURL/TokenLogin.aspx?loginToken=EEB0012D8DBC2CAC26E28365D44B537FFF0D79350&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A customer can also use the login token to login on their private label control panel (E.g.: cp.mydomain.com/logintokens.aspx).&lt;/div&gt;</summary>
		<author><name>Zhen.wei</name></author>	</entry>

	<entry>
		<id>http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Exchange_Resource_Mailbox_(Rest_API)&amp;diff=414</id>
		<title>Exchange Resource Mailbox (Rest API)</title>
		<link rel="alternate" type="text/html" href="http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Exchange_Resource_Mailbox_(Rest_API)&amp;diff=414"/>
				<updated>2010-08-19T15:38:54Z</updated>
		
		<summary type="html">&lt;p&gt;Zhen.wei: replace page with offset&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Index ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /ex/resources&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
This operation returns a list of resource mailboxes associated with the domain.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The Index operation only supports the GET HTTP verb. For text/xml format, refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/ResourceList.xsd ResourceList.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/example.com/ex/resources?size=100&amp;amp;offset=10&amp;amp;contains=conference', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;resourceList xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:resourceList&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;offset&amp;gt;0&amp;lt;/offset&amp;gt;&lt;br /&gt;
  &amp;lt;size&amp;gt;50&amp;lt;/size&amp;gt;&lt;br /&gt;
  &amp;lt;total&amp;gt;3&amp;lt;/total&amp;gt;&lt;br /&gt;
  &amp;lt;resources&amp;gt;&lt;br /&gt;
    &amp;lt;resource&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;apiexresource43&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;displayName&amp;gt;API Test&amp;lt;/displayName&amp;gt;&lt;br /&gt;
      &amp;lt;type&amp;gt;room&amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;/resource&amp;gt;&lt;br /&gt;
    &amp;lt;resource&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;apiexresource5&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;displayName&amp;gt;API Test&amp;lt;/displayName&amp;gt;&lt;br /&gt;
      &amp;lt;type&amp;gt;equipment&amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;/resource&amp;gt;&lt;br /&gt;
    &amp;lt;resource&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;apiexresource85&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;displayName&amp;gt;API Test&amp;lt;/displayName&amp;gt;&lt;br /&gt;
      &amp;lt;type&amp;gt;room&amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;/resource&amp;gt;&lt;br /&gt;
  &amp;lt;/resources&amp;gt;&lt;br /&gt;
&amp;lt;/resourceList&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;offset&amp;quot;:0,&amp;quot;size&amp;quot;:50,&amp;quot;total&amp;quot;:3,&amp;quot;resources&amp;quot;:[{&amp;quot;name&amp;quot;:&amp;quot;apiexresource43&amp;quot;,&amp;quot;displayName&amp;quot;:&amp;quot;API Test&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;room&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;apiexresource5&amp;quot;,&amp;quot;displayName&amp;quot;:&amp;quot;API Test&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;equipment&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;apiexresource85&amp;quot;,&amp;quot;displayName&amp;quot;:&amp;quot;API Test&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;room&amp;quot;}]}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Show ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 [&amp;lt;nowiki&amp;gt;GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /ex/resources/(resource name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Returns the resource's details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The show operation only supports the GET HTTP verb. For text/xml format, refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/Resource.xsd Resource.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/example.com/ex/resource/conference.room', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example''&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;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;resource xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:resource&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;name&amp;gt;apiexresource43&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;displayName&amp;gt;API Test&amp;lt;/displayName&amp;gt;&lt;br /&gt;
  &amp;lt;type&amp;gt;room&amp;lt;/type&amp;gt;&lt;br /&gt;
&amp;lt;/resource&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;name&amp;quot;:&amp;quot;apiexresource43&amp;quot;,&amp;quot;displayName&amp;quot;:&amp;quot;API Test&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;room&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Resource is not found&lt;br /&gt;
| 404&lt;br /&gt;
| Resource not found&lt;br /&gt;
|-&lt;br /&gt;
| Entity is found but it's not a resource mailbox&lt;br /&gt;
| 404&lt;br /&gt;
| Mailbox is not a resource.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Add/Edit ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Add: [POST] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
                /ex/resources/(resource name)&lt;br /&gt;
Edit: [PUT] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
                /ex/resources/(resource name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Adds/edits the resource with the specified information.  Required fields must be supplied when adding. Others are optional.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| displayName&lt;br /&gt;
| string&lt;br /&gt;
| Resource display name (Required for add)&lt;br /&gt;
|-&lt;br /&gt;
| type&lt;br /&gt;
| string&lt;br /&gt;
| The resource type, 'room' or 'equipment' (Required for add)&lt;br /&gt;
|-&lt;br /&gt;
| password&lt;br /&gt;
| string&lt;br /&gt;
| The password to change the settings of the mailbox or add/remove admins (Required for add)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post '/customers/12345678/domains/example.com/ex/resources/conference.room',&lt;br /&gt;
{&lt;br /&gt;
  'displayName' =&amp;gt; 'Conference Room'&lt;br /&gt;
  'type' =&amp;gt; 'room'&lt;br /&gt;
  'password' =&amp;gt; 'abcDEF123'&lt;br /&gt;
},&lt;br /&gt;
'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
put '/customers/12345678/domains/example.com/ex/resources/all.employees',&lt;br /&gt;
{&lt;br /&gt;
  'displayName' =&amp;gt; 'Conference Room A'&lt;br /&gt;
  'password' =&amp;gt; 'ABCd4321'&lt;br /&gt;
},&lt;br /&gt;
'text/xml',&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Errors'':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| New resource mailbox already exists&lt;br /&gt;
| 400&lt;br /&gt;
| The email address conference.room@abc.com is already in use&lt;br /&gt;
|-&lt;br /&gt;
| New resource mailbox name doesn't meet the naming requirements&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid resource name&lt;br /&gt;
|-&lt;br /&gt;
| New display name doesn't meet the naming requirements&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid display name&lt;br /&gt;
|-&lt;br /&gt;
| Invalid resource mailbox type&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid Resource Type. The input must be: room/equipment.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Delete ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[DELETE] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
            /ex/resources/(resource name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Deletes the resource.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
delete '/customers/12345678/domains/example.com/ex/resources/all.employees', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Resource is not found&lt;br /&gt;
| 404&lt;br /&gt;
| Resource not found&lt;br /&gt;
|-&lt;br /&gt;
| Entity is found but it's not a resource mailbox&lt;br /&gt;
| 404&lt;br /&gt;
| Mailbox is not a resource.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Admins ===&lt;br /&gt;
&lt;br /&gt;
This refers to the admins that can manage the resource.&lt;br /&gt;
&lt;br /&gt;
==== Index Admin ====&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /ex/resources/(resource name)/admins&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Gets the list of resource admins.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The Index operation only supports the GET HTTP verb. For text/xml format, refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/ResourceAdminList.xsd ResourceAdminList.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/example.com/ex/resources/conference.room/admins', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;resourceAdminList xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:resourceAdminList&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;offset&amp;gt;0&amp;lt;/offset&amp;gt;&lt;br /&gt;
  &amp;lt;size&amp;gt;50&amp;lt;/size&amp;gt;&lt;br /&gt;
  &amp;lt;total&amp;gt;3&amp;lt;/total&amp;gt;&lt;br /&gt;
  &amp;lt;admins&amp;gt;&lt;br /&gt;
    &amp;lt;admin&amp;gt;apiexmailbox70@apidomain90.com&amp;lt;/admin&amp;gt;&lt;br /&gt;
    &amp;lt;admin&amp;gt;apiexmailbox87@apidomain90.com&amp;lt;/admin&amp;gt;&lt;br /&gt;
    &amp;lt;admin&amp;gt;apiexmailbox89@apidomain90.com&amp;lt;/admin&amp;gt;&lt;br /&gt;
  &amp;lt;/admins&amp;gt;&lt;br /&gt;
&amp;lt;/resourceAdminList&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;offset&amp;quot;:0,&amp;quot;size&amp;quot;:50,&amp;quot;total&amp;quot;:3,&amp;quot;admins&amp;quot;:[&amp;quot;apiexmailbox70@apidomain90.com&amp;quot;,&amp;quot;apiexmailbox87@apidomain90.com&amp;quot;,&amp;quot;apiexmailbox89@apidomain90.com&amp;quot;]}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Resource is not found&lt;br /&gt;
| 404&lt;br /&gt;
| Resource not found&lt;br /&gt;
|-&lt;br /&gt;
| Entity is found but it's not a resource mailbox&lt;br /&gt;
| 404&lt;br /&gt;
| Mailbox is not a resource.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Add Admin ====&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[POST] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /ex/resources/(resource name)/admins/(admin name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Adds an admin to the resource.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post '/customers/12345678/domains/example.com/ex/resources/conference.room/admins/john.smith', {}, 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Errors'':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Resource not found&lt;br /&gt;
| 404&lt;br /&gt;
| Resource not found&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Resource is not found&lt;br /&gt;
| 404&lt;br /&gt;
| Resource not found&lt;br /&gt;
|-&lt;br /&gt;
| Entity is found but it's not a resource mailbox&lt;br /&gt;
| 404&lt;br /&gt;
| Mailbox is not a resource.&lt;br /&gt;
|-&lt;br /&gt;
| Admin is already on the resource admin list.&lt;br /&gt;
| 400&lt;br /&gt;
| User is already on the resource admin list.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Delete Admin ====&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[DELETE] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /ex/resources/(resource name)/admins/(admin name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Removes the admin from the resource.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
delete '/customers/12345678/domains/example.com/ex/resources/conference.room/admins/john.smith', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Resource is not found&lt;br /&gt;
| 404&lt;br /&gt;
| Resource not found&lt;br /&gt;
|-&lt;br /&gt;
| Entity is found but it's not a resource mailbox&lt;br /&gt;
| 404&lt;br /&gt;
| Mailbox is not a resource.&lt;br /&gt;
|-&lt;br /&gt;
| Admin is not found on the resource admin list.&lt;br /&gt;
| 400&lt;br /&gt;
| User is not on the resource admin list.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Zhen.wei</name></author>	</entry>

	<entry>
		<id>http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Exchange_Distribution_List_(Rest_API)&amp;diff=413</id>
		<title>Exchange Distribution List (Rest API)</title>
		<link rel="alternate" type="text/html" href="http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Exchange_Distribution_List_(Rest_API)&amp;diff=413"/>
				<updated>2010-08-19T15:38:06Z</updated>
		
		<summary type="html">&lt;p&gt;Zhen.wei: replace page with offset&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Index ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /ex/distributionlists&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
This operation returns a list of distribution lists associated with the domain.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The Index operation only supports the GET HTTP verb. For text/xml format, refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/DistributionlistList.xsd DistributionlistList.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/example.com/ex/distributionlists?size=100&amp;amp;offset=10&amp;amp;contains=mailing', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;distributionlistList xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; &lt;br /&gt;
xmlns=&amp;quot;urn:xml:distributionlistList&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;offset&amp;gt;0&amp;lt;/offset&amp;gt;&lt;br /&gt;
  &amp;lt;size&amp;gt;50&amp;lt;/size&amp;gt;&lt;br /&gt;
  &amp;lt;total&amp;gt;3&amp;lt;/total&amp;gt;&lt;br /&gt;
  &amp;lt;distributionlists&amp;gt;&lt;br /&gt;
    &amp;lt;distributionlist&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;apiexgroup4&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;displayName&amp;gt;API Test Group&amp;lt;/displayName&amp;gt;&lt;br /&gt;
    &amp;lt;/distributionlist&amp;gt;&lt;br /&gt;
    &amp;lt;distributionlist&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;apiexgroup62&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;displayName&amp;gt;API Test Group&amp;lt;/displayName&amp;gt;&lt;br /&gt;
    &amp;lt;/distributionlist&amp;gt;&lt;br /&gt;
    &amp;lt;distributionlist&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;apiexgroup64&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;displayName&amp;gt;API Test Group&amp;lt;/displayName&amp;gt;&lt;br /&gt;
    &amp;lt;/distributionlist&amp;gt;&lt;br /&gt;
  &amp;lt;/distributionlists&amp;gt;&lt;br /&gt;
&amp;lt;/distributionlistList&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;offset&amp;quot;:0,&amp;quot;size&amp;quot;:50,&amp;quot;total&amp;quot;:3,&amp;quot;distributionlists&amp;quot;:[{&amp;quot;name&amp;quot;:&amp;quot;apiexgroup4&amp;quot;,&amp;quot;displayName&amp;quot;:&amp;quot;API Test Group&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;apiexgroup62&amp;quot;,&amp;quot;displayName&amp;quot;:&amp;quot;API Test Group&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;apiexgroup64&amp;quot;,&amp;quot;displayName&amp;quot;:&amp;quot;API Test Group&amp;quot;}]}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'':  &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Distribution List is not found&lt;br /&gt;
| 404&lt;br /&gt;
| Distribution List not found&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Show ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 [&amp;lt;nowiki&amp;gt;GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /ex/distributionlists/(distribution list name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Returns the distribution list's details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The show operation only supports the GET HTTP verb. For text/xml format, refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/Distributionlist.xsd Distributionlist.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/example.com/ex/distributionlists/all.employees', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example''&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;distributionlist xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:contact&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;name&amp;gt;apiexgroup64&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;displayName&amp;gt;API Test Group&amp;lt;/displayName&amp;gt;&lt;br /&gt;
  &amp;lt;isHidden&amp;gt;false&amp;lt;/isHidden&amp;gt;&lt;br /&gt;
  &amp;lt;emailAddressList&amp;gt;&lt;br /&gt;
    &amp;lt;emailAddress&amp;gt;&lt;br /&gt;
      &amp;lt;address&amp;gt;apiexgroup64@apidomain36.com&amp;lt;/address&amp;gt;&lt;br /&gt;
      &amp;lt;replyTo&amp;gt;true&amp;lt;/replyTo&amp;gt;&lt;br /&gt;
    &amp;lt;/emailAddress&amp;gt;&lt;br /&gt;
  &amp;lt;/emailAddressList&amp;gt;&lt;br /&gt;
  &amp;lt;memberList&amp;gt;&lt;br /&gt;
    &amp;lt;member&amp;gt;apiexmailbox30@apidomain36.com&amp;lt;/member&amp;gt;&lt;br /&gt;
    &amp;lt;member&amp;gt;apiexmailbox7@apidomain36.com&amp;lt;/member&amp;gt;&lt;br /&gt;
    &amp;lt;member&amp;gt;apiexmailbox99@apidomain36.com&amp;lt;/member&amp;gt;&lt;br /&gt;
  &amp;lt;/memberList&amp;gt;&lt;br /&gt;
&amp;lt;/distributionlist&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;name&amp;quot;:&amp;quot;apiexgroup64&amp;quot;,&amp;quot;displayName&amp;quot;:&amp;quot;API Test Group&amp;quot;,&amp;quot;isHidden&amp;quot;:false,&amp;quot;emailAddressList&amp;quot;:[{&amp;quot;address&amp;quot;:&amp;quot;apiexgroup64@apidomain36.com&amp;quot;,&amp;quot;replyTo&amp;quot;:true}],&amp;quot;memberList&amp;quot;:[&amp;quot;apiexmailbox30@apidomain36.com&amp;quot;,&amp;quot;apiexmailbox7@apidomain36.com&amp;quot;,&amp;quot;apiexmailbox99@apidomain36.com&amp;quot;]}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Distribution list is not found&lt;br /&gt;
| 404&lt;br /&gt;
| Distribution List not found&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Add/Edit ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Add: [POST] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
                /ex/distributionlists/(distribution list name)&lt;br /&gt;
Edit: [PUT] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
                /ex/distributionlists/(distribution list name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Adds/edits the distribution list with the specified information.  Required fields must be supplied when adding. Others are optional.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| displayName&lt;br /&gt;
| string&lt;br /&gt;
| Distribution list display name (Required)&lt;br /&gt;
|-&lt;br /&gt;
| isHidden&lt;br /&gt;
| boolean&lt;br /&gt;
| Whether or not the distribution list is hidden from the Global Address List (Defaults to false)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post '/customers/12345678/domains/example.com/ex/distributionlists/all.employees',&lt;br /&gt;
{&lt;br /&gt;
  'name' =&amp;gt; 'all.employees',&lt;br /&gt;
  'displayName' =&amp;gt; 'Employees'&lt;br /&gt;
},&lt;br /&gt;
'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
put '/customers/12345678/domains/example.com/ex/distributionlists/all.employees',&lt;br /&gt;
{&lt;br /&gt;
  'displayName' =&amp;gt; 'Example.com Employees'&lt;br /&gt;
},&lt;br /&gt;
'text/xml',&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Errors'':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| New distribution list name already exists&lt;br /&gt;
| 400&lt;br /&gt;
| The email address john.doe@abc.com is already in use&lt;br /&gt;
|-&lt;br /&gt;
| New distribution list name doesn't meet the naming requirements&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid user name&lt;br /&gt;
|-&lt;br /&gt;
| New distribution list display name doesn't meet the naming requirements&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid display name&lt;br /&gt;
|-&lt;br /&gt;
| Distribution list is not found&lt;br /&gt;
| 404&lt;br /&gt;
| Distribution List not found&lt;br /&gt;
|-&lt;br /&gt;
| Display name doesn't meet the naming requirements&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid display name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Delete ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[DELETE] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
            /ex/distributionlists/(distribution list name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Deletes the distribution list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
delete '/customers/12345678/domains/example.com/ex/distributionlists/all.employees', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Distribution list is not found&lt;br /&gt;
| 404&lt;br /&gt;
| Distribution List not found&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Email Addresses ===&lt;br /&gt;
&lt;br /&gt;
This refers to the email addresses a distribution list can appear as.&lt;br /&gt;
&lt;br /&gt;
==== Add Email Address ====&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[POST] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /ex/distributionlists/(distribution list name)/emailaddresses/(email address)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Adds an email address that the distribution list is associated with to the list.  This address' domain name must be the same as the domain the distribution list is under.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post '/customers/12345678/domains/example.com/ex/distributionlists/all.employees/emailaddresses/alex@example.com', {}, 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Errors'':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Distribution list is not found&lt;br /&gt;
| 404&lt;br /&gt;
| Distribution list not found&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Delete Email Address ====&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[DELETE] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
            /ex/distributionlists/(distribution list name)/emailaddresses/(email address)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Deletes the email address that is tied to the distribution list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
delete '/customers/12345678/domains/example.com/ex/distributionlists/all.employees/emailaddresses/alex@example.com', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Member ===&lt;br /&gt;
&lt;br /&gt;
This refers to the recipients of the distribution list.&lt;br /&gt;
&lt;br /&gt;
==== Add Member ====&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[POST] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /ex/distributionlists/(distribution list name)/members/(member name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Adds an email address to the distribution list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post '/customers/12345678/domains/example.com/ex/distributionlists/all.employees/members/john.smith', {}, 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Distribution list is not found&lt;br /&gt;
| 404&lt;br /&gt;
| Distribution list not found&lt;br /&gt;
|-&lt;br /&gt;
| New member is not found&lt;br /&gt;
| 400&lt;br /&gt;
| No user with the email address jane.doe exists&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Delete Member ====&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[DELETE] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
            /ex/distributionlists/(distribution list name)/members/(member name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Delete an email address from the distribution list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
delete '/customers/12345678/domains/example.com/ex/distributionlists/all.employees/members/john.smith', {}, 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Distribution list is not found&lt;br /&gt;
| 404&lt;br /&gt;
| Distribution list not found&lt;br /&gt;
|-&lt;br /&gt;
| Member is not found&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid group member name&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Zhen.wei</name></author>	</entry>

	<entry>
		<id>http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Exchange_Contact_(Rest_API)&amp;diff=412</id>
		<title>Exchange Contact (Rest API)</title>
		<link rel="alternate" type="text/html" href="http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Exchange_Contact_(Rest_API)&amp;diff=412"/>
				<updated>2010-08-19T15:37:00Z</updated>
		
		<summary type="html">&lt;p&gt;Zhen.wei: replace page with offset&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Index ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /ex/contacts&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Returns a list of contacts under the domain.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
For the text/xml format, refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/ContactList.xsd ContactList.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/example.com/ex/contacts?size=100&amp;amp;offset=10&amp;amp;contains=john', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;contactList xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:contactList&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;offset&amp;gt;0&amp;lt;/offset&amp;gt;&lt;br /&gt;
  &amp;lt;size&amp;gt;50&amp;lt;/size&amp;gt;&lt;br /&gt;
  &amp;lt;total&amp;gt;3&amp;lt;/total&amp;gt;&lt;br /&gt;
  &amp;lt;contacts&amp;gt;&lt;br /&gt;
    &amp;lt;contact&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;apiexcontact66&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;displayName&amp;gt;API Test&amp;lt;/displayName&amp;gt;&lt;br /&gt;
      &amp;lt;externalEmail&amp;gt;externalemail58@yahoo.com&amp;lt;/externalEmail&amp;gt;&lt;br /&gt;
    &amp;lt;/contact&amp;gt;&lt;br /&gt;
    &amp;lt;contact&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;apiexcontact73&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;displayName&amp;gt;API Test&amp;lt;/displayName&amp;gt;&lt;br /&gt;
      &amp;lt;externalEmail&amp;gt;externalemail98@yahoo.com&amp;lt;/externalEmail&amp;gt;&lt;br /&gt;
    &amp;lt;/contact&amp;gt;&lt;br /&gt;
    &amp;lt;contact&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;apiexcontact81&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;displayName&amp;gt;API Test&amp;lt;/displayName&amp;gt;&lt;br /&gt;
      &amp;lt;externalEmail&amp;gt;externalemail46@yahoo.com&amp;lt;/externalEmail&amp;gt;&lt;br /&gt;
    &amp;lt;/contact&amp;gt;&lt;br /&gt;
  &amp;lt;/contacts&amp;gt;&lt;br /&gt;
&amp;lt;/contactList&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;offset&amp;quot;:0,&amp;quot;size&amp;quot;:50,&amp;quot;total&amp;quot;:3,&amp;quot;contacts&amp;quot;:[{&amp;quot;name&amp;quot;:&amp;quot;apiexcontact66&amp;quot;,&amp;quot;displayName&amp;quot;:&amp;quot;API Test&amp;quot;,&amp;quot;externalEmail&amp;quot;:&amp;quot;externalemail58@yahoo.com&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;apiexcontact73&amp;quot;,&amp;quot;displayName&amp;quot;:&amp;quot;API Test&amp;quot;,&amp;quot;externalEmail&amp;quot;:&amp;quot;externalemail98@yahoo.com&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;apiexcontact81&amp;quot;,&amp;quot;displayName&amp;quot;:&amp;quot;API Test&amp;quot;,&amp;quot;externalEmail&amp;quot;:&amp;quot;externalemail46@yahoo.com&amp;quot;}]}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Show ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /ex/contacts/(contact name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Returns the contact's details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
For the text/xml format, refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/Contact.xsd Contact.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/example.com/ex/contacts/alex.smith', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;contact xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:contact&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;name&amp;gt;apiexcontact73&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;displayName&amp;gt;API Test&amp;lt;/displayName&amp;gt;&lt;br /&gt;
  &amp;lt;externalEmail&amp;gt;externalemail98@yahoo.com&amp;lt;/externalEmail&amp;gt;&lt;br /&gt;
  &amp;lt;isHidden&amp;gt;false&amp;lt;/isHidden&amp;gt;&lt;br /&gt;
  &amp;lt;contactInfo&amp;gt;&lt;br /&gt;
    &amp;lt;firstName&amp;gt;API&amp;lt;/firstName&amp;gt;&lt;br /&gt;
    &amp;lt;lastName&amp;gt;Test&amp;lt;/lastName&amp;gt;&lt;br /&gt;
    &amp;lt;jobTitle&amp;gt;Dev&amp;lt;/jobTitle&amp;gt;&lt;br /&gt;
    &amp;lt;company&amp;gt;My Company&amp;lt;/company&amp;gt;&lt;br /&gt;
    &amp;lt;department&amp;gt;R&amp;amp;amp;D&amp;lt;/department&amp;gt;&lt;br /&gt;
    &amp;lt;businessNumber&amp;gt;111-1111&amp;lt;/businessNumber&amp;gt;&lt;br /&gt;
    &amp;lt;homeNumber&amp;gt;222-2222&amp;lt;/homeNumber&amp;gt;&lt;br /&gt;
    &amp;lt;mobileNumber&amp;gt;333-3333&amp;lt;/mobileNumber&amp;gt;&lt;br /&gt;
    &amp;lt;faxNumber&amp;gt;444-4444&amp;lt;/faxNumber&amp;gt;&lt;br /&gt;
    &amp;lt;pagerNumber&amp;gt;1234&amp;lt;/pagerNumber&amp;gt;&lt;br /&gt;
    &amp;lt;addressLine1&amp;gt;123 Main Street&amp;lt;/addressLine1&amp;gt;&lt;br /&gt;
    &amp;lt;city&amp;gt;Blacksburg&amp;lt;/city&amp;gt;&lt;br /&gt;
    &amp;lt;state&amp;gt;VA&amp;lt;/state&amp;gt;&lt;br /&gt;
    &amp;lt;zip&amp;gt;24060&amp;lt;/zip&amp;gt;&lt;br /&gt;
    &amp;lt;country&amp;gt;USA&amp;lt;/country&amp;gt;&lt;br /&gt;
    &amp;lt;notes&amp;gt;My Notes&amp;lt;/notes&amp;gt;&lt;br /&gt;
  &amp;lt;/contactInfo&amp;gt;&lt;br /&gt;
&amp;lt;/contact&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;name&amp;quot;:&amp;quot;apiexcontact73&amp;quot;,&amp;quot;displayName&amp;quot;:&amp;quot;API Test&amp;quot;,&amp;quot;externalEmail&amp;quot;:&amp;quot;externalemail98@yahoo.com&amp;quot;,&amp;quot;isHidden&amp;quot;:false,&amp;quot;contactInfo&amp;quot;:{&amp;quot;firstName&amp;quot;:&amp;quot;API&amp;quot;,&amp;quot;lastName&amp;quot;:&amp;quot;Test&amp;quot;,&amp;quot;jobTitle&amp;quot;:&amp;quot;Dev&amp;quot;,&amp;quot;company&amp;quot;:&amp;quot;My Company&amp;quot;,&amp;quot;department&amp;quot;:&amp;quot;R&amp;amp;D&amp;quot;,&amp;quot;businessNumber&amp;quot;:&amp;quot;111-1111&amp;quot;,&amp;quot;homeNumber&amp;quot;:&amp;quot;222-2222&amp;quot;,&amp;quot;mobileNumber&amp;quot;:&amp;quot;333-3333&amp;quot;,&amp;quot;faxNumber&amp;quot;:&amp;quot;444-4444&amp;quot;,&amp;quot;pagerNumber&amp;quot;:&amp;quot;1234&amp;quot;,&amp;quot;addressLine1&amp;quot;:&amp;quot;123 Main Street&amp;quot;,&amp;quot;city&amp;quot;:&amp;quot;Blacksburg&amp;quot;,&amp;quot;state&amp;quot;:&amp;quot;VA&amp;quot;,&amp;quot;zip&amp;quot;:&amp;quot;24060&amp;quot;,&amp;quot;country&amp;quot;:&amp;quot;USA&amp;quot;,&amp;quot;notes&amp;quot;:&amp;quot;My Notes&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Contact is not found&lt;br /&gt;
| 404&lt;br /&gt;
| Contact not found&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Add/Edit ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Add: [POST] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
                /ex/contacts/(contact name)&lt;br /&gt;
&lt;br /&gt;
Edit: [PUT] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
                /ex/contacts/(contact name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Adds or edits the contact's details as specified. If the contact does not exist, use Add, if it does, use Edit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| displayName&lt;br /&gt;
| string&lt;br /&gt;
| Name of contact when displayed (Required for add)&lt;br /&gt;
|-&lt;br /&gt;
| externalEmail&lt;br /&gt;
| string&lt;br /&gt;
| Email address (Required for add)&lt;br /&gt;
|-&lt;br /&gt;
| isHidden&lt;br /&gt;
| boolean&lt;br /&gt;
| Whether the contact is hidden from the Global List&lt;br /&gt;
|-&lt;br /&gt;
| firstName&lt;br /&gt;
| string&lt;br /&gt;
| First name&lt;br /&gt;
|-&lt;br /&gt;
| lastName&lt;br /&gt;
| string&lt;br /&gt;
| Last name&lt;br /&gt;
|-&lt;br /&gt;
| jobTitle&lt;br /&gt;
| string&lt;br /&gt;
| Job title&lt;br /&gt;
|-&lt;br /&gt;
| company&lt;br /&gt;
| string&lt;br /&gt;
| Company&lt;br /&gt;
|-&lt;br /&gt;
| department&lt;br /&gt;
| string&lt;br /&gt;
| Department&lt;br /&gt;
|-&lt;br /&gt;
| businessNumber&lt;br /&gt;
| string&lt;br /&gt;
| Business phone number&lt;br /&gt;
|-&lt;br /&gt;
| homeNumber&lt;br /&gt;
| string&lt;br /&gt;
| Home phone number&lt;br /&gt;
|-&lt;br /&gt;
| mobileNumber&lt;br /&gt;
| string&lt;br /&gt;
| Mobile phone number&lt;br /&gt;
|-&lt;br /&gt;
| faxNumber&lt;br /&gt;
| string&lt;br /&gt;
| Fax number&lt;br /&gt;
|-&lt;br /&gt;
| pagerNumber&lt;br /&gt;
| string&lt;br /&gt;
| Pager number&lt;br /&gt;
|-&lt;br /&gt;
| addressLine1&lt;br /&gt;
| string&lt;br /&gt;
| Street address&lt;br /&gt;
|-&lt;br /&gt;
| city&lt;br /&gt;
| string&lt;br /&gt;
| City&lt;br /&gt;
|-&lt;br /&gt;
| state&lt;br /&gt;
| string&lt;br /&gt;
| State&lt;br /&gt;
|-&lt;br /&gt;
| zip&lt;br /&gt;
| string&lt;br /&gt;
| Zip or postal code&lt;br /&gt;
|-&lt;br /&gt;
| country&lt;br /&gt;
| string&lt;br /&gt;
| Country&lt;br /&gt;
|-&lt;br /&gt;
| notes&lt;br /&gt;
| string&lt;br /&gt;
| Notes field&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post '/customers/12345678/domains/example.com/ex/contacts/alex.smith', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
  'displayName' =&amp;gt; 'Johnny Customer',&lt;br /&gt;
  'externalEmail' =&amp;gt; 'jonny@apple.com'&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
put '/customers/12345678/domains/example.com/ex/contacts/alex.smith', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
  'externalEmail' =&amp;gt; 'jonnysNewEmail@microsoft.com',&lt;br /&gt;
  'company' =&amp;gt; 'Microsoft',&lt;br /&gt;
  'businessnumber' =&amp;gt; '425 555 5555'&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Contact is not found&lt;br /&gt;
| 404&lt;br /&gt;
| No user with the email address jane.doe@abc.com exists&lt;br /&gt;
|-&lt;br /&gt;
| New display name doesn't meet the naming requirements&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid display name&lt;br /&gt;
|-&lt;br /&gt;
| New display name doesn't meet the naming requirements&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid display name&lt;br /&gt;
|-&lt;br /&gt;
| New contact name (user name) already exists&lt;br /&gt;
| 400&lt;br /&gt;
| The email address john.doe@abc.com is already in use&lt;br /&gt;
|-&lt;br /&gt;
| New contact name (user name) is reserved by Exchange&lt;br /&gt;
| 400&lt;br /&gt;
| user name reserved&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Delete ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[DELETE] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
            /ex/contacts/(contact name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Deletes the contact.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
Contact is deleted immediately without verification and data is lost permanently.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
delete '/customers/12345678/domains/example.com/ex/contacts/alex.smith', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Errors'':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Contact is not found&lt;br /&gt;
| 404&lt;br /&gt;
| No user with the email address jane.doe@abc.com exists&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Zhen.wei</name></author>	</entry>

	<entry>
		<id>http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Domain_(Rest_API)&amp;diff=411</id>
		<title>Domain (Rest API)</title>
		<link rel="alternate" type="text/html" href="http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Domain_(Rest_API)&amp;diff=411"/>
				<updated>2010-08-19T15:29:07Z</updated>
		
		<summary type="html">&lt;p&gt;Zhen.wei: replace page with offset&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Index ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
This operation returns a list of domains under the account. If a customer account is specified, then a list of domains under that specific account will be returned.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
To retrieve a list of domains owned by the account that is logged in, use &amp;quot;me&amp;quot; as the customer account number i.e. &amp;lt;nowiki&amp;gt;'https://api.emailsrvr.com/v0/customers/me/domains'&amp;lt;/nowiki&amp;gt;. To retrieve a list of domains owned by all customer sub-accounts and your own account, use &amp;quot;all&amp;quot; as the customer account number.&lt;br /&gt;
&lt;br /&gt;
The index operation only supports the GET HTTP verb. For text/xml format, refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/DomainList.xsd DomainList.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/all/domains?size=100&amp;amp;offset=10', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;domainList 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; xmlns=&amp;quot;urn:xml:domainList&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;offset&amp;gt;0&amp;lt;/offset&amp;gt;&lt;br /&gt;
  &amp;lt;size&amp;gt;50&amp;lt;/size&amp;gt;&lt;br /&gt;
  &amp;lt;total&amp;gt;3&amp;lt;/total&amp;gt;&lt;br /&gt;
  &amp;lt;domains&amp;gt;&lt;br /&gt;
    &amp;lt;domain&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;apidomain53.com&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;accountNumber&amp;gt;100000&amp;lt;/accountNumber&amp;gt;&lt;br /&gt;
      &amp;lt;serviceType&amp;gt;both&amp;lt;/serviceType&amp;gt;&lt;br /&gt;
    &amp;lt;/domain&amp;gt;&lt;br /&gt;
    &amp;lt;domain&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;apidomain66.com&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;accountNumber&amp;gt;100001&amp;lt;/accountNumber&amp;gt;&lt;br /&gt;
      &amp;lt;serviceType&amp;gt;both&amp;lt;/serviceType&amp;gt;&lt;br /&gt;
    &amp;lt;/domain&amp;gt;&lt;br /&gt;
    &amp;lt;domain&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;apidomain68.com&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;accountNumber&amp;gt;100002&amp;lt;/accountNumber&amp;gt;&lt;br /&gt;
      &amp;lt;serviceType&amp;gt;both&amp;lt;/serviceType&amp;gt;&lt;br /&gt;
    &amp;lt;/domain&amp;gt;&lt;br /&gt;
  &amp;lt;/domains&amp;gt;&lt;br /&gt;
&amp;lt;/domainList&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&amp;quot;offset&amp;quot;:0,&amp;quot;size&amp;quot;:50,&amp;quot;total&amp;quot;:3,&amp;quot;domains&amp;quot;:&lt;br /&gt;
[{&amp;quot;name&amp;quot;:&amp;quot;apidomain53.com&amp;quot;,&amp;quot;accountNumber&amp;quot;:&amp;quot;100000&amp;quot;,&amp;quot;serviceType&amp;quot;:&amp;quot;both&amp;quot;},&lt;br /&gt;
{&amp;quot;name&amp;quot;:&amp;quot;apidomain66.com&amp;quot;,&amp;quot;accountNumber&amp;quot;:&amp;quot;100001&amp;quot;,&amp;quot;serviceType&amp;quot;:&amp;quot;both&amp;quot;},&lt;br /&gt;
{&amp;quot;name&amp;quot;:&amp;quot;apidomain68.com&amp;quot;,&amp;quot;accountNumber&amp;quot;:&amp;quot;100002&amp;quot;,&amp;quot;serviceType&amp;quot;:&amp;quot;both&amp;quot;}]}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Show ==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
The show operation will return detailed information about the specified domain name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The show operation only supports the GET HTTP verb. For text/xml format, refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/Domain.xsd Domain.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Note'':&lt;br /&gt;
&lt;br /&gt;
These two fields 'exchangeUsedStorage' and 'rsEmailUsedStorage' actually return the number of active mailboxes in each service respectively. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/999999/domains/example.com', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;domain 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; xmlns=&amp;quot;urn:xml:domain&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;name&amp;gt;apidomain21.com&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;accountNumber&amp;gt;100000&amp;lt;/accountNumber&amp;gt;&lt;br /&gt;
  &amp;lt;serviceType&amp;gt;both&amp;lt;/serviceType&amp;gt;&lt;br /&gt;
  &amp;lt;exchangeBaseMailboxSize&amp;gt;2048&amp;lt;/exchangeBaseMailboxSize&amp;gt;&lt;br /&gt;
  &amp;lt;exchangeUsedStorage&amp;gt;0&amp;lt;/exchangeUsedStorage&amp;gt;&lt;br /&gt;
  &amp;lt;exchangeTotalStorage&amp;gt;18432&amp;lt;/exchangeTotalStorage&amp;gt;&lt;br /&gt;
  &amp;lt;exchangeExtraStorage&amp;gt;10240&amp;lt;/exchangeExtraStorage&amp;gt;&lt;br /&gt;
  &amp;lt;exchangeMaxNumMailboxes&amp;gt;4&amp;lt;/exchangeMaxNumMailboxes&amp;gt;&lt;br /&gt;
  &amp;lt;rsEmailBaseMailboxSize&amp;gt;2048&amp;lt;/rsEmailBaseMailboxSize&amp;gt;&lt;br /&gt;
  &amp;lt;rsEmailMaxNumberMailboxes&amp;gt;4&amp;lt;/rsEmailMaxNumberMailboxes&amp;gt;&lt;br /&gt;
  &amp;lt;rsEmailExtraStorage&amp;gt;10240&amp;lt;/rsEmailExtraStorage&amp;gt;&lt;br /&gt;
  &amp;lt;rsEmailUsedStorage&amp;gt;0&amp;lt;/rsEmailUsedStorage&amp;gt;&lt;br /&gt;
  &amp;lt;aliases /&amp;gt;&lt;br /&gt;
  &amp;lt;archivingServiceEnabled&amp;gt;false&amp;lt;/archivingServiceEnabled&amp;gt;&lt;br /&gt;
  &amp;lt;publicFoldersEnabled&amp;gt;false&amp;lt;/publicFoldersEnabled&amp;gt;&lt;br /&gt;
  &amp;lt;blackBerryMobileServiceEnabled&amp;gt;true&amp;lt;/blackBerryMobileServiceEnabled&amp;gt;&lt;br /&gt;
  &amp;lt;blackBerryLicenses&amp;gt;4&amp;lt;/blackBerryLicenses&amp;gt;&lt;br /&gt;
  &amp;lt;activeSyncMobileServiceEnabled&amp;gt;true&amp;lt;/activeSyncMobileServiceEnabled&amp;gt;&lt;br /&gt;
  &amp;lt;activeSyncLicenses&amp;gt;4&amp;lt;/activeSyncLicenses&amp;gt;&lt;br /&gt;
&amp;lt;/domain&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&amp;quot;name&amp;quot;:&amp;quot;apidomain21.com&amp;quot;,&amp;quot;accountNumber&amp;quot;:&amp;quot;100000&amp;quot;,&amp;quot;serviceType&amp;quot;:&amp;quot;both&amp;quot;,&lt;br /&gt;
&amp;quot;exchangeBaseMailboxSize&amp;quot;:2048,&amp;quot;exchangeUsedStorage&amp;quot;:0,&amp;quot;exchangeTotalStorage&amp;quot;:18432,&lt;br /&gt;
&amp;quot;exchangeExtraStorage&amp;quot;:10240,&amp;quot;exchangeMaxNumMailboxes&amp;quot;:4,&amp;quot;rsEmailBaseMailboxSize&amp;quot;:2048,&lt;br /&gt;
&amp;quot;rsEmailMaxNumberMailboxes&amp;quot;:4,&amp;quot;rsEmailExtraStorage&amp;quot;:10240,&amp;quot;rsEmailUsedStorage&amp;quot;:0,&lt;br /&gt;
&amp;quot;aliases&amp;quot;:[],&amp;quot;archivingServiceEnabled&amp;quot;:false,&amp;quot;publicFoldersEnabled&amp;quot;:false,&lt;br /&gt;
&amp;quot;blackBerryMobileServiceEnabled&amp;quot;:true,&amp;quot;blackBerryLicenses&amp;quot;:4,&amp;quot;activeSyncMobileServiceEnabled&amp;quot;:true,&lt;br /&gt;
&amp;quot;activeSyncLicenses&amp;quot;:4}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Add/Edit (Reseller Only)==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
 Add: [POST] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
 Edit: [PUT] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Adds/edits a new domain to the account with the data specified. To add a domain to your own account, use your own account id.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| serviceType&lt;br /&gt;
| string&lt;br /&gt;
| Domain service type. &amp;quot;rsemail&amp;quot; = &amp;quot;Rackspace Email Only&amp;quot;. &amp;quot;exchange&amp;quot; = &amp;quot;Exchange Only&amp;quot;. &amp;quot;both&amp;quot; = &amp;quot;Rackspace Email and Exchange&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| exchangeExtraStorage&lt;br /&gt;
| int&lt;br /&gt;
| Exchange service extra storage in megabytes&lt;br /&gt;
|-&lt;br /&gt;
| exchangeMaxNumMailboxes&lt;br /&gt;
| int&lt;br /&gt;
| Maximum number of mailboxes allowed under the domain Exchange service. Required for Adding Exchange service&lt;br /&gt;
|-&lt;br /&gt;
| rsEmailBaseMailboxSize&lt;br /&gt;
| int&lt;br /&gt;
| Rackspace Email base mailbox size in megabytes&lt;br /&gt;
|-&lt;br /&gt;
| rsEmailMaxNumberMailboxes&lt;br /&gt;
| int&lt;br /&gt;
| Maximum number of mailboxes allowed under the domain Rackspace Email service. Required for Adding Rackspace Email service&lt;br /&gt;
|-&lt;br /&gt;
| rsEmailExtraStorage&lt;br /&gt;
| int&lt;br /&gt;
| Rackspace Email service extra storage in megabytes&lt;br /&gt;
|-&lt;br /&gt;
| blackBerryMobileServiceEnabled&lt;br /&gt;
| boolean&lt;br /&gt;
| Enable or disable domain BlackBerry Mobile service&lt;br /&gt;
|-&lt;br /&gt;
| blackBerryLicenses&lt;br /&gt;
| int&lt;br /&gt;
| Maximum number of mailboxes allowed to have BlackBerry Mobile service. 0 means unlimited&lt;br /&gt;
|-&lt;br /&gt;
| activeSyncMobileServiceEnabled&lt;br /&gt;
| boolean&lt;br /&gt;
| Enable or disable domain ActiveSync Mobile service&lt;br /&gt;
|-&lt;br /&gt;
| activeSyncLicenses&lt;br /&gt;
| int&lt;br /&gt;
| Maximum number of mailboxes allowed to have ActiveSync Mobile service. 0 means unlimited&lt;br /&gt;
|-&lt;br /&gt;
| goodMobileServiceEnabled (deprecated)&lt;br /&gt;
| boolean&lt;br /&gt;
| Enable or disable domain Good Mobile service&lt;br /&gt;
|-&lt;br /&gt;
| goodMobileLicenses (deprecated)&lt;br /&gt;
| int&lt;br /&gt;
| Maximum number of mailboxes allowed to have Good Mobile service. 0 means unlimited&lt;br /&gt;
|-&lt;br /&gt;
| archivingServiceEnabled&lt;br /&gt;
| boolean&lt;br /&gt;
| Enable or disable domain archiving service&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post '/customers/123455/domains/newcompany.com', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
  'maxNumMailboxes' =&amp;gt; '5',&lt;br /&gt;
  'extraStorage' =&amp;gt; '1024'&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
put '/customers/123455/domains/newcompany.com', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
  'maxNumMailboxes' =&amp;gt; '25',&lt;br /&gt;
  'extraStorage' =&amp;gt; '2048'&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| New domain name doesn't meet the naming requirements&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid domain name&lt;br /&gt;
|-&lt;br /&gt;
| New domain name already exists&lt;br /&gt;
| 400&lt;br /&gt;
| abc.com already exists as a domain or alternate domain&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Move (Reseller Only)==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[PUT] https://api.emailsrvr.com/v0/customers/&lt;br /&gt;
      (new customer account number)/domains/(domain name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Moves the domain to another customer account.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| moveDomain&lt;br /&gt;
| boolean&lt;br /&gt;
| Indicate whether or not moving the domain&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
Note 'Move Domain' and 'Edit Domain' share the same URI and HTTP verb. When the domain doesn't belong to the customer and 'moveDomain' is set to 'true', API will take the request as a 'Move Domain' call.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
put '/customers/123456/domains/newcompany.com', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
  'moveDomain' =&amp;gt; 'true'&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Delete (Reseller Only)==&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[DELETE] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Deletes the domain.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The domain and all the mailboxes, mailbox contents, groups, and contacts are deleted permanently.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
delete '/customers/12345678/domains/newcompany.com', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Alternate Domains ==&lt;br /&gt;
&lt;br /&gt;
=== Index (Reseller Only) ===&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/&lt;br /&gt;
                domains/(domain name)/alternatedomains&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
This operation returns a list of Domain Aliases and Accepted Domains for the domain. The type of the alternate domain is indicated by the 'type' data field. The XML schema for the returned data is [http://api.emailsrvr.com/v0/Schemas/DomainSplitRouting.xsd DomainAlternateList.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/test.com/alternatedomains', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;alternateDomainList 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; xmlns=&amp;quot;urn:xml:domainAlternateList&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;alternateDomains&amp;gt;&lt;br /&gt;
    &amp;lt;alternateDomain&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;domainalias.com&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;type&amp;gt;DomainAlias&amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;/alternateDomain&amp;gt;&lt;br /&gt;
    &amp;lt;alternateDomain&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;accepteddomain.com&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;type&amp;gt;AcceptedDomain&amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;/alternateDomain&amp;gt;&lt;br /&gt;
  &amp;lt;/alternateDomains&amp;gt;&lt;br /&gt;
&amp;lt;/alternateDomainList&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{&amp;quot;alternateDomains&amp;quot;:[{&amp;quot;name&amp;quot;:&amp;quot;domainalias.com&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;DomainAlias&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;accepteddomain.com&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;AcceptedDomain&amp;quot;}]}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add (Reseller Only) ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
 [POST] https://api.emailsrvr.com/v0/customers/(customer account number)&lt;br /&gt;
    /domains/(domain name)/alternatedomains/(alternate domain name)&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Adds either a Domain Alias or Accepted Domain to the domain.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| type&lt;br /&gt;
| string&lt;br /&gt;
| Alternate domain type. Send &amp;quot;DomainAlias&amp;quot; for a domain alias, and &amp;quot;AcceptedDomain&amp;quot; for an accepted domain. (Required)&lt;br /&gt;
|-&lt;br /&gt;
| createForExistingRecipients&lt;br /&gt;
| boolean&lt;br /&gt;
| Whether the alternate addresses should be created for existing mailboxes when adding an Accepted Domain. Sending this field in the request when the type is Domain Alias will throw an error. This defaults to false.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post '/customers/123456/domains/example.com/alternatedomains/accepteddomain.com', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
  'type' =&amp;gt; 'AcceptedDomain'&lt;br /&gt;
  'createForExistingRecipients' =&amp;gt; 'true'&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| New domain name doesn't meet the naming requirements&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid domain name&lt;br /&gt;
|-&lt;br /&gt;
| Alternate domain already exists&lt;br /&gt;
| 400&lt;br /&gt;
| abc.com already exists as a domain or alternate domain&lt;br /&gt;
|-&lt;br /&gt;
| The 'createForExistingRecipients' field was sent with either data, or as a null field. It should not be included in the form data at all.&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid Alternate Domain Setting: createForExistingRecipients is an invalid setting for Domain Aliases&lt;br /&gt;
|-&lt;br /&gt;
| The only valid values for 'type' are 'DomainAlias' and 'AcceptedDomain', for a Domain Alias and Accepted Domain respectively.&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid Alternate Domain type&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Delete (Reseller Only) ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[DELETE] https://api.emailsrvr.com/v0/customers/(customer account number)/&lt;br /&gt;
      domains/(domain name)/alternatedomains/(alternate domain name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Deletes the alternate domain.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
delete '/customers/12345678/domains/example.com/alternatedomains/accepteddomain.com'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Split Domain Routing ==&lt;br /&gt;
&lt;br /&gt;
=== Show Settings ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain)/splitdomainrouting&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
''Description'':&lt;br /&gt;
Shows the current external email server. The XML schema document for the output of this command is [http://api.emailsrvr.com/v0/Schemas/DomainSplitRouting.xsd DomainSplitRouting.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/company.com/splitdomainrouting', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;splitDomainRouting 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; xmlns=&amp;quot;urn:xml:splitDomainRouting&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;externalServer&amp;gt;email.externalserver.com&amp;lt;/externalServer&amp;gt;&lt;br /&gt;
&amp;lt;/splitDomainRouting&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''JSON Result Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&amp;quot;externalServer&amp;quot;:&amp;quot;email.externalserver.com&amp;quot;}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Edit Settings ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[PUT] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain)/splitdomainrouting&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
This command sets the external email server. This command will return a success when the verification passes. Since this involves communication to the external server the request may take some time. If the verification fails a 400 return code will be sent back with the verification's error message.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| externalServer&lt;br /&gt;
| string&lt;br /&gt;
| The address of the external email server. To turn off split domain routing send 'none'. (Required)&lt;br /&gt;
|-&lt;br /&gt;
| verificationAddress&lt;br /&gt;
| string&lt;br /&gt;
| An email address part of your domain or one of the alternate domains that the external server is already set up to handle. (Required only when turning on split domain routing, Do not send this field if turning off.)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
put '/customers/12345678/domains/company.com/splitdomainrouting', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
  'externalServer' =&amp;gt; 'email.externalserver.com',&lt;br /&gt;
  'verificationAddress' =&amp;gt; 'externalaccount@company.com',&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| The SMTP host could not be found.&lt;br /&gt;
| 400&lt;br /&gt;
| One of the verification error messages.&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
== Archiving SSO Login URL ==&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain)/archivingSSOLoginURL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Gets the domain archiving service SSO login URL.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The retrieved URL can be used in browser to access the domain archiving control panel.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/company.com/archivingSSOLoginURL', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| No archiving service&lt;br /&gt;
| 404&lt;br /&gt;
| Domain abc.com has no archiving service enabled&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Domain Public Folders (Reseller Only) ==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
   [PUT] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)/ex/publicfolders&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Enables the Exchange Public Folders feature on the domain. Once enabled, it cannot be disabled.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| enabled&lt;br /&gt;
| string&lt;br /&gt;
| Whether to enable public folders. Once enabled, it cannot be disabled.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
put '/customers/12345678/domains/company.com/ex/publicFolders', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
  'enabled' =&amp;gt; 'true'&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Public folders cannot be turned off after it's been turned on.&lt;br /&gt;
| 400&lt;br /&gt;
| Public Folders cannot be disabled once enabled&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Zhen.wei</name></author>	</entry>

	<entry>
		<id>http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Customer_(Rest_API)&amp;diff=410</id>
		<title>Customer (Rest API)</title>
		<link rel="alternate" type="text/html" href="http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Customer_(Rest_API)&amp;diff=410"/>
				<updated>2010-08-19T14:51:37Z</updated>
		
		<summary type="html">&lt;p&gt;Zhen.wei: replace page with offset&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Index (Reseller Only) ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 [GET] &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/v0/customers&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
This operation returns the list of customers that the authenticated user has access to.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Filter/Search'':&lt;br /&gt;
&lt;br /&gt;
Searching will return results based on the name, account number and reference number fields. We also provide a separate query method ?referenceNumber=123456 that will return a Show on the exact customer whose reference number is as specified.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
For the text/xml format, refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/CustomerList.xsd CustomerList.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers?size=100&amp;amp;offset=10', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;customerList 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; xmlns=&amp;quot;urn:xml:customerList&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;offset&amp;gt;0&amp;lt;/offset&amp;gt;&lt;br /&gt;
  &amp;lt;size&amp;gt;50&amp;lt;/size&amp;gt;&lt;br /&gt;
  &amp;lt;total&amp;gt;3&amp;lt;/total&amp;gt;&lt;br /&gt;
  &amp;lt;customers&amp;gt;&lt;br /&gt;
    &amp;lt;customer&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;API Customer 17&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;accountNumber&amp;gt;460182&amp;lt;/accountNumber&amp;gt;&lt;br /&gt;
      &amp;lt;referenceNumber&amp;gt;49&amp;lt;/referenceNumber&amp;gt;&lt;br /&gt;
    &amp;lt;/customer&amp;gt;&lt;br /&gt;
    &amp;lt;customer&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;API Customer 39&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;accountNumber&amp;gt;460181&amp;lt;/accountNumber&amp;gt;&lt;br /&gt;
      &amp;lt;referenceNumber&amp;gt;23&amp;lt;/referenceNumber&amp;gt;&lt;br /&gt;
    &amp;lt;/customer&amp;gt;&lt;br /&gt;
    &amp;lt;customer&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;API Customer 50&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;accountNumber&amp;gt;460183&amp;lt;/accountNumber&amp;gt;&lt;br /&gt;
      &amp;lt;referenceNumber&amp;gt;10&amp;lt;/referenceNumber&amp;gt;&lt;br /&gt;
    &amp;lt;/customer&amp;gt;&lt;br /&gt;
  &amp;lt;/customers&amp;gt;&lt;br /&gt;
&amp;lt;/customerList&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''JSON Result Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&amp;quot;offset&amp;quot;:0,&amp;quot;size&amp;quot;:50,&amp;quot;total&amp;quot;:3,&amp;quot;customers&amp;quot;:&lt;br /&gt;
[{&amp;quot;name&amp;quot;:&amp;quot;API Customer 17&amp;quot;,&amp;quot;accountNumber&amp;quot;:&amp;quot;460182&amp;quot;,&amp;quot;referenceNumber&amp;quot;:&amp;quot;49&amp;quot;},&lt;br /&gt;
{&amp;quot;name&amp;quot;:&amp;quot;API Customer 39&amp;quot;,&amp;quot;accountNumber&amp;quot;:&amp;quot;460181&amp;quot;,&amp;quot;referenceNumber&amp;quot;:&amp;quot;23&amp;quot;},&lt;br /&gt;
{&amp;quot;name&amp;quot;:&amp;quot;API Customer 50&amp;quot;,&amp;quot;accountNumber&amp;quot;:&amp;quot;460183&amp;quot;,&amp;quot;referenceNumber&amp;quot;:&amp;quot;10&amp;quot;}]}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Show (Reseller Only) ==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 [GET] &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/v0/customers/(customer account number)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
The show operation will return detailed information about the specified account.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
To do the show operation on the account that is logged in instead of a customer's account, use &amp;quot;me&amp;quot; in the place of the customer account number i.e. &amp;lt;nowiki&amp;gt;'https://api.emailsrvr.com/v0/customers/me'&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The show operation only supports the GET HTTP verb. For text/xml format, refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/Customer.xsd Customer.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Reference Number''&lt;br /&gt;
&lt;br /&gt;
The query string &amp;quot;referenceNumber=xx&amp;quot; searches for a customer with an exact reference number.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Examples'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/me', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;customer 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; xmlns=&amp;quot;urn:xml:customer&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;name&amp;gt;API Customer 17&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;accountNumber&amp;gt;460182&amp;lt;/accountNumber&amp;gt;&lt;br /&gt;
  &amp;lt;referenceNumber&amp;gt;49&amp;lt;/referenceNumber&amp;gt;&lt;br /&gt;
&amp;lt;/customer&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''JSON Result Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&amp;quot;name&amp;quot;:&amp;quot;API Customer 17&amp;quot;,&amp;quot;accountNumber&amp;quot;:&amp;quot;460182&amp;quot;,&amp;quot;referenceNumber&amp;quot;:&amp;quot;49&amp;quot;}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Example of querying with Reference Number''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers?referenceNumber=49', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;customer 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; xmlns=&amp;quot;urn:xml:customer&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;name&amp;gt;API Customer 17&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;accountNumber&amp;gt;460182&amp;lt;/accountNumber&amp;gt;&lt;br /&gt;
  &amp;lt;referenceNumber&amp;gt;49&amp;lt;/referenceNumber&amp;gt;&lt;br /&gt;
&amp;lt;/customer&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Add/Edit (Reseller Only)==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 Add: [POST] &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/customers&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 Edit: [PUT] &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/customers/(customer account number)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Add/Edit a new sub-account. Note that customer number is not known until the customer is added.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| name&lt;br /&gt;
| string&lt;br /&gt;
| The customer's display name (Required for Add)&lt;br /&gt;
|-&lt;br /&gt;
| referenceNumber&lt;br /&gt;
| string&lt;br /&gt;
| The reference number of this account&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post '/customers', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
 'name' =&amp;gt; 'Name'&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
put '/customers/999999', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
 'name' =&amp;gt; 'NewName',&lt;br /&gt;
 'referenceNumber' =&amp;gt; '12345'&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| The name field was not specified&lt;br /&gt;
| 400&lt;br /&gt;
| Missing required field: name&lt;br /&gt;
|-&lt;br /&gt;
| The name field cannot be blank&lt;br /&gt;
| 400&lt;br /&gt;
| Required field name cannot be empty&lt;br /&gt;
|-&lt;br /&gt;
| Names cannot start with a space&lt;br /&gt;
| 400&lt;br /&gt;
| Improper Customer Name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Delete (Reseller Only) ==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 [DELETE] &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/customers/(customer account number)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Deletes the account.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
delete '/customers/999999', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Create Login Tokens ==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
[POST] &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/customers/(customer account number)/loginToken&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Generate a login token using which a customer can use to SSO into the Control Panel.&lt;br /&gt;
&lt;br /&gt;
Login tokens can be generated for two kinds of users: virtual and non-virtual. The distinction between&lt;br /&gt;
the two users is that a virtual user gets the administrator's privileges when SSOed into the Control Panel.&lt;br /&gt;
On the other hand, the non-virtual user gets only as much privileges as are given to him/her when&lt;br /&gt;
his/her account was created.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| userName&lt;br /&gt;
| string&lt;br /&gt;
| The name for which login token needs to be created. &lt;br /&gt;
|-&lt;br /&gt;
| virtualUser&lt;br /&gt;
| string&lt;br /&gt;
| A flag indicating whether the user for whom the login token needs to be generated is virtual or non-virtual. Valid values: true/false. When set to true, the userName is treated as a virtual user. When set to false, the userName is treated as a non-virtual user. A non-virtual user must be an existing admin user.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post '/customers/460896/loginToken', {'userName' =&amp;gt; 'dev_cust_limitedadmin', 'virtualUser' =&amp;gt; 'true'}, 'text/xml'&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create login token for virtual user 'dev_cust_limitedadmin'.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&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;
&lt;br /&gt;
&amp;lt;loginToken xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; &lt;br /&gt;
&lt;br /&gt;
xmlns=&amp;quot;urn:xml:loginToken&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;user&amp;gt;dev_cust_limitedadmin_460896_vu&amp;lt;/user&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;token&amp;gt;EEB0012D8DBC2CAC26E28365D44B537FFF0D79350&amp;lt;/token&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;dateCreated&amp;gt;6/11/2010 10:53:46 AM&amp;lt;/dateCreated&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/loginToken&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The login token is valid for ten minutes after its creation. The &amp;quot;dateCreated&amp;quot; field indicates the time when the login token&lt;br /&gt;
is created. &lt;br /&gt;
&lt;br /&gt;
Using the above created login token the customer with account number 460896 can SSO into the Control Panel using&lt;br /&gt;
the following URL: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://ControlPanelURL/TokenLogin.aspx?loginToken=EEB0012D8DBC2CAC26E28365D44B537FFF0D79350&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A customer can also use the login token to login on their private label control panel (E.g.: cp.mydomain.com/logintokens.aspx).&lt;/div&gt;</summary>
		<author><name>Zhen.wei</name></author>	</entry>

	<entry>
		<id>http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Rackspace_Mailbox_(Rest_API)&amp;diff=409</id>
		<title>Rackspace Mailbox (Rest API)</title>
		<link rel="alternate" type="text/html" href="http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Rackspace_Mailbox_(Rest_API)&amp;diff=409"/>
				<updated>2010-08-10T16:09:53Z</updated>
		
		<summary type="html">&lt;p&gt;Zhen.wei: fix rs mailbox name.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== Index ==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] http://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /rs/mailboxes&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Shows a list of mailboxes under the domain&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The show operation only supports the GET HTTP verb. For .xml format refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/RSMailboxList.xsd RSMailboxList.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/example.com/rs/mailboxes', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;rsMailboxList xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:rsMailboxList&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;offset&amp;gt;0&amp;lt;/offset&amp;gt;&lt;br /&gt;
  &amp;lt;size&amp;gt;50&amp;lt;/size&amp;gt;&lt;br /&gt;
  &amp;lt;total&amp;gt;2&amp;lt;/total&amp;gt;&lt;br /&gt;
  &amp;lt;rsMailboxes&amp;gt;&lt;br /&gt;
    &amp;lt;rsMailbox&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;apirsmailbox37&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/rsMailbox&amp;gt;&lt;br /&gt;
    &amp;lt;rsMailbox&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;apirsmailbox91&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/rsMailbox&amp;gt;&lt;br /&gt;
  &amp;lt;/rsMailboxes&amp;gt;&lt;br /&gt;
&amp;lt;/rsMailboxList&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;offset&amp;quot;:0,&amp;quot;size&amp;quot;:50,&amp;quot;total&amp;quot;:2,&amp;quot;rsMailboxes&amp;quot;:[{&amp;quot;name&amp;quot;:&amp;quot;apirsmailbox37&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;apirsmailbox91&amp;quot;}]}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Show ==&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /rs/mailboxes/(mailbox name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
The show operation will return detailed information about the specified mailbox.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The show operation only supports the GET HTTP verb. For .xml format refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/RSMailbox.xsd RSMailbox.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/example.com/rs/mailboxes/alex.smith', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;rsMailbox xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:rsMailbox&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;name&amp;gt;apirsmailbox37&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;size&amp;gt;10240&amp;lt;/size&amp;gt;&lt;br /&gt;
  &amp;lt;vacationMessage&amp;gt;My Test Vacation Message&amp;lt;/vacationMessage&amp;gt;&lt;br /&gt;
  &amp;lt;enableVacationMessage&amp;gt;true&amp;lt;/enableVacationMessage&amp;gt;&lt;br /&gt;
  &amp;lt;emailForwardingAddressList&amp;gt;&lt;br /&gt;
    &amp;lt;emailAddress&amp;gt;notreal0@apidomain.net&amp;lt;/emailAddress&amp;gt;&lt;br /&gt;
    &amp;lt;emailAddress&amp;gt;notreal1@apidomain.net&amp;lt;/emailAddress&amp;gt;&lt;br /&gt;
  &amp;lt;/emailForwardingAddressList&amp;gt;&lt;br /&gt;
  &amp;lt;saveForwardedEmail&amp;gt;false&amp;lt;/saveForwardedEmail&amp;gt;&lt;br /&gt;
  &amp;lt;contactInfo&amp;gt;&lt;br /&gt;
    &amp;lt;lastName&amp;gt;Testlast&amp;lt;/lastName&amp;gt;&lt;br /&gt;
    &amp;lt;firstName&amp;gt;Jayfirst&amp;lt;/firstName&amp;gt;&lt;br /&gt;
    &amp;lt;generationQualifier&amp;gt;Jr&amp;lt;/generationQualifier&amp;gt;&lt;br /&gt;
    &amp;lt;initials&amp;gt;A&amp;lt;/initials&amp;gt;&lt;br /&gt;
    &amp;lt;organizationUnit&amp;gt;IT&amp;lt;/organizationUnit&amp;gt;&lt;br /&gt;
    &amp;lt;businessStreet&amp;gt;123 Biz St&amp;lt;/businessStreet&amp;gt;&lt;br /&gt;
    &amp;lt;businessCity&amp;gt;Blacksburg&amp;lt;/businessCity&amp;gt;&lt;br /&gt;
    &amp;lt;businessState&amp;gt;VA&amp;lt;/businessState&amp;gt;&lt;br /&gt;
    &amp;lt;businessPostalCode&amp;gt;24060&amp;lt;/businessPostalCode&amp;gt;&lt;br /&gt;
    &amp;lt;businessCountry&amp;gt;USA&amp;lt;/businessCountry&amp;gt;&lt;br /&gt;
    &amp;lt;homeStreet&amp;gt;456 Home St&amp;lt;/homeStreet&amp;gt;&lt;br /&gt;
    &amp;lt;homeCity&amp;gt;Charlotte&amp;lt;/homeCity&amp;gt;&lt;br /&gt;
    &amp;lt;homeState&amp;gt;NC&amp;lt;/homeState&amp;gt;&lt;br /&gt;
    &amp;lt;homePostalCode&amp;gt;28210&amp;lt;/homePostalCode&amp;gt;&lt;br /&gt;
    &amp;lt;homeCountry&amp;gt;USA&amp;lt;/homeCountry&amp;gt;&lt;br /&gt;
    &amp;lt;businessNumber&amp;gt;555.123.0001&amp;lt;/businessNumber&amp;gt;&lt;br /&gt;
    &amp;lt;homeNumber&amp;gt;555.123.0003&amp;lt;/homeNumber&amp;gt;&lt;br /&gt;
    &amp;lt;mobileNumber&amp;gt;555.123.0004&amp;lt;/mobileNumber&amp;gt;&lt;br /&gt;
    &amp;lt;faxNumber&amp;gt;555.123.0005&amp;lt;/faxNumber&amp;gt;&lt;br /&gt;
    &amp;lt;homeFaxNumber&amp;gt;555.123.0006&amp;lt;/homeFaxNumber&amp;gt;&lt;br /&gt;
    &amp;lt;pagerNumber&amp;gt;555.123.0002&amp;lt;/pagerNumber&amp;gt;&lt;br /&gt;
    &amp;lt;notes&amp;gt;This is my note about my mailbox.&amp;lt;/notes&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;My Title&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;userID&amp;gt;J.Test&amp;lt;/userID&amp;gt;&lt;br /&gt;
    &amp;lt;organizationalStatus&amp;gt;OrgStatus&amp;lt;/organizationalStatus&amp;gt;&lt;br /&gt;
    &amp;lt;employeeType&amp;gt;Full-Time&amp;lt;/employeeType&amp;gt;&lt;br /&gt;
  &amp;lt;/contactInfo&amp;gt;&lt;br /&gt;
&amp;lt;/rsMailbox&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
''{&amp;quot;emailForwardingAddressList&amp;quot;:[&amp;quot;test@resellerallservices.net&amp;quot;],&amp;quot;enableVacationMessage&amp;quot;:true,&amp;quot;contactInfo&amp;quot;:{&amp;quot;businessNumber&amp;quot;:&amp;quot;555.123.0001&amp;quot; ,&amp;quot;faxNumber&amp;quot;:&amp;quot;555.123.0005&amp;quot; ,&amp;quot;firstName&amp;quot;:&amp;quot;Jimmy&amp;quot; ,&amp;quot;homeNumber&amp;quot;:&amp;quot;555.123.0003&amp;quot; ,&amp;quot;lastName&amp;quot;:&amp;quot;TestLaste&amp;quot; ,&amp;quot;mobileNumber&amp;quot;:&amp;quot;555.123.0004&amp;quot; ,&amp;quot;notes&amp;quot;:&amp;quot;This is my note about my mailbox.&amp;quot; ,&amp;quot;pagerNumber&amp;quot;:&amp;quot;555.123.0002&amp;quot; ,&amp;quot;businessCity&amp;quot;:&amp;quot;&amp;quot; ,&amp;quot;businessCountry&amp;quot;:&amp;quot;&amp;quot; ,&amp;quot;businessPostalCode&amp;quot;:&amp;quot;&amp;quot; ,&amp;quot;businessState&amp;quot;:&amp;quot;&amp;quot; ,&amp;quot;businessStreet&amp;quot;:&amp;quot;&amp;quot; ,&amp;quot;employeeType&amp;quot;:&amp;quot;DoesNotExist&amp;quot; ,&amp;quot;generationQualifier&amp;quot;:&amp;quot;Jr&amp;quot; ,&amp;quot;homeCity&amp;quot;:&amp;quot;&amp;quot; ,&amp;quot;homeCountry&amp;quot;:&amp;quot;&amp;quot; ,&amp;quot;homeFaxNumber&amp;quot;:&amp;quot;555.123.0006&amp;quot; ,&amp;quot;homePostalCode&amp;quot;:&amp;quot;&amp;quot; ,&amp;quot;homeState&amp;quot;:&amp;quot;&amp;quot; ,&amp;quot;homeStreet&amp;quot;:&amp;quot;&amp;quot; ,&amp;quot;initials&amp;quot;:&amp;quot;A&amp;quot; ,&amp;quot;organizationUnit&amp;quot;:&amp;quot;IT&amp;quot; ,&amp;quot;organizationalStatus&amp;quot;:&amp;quot;gainfully employed&amp;quot; ,&amp;quot;title&amp;quot;:&amp;quot;My Title&amp;quot; ,&amp;quot;userID&amp;quot;:&amp;quot;J.Test&amp;quot;},&amp;quot;name&amp;quot;:&amp;quot;unittestexist&amp;quot; ,&amp;quot;saveForwardedEmail&amp;quot;:false,&amp;quot;size&amp;quot;:10240,&amp;quot;vacationMessage&amp;quot;:&amp;quot;Test Vacation Message&amp;quot;}''&lt;br /&gt;
&lt;br /&gt;
== Add/Edit ==&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Add: [POST] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /rs/mailboxes/(mailbox name)&lt;br /&gt;
Edit: [PUT] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /rs/mailboxes/(mailbox name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Adds/Edits a Rackspace Email mailbox using the following form fields.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| password&lt;br /&gt;
| string&lt;br /&gt;
| Password (Required for Add)&lt;br /&gt;
|-&lt;br /&gt;
| size&lt;br /&gt;
| positive integer&lt;br /&gt;
| Mailbox size in megabytes (Required for Add)&lt;br /&gt;
|-&lt;br /&gt;
| enableVacationMessage&lt;br /&gt;
| boolean&lt;br /&gt;
| indicates whether vacation message has been enabled&lt;br /&gt;
|-&lt;br /&gt;
| vacationMessage&lt;br /&gt;
| string&lt;br /&gt;
| A mailbox's vacation message&lt;br /&gt;
|-&lt;br /&gt;
| emailForwardingAddresses&lt;br /&gt;
| string&lt;br /&gt;
| A comma delimited list, Maximum 15 addresses, 4 of which can be outside of this domain&lt;br /&gt;
|-&lt;br /&gt;
| saveForwardedEmail&lt;br /&gt;
| string&lt;br /&gt;
| Indicates whether to save a copy of any forwarded email&lt;br /&gt;
|-&lt;br /&gt;
| lastName&lt;br /&gt;
| string&lt;br /&gt;
| A last name&lt;br /&gt;
|-&lt;br /&gt;
| firstName&lt;br /&gt;
| string&lt;br /&gt;
| A first name&lt;br /&gt;
|-&lt;br /&gt;
| generationQualifier&lt;br /&gt;
| string&lt;br /&gt;
| A person's generation (ex. Jr., Sr., III)&lt;br /&gt;
|-&lt;br /&gt;
| initials&lt;br /&gt;
| string&lt;br /&gt;
| A person's middle initial&lt;br /&gt;
|-&lt;br /&gt;
| organizationUnit&lt;br /&gt;
| string&lt;br /&gt;
| A person's organization unit (ex. Marketing)&lt;br /&gt;
|-&lt;br /&gt;
| businessNumber&lt;br /&gt;
| string&lt;br /&gt;
| Business phone number&lt;br /&gt;
|-&lt;br /&gt;
| pagerNumber&lt;br /&gt;
| string&lt;br /&gt;
| Pager phone number&lt;br /&gt;
|-&lt;br /&gt;
| homeNumber&lt;br /&gt;
| string&lt;br /&gt;
| Home phone number&lt;br /&gt;
|-&lt;br /&gt;
| mobileNumber&lt;br /&gt;
| string&lt;br /&gt;
| Mobile phone number&lt;br /&gt;
|-&lt;br /&gt;
| faxNumber&lt;br /&gt;
| string&lt;br /&gt;
| Fax phone number &lt;br /&gt;
|-&lt;br /&gt;
| homeFaxNumber&lt;br /&gt;
| string&lt;br /&gt;
| Home Fax phone number &lt;br /&gt;
|-&lt;br /&gt;
| businessStreet&lt;br /&gt;
| string&lt;br /&gt;
| The business street address for a contact&lt;br /&gt;
|-&lt;br /&gt;
| businessCity&lt;br /&gt;
| string&lt;br /&gt;
| The business city for a contact&lt;br /&gt;
|-&lt;br /&gt;
| businessState&lt;br /&gt;
| string&lt;br /&gt;
| The business state for a contact&lt;br /&gt;
|-&lt;br /&gt;
| businessPostalCode&lt;br /&gt;
| string&lt;br /&gt;
| The business postal code/zip code for a contact&lt;br /&gt;
|-&lt;br /&gt;
| businessCountry&lt;br /&gt;
| string&lt;br /&gt;
| The business country for a contact&lt;br /&gt;
|-&lt;br /&gt;
| homeStreet&lt;br /&gt;
| string&lt;br /&gt;
| The home street address for a contact&lt;br /&gt;
|-&lt;br /&gt;
| homeCity&lt;br /&gt;
| string&lt;br /&gt;
| The home city for a contact&lt;br /&gt;
|-&lt;br /&gt;
| homeState&lt;br /&gt;
| string&lt;br /&gt;
| The home state for a contact&lt;br /&gt;
|-&lt;br /&gt;
| homePostalCode&lt;br /&gt;
| string&lt;br /&gt;
| The home postal code/zip code for a contact&lt;br /&gt;
|-&lt;br /&gt;
| homeCountry&lt;br /&gt;
| string&lt;br /&gt;
| The home country for a contact&lt;br /&gt;
|-&lt;br /&gt;
| notes&lt;br /&gt;
| string&lt;br /&gt;
| Any notes for the mailbox&lt;br /&gt;
|-&lt;br /&gt;
| title&lt;br /&gt;
| string&lt;br /&gt;
| A contact's title&lt;br /&gt;
|-&lt;br /&gt;
| userID&lt;br /&gt;
| string&lt;br /&gt;
| A user ID for a contact&lt;br /&gt;
|-&lt;br /&gt;
| organizationalStatus&lt;br /&gt;
| string&lt;br /&gt;
| A contact's organization status&lt;br /&gt;
|-&lt;br /&gt;
| employeeType&lt;br /&gt;
| string&lt;br /&gt;
| A contact's employee type&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post '/customers/12345678/domains/example.com/rs/mailboxes/alex.smith', 'text/xml',&lt;br /&gt;
{ &lt;br /&gt;
  'password' =&amp;gt; 'Secret13!@#',&lt;br /&gt;
  'size' =&amp;gt; '2048',&lt;br /&gt;
  'enableVacationMessage' =&amp;gt; 'true',&lt;br /&gt;
  'vacationMessage' =&amp;gt; 'My Vacation Message',&lt;br /&gt;
  'emailForwardingAddresses' =&amp;gt; 'sampletest@example.com,sampletest2@example.com',&lt;br /&gt;
  'saveForwardedEmail' =&amp;gt; 'false'&lt;br /&gt;
  'lastName' =&amp;gt; 'Testlastname',&lt;br /&gt;
  'firstName' =&amp;gt;  'Jay',&lt;br /&gt;
  'generationQualifier' =&amp;gt;  'III',&lt;br /&gt;
  'initials' =&amp;gt;  'A',&lt;br /&gt;
  'organizationUnit' =&amp;gt;  'IT',&lt;br /&gt;
  'businessStreet' =&amp;gt;  '123 Biz St.',&lt;br /&gt;
  'businessCity' =&amp;gt;  'Blacksburg',&lt;br /&gt;
  'businessState' =&amp;gt;  'VA',&lt;br /&gt;
  'businessPostalCode' =&amp;gt;  '24060',&lt;br /&gt;
  'businessCountry' =&amp;gt;  'USA',&lt;br /&gt;
  'homeStreet' =&amp;gt;  '456 Home St.',&lt;br /&gt;
  'homeCity' =&amp;gt;  'Charlotte',&lt;br /&gt;
  'homeState' =&amp;gt;  'NC',&lt;br /&gt;
  'homePostalCode' =&amp;gt;  '28210',&lt;br /&gt;
  'homeCountry' =&amp;gt;  'USA',&lt;br /&gt;
  'notes' =&amp;gt;  'This is my note about my mailbox.',&lt;br /&gt;
  'title' =&amp;gt;  'My Title',&lt;br /&gt;
  'userID' =&amp;gt;  'J.Test',&lt;br /&gt;
  'organizationalStatus' =&amp;gt;  'OrgStatus',&lt;br /&gt;
  'employeeType' =&amp;gt;  'Full-Time'&lt;br /&gt;
  &lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Delete ==&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[DELETE] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
            /rs/mailboxes/(mailbox name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Deletes the mailbox. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The mailbox and mailbox contents are deleted permanently.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
delete '/customers/12345678/domains/example.com/rs/mailboxes/alex.smith', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zhen.wei</name></author>	</entry>

	<entry>
		<id>http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Main_Page&amp;diff=408</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Main_Page&amp;diff=408"/>
				<updated>2010-08-02T03:47:31Z</updated>
		
		<summary type="html">&lt;p&gt;Zhen.wei: replace main page with rest api homepage&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The The Rackspace Email Rest API provides most of the functions of the Control Panel through a REST-based [http://en.wikipedia.org/wiki/Web_service web API]. Whether it is adding a new customer account, adding mailboxes, or any other of the supported features the API allows your application to administer the changes regardless of your application's language or nature. For more information on RESTful web services refer to the following sites:&lt;br /&gt;
&lt;br /&gt;
[http://www.peej.co.uk/articles/restfully-delicious.html Paul James's Homepage: A RESTful Web service, an example]&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Representational_State_Transfer#External_links Wikipedia: Representational State Transfer - External Links]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The API is accessible to all with access to Control Panel, including resellers, business customers, enterprise customers, and indirect customers. However, not all operations are available to non-resellers. See the [[Rest_API#Operations|Operations]] section for more details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Rackspace Email Soap API Homepage has been moved to [[Soap_API| here]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Recent Changes ==&lt;br /&gt;
&lt;br /&gt;
'''08/01/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Added Rackspace Email Mailbox Contact info. See [[Rackspace_Mailbox_(Rest_API)| here]].&lt;br /&gt;
* Added Create Login Token. See See [[Customer_(Rest_API)#Create_Login_Tokens| here]].&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''06/20/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Added [[Rackspace_Alias(Rest_API)| Rackspace Email Alias]].&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''06/11/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Added Rackspace Email Mailbox Spam Settings/Blacklist/Safelist. See [[Rackspace_Mailbox_Spam_(Rest_API)| here]].&lt;br /&gt;
* Now Rackspace Email Mailbox can Show/Edit vacation message and email forwarding address. See [[Rackspace_Mailbox_(Rest_API)| here]].&lt;br /&gt;
* Added SharePoint Service Settings. See [[SharePoint_(Rest_API)| here]].&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''05/16/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Added shortened URLs. Any URLs that starts with '/customers/me/domains/~' is equivalent to '/domains/~'.&lt;br /&gt;
* Added Rackspace Email Mailbox Add/Edit/Delete/Index. See [[Rackspace_Mailbox_(Rest_API)| here]].&lt;br /&gt;
* Allows to customize Exchange mailbox list result. See [[Exchange_Mailbox_(Rest_API)#Index| Exchange Mailbox Index]] action 'Custom Fields' section.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
Changes:&lt;br /&gt;
* Server throttling section has been updated. See [[Rest_API#Throttling| here]].&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
Bug fix:&lt;br /&gt;
* Fixed a bug that request without User-Agent Header gets 500 error. Now it gets &amp;quot;Authentication failed&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''03/28/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Rest API can be accessed by Business Users. However, not all operations are available.&lt;br /&gt;
* Domain Public Folders can be enabled now.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
Deprecated:&lt;br /&gt;
* Good Mobile Service is no longer supported.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''03/14/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Index/Add/Edit/Delete Mailbox Permissions.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
Known Issues:&lt;br /&gt;
* Domain public folders can't be enabled using Rest API at this moment. The next release (on 03/21/2010) will fix this problem.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Operations ==&lt;br /&gt;
&lt;br /&gt;
The following pages detail the operations that the API supports. The operations are grouped into sections based on the entity/object types that each operation interacts with. Non-resellers do not have access to all functions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Resource&lt;br /&gt;
!Example URI&lt;br /&gt;
!Business User Access&lt;br /&gt;
|-&lt;br /&gt;
| [[Customer_(Rest_API)| Customer]]&lt;br /&gt;
| /customers/123456789&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| [[Domain_(Rest_API)| Domain]]&lt;br /&gt;
| /customers/123456789/domains/example.com&lt;br /&gt;
| [[Domain_(Rest_API)#Index| Index]], [[Domain_(Rest_API)#Show| Show]], [[Domain_(Rest_API)#Split Domain Routing| Split Domain Routing]], [[Domain_(Rest_API)#Archiving SSO Login URL| Archiving SSO Login URL]], [[Domain_(Rest_API)#Domain Public Folders|Domain Public Folders ]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Domain_Spam_(Rest_API)| Domain Spam Settings]]&lt;br /&gt;
| /customers/123456789/domains/example.com/spam/settings&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Rackspace_Mailbox_(Rest_API)|  Rackspace Email Mailbox]]&lt;br /&gt;
|  /customers/123456789/domains/example.com/rs/mailboxes/john.smith&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Rackspace_Mailbox_Spam_(Rest_API)| Rackspace Email Mailbox Spam Settings]]&lt;br /&gt;
|  /customers/123456789/domains/example.com/rs/mailboxes/john.smith/spam&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Rackspace_Alias(Rest_API)|  Rackspace Email Alias]]&lt;br /&gt;
|  /customers/123456789/domains/example.com/rs/mailboxes/john.smith/alias&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Mailbox_(Rest_API)| Exchange Mailbox]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/mailboxes/john.smith&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Mailbox_Spam_(Rest_API)| Exchange Mailbox Spam Settings]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/mailboxes/john.smith/spam&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Contact_(Rest_API)| Exchange Contact]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/contacts/john.smith&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Distribution_List_(Rest_API)| Exchange Distribution List]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/distributionlists/group.name&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Resource_Mailbox_(Rest_API)| Exchange Resource Mailbox]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/resources/conference.room&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[SharePoint_(Rest_API)| SharePoint]]&lt;br /&gt;
| /customers/123456789/sharepoint/settings&lt;br /&gt;
| [[SharePoint_(Rest_API)#Show | Show]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The examples shown in the operation pages are written in Ruby and extensively use the helper functions shown in the Ruby Examples below.&lt;br /&gt;
&lt;br /&gt;
== Quick Start ==&lt;br /&gt;
&lt;br /&gt;
'''What you need:'''&lt;br /&gt;
* A Rackspace Email and Apps Control Panel admin account&lt;br /&gt;
* A HTTP class library that supports TLS and the HTTP methods: GET, POST, PUT, DELETE.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Making your first API call, an Show Customer request:'''&lt;br /&gt;
# Obtain your API keys&lt;br /&gt;
#:* Click on My Account at the top of the [https://apps.rackspace.com/?cp Control Panel web interface]. Under the Administrators heading there will be an link for the API keys page.&lt;br /&gt;
# Set up your client's HTTP request&lt;br /&gt;
#:* Set up your client to make calls to a URL beginning with &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/v0&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
#:* Populate the Accept, User-Agent and X-Api-Signature HTTP request headers correctly. This is explained in detail [[#HTTP Headers|here]].&lt;br /&gt;
# Make a GET request to /customers/me.&lt;br /&gt;
#:* The complete URI will be &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/v0/customers/me&amp;lt;/nowiki&amp;gt;. Use your HTTP library to retrieve the HTTP response code, 'x-error-message' HTTP response header and HTTP response body so that they may be displayed to help debug and determine success.&lt;br /&gt;
'''From here:'''&lt;br /&gt;
* Learn about the operations you'll be implementing at the subpages [[#Operations|here]].&lt;br /&gt;
&lt;br /&gt;
== Accessing the API ==&lt;br /&gt;
&lt;br /&gt;
Your application will need to make HTTP requests to remote servers. Most programming languages have this function provided in its class library. In addition to the common GET and POST HTTP methods, the library used will also need to support PUT and DELETE.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&lt;br /&gt;
Calls without [http://en.wikipedia.org/wiki/Transport_Layer_Security TLS] (formerly SSL) will complete successfully but it is HIGHLY RECOMMENDED that TLS always be used. Interception of unencrypted communication will allow a third party to have complete access to all functions available via the API.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For some language libraries just using an URL with https:// will cause the library to use TLS. In some other libraries however some options specific to the library may have to be configured to utilize TLS. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All API calls should be directed to a URL in the following format:&lt;br /&gt;
&amp;lt;pre&amp;gt;https://api.emailsrvr.com/(version)/(resource)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;https://api.emailsrvr.com/v0/customers/12345678/domains/customerbusiness.com&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Versions ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Supported Versions''&lt;br /&gt;
!''URL''&lt;br /&gt;
!''Version Documentation''&lt;br /&gt;
|-&lt;br /&gt;
| v0 (current)&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/v0/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
| http://signup.apps.rackspace.com/api-wiki/index.php/Rest_API&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The API version number is a component of the URL that is used to access the API. For example, to access the root of the API, the URL is https://api.emailsrvr.com/v0/. Bug fixes and minor non-breaking changes will be made without changing the version number. When major features or breaking changes are introduced, the version number will be incremented. It is not yet determined how many versions are going to be supported at any one time.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Non-breaking Changes''&lt;br /&gt;
!''Breaking Changes''&lt;br /&gt;
|-&lt;br /&gt;
| Adding new fields or attributes to form fields sent&lt;br /&gt;
| Changing or deleting any fields in form fields sent&lt;br /&gt;
|-&lt;br /&gt;
| Adding fields in returned data&lt;br /&gt;
| Changing or removing fields in returned data&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| Changing the URI of any resource&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Authentication ===&lt;br /&gt;
&lt;br /&gt;
To gain access to the API, your request must include a properly constructed X-Api-Signature HTTP header. Details on what to put in the header are below. To construct the header, you must have the following keys that that are generated from the [https://apps.rackspace.com/?cp Control Panel Web interface]. The key generation page can be found by clicking 'My Account' at the top, then 'Generate API Keys' in the Administrators section.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Key Name&lt;br /&gt;
!Description&lt;br /&gt;
!Example&lt;br /&gt;
|-&lt;br /&gt;
| User Key&lt;br /&gt;
| A public key that corresponds to your admin id&lt;br /&gt;
| ''eGbq9/2hcZsRlr1JV1Pi''&lt;br /&gt;
|-&lt;br /&gt;
| Secret Key&lt;br /&gt;
| A shared secret key&lt;br /&gt;
| ''QHOvchm/40czXhJ1OxfxK7jDHr3t''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An unsuccessful authentication will result in a 403 HTTP code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== X-Api-Signature Header ====&lt;br /&gt;
&lt;br /&gt;
Format is as follows:&lt;br /&gt;
&amp;lt;'''User Key'''&amp;gt;:&amp;lt;'''Timestamp'''&amp;gt;:&amp;lt;'''SHA1 Hash'''&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Example: ''eGbq9/2hcZsRlr1JV1Pi:20010317143725:46VIwd66mOFGG8IkbgnLlXnfnkU=''&lt;br /&gt;
&lt;br /&gt;
Remember to include the colons between the data strings!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''User Key''':&amp;lt;br&amp;gt;&lt;br /&gt;
This is the public key issued by the Control Panel browser interface.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Timestamp''':&amp;lt;br&amp;gt;&lt;br /&gt;
The format is YYYYMMDDHHmmss. All values besides year are zero-padded to two spaces. For example, March 08th 2001 at 2:37.25pm would be ''20010308143725''.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|YYYY&lt;br /&gt;
|Four-digit year&lt;br /&gt;
|-&lt;br /&gt;
| MM&lt;br /&gt;
| Month&lt;br /&gt;
|-&lt;br /&gt;
| DD&lt;br /&gt;
| Day&lt;br /&gt;
|-&lt;br /&gt;
| HH&lt;br /&gt;
| Hour in 24h format&lt;br /&gt;
|-&lt;br /&gt;
| mm&lt;br /&gt;
| Minute&lt;br /&gt;
|-&lt;br /&gt;
| ss&lt;br /&gt;
| Second&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''SHA1 Hash''':&lt;br /&gt;
&lt;br /&gt;
A SHA1 (Secure Hash Algorithm) hash must be applied to a string with the following information:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;'''User Key'''&amp;gt;&amp;lt;'''User Agent'''&amp;gt;&amp;lt;'''Timestamp'''&amp;gt;&amp;lt;'''Secret Key'''&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that the 'User Agent' must be the exact same as what is specified in the User-Agent HTTP header. Using the above example data, the string before hashing is:&amp;lt;br&amp;gt;''eGbq9/2hcZsRlr1JV1PiRackspace Management Interface20010308143725QHOvchm/40czXhJ1OxfxK7jDHr3t''&lt;br /&gt;
&lt;br /&gt;
Resulting base-64 SHA1 Hash:&amp;lt;br&amp;gt;''46VIwd66mOFGG8IkbgnLlXnfnkU=''&lt;br /&gt;
&lt;br /&gt;
Be sure to encode the binary hash, not the hex hash, into base-64. The resulting string should be 28 characters long.&lt;br /&gt;
&lt;br /&gt;
== Using the API ==&lt;br /&gt;
&lt;br /&gt;
=== Requests ===&lt;br /&gt;
&lt;br /&gt;
HTTP requests should be sent to the server with the correct URL, HTTP method, HTTP headers and form data (if needed). The URL specifies the resource, the HTTP method specifies what operation is done on the resource, and form data is used to specify the details of the resource when the resource is added or edited.&lt;br /&gt;
&lt;br /&gt;
The URLs, corresponding HTTP methods, and necessary form data for the desired operations are detailed in the [[#Operations|operation pages]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you're getting the HTTP status code 417 see [[Handling HTTP code 417:  Expectation failed]]&lt;br /&gt;
&lt;br /&gt;
==== URL ====&lt;br /&gt;
&lt;br /&gt;
The URLs are specifies the resource or resource collection. Objects are organized in a tree collection, starting with customers at the top, then domains, then domain objects next (such as mailboxes, contacts, and distribution lists) and so on. The URLs of the resources and collections accessible are found on the operation pages.&lt;br /&gt;
&lt;br /&gt;
==== HTTP Method ====&lt;br /&gt;
&lt;br /&gt;
It is the HTTP method that specifies what operation will be done on the resource. For example, to get the details of a mailbox a HTTP GET will be done on /customers/12345678/domains/example.com/ex/mailboxes/john.smith. If the mailbox does not exist, a HTTP POST to the same URL with the necessary form data will add the mailbox. Then, a HTTP PUT to the same URL will edit mailbox. And to delete the mailbox, an HTTP DELETE would be used.&lt;br /&gt;
&lt;br /&gt;
The types of operations a certain method performs is outlined below.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''HTTP Method''&lt;br /&gt;
!''Operations''&lt;br /&gt;
!''Response''&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=2|GET&lt;br /&gt;
|Index - returns a list of the resources&lt;br /&gt;
|rowspan=2|XML or JSON formatted data&lt;br /&gt;
|-&lt;br /&gt;
|Show - returns the details of the resource&lt;br /&gt;
|-&lt;br /&gt;
|POST&lt;br /&gt;
|Add - adds a new resource&lt;br /&gt;
|rowspan=3|Response code and error message (if applicable) only&lt;br /&gt;
|-&lt;br /&gt;
|PUT&lt;br /&gt;
|Edit - changes the details of the resource&lt;br /&gt;
|-&lt;br /&gt;
|DELETE&lt;br /&gt;
|Delete - deletes the resource&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== HTTP Headers ====&lt;br /&gt;
&lt;br /&gt;
All requests to the API must then include HTTP headers with the following information:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Header Name''&lt;br /&gt;
!''Description''&lt;br /&gt;
!''Example Header Value''&lt;br /&gt;
|-&lt;br /&gt;
| Accept&lt;br /&gt;
| The requested content type (required for Index and Show actions). Fill this with either 'text/xml' or 'application/json'. See [[#Formats|Response Formats]]&lt;br /&gt;
| ''text/xml''&lt;br /&gt;
|-&lt;br /&gt;
| User-Agent&lt;br /&gt;
| An identifier you choose for your client software&lt;br /&gt;
| ''Rackspace Management Interface''&lt;br /&gt;
|-&lt;br /&gt;
| X-Api-Signature&lt;br /&gt;
| An authentication string explained in detail [[#X-Api-Signature_Header|here]]&lt;br /&gt;
| ''eGbq9/2hcZsRlr1JV1Pi:20010317143725:HKUn0aajpSDx7qqGK3vqzn3FglI=''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Form Data ====&lt;br /&gt;
&lt;br /&gt;
When using Add and Edit operations, the details of the resource are sent to the API server via HTTP form data. Your HTTP library should include methods for sending form data along with an HTTP request. The library should by default send the data in the HTTP request body using the 'application/x-www-form-urlencoded' data format.&lt;br /&gt;
&lt;br /&gt;
==== Index Filter/Search ====&lt;br /&gt;
&lt;br /&gt;
The results of Index actions can be filtered/searched. The index URLs can take either one of the query strings: &amp;quot;?startswith=xx&amp;quot; or &amp;quot;?contains=xx,&amp;quot; where &amp;quot;xx&amp;quot; is the key word. If the request specifies more than one of these two query strings, a 400 HTTP error will be returned. Different fields will be searched depending on the resource type, see below.&lt;br /&gt;
&lt;br /&gt;
Note that &amp;quot;0-9&amp;quot; is a reserved key word for query string &amp;quot;startswith.&amp;quot; It represents any result starting with numbers.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Index Actions''&lt;br /&gt;
!''Where the key word will be searched''&lt;br /&gt;
|-&lt;br /&gt;
| Customer&lt;br /&gt;
| Customer name, account number, reference number&lt;br /&gt;
|-&lt;br /&gt;
| Domain&lt;br /&gt;
| Domain name&lt;br /&gt;
|-&lt;br /&gt;
| Mailbox&lt;br /&gt;
| Mailbox name, mailbox display name&lt;br /&gt;
|-&lt;br /&gt;
| Contact&lt;br /&gt;
| Contact display name, external email&lt;br /&gt;
|-&lt;br /&gt;
| Group&lt;br /&gt;
| Group name, group display name&lt;br /&gt;
|-&lt;br /&gt;
| Mobile Service&lt;br /&gt;
| Associated mailbox name, mailbox display name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Throttling ====&lt;br /&gt;
&lt;br /&gt;
The server limits the number of requests allowed per user in a certain period of time.  The number of requests made are logged per minute. Calls that were made correctly with a user's API key, but not completed for any reason, including those exceeding the throttle limit, are included in this count.&lt;br /&gt;
&lt;br /&gt;
If a user is over the throttling limit then a 403 HTTP code will be returned with an &amp;quot;Exceeded request limits&amp;quot; message.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Operation Category''&lt;br /&gt;
!''Request Limit''&lt;br /&gt;
|-&lt;br /&gt;
| GET&lt;br /&gt;
| 60 per minute&lt;br /&gt;
|-&lt;br /&gt;
| PUT, POST, DELETE&lt;br /&gt;
| 30 per minute&lt;br /&gt;
|-&lt;br /&gt;
| POST, PUT, DELETE on a domain&lt;br /&gt;
| 2 per minute&lt;br /&gt;
|-&lt;br /&gt;
| POST, DELETE on alternate domains&lt;br /&gt;
| 2 per minute&lt;br /&gt;
|-&lt;br /&gt;
| Enabling public folders for a domain&lt;br /&gt;
| 1 per 5 minutes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&lt;br /&gt;
Index of Exchange Mailboxes:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hypertext Transfer Protocol&lt;br /&gt;
    GET /v0/customers/12345678/domains/example.com/ex/mailboxes?size=100&amp;amp;offset=100 HTTP/1.1&lt;br /&gt;
    Host: api.emailsrvr.com&lt;br /&gt;
    User-Agent: Rackspace Management Interface&lt;br /&gt;
    X-Api-Signature: eGbq9/2hcZsRlr1JV1Pi:20010317143725:HKUn0aajpSDx7qqGK3vqzn3FglI=&lt;br /&gt;
    Accept: text/xml&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Adding New Exchange Mailbox:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hypertext Transfer Protocol&lt;br /&gt;
    POST /v0/customers/12345678/domains/example.com/ex/mailboxes/john.smith HTTP/1.1&lt;br /&gt;
    Host: api.emailsrvr.com&lt;br /&gt;
    User-Agent: Rackspace Management Interface&lt;br /&gt;
    X-Api-Signature: eGbq9/2hcZsRlr1JV1Pi:20010317143725:HKUn0aajpSDx7qqGK3vqzn3FglI=&lt;br /&gt;
    Content-Length: 53&lt;br /&gt;
        [Content length: 53]&lt;br /&gt;
    Content-Type: application/x-www-form-urlencoded&lt;br /&gt;
 &lt;br /&gt;
Line-based text data: application/x-www-form-urlencoded&lt;br /&gt;
    size=2048&amp;amp;displayName=John%20Smith&amp;amp;password=abcABC123&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Responses ===&lt;br /&gt;
&lt;br /&gt;
==== HTTP Status Code ====&lt;br /&gt;
&lt;br /&gt;
On a successfully executed request, a 200 HTTP Code is returned. If the request was unsuccessful however, an HTTP error code in the 400s or 500s will be returned.&lt;br /&gt;
&lt;br /&gt;
==== HTTP Response Body ====&lt;br /&gt;
&lt;br /&gt;
If the request is an Index or Show request, the request data will be returned in the format specified in the HTTP Body.&lt;br /&gt;
&lt;br /&gt;
===== Formats =====&lt;br /&gt;
&lt;br /&gt;
Requests for data (index and show requests) are returned with XML or JSON data based on what your application populates the [[#HTTP_Headers|HTTP Accept headers]] with.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For XML, populate the header with 'text/xml' (ex: Headers![&amp;quot;Accept&amp;quot;] = &amp;quot;text/xml&amp;quot;). The XML document returned will conform to a published XSD (XML Schema Document). There are many ways to parse the data in an XML document, but we have found that the [http://www.w3schools.com/XPath/default.asp XPath] tree-style traversal has served our purposes. In any case, your application will likely need to use a class library for your chosen method.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For JSON, populate the header with 'application/json' (ex: Headers![&amp;quot;Accept&amp;quot;] = &amp;quot;application/json&amp;quot;). As with XML, a library will likely be needed to parse the data.&lt;br /&gt;
&lt;br /&gt;
==== HTTP Headers ====&lt;br /&gt;
&lt;br /&gt;
The only data returned in the header is the error message (if any).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Header Name''&lt;br /&gt;
!''Description''&lt;br /&gt;
!''Example Header Value''&lt;br /&gt;
|-&lt;br /&gt;
| x-error-message&lt;br /&gt;
| The error message. See [[#Errors|Errors]].&lt;br /&gt;
| Missing required field: name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Errors ====&lt;br /&gt;
&lt;br /&gt;
In the event of an error, the error message will be returned the HTTP header '''x-error-message''' and an HTTP Status Code in the '''400'''s or '''500'''s will be returned.&lt;br /&gt;
&lt;br /&gt;
Note: Every language's HTTP library provides methods for retrieving HTTP response codes and response headers.&lt;br /&gt;
&lt;br /&gt;
Below are some errors that are common to many operations. Each operation also has some specific errors which are outlined with the operation. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
|Format is invalid&lt;br /&gt;
|400&lt;br /&gt;
|When requesting an index or show on a resource the 'Accept' header should be either 'text/xml' or 'application/json'&lt;br /&gt;
|-&lt;br /&gt;
|Expectation  Failed: See [[Handling HTTP code 417: Expectation failed]]&lt;br /&gt;
|417&lt;br /&gt;
|(none)&lt;br /&gt;
|-&lt;br /&gt;
|Customer account number is invalid&lt;br /&gt;
|404&lt;br /&gt;
|Invalid account number&lt;br /&gt;
|-&lt;br /&gt;
|Domain is not found&lt;br /&gt;
|404&lt;br /&gt;
|&amp;lt;domain name&amp;gt; not found&lt;br /&gt;
|-&lt;br /&gt;
|Mailbox is not found&lt;br /&gt;
|404&lt;br /&gt;
|Mailbox not found&lt;br /&gt;
|-&lt;br /&gt;
|Required form field is missing&lt;br /&gt;
|400&lt;br /&gt;
|Missing required field: &amp;lt;required field&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Required form field has null or empty string input&lt;br /&gt;
|400&lt;br /&gt;
|Required field &amp;lt;required field&amp;gt; cannot be empty&lt;br /&gt;
|-&lt;br /&gt;
|Integer form field has non-integer input&lt;br /&gt;
|400&lt;br /&gt;
|Invalid format for &amp;lt;field&amp;gt;, input must be an integer&lt;br /&gt;
|-&lt;br /&gt;
|Boolean form field has non-boolean input&lt;br /&gt;
|400&lt;br /&gt;
|Invalid format for &amp;lt;field&amp;gt;, input must be True or False&lt;br /&gt;
|-&lt;br /&gt;
|Form data has an unrecognized field&lt;br /&gt;
|400&lt;br /&gt;
|Unrecognized field: &amp;lt;field&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Entered invalid IP address&lt;br /&gt;
| 400&lt;br /&gt;
| invalid ip address: 123&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Paging ====&lt;br /&gt;
&lt;br /&gt;
The results of Index actions are split into pages to lessen potentially high resource usage. The index URLs have a query string with parameters in the format &amp;quot;?size=xx&amp;amp;offset=xx.&amp;quot; If a query parameter is omitted, the default value is used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Query Parameter''&lt;br /&gt;
!''Default''&lt;br /&gt;
!''Maximum''&lt;br /&gt;
!''Notes''&lt;br /&gt;
|-&lt;br /&gt;
| size&lt;br /&gt;
| 50&lt;br /&gt;
| 250&lt;br /&gt;
| This is the number of elements per page.&lt;br /&gt;
|-&lt;br /&gt;
| offset&lt;br /&gt;
| 0&lt;br /&gt;
| N/A&lt;br /&gt;
| This is the number of items to offset away from the first item in the list.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Example =====&lt;br /&gt;
&lt;br /&gt;
A PHP Example of paging can be found [[PHP_Examples_(Rest_API)| here]].&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 200 OK&lt;br /&gt;
Cache-Control: private&lt;br /&gt;
Content-Type: text/xml; charset=utf-8&lt;br /&gt;
Server: Microsoft-IIS/7.0&lt;br /&gt;
Date: Fri, 04 Dec 2009 19:08:11 GMT&lt;br /&gt;
Content-Length: 430&lt;br /&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;domainList xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:domainList&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;offset&amp;gt;0&amp;lt;/offset&amp;gt;&lt;br /&gt;
  &amp;lt;size&amp;gt;50&amp;lt;/size&amp;gt;&lt;br /&gt;
  &amp;lt;total&amp;gt;1&amp;lt;/total&amp;gt;&lt;br /&gt;
  &amp;lt;domains&amp;gt;&lt;br /&gt;
    &amp;lt;domain&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;customer.com&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;accountNumber&amp;gt;123456&amp;lt;/accountNumber&amp;gt;&lt;br /&gt;
      &amp;lt;serviceType&amp;gt;rsemail&amp;lt;/serviceType&amp;gt;&lt;br /&gt;
    &amp;lt;/domain&amp;gt;&lt;br /&gt;
  &amp;lt;/domains&amp;gt;&lt;br /&gt;
&amp;lt;/domainList&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 404 Not Found&lt;br /&gt;
Cache-Control: private&lt;br /&gt;
Server: Microsoft-IIS/7.0&lt;br /&gt;
x-error-message: Customer Not Found&lt;br /&gt;
Date: Fri, 04 Dec 2009 19:13:59 GMT&lt;br /&gt;
Content-Length: 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 400 Bad Request&lt;br /&gt;
Cache-Control: private&lt;br /&gt;
Server: Microsoft-IIS/7.0&lt;br /&gt;
x-error-message: Missing required field: type&lt;br /&gt;
Date: Fri, 04 Dec 2009 19:17:29 GMT&lt;br /&gt;
Content-Length: 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
This examples is written in [http://www.ruby-lang.org/en/ Ruby]. To make the examples shorter, helper methods have been written. These methods are part of a NetMethods module. The contents of the NetMethods module is listed below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require  'server.rb'&lt;br /&gt;
&lt;br /&gt;
server = Server.new&lt;br /&gt;
&lt;br /&gt;
response = server.get  '/customers', server.xml_format&lt;br /&gt;
&lt;br /&gt;
#fields = Hash['serviceType' =&amp;gt;  'exchange', 'exchangeMaxNumMailboxes' =&amp;gt; '4']&lt;br /&gt;
#response =  server.post '/customers/me/domains/newdomain.com', fields&lt;br /&gt;
&lt;br /&gt;
puts response.code&lt;br /&gt;
puts response['x-error-message']&lt;br /&gt;
puts response.body&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require 'test/unit/assertions'&lt;br /&gt;
require 'net/http'&lt;br /&gt;
require 'date'&lt;br /&gt;
require 'date/format'&lt;br /&gt;
require 'digest/sha1'&lt;br /&gt;
require 'base64'&lt;br /&gt;
require 'time'&lt;br /&gt;
&lt;br /&gt;
class Server&lt;br /&gt;
  include Test::Unit::Assertions&lt;br /&gt;
  &lt;br /&gt;
  def initialize(server='api.emailsrvr.com', version_prefix='/v0', user_key='xxxxxxxxxxxxxxxxxxxx', secret_hash='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')&lt;br /&gt;
    @server = server&lt;br /&gt;
    @version_prefix = version_prefix&lt;br /&gt;
    @user_key = user_key&lt;br /&gt;
    @secret_hash = secret_hash&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
# Response Type Enums&lt;br /&gt;
&lt;br /&gt;
  def xml_format&lt;br /&gt;
    'text/xml'&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def json_format&lt;br /&gt;
    'application/json'&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# HTTP Request Verbs&lt;br /&gt;
#  &lt;br /&gt;
  def get(url_string, format)&lt;br /&gt;
    uri = full_uri(url_string)&lt;br /&gt;
    headers = prepared_headers&lt;br /&gt;
    headers['Accept'] = format&lt;br /&gt;
    request = Net::HTTP::Get.new(request_uri(uri), headers)&lt;br /&gt;
    http_response = make_request request, uri&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def delete(url_string)&lt;br /&gt;
    uri = full_uri(url_string)&lt;br /&gt;
    request = Net::HTTP::Delete.new(request_uri(uri), prepared_headers)&lt;br /&gt;
    http_response = make_request request, uri&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def put(url_string, fields_hash)&lt;br /&gt;
    uri = full_uri(url_string)&lt;br /&gt;
    request = Net::HTTP::Put.new(request_uri(uri), prepared_headers)&lt;br /&gt;
    request.set_form_data(fields_hash)&lt;br /&gt;
    http_response = make_request request, uri&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def post(url_string, fields_hash)&lt;br /&gt;
    uri = full_uri(url_string)&lt;br /&gt;
    request = Net::HTTP::Post.new(request_uri(uri), prepared_headers)&lt;br /&gt;
    request.set_form_data(fields_hash)&lt;br /&gt;
    http_response = make_request request, uri&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
#&lt;br /&gt;
# HTTP Request Helpers&lt;br /&gt;
# &lt;br /&gt;
  def make_request request, uri&lt;br /&gt;
    response = Net::HTTP::start(uri.host, uri.port)  do |http|&lt;br /&gt;
      http.request request&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    response&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def full_uri url_string&lt;br /&gt;
    URI.parse('http://' + @server + @version_prefix + url_string)&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def request_uri uri&lt;br /&gt;
    request = uri.path&lt;br /&gt;
    if ! uri.query.nil?&lt;br /&gt;
      request = request + '?' + uri.query&lt;br /&gt;
    end&lt;br /&gt;
    request&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def prepared_headers&lt;br /&gt;
    headers = Hash.new&lt;br /&gt;
    headers.merge! headers_auth_creds(@user_key, @secret_hash)&lt;br /&gt;
    headers['Accept'] = xml_format&lt;br /&gt;
    headers&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def headers_auth_creds apiKey, secretKey&lt;br /&gt;
    userAgent = 'Ruby Test Client'&lt;br /&gt;
    timestamp = DateTime.now.strftime('%Y%m%d%H%M%S')&lt;br /&gt;
    &lt;br /&gt;
    data_to_sign = apiKey + userAgent + timestamp + secretKey&lt;br /&gt;
    &lt;br /&gt;
    hash = Base64.encode64(Digest::SHA1.digest(data_to_sign))&lt;br /&gt;
    signature = apiKey + &amp;quot;:&amp;quot; + timestamp + &amp;quot;:&amp;quot; + hash&lt;br /&gt;
    &lt;br /&gt;
    headers = Hash['User-Agent' =&amp;gt; userAgent, 'X-Api-Signature' =&amp;gt; signature]&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== C# ===&lt;br /&gt;
&lt;br /&gt;
This examples is written in [http://msdn.microsoft.com/en-us/vcsharp/default.aspx C#].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Specialized;&lt;br /&gt;
using System.Security.Cryptography;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Net;&lt;br /&gt;
&lt;br /&gt;
public class WebMethods&lt;br /&gt;
{&lt;br /&gt;
  private WebClientBase client;&lt;br /&gt;
  private string baseUrl;&lt;br /&gt;
  private string apiKey;&lt;br /&gt;
  private string secretKey;&lt;br /&gt;
&lt;br /&gt;
  public WebMethods(WebClientBase client, string baseUrl, string apiKey, string secretKey)&lt;br /&gt;
  {&lt;br /&gt;
    this.client = client;&lt;br /&gt;
    this.baseUrl = baseUrl;&lt;br /&gt;
    this.apiKey = apiKey;&lt;br /&gt;
    this.secretKey = secretKey;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  public virtual string Get(string url)&lt;br /&gt;
  {&lt;br /&gt;
    return MakeRemoteCall((client) =&amp;gt;&lt;br /&gt;
      {&lt;br /&gt;
        return client.DownloadString(baseUrl + url);&lt;br /&gt;
      },&lt;br /&gt;
      format);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  public virtual string Post(string url, NameValueCollection data)&lt;br /&gt;
  {&lt;br /&gt;
    return MakeRemoteCall((client) =&amp;gt;&lt;br /&gt;
      {&lt;br /&gt;
        var bytes = client.UploadValues(baseUrl + url, data);&lt;br /&gt;
        return Encoding.UTF8.GetString(bytes);&lt;br /&gt;
      },&lt;br /&gt;
      format);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  private void SignMessage()&lt;br /&gt;
  {&lt;br /&gt;
    var userAgent = &amp;quot;C# Client Library&amp;quot;;&lt;br /&gt;
    client.Headers[&amp;quot;User-Agent&amp;quot;] = userAgent;&lt;br /&gt;
&lt;br /&gt;
    var dateTime = DateTime.UtcNow.ToString(&amp;quot;yyyyMMddHHmmss&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    var dataToSign = apiKey + userAgent + dateTime + secretKey;&lt;br /&gt;
    var hash = SHA1.Create();&lt;br /&gt;
    var signedBytes = hash.ComputeHash(Encoding.UTF8.GetBytes(dataToSign));&lt;br /&gt;
    var signature = Convert.ToBase64String(signedBytes);&lt;br /&gt;
&lt;br /&gt;
    client.Headers[&amp;quot;X-Api-Signature&amp;quot;] = apiKey + &amp;quot;:&amp;quot; + dateTime + &amp;quot;:&amp;quot; + signature;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  private void AssignFormat(string format)&lt;br /&gt;
  {&lt;br /&gt;
    client.Headers[&amp;quot;Accept&amp;quot;] = format;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  private string MakeRemoteCall(Func&amp;lt;WebClientBase, string&amp;gt; remoteCall, string format)&lt;br /&gt;
  {&lt;br /&gt;
    try&lt;br /&gt;
    {&lt;br /&gt;
      SignMessage();&lt;br /&gt;
      AssignFormat(format);&lt;br /&gt;
      return remoteCall.Invoke(client);&lt;br /&gt;
    }&lt;br /&gt;
    catch (WebException e)&lt;br /&gt;
    {&lt;br /&gt;
      throw new ApiException(e);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PHP ===&lt;br /&gt;
&lt;br /&gt;
The PHP Example can be found [[PHP_Examples_(Rest_API)| here]].&lt;/div&gt;</summary>
		<author><name>Zhen.wei</name></author>	</entry>

	<entry>
		<id>http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=MediaWiki:Sidebar&amp;diff=407</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=MediaWiki:Sidebar&amp;diff=407"/>
				<updated>2010-08-02T03:45:34Z</updated>
		
		<summary type="html">&lt;p&gt;Zhen.wei: change navigation bar&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* navigation&lt;br /&gt;
** Mainpage|Rest API&lt;br /&gt;
** Soap_API|Soap API&lt;br /&gt;
** helppage|help&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>Zhen.wei</name></author>	</entry>

	<entry>
		<id>http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Soap_API&amp;diff=406</id>
		<title>Soap API</title>
		<link rel="alternate" type="text/html" href="http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Soap_API&amp;diff=406"/>
				<updated>2010-08-02T03:44:28Z</updated>
		
		<summary type="html">&lt;p&gt;Zhen.wei: add soap api page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== The Rackspace Email Soap API ==&lt;br /&gt;
&lt;br /&gt;
The Rackspace Email [http://en.wikipedia.org/wiki/Api API] comprises a robust set of web services designed to allow businesses to fully integrate administrative email functions into their own applications.  Based on [http://en.wikipedia.org/wiki/SOAP SOAP], functions in the API allow programs written in many different languages to perform operations such as [[AddUser()|adding mailboxes]] and changing settings.  The API can also be used to provide [[LoginUserWebmail()|single sign on]] functionality in concert with other web applications.  The Webmail API runs on the same robust server platform that supports our high-availability [http://www.rackspace.com/email_hosting webmail] and email services.&lt;br /&gt;
&lt;br /&gt;
* [[webmail|Webmail User API]] - provides a short list of webmail user functions&lt;br /&gt;
&lt;br /&gt;
* [[business|Business API]] - provides a list of functions designed for single business/domain usage&lt;br /&gt;
&lt;br /&gt;
* [[reseller|Reseller API]] - provides a complete list of functions for multiple domains and sub-accounts&lt;br /&gt;
&lt;br /&gt;
=== Code Examples ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
*[[Perl]]&lt;br /&gt;
|&lt;br /&gt;
*[[PHP]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
*[[ASP]]&lt;br /&gt;
|&lt;br /&gt;
*[[C#]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
*[[ColdFusion]]&lt;br /&gt;
|&lt;br /&gt;
*[[Ruby]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* [[HTML]] (not part of the API, strictly speaking)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Getting Started Screencast ===&lt;br /&gt;
[http://www.mailtrust.com/api-wiki/screencasts/api-pings.htm Screencast] of accessing two of our SOAP API's from PHP using Ubuntu linux.&lt;br /&gt;
&lt;br /&gt;
=== Result Codes ===&lt;br /&gt;
Consult the [[resultcodes|Result Code Table]] for a list of result codes and their meaning.&lt;/div&gt;</summary>
		<author><name>Zhen.wei</name></author>	</entry>

	<entry>
		<id>http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Rest_API&amp;diff=405</id>
		<title>Rest API</title>
		<link rel="alternate" type="text/html" href="http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Rest_API&amp;diff=405"/>
				<updated>2010-08-02T03:43:40Z</updated>
		
		<summary type="html">&lt;p&gt;Zhen.wei: 08/01/10 update&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Recent Changes ==&lt;br /&gt;
&lt;br /&gt;
'''08/01/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Added Rackspace Email Mailbox Contact info. See [[Rackspace_Mailbox_(Rest_API)| here]].&lt;br /&gt;
* Added Create Login Token. See See [[Customer_(Rest_API)#Create_Login_Tokens| here]].&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''06/20/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Added [[Rackspace_Alias(Rest_API)| Rackspace Email Alias]].&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''06/11/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Added Rackspace Email Mailbox Spam Settings/Blacklist/Safelist. See [[Rackspace_Mailbox_Spam_(Rest_API)| here]].&lt;br /&gt;
* Now Rackspace Email Mailbox can Show/Edit vacation message and email forwarding address. See [[Rackspace_Mailbox_(Rest_API)| here]].&lt;br /&gt;
* Added SharePoint Service Settings. See [[SharePoint_(Rest_API)| here]].&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''05/16/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Added shortened URLs. Any URLs that starts with '/customers/me/domains/~' is equivalent to '/domains/~'.&lt;br /&gt;
* Added Rackspace Email Mailbox Add/Edit/Delete/Index. See [[Rackspace_Mailbox_(Rest_API)| here]].&lt;br /&gt;
* Allows to customize Exchange mailbox list result. See [[Exchange_Mailbox_(Rest_API)#Index| Exchange Mailbox Index]] action 'Custom Fields' section.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
Changes:&lt;br /&gt;
* Server throttling section has been updated. See [[Rest_API#Throttling| here]].&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
Bug fix:&lt;br /&gt;
* Fixed a bug that request without User-Agent Header gets 500 error. Now it gets &amp;quot;Authentication failed&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''03/28/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Rest API can be accessed by Business Users. However, not all operations are available.&lt;br /&gt;
* Domain Public Folders can be enabled now.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
Deprecated:&lt;br /&gt;
* Good Mobile Service is no longer supported.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''03/14/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Index/Add/Edit/Delete Mailbox Permissions.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
Known Issues:&lt;br /&gt;
* Domain public folders can't be enabled using Rest API at this moment. The next release (on 03/21/2010) will fix this problem.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The Email &amp;amp; Apps Control Panel API provides most of the functions of the Control Panel through a REST-based [http://en.wikipedia.org/wiki/Web_service web API]. Whether it is adding a new customer account, adding mailboxes, or any other of the supported features the API allows your application to administer the changes regardless of your application's language or nature. For more information on RESTful web services refer to the following sites:&lt;br /&gt;
&lt;br /&gt;
[http://www.peej.co.uk/articles/restfully-delicious.html Paul James's Homepage: A RESTful Web service, an example]&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Representational_State_Transfer#External_links Wikipedia: Representational State Transfer - External Links]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The API is accessible to all with access to Control Panel, including resellers, business customers, enterprise customers, and indirect customers. However, not all operations are available to non-resellers. See the [[Rest_API#Operations|Operations]] section for more details.&lt;br /&gt;
&lt;br /&gt;
== Operations ==&lt;br /&gt;
&lt;br /&gt;
The following pages detail the operations that the API supports. The operations are grouped into sections based on the entity/object types that each operation interacts with. Non-resellers do not have access to all functions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Resource&lt;br /&gt;
!Example URI&lt;br /&gt;
!Business User Access&lt;br /&gt;
|-&lt;br /&gt;
| [[Customer_(Rest_API)| Customer]]&lt;br /&gt;
| /customers/123456789&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| [[Domain_(Rest_API)| Domain]]&lt;br /&gt;
| /customers/123456789/domains/example.com&lt;br /&gt;
| [[Domain_(Rest_API)#Index| Index]], [[Domain_(Rest_API)#Show| Show]], [[Domain_(Rest_API)#Split Domain Routing| Split Domain Routing]], [[Domain_(Rest_API)#Archiving SSO Login URL| Archiving SSO Login URL]], [[Domain_(Rest_API)#Domain Public Folders|Domain Public Folders ]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Domain_Spam_(Rest_API)| Domain Spam Settings]]&lt;br /&gt;
| /customers/123456789/domains/example.com/spam/settings&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Rackspace_Mailbox_(Rest_API)|  Rackspace Email Mailbox]]&lt;br /&gt;
|  /customers/123456789/domains/example.com/rs/mailboxes/john.smith&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Rackspace_Mailbox_Spam_(Rest_API)| Rackspace Email Mailbox Spam Settings]]&lt;br /&gt;
|  /customers/123456789/domains/example.com/rs/mailboxes/john.smith/spam&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Rackspace_Alias(Rest_API)|  Rackspace Email Alias]]&lt;br /&gt;
|  /customers/123456789/domains/example.com/rs/mailboxes/john.smith/alias&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Mailbox_(Rest_API)| Exchange Mailbox]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/mailboxes/john.smith&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Mailbox_Spam_(Rest_API)| Exchange Mailbox Spam Settings]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/mailboxes/john.smith/spam&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Contact_(Rest_API)| Exchange Contact]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/contacts/john.smith&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Distribution_List_(Rest_API)| Exchange Distribution List]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/distributionlists/group.name&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Resource_Mailbox_(Rest_API)| Exchange Resource Mailbox]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/resources/conference.room&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[SharePoint_(Rest_API)| SharePoint]]&lt;br /&gt;
| /customers/123456789/sharepoint/settings&lt;br /&gt;
| [[SharePoint_(Rest_API)#Show | Show]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The examples shown in the operation pages are written in Ruby and extensively use the helper functions shown in the Ruby Examples below.&lt;br /&gt;
&lt;br /&gt;
== Quick Start ==&lt;br /&gt;
&lt;br /&gt;
'''What you need:'''&lt;br /&gt;
* A Rackspace Email and Apps Control Panel admin account&lt;br /&gt;
* A HTTP class library that supports TLS and the HTTP methods: GET, POST, PUT, DELETE.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Making your first API call, an Show Customer request:'''&lt;br /&gt;
# Obtain your API keys&lt;br /&gt;
#:* Click on My Account at the top of the [https://apps.rackspace.com/?cp Control Panel web interface]. Under the Administrators heading there will be an link for the API keys page.&lt;br /&gt;
# Set up your client's HTTP request&lt;br /&gt;
#:* Set up your client to make calls to a URL beginning with &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/v0&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
#:* Populate the Accept, User-Agent and X-Api-Signature HTTP request headers correctly. This is explained in detail [[#HTTP Headers|here]].&lt;br /&gt;
# Make a GET request to /customers/me.&lt;br /&gt;
#:* The complete URI will be &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/v0/customers/me&amp;lt;/nowiki&amp;gt;. Use your HTTP library to retrieve the HTTP response code, 'x-error-message' HTTP response header and HTTP response body so that they may be displayed to help debug and determine success.&lt;br /&gt;
'''From here:'''&lt;br /&gt;
* Learn about the operations you'll be implementing at the subpages [[#Operations|here]].&lt;br /&gt;
&lt;br /&gt;
== Accessing the API ==&lt;br /&gt;
&lt;br /&gt;
Your application will need to make HTTP requests to remote servers. Most programming languages have this function provided in its class library. In addition to the common GET and POST HTTP methods, the library used will also need to support PUT and DELETE.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&lt;br /&gt;
Calls without [http://en.wikipedia.org/wiki/Transport_Layer_Security TLS] (formerly SSL) will complete successfully but it is HIGHLY RECOMMENDED that TLS always be used. Interception of unencrypted communication will allow a third party to have complete access to all functions available via the API.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For some language libraries just using an URL with https:// will cause the library to use TLS. In some other libraries however some options specific to the library may have to be configured to utilize TLS. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All API calls should be directed to a URL in the following format:&lt;br /&gt;
&amp;lt;pre&amp;gt;https://api.emailsrvr.com/(version)/(resource)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;https://api.emailsrvr.com/v0/customers/12345678/domains/customerbusiness.com&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Versions ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Supported Versions''&lt;br /&gt;
!''URL''&lt;br /&gt;
!''Version Documentation''&lt;br /&gt;
|-&lt;br /&gt;
| v0 (current)&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/v0/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
| http://signup.apps.rackspace.com/api-wiki/index.php/Rest_API&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The API version number is a component of the URL that is used to access the API. For example, to access the root of the API, the URL is https://api.emailsrvr.com/v0/. Bug fixes and minor non-breaking changes will be made without changing the version number. When major features or breaking changes are introduced, the version number will be incremented. It is not yet determined how many versions are going to be supported at any one time.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Non-breaking Changes''&lt;br /&gt;
!''Breaking Changes''&lt;br /&gt;
|-&lt;br /&gt;
| Adding new fields or attributes to form fields sent&lt;br /&gt;
| Changing or deleting any fields in form fields sent&lt;br /&gt;
|-&lt;br /&gt;
| Adding fields in returned data&lt;br /&gt;
| Changing or removing fields in returned data&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| Changing the URI of any resource&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Authentication ===&lt;br /&gt;
&lt;br /&gt;
To gain access to the API, your request must include a properly constructed X-Api-Signature HTTP header. Details on what to put in the header are below. To construct the header, you must have the following keys that that are generated from the [https://apps.rackspace.com/?cp Control Panel Web interface]. The key generation page can be found by clicking 'My Account' at the top, then 'Generate API Keys' in the Administrators section.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Key Name&lt;br /&gt;
!Description&lt;br /&gt;
!Example&lt;br /&gt;
|-&lt;br /&gt;
| User Key&lt;br /&gt;
| A public key that corresponds to your admin id&lt;br /&gt;
| ''eGbq9/2hcZsRlr1JV1Pi''&lt;br /&gt;
|-&lt;br /&gt;
| Secret Key&lt;br /&gt;
| A shared secret key&lt;br /&gt;
| ''QHOvchm/40czXhJ1OxfxK7jDHr3t''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An unsuccessful authentication will result in a 403 HTTP code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== X-Api-Signature Header ====&lt;br /&gt;
&lt;br /&gt;
Format is as follows:&lt;br /&gt;
&amp;lt;'''User Key'''&amp;gt;:&amp;lt;'''Timestamp'''&amp;gt;:&amp;lt;'''SHA1 Hash'''&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Example: ''eGbq9/2hcZsRlr1JV1Pi:20010317143725:46VIwd66mOFGG8IkbgnLlXnfnkU=''&lt;br /&gt;
&lt;br /&gt;
Remember to include the colons between the data strings!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''User Key''':&amp;lt;br&amp;gt;&lt;br /&gt;
This is the public key issued by the Control Panel browser interface.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Timestamp''':&amp;lt;br&amp;gt;&lt;br /&gt;
The format is YYYYMMDDHHmmss. All values besides year are zero-padded to two spaces. For example, March 08th 2001 at 2:37.25pm would be ''20010308143725''.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|YYYY&lt;br /&gt;
|Four-digit year&lt;br /&gt;
|-&lt;br /&gt;
| MM&lt;br /&gt;
| Month&lt;br /&gt;
|-&lt;br /&gt;
| DD&lt;br /&gt;
| Day&lt;br /&gt;
|-&lt;br /&gt;
| HH&lt;br /&gt;
| Hour in 24h format&lt;br /&gt;
|-&lt;br /&gt;
| mm&lt;br /&gt;
| Minute&lt;br /&gt;
|-&lt;br /&gt;
| ss&lt;br /&gt;
| Second&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''SHA1 Hash''':&lt;br /&gt;
&lt;br /&gt;
A SHA1 (Secure Hash Algorithm) hash must be applied to a string with the following information:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;'''User Key'''&amp;gt;&amp;lt;'''User Agent'''&amp;gt;&amp;lt;'''Timestamp'''&amp;gt;&amp;lt;'''Secret Key'''&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that the 'User Agent' must be the exact same as what is specified in the User-Agent HTTP header. Using the above example data, the string before hashing is:&amp;lt;br&amp;gt;''eGbq9/2hcZsRlr1JV1PiRackspace Management Interface20010308143725QHOvchm/40czXhJ1OxfxK7jDHr3t''&lt;br /&gt;
&lt;br /&gt;
Resulting base-64 SHA1 Hash:&amp;lt;br&amp;gt;''46VIwd66mOFGG8IkbgnLlXnfnkU=''&lt;br /&gt;
&lt;br /&gt;
Be sure to encode the binary hash, not the hex hash, into base-64. The resulting string should be 28 characters long.&lt;br /&gt;
&lt;br /&gt;
== Using the API ==&lt;br /&gt;
&lt;br /&gt;
=== Requests ===&lt;br /&gt;
&lt;br /&gt;
HTTP requests should be sent to the server with the correct URL, HTTP method, HTTP headers and form data (if needed). The URL specifies the resource, the HTTP method specifies what operation is done on the resource, and form data is used to specify the details of the resource when the resource is added or edited.&lt;br /&gt;
&lt;br /&gt;
The URLs, corresponding HTTP methods, and necessary form data for the desired operations are detailed in the [[#Operations|operation pages]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you're getting the HTTP status code 417 see [[Handling HTTP code 417:  Expectation failed]]&lt;br /&gt;
&lt;br /&gt;
==== URL ====&lt;br /&gt;
&lt;br /&gt;
The URLs are specifies the resource or resource collection. Objects are organized in a tree collection, starting with customers at the top, then domains, then domain objects next (such as mailboxes, contacts, and distribution lists) and so on. The URLs of the resources and collections accessible are found on the operation pages.&lt;br /&gt;
&lt;br /&gt;
==== HTTP Method ====&lt;br /&gt;
&lt;br /&gt;
It is the HTTP method that specifies what operation will be done on the resource. For example, to get the details of a mailbox a HTTP GET will be done on /customers/12345678/domains/example.com/ex/mailboxes/john.smith. If the mailbox does not exist, a HTTP POST to the same URL with the necessary form data will add the mailbox. Then, a HTTP PUT to the same URL will edit mailbox. And to delete the mailbox, an HTTP DELETE would be used.&lt;br /&gt;
&lt;br /&gt;
The types of operations a certain method performs is outlined below.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''HTTP Method''&lt;br /&gt;
!''Operations''&lt;br /&gt;
!''Response''&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=2|GET&lt;br /&gt;
|Index - returns a list of the resources&lt;br /&gt;
|rowspan=2|XML or JSON formatted data&lt;br /&gt;
|-&lt;br /&gt;
|Show - returns the details of the resource&lt;br /&gt;
|-&lt;br /&gt;
|POST&lt;br /&gt;
|Add - adds a new resource&lt;br /&gt;
|rowspan=3|Response code and error message (if applicable) only&lt;br /&gt;
|-&lt;br /&gt;
|PUT&lt;br /&gt;
|Edit - changes the details of the resource&lt;br /&gt;
|-&lt;br /&gt;
|DELETE&lt;br /&gt;
|Delete - deletes the resource&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== HTTP Headers ====&lt;br /&gt;
&lt;br /&gt;
All requests to the API must then include HTTP headers with the following information:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Header Name''&lt;br /&gt;
!''Description''&lt;br /&gt;
!''Example Header Value''&lt;br /&gt;
|-&lt;br /&gt;
| Accept&lt;br /&gt;
| The requested content type (required for Index and Show actions). Fill this with either 'text/xml' or 'application/json'. See [[#Formats|Response Formats]]&lt;br /&gt;
| ''text/xml''&lt;br /&gt;
|-&lt;br /&gt;
| User-Agent&lt;br /&gt;
| An identifier you choose for your client software&lt;br /&gt;
| ''Rackspace Management Interface''&lt;br /&gt;
|-&lt;br /&gt;
| X-Api-Signature&lt;br /&gt;
| An authentication string explained in detail [[#X-Api-Signature_Header|here]]&lt;br /&gt;
| ''eGbq9/2hcZsRlr1JV1Pi:20010317143725:HKUn0aajpSDx7qqGK3vqzn3FglI=''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Form Data ====&lt;br /&gt;
&lt;br /&gt;
When using Add and Edit operations, the details of the resource are sent to the API server via HTTP form data. Your HTTP library should include methods for sending form data along with an HTTP request. The library should by default send the data in the HTTP request body using the 'application/x-www-form-urlencoded' data format.&lt;br /&gt;
&lt;br /&gt;
==== Index Filter/Search ====&lt;br /&gt;
&lt;br /&gt;
The results of Index actions can be filtered/searched. The index URLs can take either one of the query strings: &amp;quot;?startswith=xx&amp;quot; or &amp;quot;?contains=xx,&amp;quot; where &amp;quot;xx&amp;quot; is the key word. If the request specifies more than one of these two query strings, a 400 HTTP error will be returned. Different fields will be searched depending on the resource type, see below.&lt;br /&gt;
&lt;br /&gt;
Note that &amp;quot;0-9&amp;quot; is a reserved key word for query string &amp;quot;startswith.&amp;quot; It represents any result starting with numbers.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Index Actions''&lt;br /&gt;
!''Where the key word will be searched''&lt;br /&gt;
|-&lt;br /&gt;
| Customer&lt;br /&gt;
| Customer name, account number, reference number&lt;br /&gt;
|-&lt;br /&gt;
| Domain&lt;br /&gt;
| Domain name&lt;br /&gt;
|-&lt;br /&gt;
| Mailbox&lt;br /&gt;
| Mailbox name, mailbox display name&lt;br /&gt;
|-&lt;br /&gt;
| Contact&lt;br /&gt;
| Contact display name, external email&lt;br /&gt;
|-&lt;br /&gt;
| Group&lt;br /&gt;
| Group name, group display name&lt;br /&gt;
|-&lt;br /&gt;
| Mobile Service&lt;br /&gt;
| Associated mailbox name, mailbox display name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Throttling ====&lt;br /&gt;
&lt;br /&gt;
The server limits the number of requests allowed per user in a certain period of time.  The number of requests made are logged per minute. Calls that were made correctly with a user's API key, but not completed for any reason, including those exceeding the throttle limit, are included in this count.&lt;br /&gt;
&lt;br /&gt;
If a user is over the throttling limit then a 403 HTTP code will be returned with an &amp;quot;Exceeded request limits&amp;quot; message.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Operation Category''&lt;br /&gt;
!''Request Limit''&lt;br /&gt;
|-&lt;br /&gt;
| GET&lt;br /&gt;
| 60 per minute&lt;br /&gt;
|-&lt;br /&gt;
| PUT, POST, DELETE&lt;br /&gt;
| 30 per minute&lt;br /&gt;
|-&lt;br /&gt;
| POST, PUT, DELETE on a domain&lt;br /&gt;
| 2 per minute&lt;br /&gt;
|-&lt;br /&gt;
| POST, DELETE on alternate domains&lt;br /&gt;
| 2 per minute&lt;br /&gt;
|-&lt;br /&gt;
| Enabling public folders for a domain&lt;br /&gt;
| 1 per 5 minutes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&lt;br /&gt;
Index of Exchange Mailboxes:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hypertext Transfer Protocol&lt;br /&gt;
    GET /v0/customers/12345678/domains/example.com/ex/mailboxes?size=100&amp;amp;offset=100 HTTP/1.1&lt;br /&gt;
    Host: api.emailsrvr.com&lt;br /&gt;
    User-Agent: Rackspace Management Interface&lt;br /&gt;
    X-Api-Signature: eGbq9/2hcZsRlr1JV1Pi:20010317143725:HKUn0aajpSDx7qqGK3vqzn3FglI=&lt;br /&gt;
    Accept: text/xml&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Adding New Exchange Mailbox:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hypertext Transfer Protocol&lt;br /&gt;
    POST /v0/customers/12345678/domains/example.com/ex/mailboxes/john.smith HTTP/1.1&lt;br /&gt;
    Host: api.emailsrvr.com&lt;br /&gt;
    User-Agent: Rackspace Management Interface&lt;br /&gt;
    X-Api-Signature: eGbq9/2hcZsRlr1JV1Pi:20010317143725:HKUn0aajpSDx7qqGK3vqzn3FglI=&lt;br /&gt;
    Content-Length: 53&lt;br /&gt;
        [Content length: 53]&lt;br /&gt;
    Content-Type: application/x-www-form-urlencoded&lt;br /&gt;
 &lt;br /&gt;
Line-based text data: application/x-www-form-urlencoded&lt;br /&gt;
    size=2048&amp;amp;displayName=John%20Smith&amp;amp;password=abcABC123&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Responses ===&lt;br /&gt;
&lt;br /&gt;
==== HTTP Status Code ====&lt;br /&gt;
&lt;br /&gt;
On a successfully executed request, a 200 HTTP Code is returned. If the request was unsuccessful however, an HTTP error code in the 400s or 500s will be returned.&lt;br /&gt;
&lt;br /&gt;
==== HTTP Response Body ====&lt;br /&gt;
&lt;br /&gt;
If the request is an Index or Show request, the request data will be returned in the format specified in the HTTP Body.&lt;br /&gt;
&lt;br /&gt;
===== Formats =====&lt;br /&gt;
&lt;br /&gt;
Requests for data (index and show requests) are returned with XML or JSON data based on what your application populates the [[#HTTP_Headers|HTTP Accept headers]] with.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For XML, populate the header with 'text/xml' (ex: Headers![&amp;quot;Accept&amp;quot;] = &amp;quot;text/xml&amp;quot;). The XML document returned will conform to a published XSD (XML Schema Document). There are many ways to parse the data in an XML document, but we have found that the [http://www.w3schools.com/XPath/default.asp XPath] tree-style traversal has served our purposes. In any case, your application will likely need to use a class library for your chosen method.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For JSON, populate the header with 'application/json' (ex: Headers![&amp;quot;Accept&amp;quot;] = &amp;quot;application/json&amp;quot;). As with XML, a library will likely be needed to parse the data.&lt;br /&gt;
&lt;br /&gt;
==== HTTP Headers ====&lt;br /&gt;
&lt;br /&gt;
The only data returned in the header is the error message (if any).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Header Name''&lt;br /&gt;
!''Description''&lt;br /&gt;
!''Example Header Value''&lt;br /&gt;
|-&lt;br /&gt;
| x-error-message&lt;br /&gt;
| The error message. See [[#Errors|Errors]].&lt;br /&gt;
| Missing required field: name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Errors ====&lt;br /&gt;
&lt;br /&gt;
In the event of an error, the error message will be returned the HTTP header '''x-error-message''' and an HTTP Status Code in the '''400'''s or '''500'''s will be returned.&lt;br /&gt;
&lt;br /&gt;
Note: Every language's HTTP library provides methods for retrieving HTTP response codes and response headers.&lt;br /&gt;
&lt;br /&gt;
Below are some errors that are common to many operations. Each operation also has some specific errors which are outlined with the operation. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
|Format is invalid&lt;br /&gt;
|400&lt;br /&gt;
|When requesting an index or show on a resource the 'Accept' header should be either 'text/xml' or 'application/json'&lt;br /&gt;
|-&lt;br /&gt;
|Expectation  Failed: See [[Handling HTTP code 417: Expectation failed]]&lt;br /&gt;
|417&lt;br /&gt;
|(none)&lt;br /&gt;
|-&lt;br /&gt;
|Customer account number is invalid&lt;br /&gt;
|404&lt;br /&gt;
|Invalid account number&lt;br /&gt;
|-&lt;br /&gt;
|Domain is not found&lt;br /&gt;
|404&lt;br /&gt;
|&amp;lt;domain name&amp;gt; not found&lt;br /&gt;
|-&lt;br /&gt;
|Mailbox is not found&lt;br /&gt;
|404&lt;br /&gt;
|Mailbox not found&lt;br /&gt;
|-&lt;br /&gt;
|Required form field is missing&lt;br /&gt;
|400&lt;br /&gt;
|Missing required field: &amp;lt;required field&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Required form field has null or empty string input&lt;br /&gt;
|400&lt;br /&gt;
|Required field &amp;lt;required field&amp;gt; cannot be empty&lt;br /&gt;
|-&lt;br /&gt;
|Integer form field has non-integer input&lt;br /&gt;
|400&lt;br /&gt;
|Invalid format for &amp;lt;field&amp;gt;, input must be an integer&lt;br /&gt;
|-&lt;br /&gt;
|Boolean form field has non-boolean input&lt;br /&gt;
|400&lt;br /&gt;
|Invalid format for &amp;lt;field&amp;gt;, input must be True or False&lt;br /&gt;
|-&lt;br /&gt;
|Form data has an unrecognized field&lt;br /&gt;
|400&lt;br /&gt;
|Unrecognized field: &amp;lt;field&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Entered invalid IP address&lt;br /&gt;
| 400&lt;br /&gt;
| invalid ip address: 123&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Paging ====&lt;br /&gt;
&lt;br /&gt;
The results of Index actions are split into pages to lessen potentially high resource usage. The index URLs have a query string with parameters in the format &amp;quot;?size=xx&amp;amp;offset=xx.&amp;quot; If a query parameter is omitted, the default value is used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Query Parameter''&lt;br /&gt;
!''Default''&lt;br /&gt;
!''Maximum''&lt;br /&gt;
!''Notes''&lt;br /&gt;
|-&lt;br /&gt;
| size&lt;br /&gt;
| 50&lt;br /&gt;
| 250&lt;br /&gt;
| This is the number of elements per page.&lt;br /&gt;
|-&lt;br /&gt;
| offset&lt;br /&gt;
| 0&lt;br /&gt;
| N/A&lt;br /&gt;
| This is the number of items to offset away from the first item in the list.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Example =====&lt;br /&gt;
&lt;br /&gt;
A PHP Example of paging can be found [[PHP_Examples_(Rest_API)| here]].&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 200 OK&lt;br /&gt;
Cache-Control: private&lt;br /&gt;
Content-Type: text/xml; charset=utf-8&lt;br /&gt;
Server: Microsoft-IIS/7.0&lt;br /&gt;
Date: Fri, 04 Dec 2009 19:08:11 GMT&lt;br /&gt;
Content-Length: 430&lt;br /&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;domainList xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:domainList&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;offset&amp;gt;0&amp;lt;/offset&amp;gt;&lt;br /&gt;
  &amp;lt;size&amp;gt;50&amp;lt;/size&amp;gt;&lt;br /&gt;
  &amp;lt;total&amp;gt;1&amp;lt;/total&amp;gt;&lt;br /&gt;
  &amp;lt;domains&amp;gt;&lt;br /&gt;
    &amp;lt;domain&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;customer.com&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;accountNumber&amp;gt;123456&amp;lt;/accountNumber&amp;gt;&lt;br /&gt;
      &amp;lt;serviceType&amp;gt;rsemail&amp;lt;/serviceType&amp;gt;&lt;br /&gt;
    &amp;lt;/domain&amp;gt;&lt;br /&gt;
  &amp;lt;/domains&amp;gt;&lt;br /&gt;
&amp;lt;/domainList&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 404 Not Found&lt;br /&gt;
Cache-Control: private&lt;br /&gt;
Server: Microsoft-IIS/7.0&lt;br /&gt;
x-error-message: Customer Not Found&lt;br /&gt;
Date: Fri, 04 Dec 2009 19:13:59 GMT&lt;br /&gt;
Content-Length: 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 400 Bad Request&lt;br /&gt;
Cache-Control: private&lt;br /&gt;
Server: Microsoft-IIS/7.0&lt;br /&gt;
x-error-message: Missing required field: type&lt;br /&gt;
Date: Fri, 04 Dec 2009 19:17:29 GMT&lt;br /&gt;
Content-Length: 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
This examples is written in [http://www.ruby-lang.org/en/ Ruby]. To make the examples shorter, helper methods have been written. These methods are part of a NetMethods module. The contents of the NetMethods module is listed below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require  'server.rb'&lt;br /&gt;
&lt;br /&gt;
server = Server.new&lt;br /&gt;
&lt;br /&gt;
response = server.get  '/customers', server.xml_format&lt;br /&gt;
&lt;br /&gt;
#fields = Hash['serviceType' =&amp;gt;  'exchange', 'exchangeMaxNumMailboxes' =&amp;gt; '4']&lt;br /&gt;
#response =  server.post '/customers/me/domains/newdomain.com', fields&lt;br /&gt;
&lt;br /&gt;
puts response.code&lt;br /&gt;
puts response['x-error-message']&lt;br /&gt;
puts response.body&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require 'test/unit/assertions'&lt;br /&gt;
require 'net/http'&lt;br /&gt;
require 'date'&lt;br /&gt;
require 'date/format'&lt;br /&gt;
require 'digest/sha1'&lt;br /&gt;
require 'base64'&lt;br /&gt;
require 'time'&lt;br /&gt;
&lt;br /&gt;
class Server&lt;br /&gt;
  include Test::Unit::Assertions&lt;br /&gt;
  &lt;br /&gt;
  def initialize(server='api.emailsrvr.com', version_prefix='/v0', user_key='xxxxxxxxxxxxxxxxxxxx', secret_hash='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')&lt;br /&gt;
    @server = server&lt;br /&gt;
    @version_prefix = version_prefix&lt;br /&gt;
    @user_key = user_key&lt;br /&gt;
    @secret_hash = secret_hash&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
# Response Type Enums&lt;br /&gt;
&lt;br /&gt;
  def xml_format&lt;br /&gt;
    'text/xml'&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def json_format&lt;br /&gt;
    'application/json'&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# HTTP Request Verbs&lt;br /&gt;
#  &lt;br /&gt;
  def get(url_string, format)&lt;br /&gt;
    uri = full_uri(url_string)&lt;br /&gt;
    headers = prepared_headers&lt;br /&gt;
    headers['Accept'] = format&lt;br /&gt;
    request = Net::HTTP::Get.new(request_uri(uri), headers)&lt;br /&gt;
    http_response = make_request request, uri&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def delete(url_string)&lt;br /&gt;
    uri = full_uri(url_string)&lt;br /&gt;
    request = Net::HTTP::Delete.new(request_uri(uri), prepared_headers)&lt;br /&gt;
    http_response = make_request request, uri&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def put(url_string, fields_hash)&lt;br /&gt;
    uri = full_uri(url_string)&lt;br /&gt;
    request = Net::HTTP::Put.new(request_uri(uri), prepared_headers)&lt;br /&gt;
    request.set_form_data(fields_hash)&lt;br /&gt;
    http_response = make_request request, uri&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def post(url_string, fields_hash)&lt;br /&gt;
    uri = full_uri(url_string)&lt;br /&gt;
    request = Net::HTTP::Post.new(request_uri(uri), prepared_headers)&lt;br /&gt;
    request.set_form_data(fields_hash)&lt;br /&gt;
    http_response = make_request request, uri&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
#&lt;br /&gt;
# HTTP Request Helpers&lt;br /&gt;
# &lt;br /&gt;
  def make_request request, uri&lt;br /&gt;
    response = Net::HTTP::start(uri.host, uri.port)  do |http|&lt;br /&gt;
      http.request request&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    response&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def full_uri url_string&lt;br /&gt;
    URI.parse('http://' + @server + @version_prefix + url_string)&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def request_uri uri&lt;br /&gt;
    request = uri.path&lt;br /&gt;
    if ! uri.query.nil?&lt;br /&gt;
      request = request + '?' + uri.query&lt;br /&gt;
    end&lt;br /&gt;
    request&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def prepared_headers&lt;br /&gt;
    headers = Hash.new&lt;br /&gt;
    headers.merge! headers_auth_creds(@user_key, @secret_hash)&lt;br /&gt;
    headers['Accept'] = xml_format&lt;br /&gt;
    headers&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def headers_auth_creds apiKey, secretKey&lt;br /&gt;
    userAgent = 'Ruby Test Client'&lt;br /&gt;
    timestamp = DateTime.now.strftime('%Y%m%d%H%M%S')&lt;br /&gt;
    &lt;br /&gt;
    data_to_sign = apiKey + userAgent + timestamp + secretKey&lt;br /&gt;
    &lt;br /&gt;
    hash = Base64.encode64(Digest::SHA1.digest(data_to_sign))&lt;br /&gt;
    signature = apiKey + &amp;quot;:&amp;quot; + timestamp + &amp;quot;:&amp;quot; + hash&lt;br /&gt;
    &lt;br /&gt;
    headers = Hash['User-Agent' =&amp;gt; userAgent, 'X-Api-Signature' =&amp;gt; signature]&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== C# ===&lt;br /&gt;
&lt;br /&gt;
This examples is written in [http://msdn.microsoft.com/en-us/vcsharp/default.aspx C#].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Specialized;&lt;br /&gt;
using System.Security.Cryptography;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Net;&lt;br /&gt;
&lt;br /&gt;
public class WebMethods&lt;br /&gt;
{&lt;br /&gt;
  private WebClientBase client;&lt;br /&gt;
  private string baseUrl;&lt;br /&gt;
  private string apiKey;&lt;br /&gt;
  private string secretKey;&lt;br /&gt;
&lt;br /&gt;
  public WebMethods(WebClientBase client, string baseUrl, string apiKey, string secretKey)&lt;br /&gt;
  {&lt;br /&gt;
    this.client = client;&lt;br /&gt;
    this.baseUrl = baseUrl;&lt;br /&gt;
    this.apiKey = apiKey;&lt;br /&gt;
    this.secretKey = secretKey;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  public virtual string Get(string url)&lt;br /&gt;
  {&lt;br /&gt;
    return MakeRemoteCall((client) =&amp;gt;&lt;br /&gt;
      {&lt;br /&gt;
        return client.DownloadString(baseUrl + url);&lt;br /&gt;
      },&lt;br /&gt;
      format);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  public virtual string Post(string url, NameValueCollection data)&lt;br /&gt;
  {&lt;br /&gt;
    return MakeRemoteCall((client) =&amp;gt;&lt;br /&gt;
      {&lt;br /&gt;
        var bytes = client.UploadValues(baseUrl + url, data);&lt;br /&gt;
        return Encoding.UTF8.GetString(bytes);&lt;br /&gt;
      },&lt;br /&gt;
      format);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  private void SignMessage()&lt;br /&gt;
  {&lt;br /&gt;
    var userAgent = &amp;quot;C# Client Library&amp;quot;;&lt;br /&gt;
    client.Headers[&amp;quot;User-Agent&amp;quot;] = userAgent;&lt;br /&gt;
&lt;br /&gt;
    var dateTime = DateTime.UtcNow.ToString(&amp;quot;yyyyMMddHHmmss&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    var dataToSign = apiKey + userAgent + dateTime + secretKey;&lt;br /&gt;
    var hash = SHA1.Create();&lt;br /&gt;
    var signedBytes = hash.ComputeHash(Encoding.UTF8.GetBytes(dataToSign));&lt;br /&gt;
    var signature = Convert.ToBase64String(signedBytes);&lt;br /&gt;
&lt;br /&gt;
    client.Headers[&amp;quot;X-Api-Signature&amp;quot;] = apiKey + &amp;quot;:&amp;quot; + dateTime + &amp;quot;:&amp;quot; + signature;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  private void AssignFormat(string format)&lt;br /&gt;
  {&lt;br /&gt;
    client.Headers[&amp;quot;Accept&amp;quot;] = format;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  private string MakeRemoteCall(Func&amp;lt;WebClientBase, string&amp;gt; remoteCall, string format)&lt;br /&gt;
  {&lt;br /&gt;
    try&lt;br /&gt;
    {&lt;br /&gt;
      SignMessage();&lt;br /&gt;
      AssignFormat(format);&lt;br /&gt;
      return remoteCall.Invoke(client);&lt;br /&gt;
    }&lt;br /&gt;
    catch (WebException e)&lt;br /&gt;
    {&lt;br /&gt;
      throw new ApiException(e);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PHP ===&lt;br /&gt;
&lt;br /&gt;
The PHP Example can be found [[PHP_Examples_(Rest_API)| here]].&lt;/div&gt;</summary>
		<author><name>Zhen.wei</name></author>	</entry>

	<entry>
		<id>http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Rackspace_Mailbox_(Rest_API)&amp;diff=404</id>
		<title>Rackspace Mailbox (Rest API)</title>
		<link rel="alternate" type="text/html" href="http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Rackspace_Mailbox_(Rest_API)&amp;diff=404"/>
				<updated>2010-08-02T03:38:04Z</updated>
		
		<summary type="html">&lt;p&gt;Zhen.wei: add rs mailbox contact info&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== Index ==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] http://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /rs/mailboxes&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Shows a list of mailboxes under the domain&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The show operation only supports the GET HTTP verb. For .xml format refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/RSMailboxList.xsd RSMailboxList.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/example.com/rs/mailboxes', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;rsMailboxList xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:rsMailboxList&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;offset&amp;gt;0&amp;lt;/offset&amp;gt;&lt;br /&gt;
  &amp;lt;size&amp;gt;50&amp;lt;/size&amp;gt;&lt;br /&gt;
  &amp;lt;total&amp;gt;2&amp;lt;/total&amp;gt;&lt;br /&gt;
  &amp;lt;rsMailboxes&amp;gt;&lt;br /&gt;
    &amp;lt;rsMailbox&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;apirsmailbox37&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/rsMailbox&amp;gt;&lt;br /&gt;
    &amp;lt;rsMailbox&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;apirsmailbox91&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;/rsMailbox&amp;gt;&lt;br /&gt;
  &amp;lt;/rsMailboxes&amp;gt;&lt;br /&gt;
&amp;lt;/rsMailboxList&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;offset&amp;quot;:0,&amp;quot;size&amp;quot;:50,&amp;quot;total&amp;quot;:2,&amp;quot;rsMailboxes&amp;quot;:[{&amp;quot;name&amp;quot;:&amp;quot;apirsmailbox37&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;apirsmailbox91&amp;quot;}]}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Show ==&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /rs/mailboxes/(mailbox name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
The show operation will return detailed information about the specified mailbox.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The show operation only supports the GET HTTP verb. For .xml format refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/RSMailbox.xsd RSMailbox.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/example.com/rs/mailboxes/alex.smith', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;rsMailbox xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:rsMailbox&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;name&amp;gt;apirsmailbox37&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;size&amp;gt;10240&amp;lt;/size&amp;gt;&lt;br /&gt;
  &amp;lt;vacationMessage&amp;gt;My Test Vacation Message&amp;lt;/vacationMessage&amp;gt;&lt;br /&gt;
  &amp;lt;enableVacationMessage&amp;gt;true&amp;lt;/enableVacationMessage&amp;gt;&lt;br /&gt;
  &amp;lt;emailForwardingAddressList&amp;gt;&lt;br /&gt;
    &amp;lt;emailAddress&amp;gt;notreal0@apidomain.net&amp;lt;/emailAddress&amp;gt;&lt;br /&gt;
    &amp;lt;emailAddress&amp;gt;notreal1@apidomain.net&amp;lt;/emailAddress&amp;gt;&lt;br /&gt;
  &amp;lt;/emailForwardingAddressList&amp;gt;&lt;br /&gt;
  &amp;lt;saveForwardedEmail&amp;gt;false&amp;lt;/saveForwardedEmail&amp;gt;&lt;br /&gt;
  &amp;lt;contactInfo&amp;gt;&lt;br /&gt;
    &amp;lt;lastName&amp;gt;Testlast&amp;lt;/lastName&amp;gt;&lt;br /&gt;
    &amp;lt;firstName&amp;gt;Jayfirst&amp;lt;/firstName&amp;gt;&lt;br /&gt;
    &amp;lt;generationQualifier&amp;gt;Jr&amp;lt;/generationQualifier&amp;gt;&lt;br /&gt;
    &amp;lt;initials&amp;gt;A&amp;lt;/initials&amp;gt;&lt;br /&gt;
    &amp;lt;organizationUnit&amp;gt;IT&amp;lt;/organizationUnit&amp;gt;&lt;br /&gt;
    &amp;lt;businessStreet&amp;gt;123 Biz St&amp;lt;/businessStreet&amp;gt;&lt;br /&gt;
    &amp;lt;businessCity&amp;gt;Blacksburg&amp;lt;/businessCity&amp;gt;&lt;br /&gt;
    &amp;lt;businessState&amp;gt;VA&amp;lt;/businessState&amp;gt;&lt;br /&gt;
    &amp;lt;businessPostalCode&amp;gt;24060&amp;lt;/businessPostalCode&amp;gt;&lt;br /&gt;
    &amp;lt;businessCountry&amp;gt;USA&amp;lt;/businessCountry&amp;gt;&lt;br /&gt;
    &amp;lt;homeStreet&amp;gt;456 Home St&amp;lt;/homeStreet&amp;gt;&lt;br /&gt;
    &amp;lt;homeCity&amp;gt;Charlotte&amp;lt;/homeCity&amp;gt;&lt;br /&gt;
    &amp;lt;homeState&amp;gt;NC&amp;lt;/homeState&amp;gt;&lt;br /&gt;
    &amp;lt;homePostalCode&amp;gt;28210&amp;lt;/homePostalCode&amp;gt;&lt;br /&gt;
    &amp;lt;homeCountry&amp;gt;USA&amp;lt;/homeCountry&amp;gt;&lt;br /&gt;
    &amp;lt;businessNumber&amp;gt;555.123.0001&amp;lt;/businessNumber&amp;gt;&lt;br /&gt;
    &amp;lt;homeNumber&amp;gt;555.123.0003&amp;lt;/homeNumber&amp;gt;&lt;br /&gt;
    &amp;lt;mobileNumber&amp;gt;555.123.0004&amp;lt;/mobileNumber&amp;gt;&lt;br /&gt;
    &amp;lt;faxNumber&amp;gt;555.123.0005&amp;lt;/faxNumber&amp;gt;&lt;br /&gt;
    &amp;lt;homeFaxNumber&amp;gt;555.123.0006&amp;lt;/homeFaxNumber&amp;gt;&lt;br /&gt;
    &amp;lt;pagerNumber&amp;gt;555.123.0002&amp;lt;/pagerNumber&amp;gt;&lt;br /&gt;
    &amp;lt;notes&amp;gt;This is my note about my mailbox.&amp;lt;/notes&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;My Title&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;userID&amp;gt;J.Test&amp;lt;/userID&amp;gt;&lt;br /&gt;
    &amp;lt;organizationalStatus&amp;gt;OrgStatus&amp;lt;/organizationalStatus&amp;gt;&lt;br /&gt;
    &amp;lt;employeeType&amp;gt;Full-Time&amp;lt;/employeeType&amp;gt;&lt;br /&gt;
  &amp;lt;/contactInfo&amp;gt;&lt;br /&gt;
&amp;lt;/rsMailbox&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
''{&amp;quot;emailForwardingAddressList&amp;quot;:[&amp;quot;test@resellerallservices.net&amp;quot;],&amp;quot;enableVacationMessage&amp;quot;:true,&amp;quot;contactInfo&amp;quot;:{&amp;quot;businessNumber&amp;quot;:&amp;quot;555.123.0001&amp;quot; ,&amp;quot;faxNumber&amp;quot;:&amp;quot;555.123.0005&amp;quot; ,&amp;quot;firstName&amp;quot;:&amp;quot;Jimmy&amp;quot; ,&amp;quot;homeNumber&amp;quot;:&amp;quot;555.123.0003&amp;quot; ,&amp;quot;lastName&amp;quot;:&amp;quot;TestLaste&amp;quot; ,&amp;quot;mobileNumber&amp;quot;:&amp;quot;555.123.0004&amp;quot; ,&amp;quot;notes&amp;quot;:&amp;quot;This is my note about my mailbox.&amp;quot; ,&amp;quot;pagerNumber&amp;quot;:&amp;quot;555.123.0002&amp;quot; ,&amp;quot;businessCity&amp;quot;:&amp;quot;&amp;quot; ,&amp;quot;businessCountry&amp;quot;:&amp;quot;&amp;quot; ,&amp;quot;businessPostalCode&amp;quot;:&amp;quot;&amp;quot; ,&amp;quot;businessState&amp;quot;:&amp;quot;&amp;quot; ,&amp;quot;businessStreet&amp;quot;:&amp;quot;&amp;quot; ,&amp;quot;employeeType&amp;quot;:&amp;quot;DoesNotExist&amp;quot; ,&amp;quot;generationQualifier&amp;quot;:&amp;quot;Jr&amp;quot; ,&amp;quot;homeCity&amp;quot;:&amp;quot;&amp;quot; ,&amp;quot;homeCountry&amp;quot;:&amp;quot;&amp;quot; ,&amp;quot;homeFaxNumber&amp;quot;:&amp;quot;555.123.0006&amp;quot; ,&amp;quot;homePostalCode&amp;quot;:&amp;quot;&amp;quot; ,&amp;quot;homeState&amp;quot;:&amp;quot;&amp;quot; ,&amp;quot;homeStreet&amp;quot;:&amp;quot;&amp;quot; ,&amp;quot;initials&amp;quot;:&amp;quot;A&amp;quot; ,&amp;quot;organizationUnit&amp;quot;:&amp;quot;IT&amp;quot; ,&amp;quot;organizationalStatus&amp;quot;:&amp;quot;gainfully employed&amp;quot; ,&amp;quot;title&amp;quot;:&amp;quot;My Title&amp;quot; ,&amp;quot;userID&amp;quot;:&amp;quot;J.Test&amp;quot;},&amp;quot;name&amp;quot;:&amp;quot;unittestexist&amp;quot; ,&amp;quot;saveForwardedEmail&amp;quot;:false,&amp;quot;size&amp;quot;:10240,&amp;quot;vacationMessage&amp;quot;:&amp;quot;Test Vacation Message&amp;quot;}''&lt;br /&gt;
&lt;br /&gt;
== Add/Edit ==&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Add: [POST] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /rs/mailboxes/(mailbox name)&lt;br /&gt;
Edit: [PUT] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /rs/mailboxes/(mailbox name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Adds/edits a noteworthy mailbox using the following form fields.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| password&lt;br /&gt;
| string&lt;br /&gt;
| Password (Required for Add)&lt;br /&gt;
|-&lt;br /&gt;
| size&lt;br /&gt;
| positive integer&lt;br /&gt;
| Mailbox size in megabytes (Required for Add)&lt;br /&gt;
|-&lt;br /&gt;
| enableVacationMessage&lt;br /&gt;
| boolean&lt;br /&gt;
| indicates whether vacation message has been enabled&lt;br /&gt;
|-&lt;br /&gt;
| vacationMessage&lt;br /&gt;
| string&lt;br /&gt;
| A mailbox's vacation message&lt;br /&gt;
|-&lt;br /&gt;
| emailForwardingAddresses&lt;br /&gt;
| string&lt;br /&gt;
| A comma delimited list, Maximum 15 addresses, 4 of which can be outside of this domain&lt;br /&gt;
|-&lt;br /&gt;
| saveForwardedEmail&lt;br /&gt;
| string&lt;br /&gt;
| Indicates whether to save a copy of any forwarded email&lt;br /&gt;
|-&lt;br /&gt;
| lastName&lt;br /&gt;
| string&lt;br /&gt;
| A last name&lt;br /&gt;
|-&lt;br /&gt;
| firstName&lt;br /&gt;
| string&lt;br /&gt;
| A first name&lt;br /&gt;
|-&lt;br /&gt;
| generationQualifier&lt;br /&gt;
| string&lt;br /&gt;
| A person's generation (ex. Jr., Sr., III)&lt;br /&gt;
|-&lt;br /&gt;
| initials&lt;br /&gt;
| string&lt;br /&gt;
| A person's middle initial&lt;br /&gt;
|-&lt;br /&gt;
| organizationUnit&lt;br /&gt;
| string&lt;br /&gt;
| A person's organization unit (ex. Marketing)&lt;br /&gt;
|-&lt;br /&gt;
| businessNumber&lt;br /&gt;
| string&lt;br /&gt;
| Business phone number&lt;br /&gt;
|-&lt;br /&gt;
| pagerNumber&lt;br /&gt;
| string&lt;br /&gt;
| Pager phone number&lt;br /&gt;
|-&lt;br /&gt;
| homeNumber&lt;br /&gt;
| string&lt;br /&gt;
| Home phone number&lt;br /&gt;
|-&lt;br /&gt;
| mobileNumber&lt;br /&gt;
| string&lt;br /&gt;
| Mobile phone number&lt;br /&gt;
|-&lt;br /&gt;
| faxNumber&lt;br /&gt;
| string&lt;br /&gt;
| Fax phone number &lt;br /&gt;
|-&lt;br /&gt;
| homeFaxNumber&lt;br /&gt;
| string&lt;br /&gt;
| Home Fax phone number &lt;br /&gt;
|-&lt;br /&gt;
| businessStreet&lt;br /&gt;
| string&lt;br /&gt;
| The business street address for a contact&lt;br /&gt;
|-&lt;br /&gt;
| businessCity&lt;br /&gt;
| string&lt;br /&gt;
| The business city for a contact&lt;br /&gt;
|-&lt;br /&gt;
| businessState&lt;br /&gt;
| string&lt;br /&gt;
| The business state for a contact&lt;br /&gt;
|-&lt;br /&gt;
| businessPostalCode&lt;br /&gt;
| string&lt;br /&gt;
| The business postal code/zip code for a contact&lt;br /&gt;
|-&lt;br /&gt;
| businessCountry&lt;br /&gt;
| string&lt;br /&gt;
| The business country for a contact&lt;br /&gt;
|-&lt;br /&gt;
| homeStreet&lt;br /&gt;
| string&lt;br /&gt;
| The home street address for a contact&lt;br /&gt;
|-&lt;br /&gt;
| homeCity&lt;br /&gt;
| string&lt;br /&gt;
| The home city for a contact&lt;br /&gt;
|-&lt;br /&gt;
| homeState&lt;br /&gt;
| string&lt;br /&gt;
| The home state for a contact&lt;br /&gt;
|-&lt;br /&gt;
| homePostalCode&lt;br /&gt;
| string&lt;br /&gt;
| The home postal code/zip code for a contact&lt;br /&gt;
|-&lt;br /&gt;
| homeCountry&lt;br /&gt;
| string&lt;br /&gt;
| The home country for a contact&lt;br /&gt;
|-&lt;br /&gt;
| notes&lt;br /&gt;
| string&lt;br /&gt;
| Any notes for the mailbox&lt;br /&gt;
|-&lt;br /&gt;
| title&lt;br /&gt;
| string&lt;br /&gt;
| A contact's title&lt;br /&gt;
|-&lt;br /&gt;
| userID&lt;br /&gt;
| string&lt;br /&gt;
| A user ID for a contact&lt;br /&gt;
|-&lt;br /&gt;
| organizationalStatus&lt;br /&gt;
| string&lt;br /&gt;
| A contact's organization status&lt;br /&gt;
|-&lt;br /&gt;
| employeeType&lt;br /&gt;
| string&lt;br /&gt;
| A contact's employee type&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post '/customers/12345678/domains/example.com/rs/mailboxes/alex.smith', 'text/xml',&lt;br /&gt;
{ &lt;br /&gt;
  'password' =&amp;gt; 'Secret13!@#',&lt;br /&gt;
  'size' =&amp;gt; '2048',&lt;br /&gt;
  'enableVacationMessage' =&amp;gt; 'true',&lt;br /&gt;
  'vacationMessage' =&amp;gt; 'My Vacation Message',&lt;br /&gt;
  'emailForwardingAddresses' =&amp;gt; 'sampletest@example.com,sampletest2@example.com',&lt;br /&gt;
  'saveForwardedEmail' =&amp;gt; 'false'&lt;br /&gt;
  'lastName' =&amp;gt; 'Testlastname',&lt;br /&gt;
  'firstName' =&amp;gt;  'Jay',&lt;br /&gt;
  'generationQualifier' =&amp;gt;  'III',&lt;br /&gt;
  'initials' =&amp;gt;  'A',&lt;br /&gt;
  'organizationUnit' =&amp;gt;  'IT',&lt;br /&gt;
  'businessStreet' =&amp;gt;  '123 Biz St.',&lt;br /&gt;
  'businessCity' =&amp;gt;  'Blacksburg',&lt;br /&gt;
  'businessState' =&amp;gt;  'VA',&lt;br /&gt;
  'businessPostalCode' =&amp;gt;  '24060',&lt;br /&gt;
  'businessCountry' =&amp;gt;  'USA',&lt;br /&gt;
  'homeStreet' =&amp;gt;  '456 Home St.',&lt;br /&gt;
  'homeCity' =&amp;gt;  'Charlotte',&lt;br /&gt;
  'homeState' =&amp;gt;  'NC',&lt;br /&gt;
  'homePostalCode' =&amp;gt;  '28210',&lt;br /&gt;
  'homeCountry' =&amp;gt;  'USA',&lt;br /&gt;
  'notes' =&amp;gt;  'This is my note about my mailbox.',&lt;br /&gt;
  'title' =&amp;gt;  'My Title',&lt;br /&gt;
  'userID' =&amp;gt;  'J.Test',&lt;br /&gt;
  'organizationalStatus' =&amp;gt;  'OrgStatus',&lt;br /&gt;
  'employeeType' =&amp;gt;  'Full-Time'&lt;br /&gt;
  &lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Delete ==&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[DELETE] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
            /rs/mailboxes/(mailbox name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Deletes the mailbox. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The mailbox and mailbox contents are deleted permanently.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
delete '/customers/12345678/domains/example.com/rs/mailboxes/alex.smith', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zhen.wei</name></author>	</entry>

	<entry>
		<id>http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Customer_(Rest_API)&amp;diff=403</id>
		<title>Customer (Rest API)</title>
		<link rel="alternate" type="text/html" href="http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Customer_(Rest_API)&amp;diff=403"/>
				<updated>2010-08-02T03:36:23Z</updated>
		
		<summary type="html">&lt;p&gt;Zhen.wei: add create login token section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Index (Reseller Only) ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 [GET] &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/v0/customers&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
This operation returns the list of customers that the authenticated user has access to.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Filter/Search'':&lt;br /&gt;
&lt;br /&gt;
Searching will return results based on the name, account number and reference number fields. We also provide a separate query method ?referenceNumber=123456 that will return a Show on the exact customer whose reference number is as specified.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
For the text/xml format, refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/CustomerList.xsd CustomerList.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers?size=100&amp;amp;page=1', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;customerList 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; xmlns=&amp;quot;urn:xml:customerList&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;offset&amp;gt;0&amp;lt;/offset&amp;gt;&lt;br /&gt;
  &amp;lt;size&amp;gt;50&amp;lt;/size&amp;gt;&lt;br /&gt;
  &amp;lt;total&amp;gt;3&amp;lt;/total&amp;gt;&lt;br /&gt;
  &amp;lt;customers&amp;gt;&lt;br /&gt;
    &amp;lt;customer&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;API Customer 17&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;accountNumber&amp;gt;460182&amp;lt;/accountNumber&amp;gt;&lt;br /&gt;
      &amp;lt;referenceNumber&amp;gt;49&amp;lt;/referenceNumber&amp;gt;&lt;br /&gt;
    &amp;lt;/customer&amp;gt;&lt;br /&gt;
    &amp;lt;customer&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;API Customer 39&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;accountNumber&amp;gt;460181&amp;lt;/accountNumber&amp;gt;&lt;br /&gt;
      &amp;lt;referenceNumber&amp;gt;23&amp;lt;/referenceNumber&amp;gt;&lt;br /&gt;
    &amp;lt;/customer&amp;gt;&lt;br /&gt;
    &amp;lt;customer&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;API Customer 50&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;accountNumber&amp;gt;460183&amp;lt;/accountNumber&amp;gt;&lt;br /&gt;
      &amp;lt;referenceNumber&amp;gt;10&amp;lt;/referenceNumber&amp;gt;&lt;br /&gt;
    &amp;lt;/customer&amp;gt;&lt;br /&gt;
  &amp;lt;/customers&amp;gt;&lt;br /&gt;
&amp;lt;/customerList&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''JSON Result Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&amp;quot;offset&amp;quot;:0,&amp;quot;size&amp;quot;:50,&amp;quot;total&amp;quot;:3,&amp;quot;customers&amp;quot;:&lt;br /&gt;
[{&amp;quot;name&amp;quot;:&amp;quot;API Customer 17&amp;quot;,&amp;quot;accountNumber&amp;quot;:&amp;quot;460182&amp;quot;,&amp;quot;referenceNumber&amp;quot;:&amp;quot;49&amp;quot;},&lt;br /&gt;
{&amp;quot;name&amp;quot;:&amp;quot;API Customer 39&amp;quot;,&amp;quot;accountNumber&amp;quot;:&amp;quot;460181&amp;quot;,&amp;quot;referenceNumber&amp;quot;:&amp;quot;23&amp;quot;},&lt;br /&gt;
{&amp;quot;name&amp;quot;:&amp;quot;API Customer 50&amp;quot;,&amp;quot;accountNumber&amp;quot;:&amp;quot;460183&amp;quot;,&amp;quot;referenceNumber&amp;quot;:&amp;quot;10&amp;quot;}]}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Show (Reseller Only) ==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 [GET] &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/v0/customers/(customer account number)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
The show operation will return detailed information about the specified account.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
To do the show operation on the account that is logged in instead of a customer's account, use &amp;quot;me&amp;quot; in the place of the customer account number i.e. &amp;lt;nowiki&amp;gt;'https://api.emailsrvr.com/v0/customers/me'&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The show operation only supports the GET HTTP verb. For text/xml format, refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/Customer.xsd Customer.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Reference Number''&lt;br /&gt;
&lt;br /&gt;
The query string &amp;quot;referenceNumber=xx&amp;quot; searches for a customer with an exact reference number.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Examples'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/me', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;customer 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; xmlns=&amp;quot;urn:xml:customer&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;name&amp;gt;API Customer 17&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;accountNumber&amp;gt;460182&amp;lt;/accountNumber&amp;gt;&lt;br /&gt;
  &amp;lt;referenceNumber&amp;gt;49&amp;lt;/referenceNumber&amp;gt;&lt;br /&gt;
&amp;lt;/customer&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''JSON Result Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&amp;quot;name&amp;quot;:&amp;quot;API Customer 17&amp;quot;,&amp;quot;accountNumber&amp;quot;:&amp;quot;460182&amp;quot;,&amp;quot;referenceNumber&amp;quot;:&amp;quot;49&amp;quot;}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Example of querying with Reference Number''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers?referenceNumber=49', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;customer 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; xmlns=&amp;quot;urn:xml:customer&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;name&amp;gt;API Customer 17&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;accountNumber&amp;gt;460182&amp;lt;/accountNumber&amp;gt;&lt;br /&gt;
  &amp;lt;referenceNumber&amp;gt;49&amp;lt;/referenceNumber&amp;gt;&lt;br /&gt;
&amp;lt;/customer&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Add/Edit (Reseller Only)==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 Add: [POST] &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/customers&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 Edit: [PUT] &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/customers/(customer account number)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Add/Edit a new sub-account. Note that customer number is not known until the customer is added.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| name&lt;br /&gt;
| string&lt;br /&gt;
| The customer's display name (Required for Add)&lt;br /&gt;
|-&lt;br /&gt;
| referenceNumber&lt;br /&gt;
| string&lt;br /&gt;
| The reference number of this account&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post '/customers', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
 'name' =&amp;gt; 'Name'&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
put '/customers/999999', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
 'name' =&amp;gt; 'NewName',&lt;br /&gt;
 'referenceNumber' =&amp;gt; '12345'&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| The name field was not specified&lt;br /&gt;
| 400&lt;br /&gt;
| Missing required field: name&lt;br /&gt;
|-&lt;br /&gt;
| The name field cannot be blank&lt;br /&gt;
| 400&lt;br /&gt;
| Required field name cannot be empty&lt;br /&gt;
|-&lt;br /&gt;
| Names cannot start with a space&lt;br /&gt;
| 400&lt;br /&gt;
| Improper Customer Name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Delete (Reseller Only) ==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 [DELETE] &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/customers/(customer account number)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Deletes the account.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
delete '/customers/999999', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Create Login Tokens ==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
[POST] &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/customers/(customer account number)/loginToken&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Generate a login token using which a customer can use to SSO into the Control Panel.&lt;br /&gt;
&lt;br /&gt;
Login tokens can be generated for two kinds of users: virtual and non-virtual. The distinction between&lt;br /&gt;
the two users is that a virtual user gets the administrator's privileges when SSOed into the Control Panel.&lt;br /&gt;
On the other hand, the non-virtual user gets only as much privileges as are given to him/her when&lt;br /&gt;
his/her account was created.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| userName&lt;br /&gt;
| string&lt;br /&gt;
| The name for which login token needs to be created. &lt;br /&gt;
|-&lt;br /&gt;
| virtualUser&lt;br /&gt;
| string&lt;br /&gt;
| A flag indicating whether the user for whom the login token needs to be generated is virtual or non-virtual. Valid values: true/false. When set to true, the userName is treated as a virtual user. When set to false, the userName is treated as a non-virtual user. A non-virtual user must be an existing admin user.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post '/customers/460896/loginToken', {'userName' =&amp;gt; 'dev_cust_limitedadmin', 'virtualUser' =&amp;gt; 'true'}, 'text/xml'&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create login token for virtual user 'dev_cust_limitedadmin'.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&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;
&lt;br /&gt;
&amp;lt;loginToken xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; &lt;br /&gt;
&lt;br /&gt;
xmlns=&amp;quot;urn:xml:loginToken&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;user&amp;gt;dev_cust_limitedadmin_460896_vu&amp;lt;/user&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;token&amp;gt;EEB0012D8DBC2CAC26E28365D44B537FFF0D79350&amp;lt;/token&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;dateCreated&amp;gt;6/11/2010 10:53:46 AM&amp;lt;/dateCreated&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/loginToken&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The login token is valid for ten minutes after its creation. The &amp;quot;dateCreated&amp;quot; field indicates the time when the login token&lt;br /&gt;
is created. &lt;br /&gt;
&lt;br /&gt;
Using the above created login token the customer with account number 460896 can SSO into the Control Panel using&lt;br /&gt;
the following URL: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://ControlPanelURL/TokenLogin.aspx?loginToken=EEB0012D8DBC2CAC26E28365D44B537FFF0D79350&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A customer can also use the login token to login on their private label control panel (E.g.: cp.mydomain.com/logintokens.aspx).&lt;/div&gt;</summary>
		<author><name>Zhen.wei</name></author>	</entry>

	<entry>
		<id>http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Domain_(Rest_API)&amp;diff=402</id>
		<title>Domain (Rest API)</title>
		<link rel="alternate" type="text/html" href="http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Domain_(Rest_API)&amp;diff=402"/>
				<updated>2010-07-30T21:44:36Z</updated>
		
		<summary type="html">&lt;p&gt;Zhen.wei: add note to 'exchangeUsedStorage' and 'rsEmailUsedStorage'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Index ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
This operation returns a list of domains under the account. If a customer account is specified, then a list of domains under that specific account will be returned.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
To retrieve a list of domains owned by the account that is logged in, use &amp;quot;me&amp;quot; as the customer account number i.e. &amp;lt;nowiki&amp;gt;'https://api.emailsrvr.com/v0/customers/me/domains'&amp;lt;/nowiki&amp;gt;. To retrieve a list of domains owned by all customer sub-accounts and your own account, use &amp;quot;all&amp;quot; as the customer account number.&lt;br /&gt;
&lt;br /&gt;
The index operation only supports the GET HTTP verb. For text/xml format, refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/DomainList.xsd DomainList.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/all/domains?size=100&amp;amp;page=1', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;domainList 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; xmlns=&amp;quot;urn:xml:domainList&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;offset&amp;gt;0&amp;lt;/offset&amp;gt;&lt;br /&gt;
  &amp;lt;size&amp;gt;50&amp;lt;/size&amp;gt;&lt;br /&gt;
  &amp;lt;total&amp;gt;3&amp;lt;/total&amp;gt;&lt;br /&gt;
  &amp;lt;domains&amp;gt;&lt;br /&gt;
    &amp;lt;domain&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;apidomain53.com&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;accountNumber&amp;gt;100000&amp;lt;/accountNumber&amp;gt;&lt;br /&gt;
      &amp;lt;serviceType&amp;gt;both&amp;lt;/serviceType&amp;gt;&lt;br /&gt;
    &amp;lt;/domain&amp;gt;&lt;br /&gt;
    &amp;lt;domain&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;apidomain66.com&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;accountNumber&amp;gt;100001&amp;lt;/accountNumber&amp;gt;&lt;br /&gt;
      &amp;lt;serviceType&amp;gt;both&amp;lt;/serviceType&amp;gt;&lt;br /&gt;
    &amp;lt;/domain&amp;gt;&lt;br /&gt;
    &amp;lt;domain&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;apidomain68.com&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;accountNumber&amp;gt;100002&amp;lt;/accountNumber&amp;gt;&lt;br /&gt;
      &amp;lt;serviceType&amp;gt;both&amp;lt;/serviceType&amp;gt;&lt;br /&gt;
    &amp;lt;/domain&amp;gt;&lt;br /&gt;
  &amp;lt;/domains&amp;gt;&lt;br /&gt;
&amp;lt;/domainList&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&amp;quot;offset&amp;quot;:0,&amp;quot;size&amp;quot;:50,&amp;quot;total&amp;quot;:3,&amp;quot;domains&amp;quot;:&lt;br /&gt;
[{&amp;quot;name&amp;quot;:&amp;quot;apidomain53.com&amp;quot;,&amp;quot;accountNumber&amp;quot;:&amp;quot;100000&amp;quot;,&amp;quot;serviceType&amp;quot;:&amp;quot;both&amp;quot;},&lt;br /&gt;
{&amp;quot;name&amp;quot;:&amp;quot;apidomain66.com&amp;quot;,&amp;quot;accountNumber&amp;quot;:&amp;quot;100001&amp;quot;,&amp;quot;serviceType&amp;quot;:&amp;quot;both&amp;quot;},&lt;br /&gt;
{&amp;quot;name&amp;quot;:&amp;quot;apidomain68.com&amp;quot;,&amp;quot;accountNumber&amp;quot;:&amp;quot;100002&amp;quot;,&amp;quot;serviceType&amp;quot;:&amp;quot;both&amp;quot;}]}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Show ==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
The show operation will return detailed information about the specified domain name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The show operation only supports the GET HTTP verb. For text/xml format, refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/Domain.xsd Domain.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Note'':&lt;br /&gt;
&lt;br /&gt;
These two fields 'exchangeUsedStorage' and 'rsEmailUsedStorage' actually return the number of active mailboxes in each service respectively. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/999999/domains/example.com', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;domain 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; xmlns=&amp;quot;urn:xml:domain&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;name&amp;gt;apidomain21.com&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;accountNumber&amp;gt;100000&amp;lt;/accountNumber&amp;gt;&lt;br /&gt;
  &amp;lt;serviceType&amp;gt;both&amp;lt;/serviceType&amp;gt;&lt;br /&gt;
  &amp;lt;exchangeBaseMailboxSize&amp;gt;2048&amp;lt;/exchangeBaseMailboxSize&amp;gt;&lt;br /&gt;
  &amp;lt;exchangeUsedStorage&amp;gt;0&amp;lt;/exchangeUsedStorage&amp;gt;&lt;br /&gt;
  &amp;lt;exchangeTotalStorage&amp;gt;18432&amp;lt;/exchangeTotalStorage&amp;gt;&lt;br /&gt;
  &amp;lt;exchangeExtraStorage&amp;gt;10240&amp;lt;/exchangeExtraStorage&amp;gt;&lt;br /&gt;
  &amp;lt;exchangeMaxNumMailboxes&amp;gt;4&amp;lt;/exchangeMaxNumMailboxes&amp;gt;&lt;br /&gt;
  &amp;lt;rsEmailBaseMailboxSize&amp;gt;2048&amp;lt;/rsEmailBaseMailboxSize&amp;gt;&lt;br /&gt;
  &amp;lt;rsEmailMaxNumberMailboxes&amp;gt;4&amp;lt;/rsEmailMaxNumberMailboxes&amp;gt;&lt;br /&gt;
  &amp;lt;rsEmailExtraStorage&amp;gt;10240&amp;lt;/rsEmailExtraStorage&amp;gt;&lt;br /&gt;
  &amp;lt;rsEmailUsedStorage&amp;gt;0&amp;lt;/rsEmailUsedStorage&amp;gt;&lt;br /&gt;
  &amp;lt;aliases /&amp;gt;&lt;br /&gt;
  &amp;lt;archivingServiceEnabled&amp;gt;false&amp;lt;/archivingServiceEnabled&amp;gt;&lt;br /&gt;
  &amp;lt;publicFoldersEnabled&amp;gt;false&amp;lt;/publicFoldersEnabled&amp;gt;&lt;br /&gt;
  &amp;lt;blackBerryMobileServiceEnabled&amp;gt;true&amp;lt;/blackBerryMobileServiceEnabled&amp;gt;&lt;br /&gt;
  &amp;lt;blackBerryLicenses&amp;gt;4&amp;lt;/blackBerryLicenses&amp;gt;&lt;br /&gt;
  &amp;lt;activeSyncMobileServiceEnabled&amp;gt;true&amp;lt;/activeSyncMobileServiceEnabled&amp;gt;&lt;br /&gt;
  &amp;lt;activeSyncLicenses&amp;gt;4&amp;lt;/activeSyncLicenses&amp;gt;&lt;br /&gt;
&amp;lt;/domain&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&amp;quot;name&amp;quot;:&amp;quot;apidomain21.com&amp;quot;,&amp;quot;accountNumber&amp;quot;:&amp;quot;100000&amp;quot;,&amp;quot;serviceType&amp;quot;:&amp;quot;both&amp;quot;,&lt;br /&gt;
&amp;quot;exchangeBaseMailboxSize&amp;quot;:2048,&amp;quot;exchangeUsedStorage&amp;quot;:0,&amp;quot;exchangeTotalStorage&amp;quot;:18432,&lt;br /&gt;
&amp;quot;exchangeExtraStorage&amp;quot;:10240,&amp;quot;exchangeMaxNumMailboxes&amp;quot;:4,&amp;quot;rsEmailBaseMailboxSize&amp;quot;:2048,&lt;br /&gt;
&amp;quot;rsEmailMaxNumberMailboxes&amp;quot;:4,&amp;quot;rsEmailExtraStorage&amp;quot;:10240,&amp;quot;rsEmailUsedStorage&amp;quot;:0,&lt;br /&gt;
&amp;quot;aliases&amp;quot;:[],&amp;quot;archivingServiceEnabled&amp;quot;:false,&amp;quot;publicFoldersEnabled&amp;quot;:false,&lt;br /&gt;
&amp;quot;blackBerryMobileServiceEnabled&amp;quot;:true,&amp;quot;blackBerryLicenses&amp;quot;:4,&amp;quot;activeSyncMobileServiceEnabled&amp;quot;:true,&lt;br /&gt;
&amp;quot;activeSyncLicenses&amp;quot;:4}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Add/Edit (Reseller Only)==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
 Add: [POST] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
 Edit: [PUT] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Adds/edits a new domain to the account with the data specified. To add a domain to your own account, use your own account id.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| serviceType&lt;br /&gt;
| string&lt;br /&gt;
| Domain service type. &amp;quot;rsemail&amp;quot; = &amp;quot;Rackspace Email Only&amp;quot;. &amp;quot;exchange&amp;quot; = &amp;quot;Exchange Only&amp;quot;. &amp;quot;both&amp;quot; = &amp;quot;Rackspace Email and Exchange&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| exchangeExtraStorage&lt;br /&gt;
| int&lt;br /&gt;
| Exchange service extra storage in megabytes&lt;br /&gt;
|-&lt;br /&gt;
| exchangeMaxNumMailboxes&lt;br /&gt;
| int&lt;br /&gt;
| Maximum number of mailboxes allowed under the domain Exchange service. Required for Adding Exchange service&lt;br /&gt;
|-&lt;br /&gt;
| rsEmailBaseMailboxSize&lt;br /&gt;
| int&lt;br /&gt;
| Rackspace Email base mailbox size in megabytes&lt;br /&gt;
|-&lt;br /&gt;
| rsEmailMaxNumberMailboxes&lt;br /&gt;
| int&lt;br /&gt;
| Maximum number of mailboxes allowed under the domain Rackspace Email service. Required for Adding Rackspace Email service&lt;br /&gt;
|-&lt;br /&gt;
| rsEmailExtraStorage&lt;br /&gt;
| int&lt;br /&gt;
| Rackspace Email service extra storage in megabytes&lt;br /&gt;
|-&lt;br /&gt;
| blackBerryMobileServiceEnabled&lt;br /&gt;
| boolean&lt;br /&gt;
| Enable or disable domain BlackBerry Mobile service&lt;br /&gt;
|-&lt;br /&gt;
| blackBerryLicenses&lt;br /&gt;
| int&lt;br /&gt;
| Maximum number of mailboxes allowed to have BlackBerry Mobile service. 0 means unlimited&lt;br /&gt;
|-&lt;br /&gt;
| activeSyncMobileServiceEnabled&lt;br /&gt;
| boolean&lt;br /&gt;
| Enable or disable domain ActiveSync Mobile service&lt;br /&gt;
|-&lt;br /&gt;
| activeSyncLicenses&lt;br /&gt;
| int&lt;br /&gt;
| Maximum number of mailboxes allowed to have ActiveSync Mobile service. 0 means unlimited&lt;br /&gt;
|-&lt;br /&gt;
| goodMobileServiceEnabled (deprecated)&lt;br /&gt;
| boolean&lt;br /&gt;
| Enable or disable domain Good Mobile service&lt;br /&gt;
|-&lt;br /&gt;
| goodMobileLicenses (deprecated)&lt;br /&gt;
| int&lt;br /&gt;
| Maximum number of mailboxes allowed to have Good Mobile service. 0 means unlimited&lt;br /&gt;
|-&lt;br /&gt;
| archivingServiceEnabled&lt;br /&gt;
| boolean&lt;br /&gt;
| Enable or disable domain archiving service&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post '/customers/123455/domains/newcompany.com', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
  'maxNumMailboxes' =&amp;gt; '5',&lt;br /&gt;
  'extraStorage' =&amp;gt; '1024'&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
put '/customers/123455/domains/newcompany.com', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
  'maxNumMailboxes' =&amp;gt; '25',&lt;br /&gt;
  'extraStorage' =&amp;gt; '2048'&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| New domain name doesn't meet the naming requirements&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid domain name&lt;br /&gt;
|-&lt;br /&gt;
| New domain name already exists&lt;br /&gt;
| 400&lt;br /&gt;
| abc.com already exists as a domain or alternate domain&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Move (Reseller Only)==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[PUT] https://api.emailsrvr.com/v0/customers/&lt;br /&gt;
      (new customer account number)/domains/(domain name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Moves the domain to another customer account.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| moveDomain&lt;br /&gt;
| boolean&lt;br /&gt;
| Indicate whether or not moving the domain&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
Note 'Move Domain' and 'Edit Domain' share the same URI and HTTP verb. When the domain doesn't belong to the customer and 'moveDomain' is set to 'true', API will take the request as a 'Move Domain' call.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
put '/customers/123456/domains/newcompany.com', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
  'moveDomain' =&amp;gt; 'true'&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Delete (Reseller Only)==&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[DELETE] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Deletes the domain.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The domain and all the mailboxes, mailbox contents, groups, and contacts are deleted permanently.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
delete '/customers/12345678/domains/newcompany.com', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Alternate Domains ==&lt;br /&gt;
&lt;br /&gt;
=== Index (Reseller Only) ===&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/&lt;br /&gt;
                domains/(domain name)/alternatedomains&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
This operation returns a list of Domain Aliases and Accepted Domains for the domain. The type of the alternate domain is indicated by the 'type' data field. The XML schema for the returned data is [http://api.emailsrvr.com/v0/Schemas/DomainSplitRouting.xsd DomainAlternateList.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/test.com/alternatedomains', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;alternateDomainList 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; xmlns=&amp;quot;urn:xml:domainAlternateList&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;alternateDomains&amp;gt;&lt;br /&gt;
    &amp;lt;alternateDomain&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;domainalias.com&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;type&amp;gt;DomainAlias&amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;/alternateDomain&amp;gt;&lt;br /&gt;
    &amp;lt;alternateDomain&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;accepteddomain.com&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;type&amp;gt;AcceptedDomain&amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;/alternateDomain&amp;gt;&lt;br /&gt;
  &amp;lt;/alternateDomains&amp;gt;&lt;br /&gt;
&amp;lt;/alternateDomainList&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{&amp;quot;alternateDomains&amp;quot;:[{&amp;quot;name&amp;quot;:&amp;quot;domainalias.com&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;DomainAlias&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;accepteddomain.com&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;AcceptedDomain&amp;quot;}]}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add (Reseller Only) ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
 [POST] https://api.emailsrvr.com/v0/customers/(customer account number)&lt;br /&gt;
    /domains/(domain name)/alternatedomains/(alternate domain name)&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Adds either a Domain Alias or Accepted Domain to the domain.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| type&lt;br /&gt;
| string&lt;br /&gt;
| Alternate domain type. Send &amp;quot;DomainAlias&amp;quot; for a domain alias, and &amp;quot;AcceptedDomain&amp;quot; for an accepted domain. (Required)&lt;br /&gt;
|-&lt;br /&gt;
| createForExistingRecipients&lt;br /&gt;
| boolean&lt;br /&gt;
| Whether the alternate addresses should be created for existing mailboxes when adding an Accepted Domain. Sending this field in the request when the type is Domain Alias will throw an error. This defaults to false.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post '/customers/123456/domains/example.com/alternatedomains/accepteddomain.com', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
  'type' =&amp;gt; 'AcceptedDomain'&lt;br /&gt;
  'createForExistingRecipients' =&amp;gt; 'true'&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| New domain name doesn't meet the naming requirements&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid domain name&lt;br /&gt;
|-&lt;br /&gt;
| Alternate domain already exists&lt;br /&gt;
| 400&lt;br /&gt;
| abc.com already exists as a domain or alternate domain&lt;br /&gt;
|-&lt;br /&gt;
| The 'createForExistingRecipients' field was sent with either data, or as a null field. It should not be included in the form data at all.&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid Alternate Domain Setting: createForExistingRecipients is an invalid setting for Domain Aliases&lt;br /&gt;
|-&lt;br /&gt;
| The only valid values for 'type' are 'DomainAlias' and 'AcceptedDomain', for a Domain Alias and Accepted Domain respectively.&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid Alternate Domain type&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Delete (Reseller Only) ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[DELETE] https://api.emailsrvr.com/v0/customers/(customer account number)/&lt;br /&gt;
      domains/(domain name)/alternatedomains/(alternate domain name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Deletes the alternate domain.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
delete '/customers/12345678/domains/example.com/alternatedomains/accepteddomain.com'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Split Domain Routing ==&lt;br /&gt;
&lt;br /&gt;
=== Show Settings ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain)/splitdomainrouting&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
''Description'':&lt;br /&gt;
Shows the current external email server. The XML schema document for the output of this command is [http://api.emailsrvr.com/v0/Schemas/DomainSplitRouting.xsd DomainSplitRouting.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/company.com/splitdomainrouting', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;splitDomainRouting 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; xmlns=&amp;quot;urn:xml:splitDomainRouting&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;externalServer&amp;gt;email.externalserver.com&amp;lt;/externalServer&amp;gt;&lt;br /&gt;
&amp;lt;/splitDomainRouting&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''JSON Result Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&amp;quot;externalServer&amp;quot;:&amp;quot;email.externalserver.com&amp;quot;}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Edit Settings ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[PUT] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain)/splitdomainrouting&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
This command sets the external email server. This command will return a success when the verification passes. Since this involves communication to the external server the request may take some time. If the verification fails a 400 return code will be sent back with the verification's error message.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| externalServer&lt;br /&gt;
| string&lt;br /&gt;
| The address of the external email server. To turn off split domain routing send 'none'. (Required)&lt;br /&gt;
|-&lt;br /&gt;
| verificationAddress&lt;br /&gt;
| string&lt;br /&gt;
| An email address part of your domain or one of the alternate domains that the external server is already set up to handle. (Required only when turning on split domain routing, Do not send this field if turning off.)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
put '/customers/12345678/domains/company.com/splitdomainrouting', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
  'externalServer' =&amp;gt; 'email.externalserver.com',&lt;br /&gt;
  'verificationAddress' =&amp;gt; 'externalaccount@company.com',&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| The SMTP host could not be found.&lt;br /&gt;
| 400&lt;br /&gt;
| One of the verification error messages.&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
== Archiving SSO Login URL ==&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain)/archivingSSOLoginURL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Gets the domain archiving service SSO login URL.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The retrieved URL can be used in browser to access the domain archiving control panel.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/company.com/archivingSSOLoginURL', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| No archiving service&lt;br /&gt;
| 404&lt;br /&gt;
| Domain abc.com has no archiving service enabled&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Domain Public Folders (Reseller Only) ==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
   [PUT] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)/ex/publicfolders&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Enables the Exchange Public Folders feature on the domain. Once enabled, it cannot be disabled.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| enabled&lt;br /&gt;
| string&lt;br /&gt;
| Whether to enable public folders. Once enabled, it cannot be disabled.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
put '/customers/12345678/domains/company.com/ex/publicFolders', 'text/xml',&lt;br /&gt;
{&lt;br /&gt;
  'enabled' =&amp;gt; 'true'&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Public folders cannot be turned off after it's been turned on.&lt;br /&gt;
| 400&lt;br /&gt;
| Public Folders cannot be disabled once enabled&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Zhen.wei</name></author>	</entry>

	<entry>
		<id>http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Rackspace_Mailbox_Spam_(Rest_API)&amp;diff=401</id>
		<title>Rackspace Mailbox Spam (Rest API)</title>
		<link rel="alternate" type="text/html" href="http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Rackspace_Mailbox_Spam_(Rest_API)&amp;diff=401"/>
				<updated>2010-07-30T16:29:21Z</updated>
		
		<summary type="html">&lt;p&gt;Zhen.wei: fix RSMailboxSpamSetting.xsd link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== Spam Settings ==&lt;br /&gt;
&lt;br /&gt;
=== Show ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /rs/mailboxes/(mailbox name)/spam/settings&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
This operation returns the spam settings associated with the mailbox. For .xml format refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/RSMailboxSpamSetting.xsd RSMailboxSpamSetting.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/example.com/rs/mailboxes/alex.smith/spam/settings', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;rsMailboxSpamSetting 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; xmlns=&amp;quot;urn:xml:RSMailboxSpamSetting&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;filterLevel&amp;gt;on&amp;lt;/filterLevel&amp;gt;&lt;br /&gt;
  &amp;lt;rsEmailSettings&amp;gt;&lt;br /&gt;
    &amp;lt;spamHandling&amp;gt;toFolder&amp;lt;/spamHandling&amp;gt;&lt;br /&gt;
    &amp;lt;hasFolderCleaner&amp;gt;false&amp;lt;/hasFolderCleaner&amp;gt;&lt;br /&gt;
    &amp;lt;spamFolderAgeLimit&amp;gt;0&amp;lt;/spamFolderAgeLimit&amp;gt;&lt;br /&gt;
    &amp;lt;spamFolderNumLimit&amp;gt;0&amp;lt;/spamFolderNumLimit&amp;gt;&lt;br /&gt;
    &amp;lt;spamForwardingAddress /&amp;gt;&lt;br /&gt;
  &amp;lt;/rsEmailSettings&amp;gt;&lt;br /&gt;
&amp;lt;/rsMailboxSpamSetting&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&amp;quot;filterLevel&amp;quot;:&amp;quot;on&amp;quot;,&amp;quot;rsEmailSettings&amp;quot;:&amp;quot;hasFolderCleaner&amp;quot;:false,&amp;quot;spamFolderAgeLimit&amp;quot;:0,&amp;quot;spamFolderNumLimit&amp;quot;:0,&lt;br /&gt;
&amp;quot;spamForwardingAddress&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;spamHandling&amp;quot;:&amp;quot;toFolder&amp;quot;}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Edit ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[PUT] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /rs/mailboxes/(mailbox name)/spam/settings&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
This operation will modify the mailbox spam settings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Data Type''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| filterLevel&lt;br /&gt;
| string&lt;br /&gt;
| This is a required field. Spam filter status: 'on', 'off', or 'exclusive'. Exclusive mode allows only email cleared by the Safelist.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| rsEmail.spamHandling&lt;br /&gt;
| string&lt;br /&gt;
| The string 'toFolder' will deliver the email to the user's Spam folder, 'delete' will delete the mail immediately, 'labelSubject' will prepend [SPAM] to the email's subject line, and 'toAddress' will send the email to a specified folder instead.&lt;br /&gt;
&lt;br /&gt;
Valid Field Combinations: &lt;br /&gt;
&lt;br /&gt;
(toFolder =&amp;gt; hasFolderCleaner, spamFolderAgeLimit, spamFolderNumLimit)&lt;br /&gt;
&lt;br /&gt;
(toAddress =&amp;gt; spamForwardingAddress)&lt;br /&gt;
|-&lt;br /&gt;
| rsEmail.hasFolderCleaner&lt;br /&gt;
| string&lt;br /&gt;
| This field is effective when rsEmail.spamHandling option is set to 'toFolder'. This field controls how the spam that is delivered o the spam folder is handled. There are currently two options supported for handling spam. First option is to set a limit after which the spam gets deleted. One can set limit on the number of days or on the number of spam emails. Second option is to never automatically delete the spam. For both these options to be enabled the rsEmail.hasFolderCleaner field should be set to 'true'.&lt;br /&gt;
The folder cleaner fields (hasFolderCleaner, spamFolderAgeLimit, spamFolderNumLimit) are allowed&lt;br /&gt;
only when the spamHandling field is set to 'toFolder'. In order to never delete the spam set the spamFolderAgeLimit and spamFolderNumLimit fields to 0.&lt;br /&gt;
|-&lt;br /&gt;
| rsEmail.spamFolderAgeLimit&lt;br /&gt;
| string&lt;br /&gt;
| The number of days a message stays in the Spam folder before its deleted. This field is effective only when rsEmail.spamHandling is set to 'toFolder', and 'rs.hasFolderCleaner' is set to 'true'. This field cannot have negative value.&lt;br /&gt;
|-&lt;br /&gt;
| rsEmail.spamFolderNumLimit&lt;br /&gt;
| string&lt;br /&gt;
| The maximum number of emails the Spam folder holds. This field is effective only when rsEmail.spamHandling is set to 'toFolder', and 'rs.hasFolderCleaner' is set to 'true'. This field cannot have negative value.&lt;br /&gt;
|-&lt;br /&gt;
| rsEmail.spamForwardingAddress&lt;br /&gt;
| string&lt;br /&gt;
| The email address that Spam emails will be redirected to. This field is required when the spamHandling field is set to 'toAddress'&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
put '/customers/100018/domains/resellerallservices.net/rs/mailboxes/unittestexist/spam/settings', &lt;br /&gt;
{&lt;br /&gt;
      'filterLevel' =&amp;gt; 'on',  &lt;br /&gt;
      'rsEmail.spamHandling' =&amp;gt; 'toFolder',&lt;br /&gt;
      'rsEmail.hasFolderCleaner' =&amp;gt; 'true',&lt;br /&gt;
      'rsEmail.spamFolderAgeLimit' =&amp;gt; '7',&lt;br /&gt;
      'rsEmail.spamFolderNumLimit' =&amp;gt; '100',&lt;br /&gt;
}, Formats.xml&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Errors'': &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Invalid input for form field 'filterLevel'&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid FilterLevel: Input must be: on/off/exclusive&lt;br /&gt;
|-&lt;br /&gt;
| Invalid input for form field 'spamHandling'&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid RSEmail SpamHandling: Input must be: toFolder/delete/labelSubject/toAddress&lt;br /&gt;
|-&lt;br /&gt;
| Invalid email address in spam forwarding address&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid email address&lt;br /&gt;
|-&lt;br /&gt;
| Empty forwarding address&lt;br /&gt;
| 400&lt;br /&gt;
| Spam Forwarding Address cannot be empty for spam handling policy: toAddress&lt;br /&gt;
|-&lt;br /&gt;
| Invalid value for field 'spamFolderAgeLimit'&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid RSEmail SpamCleanupOption: -1. rsEmail.spamFolderAgeLimit should be non-negative&lt;br /&gt;
|-&lt;br /&gt;
| Invalid value for field 'spamFolderNumLimit'&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid RSEmail SpamCleanupOption: -1. rsEmail.spamNumberLimit should be non-negative.&lt;br /&gt;
|-&lt;br /&gt;
| Invalid field combination&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid field combination: Folder cleaner options cannot be specified with spam handling policy: delete.&lt;br /&gt;
|-&lt;br /&gt;
| Invalid field combination&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid field combination: Folder cleaner options cannot be specified with spam handling policy: labelSubject.&lt;br /&gt;
|-&lt;br /&gt;
| Invalid field combination&lt;br /&gt;
| 400&lt;br /&gt;
| Invalid field combination: Folder cleaner options cannot be specified with spam handling policy: toAddress.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Blacklist ==&lt;br /&gt;
&lt;br /&gt;
=== Index ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /rs/mailboxes/(mailbox name)/spam/blacklist&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
This operation returns email address blacklist associated with the mailbox. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The Index operation only supports the GET HTTP verb. For .xml format refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/Blacklist.xsd Blacklist.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/example.com/rs/mailboxes/alex.smith/spam/blacklist', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;blacklist xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:blacklist&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;addresses&amp;gt;&lt;br /&gt;
    &amp;lt;address&amp;gt;name1@spam.com&amp;lt;/address&amp;gt;&lt;br /&gt;
    &amp;lt;address&amp;gt;name2@spam.com&amp;lt;/address&amp;gt;&lt;br /&gt;
  &amp;lt;/addresses&amp;gt;&lt;br /&gt;
&amp;lt;/blacklist&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;addresses&amp;quot;:[&amp;quot;name1@spam.com&amp;quot;,&amp;quot;name2@spam.com&amp;quot;]}&lt;br /&gt;
&lt;br /&gt;
=== Add ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[POST] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /rs/mailboxes/(mailbox name)/spam/blacklist/(email address)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Adds an email address or domain to the blacklist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post '/customers/12345678/domains/example.com/rs/mailboxes/alex.smith/spam/blacklist/anyone@spam.com', {},'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'': &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Entered invalid email or domain&lt;br /&gt;
| 400&lt;br /&gt;
| invalid email address: abc&lt;br /&gt;
|-&lt;br /&gt;
| Entered current domain&lt;br /&gt;
| 400&lt;br /&gt;
| Adding example.com would blacklist the current domain&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Delete ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[DELETE] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
            /rs/mailboxes/(mailbox name)/spam/blacklist/(email address)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Removes an email address or domain from the blacklist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
delete '/customers/12345678/domains/example.com/rs/mailboxes/alex.smith/spam/blacklist/anyone@yahoo.com', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'': &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Entered invalid email or domain&lt;br /&gt;
| 400&lt;br /&gt;
| invalid email address: abc&lt;br /&gt;
|-&lt;br /&gt;
| Entered email or domain is not on the current blacklist&lt;br /&gt;
| 400&lt;br /&gt;
| abc@junkmail.com is not found on the blacklist&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== IP Blacklist ==&lt;br /&gt;
&lt;br /&gt;
=== Index ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /rs/mailboxes/(mailbox name)/spam/ipblacklist&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
This operation returns IP blacklist associated with the mailbox. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The Index operation only supports the GET HTTP verb. For .xml format refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/IpBlacklist.xsd IpBlacklist.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/example.com/rs/mailboxes/alex.smith/spam/ipblacklist', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''XML Result Example':&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;ipBlacklist xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:ipBlacklist&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;addresses&amp;gt;&lt;br /&gt;
    &amp;lt;ip&amp;gt;216.12.34.1&amp;lt;/ip&amp;gt;&lt;br /&gt;
    &amp;lt;ip&amp;gt;216.12.34.2&amp;lt;/ip&amp;gt;&lt;br /&gt;
  &amp;lt;/addresses&amp;gt;&lt;br /&gt;
&amp;lt;/ipBlacklist&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;addresses&amp;quot;:[&amp;quot;216.12.34.1&amp;quot;,&amp;quot;216.12.34.2&amp;quot;]}&lt;br /&gt;
&lt;br /&gt;
=== Add ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[POST] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /rs/mailboxes/(mailbox name)/spam/ipblacklist/(ip address)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Adds an IP to the blacklist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post '/customers/12345678/domains/example.com/rs/mailboxes/alex.smith/spam/blacklist/216.12.34.1', {},'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[DELETE] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
            /rs/mailboxes/(mailbox name)/spam/ipblacklist/(ip address)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Removes an IP from the blacklist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
delete '/customers/12345678/domains/example.com/rs/mailboxes/alex.smith/spam/ipblacklist/216.12.34.1', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'': &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Entered IP is not on the current blacklist&lt;br /&gt;
| 400&lt;br /&gt;
| 216.12.34.1 is not found on the blacklist&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Safelist ==&lt;br /&gt;
&lt;br /&gt;
=== Index ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /rs/mailboxes/(mailbox name)/spam/safelist&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
This operation returns email address safelist associated with the mailbox. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The Index operation only supports the GET HTTP verb. For .xml format refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/Safelist.xsd Safelist.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/example.com/rs/mailboxes/alex.smith/spam/safelist', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;safelist xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:safelist&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;addresses&amp;gt;&lt;br /&gt;
    &amp;lt;address&amp;gt;name1@notspam.com&amp;lt;/address&amp;gt;&lt;br /&gt;
    &amp;lt;address&amp;gt;name2@notspam.com&amp;lt;/address&amp;gt;&lt;br /&gt;
  &amp;lt;/addresses&amp;gt;&lt;br /&gt;
&amp;lt;/safelist&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;addresses&amp;quot;:[&amp;quot;name1@notspam.com&amp;quot;,&amp;quot;name2@notspam.com&amp;quot;]}&lt;br /&gt;
&lt;br /&gt;
=== Add ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[POST] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /rs/mailboxes/(mailbox name)/spam/safelist/(email address)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Adds an email address or domain to the safelist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post '/customers/12345678/domains/example.com/rs/mailboxes/alex.smith/spam/safelist/anyone@yahoo.com', {},'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'': &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Entered invalid email or domain&lt;br /&gt;
| 400&lt;br /&gt;
| invalid email address: abc&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Delete ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[DELETE] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
            /rs/mailboxes/(mailbox name)/spam/safelist/(email address)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Removes an email address or domain from the safelist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
delete '/customers/12345678/domains/example.com/rs/mailboxes/alex.smith/spam/safelist/anyone@yahoo.com', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'': &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Entered invalid email or domain&lt;br /&gt;
| 400&lt;br /&gt;
| invalid email address: abc&lt;br /&gt;
|-&lt;br /&gt;
| Entered email or domain is not on the current safelist&lt;br /&gt;
| 400&lt;br /&gt;
| anyone@yahoo.com is not found on the safelist&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== IP Safelist ==&lt;br /&gt;
&lt;br /&gt;
=== Index ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /rs/mailboxes/(mailbox name)/spam/ipsafelist&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
This operation returns IP safelist associated with the mailbox. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The Index operation only supports the GET HTTP verb. For .xml format refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/IpSafelist.xsd IpSafelist.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/example.com/rs/mailboxes/alex.smith/spam/ipsafelist', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;ipSafelist xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:ipSafelist&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;addresses&amp;gt;&lt;br /&gt;
    &amp;lt;ip&amp;gt;192.168.0.1&amp;lt;/ip&amp;gt;&lt;br /&gt;
    &amp;lt;ip&amp;gt;192.168.0.2&amp;lt;/ip&amp;gt;&lt;br /&gt;
  &amp;lt;/addresses&amp;gt;&lt;br /&gt;
&amp;lt;/ipSafelist&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;addresses&amp;quot;:[&amp;quot;192.168.0.1&amp;quot;,&amp;quot;192.168.0.2&amp;quot;]}&lt;br /&gt;
&lt;br /&gt;
=== Add ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[POST] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /rs/mailboxes/(mailbox name)/spam/ipsafelist/(ip address)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Adds an IP to the ipsafelist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post '/customers/12345678/domains/example.com/rs/mailboxes/alex.smith/spam/ipsafelist/216.12.34.1', {},'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'': &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Entered invalid IP address&lt;br /&gt;
| 400&lt;br /&gt;
| invalid ip address: 123&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Delete ===&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[DELETE] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
            /rs/mailboxes/(mailbox name)/spam/ipsafelist/(email address)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Removes an IP from the safelist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
delete '/customers/12345678/domains/example.com/rs/mailboxes/alex.smith/spam/ipsafelist/216.12.34.1', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Errors'': &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Entered IP is not on the current safelist&lt;br /&gt;
| 400&lt;br /&gt;
| 216.12.34.1 is not found on the safelist&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Zhen.wei</name></author>	</entry>

	<entry>
		<id>http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Rest_API&amp;diff=400</id>
		<title>Rest API</title>
		<link rel="alternate" type="text/html" href="http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Rest_API&amp;diff=400"/>
				<updated>2010-06-21T02:19:45Z</updated>
		
		<summary type="html">&lt;p&gt;Zhen.wei: 06.20.2010 update&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Recent Changes ==&lt;br /&gt;
&lt;br /&gt;
'''06/20/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Added [[Rackspace_Alias(Rest_API)| Rackspace Email Alias]].&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''06/11/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Added Rackspace Email Mailbox Spam Settings/Blacklist/Safelist. See [[Rackspace_Mailbox_Spam_(Rest_API)| here]].&lt;br /&gt;
* Now Rackspace Email Mailbox can Show/Edit vacation message and email forwarding address. See [[Rackspace_Mailbox_(Rest_API)| here]].&lt;br /&gt;
* Added SharePoint Service Settings. See [[SharePoint_(Rest_API)| here]].&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''05/16/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Added shortened URLs. Any URLs that starts with '/customers/me/domains/~' is equivalent to '/domains/~'.&lt;br /&gt;
* Added Rackspace Email Mailbox Add/Edit/Delete/Index. See [[Rackspace_Mailbox_(Rest_API)| here]].&lt;br /&gt;
* Allows to customize Exchange mailbox list result. See [[Exchange_Mailbox_(Rest_API)#Index| Exchange Mailbox Index]] action 'Custom Fields' section.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
Changes:&lt;br /&gt;
* Server throttling section has been updated. See [[Rest_API#Throttling| here]].&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
Bug fix:&lt;br /&gt;
* Fixed a bug that request without User-Agent Header gets 500 error. Now it gets &amp;quot;Authentication failed&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''03/28/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Rest API can be accessed by Business Users. However, not all operations are available.&lt;br /&gt;
* Domain Public Folders can be enabled now.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
Deprecated:&lt;br /&gt;
* Good Mobile Service is no longer supported.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''03/14/10 '''&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
New features:&lt;br /&gt;
* Index/Add/Edit/Delete Mailbox Permissions.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
Known Issues:&lt;br /&gt;
* Domain public folders can't be enabled using Rest API at this moment. The next release (on 03/21/2010) will fix this problem.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The Email &amp;amp; Apps Control Panel API provides most of the functions of the Control Panel through a REST-based [http://en.wikipedia.org/wiki/Web_service web API]. Whether it is adding a new customer account, adding mailboxes, or any other of the supported features the API allows your application to administer the changes regardless of your application's language or nature. For more information on RESTful web services refer to the following sites:&lt;br /&gt;
&lt;br /&gt;
[http://www.peej.co.uk/articles/restfully-delicious.html Paul James's Homepage: A RESTful Web service, an example]&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Representational_State_Transfer#External_links Wikipedia: Representational State Transfer - External Links]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The API is accessible to all with access to Control Panel, including resellers, business customers, enterprise customers, and indirect customers. However, not all operations are available to non-resellers. See the [[Rest_API#Operations|Operations]] section for more details.&lt;br /&gt;
&lt;br /&gt;
== Operations ==&lt;br /&gt;
&lt;br /&gt;
The following pages detail the operations that the API supports. The operations are grouped into sections based on the entity/object types that each operation interacts with. Non-resellers do not have access to all functions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Resource&lt;br /&gt;
!Example URI&lt;br /&gt;
!Business User Access&lt;br /&gt;
|-&lt;br /&gt;
| [[Customer_(Rest_API)| Customer]]&lt;br /&gt;
| /customers/123456789&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| [[Domain_(Rest_API)| Domain]]&lt;br /&gt;
| /customers/123456789/domains/example.com&lt;br /&gt;
| [[Domain_(Rest_API)#Index| Index]], [[Domain_(Rest_API)#Show| Show]], [[Domain_(Rest_API)#Split Domain Routing| Split Domain Routing]], [[Domain_(Rest_API)#Archiving SSO Login URL| Archiving SSO Login URL]], [[Domain_(Rest_API)#Domain Public Folders|Domain Public Folders ]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Domain_Spam_(Rest_API)| Domain Spam Settings]]&lt;br /&gt;
| /customers/123456789/domains/example.com/spam/settings&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Rackspace_Mailbox_(Rest_API)|  Rackspace Email Mailbox]]&lt;br /&gt;
|  /customers/123456789/domains/example.com/rs/mailboxes/john.smith&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Rackspace_Mailbox_Spam_(Rest_API)| Rackspace Email Mailbox Spam Settings]]&lt;br /&gt;
|  /customers/123456789/domains/example.com/rs/mailboxes/john.smith/spam&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Rackspace_Alias(Rest_API)|  Rackspace Email Alias]]&lt;br /&gt;
|  /customers/123456789/domains/example.com/rs/mailboxes/john.smith/alias&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Mailbox_(Rest_API)| Exchange Mailbox]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/mailboxes/john.smith&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Mailbox_Spam_(Rest_API)| Exchange Mailbox Spam Settings]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/mailboxes/john.smith/spam&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Contact_(Rest_API)| Exchange Contact]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/contacts/john.smith&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Distribution_List_(Rest_API)| Exchange Distribution List]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/distributionlists/group.name&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[Exchange_Resource_Mailbox_(Rest_API)| Exchange Resource Mailbox]]&lt;br /&gt;
| /customers/123456789/domains/example.com/ex/resources/conference.room&lt;br /&gt;
| All&lt;br /&gt;
|-&lt;br /&gt;
| [[SharePoint_(Rest_API)| SharePoint]]&lt;br /&gt;
| /customers/123456789/sharepoint/settings&lt;br /&gt;
| [[SharePoint_(Rest_API)#Show | Show]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The examples shown in the operation pages are written in Ruby and extensively use the helper functions shown in the Ruby Examples below.&lt;br /&gt;
&lt;br /&gt;
== Quick Start ==&lt;br /&gt;
&lt;br /&gt;
'''What you need:'''&lt;br /&gt;
* A Rackspace Email and Apps Control Panel admin account&lt;br /&gt;
* A HTTP class library that supports TLS and the HTTP methods: GET, POST, PUT, DELETE.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Making your first API call, an Show Customer request:'''&lt;br /&gt;
# Obtain your API keys&lt;br /&gt;
#:* Click on My Account at the top of the [https://apps.rackspace.com/?cp Control Panel web interface]. Under the Administrators heading there will be an link for the API keys page.&lt;br /&gt;
# Set up your client's HTTP request&lt;br /&gt;
#:* Set up your client to make calls to a URL beginning with &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/v0&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
#:* Populate the Accept, User-Agent and X-Api-Signature HTTP request headers correctly. This is explained in detail [[#HTTP Headers|here]].&lt;br /&gt;
# Make a GET request to /customers/me.&lt;br /&gt;
#:* The complete URI will be &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/v0/customers/me&amp;lt;/nowiki&amp;gt;. Use your HTTP library to retrieve the HTTP response code, 'x-error-message' HTTP response header and HTTP response body so that they may be displayed to help debug and determine success.&lt;br /&gt;
'''From here:'''&lt;br /&gt;
* Learn about the operations you'll be implementing at the subpages [[#Operations|here]].&lt;br /&gt;
&lt;br /&gt;
== Accessing the API ==&lt;br /&gt;
&lt;br /&gt;
Your application will need to make HTTP requests to remote servers. Most programming languages have this function provided in its class library. In addition to the common GET and POST HTTP methods, the library used will also need to support PUT and DELETE.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&lt;br /&gt;
Calls without [http://en.wikipedia.org/wiki/Transport_Layer_Security TLS] (formerly SSL) will complete successfully but it is HIGHLY RECOMMENDED that TLS always be used. Interception of unencrypted communication will allow a third party to have complete access to all functions available via the API.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For some language libraries just using an URL with https:// will cause the library to use TLS. In some other libraries however some options specific to the library may have to be configured to utilize TLS. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All API calls should be directed to a URL in the following format:&lt;br /&gt;
&amp;lt;pre&amp;gt;https://api.emailsrvr.com/(version)/(resource)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;https://api.emailsrvr.com/v0/customers/12345678/domains/customerbusiness.com&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Versions ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Supported Versions''&lt;br /&gt;
!''URL''&lt;br /&gt;
!''Version Documentation''&lt;br /&gt;
|-&lt;br /&gt;
| v0 (current)&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;https://api.emailsrvr.com/v0/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
| http://signup.apps.rackspace.com/api-wiki/index.php/Rest_API&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The API version number is a component of the URL that is used to access the API. For example, to access the root of the API, the URL is https://api.emailsrvr.com/v0/. Bug fixes and minor non-breaking changes will be made without changing the version number. When major features or breaking changes are introduced, the version number will be incremented. It is not yet determined how many versions are going to be supported at any one time.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Non-breaking Changes''&lt;br /&gt;
!''Breaking Changes''&lt;br /&gt;
|-&lt;br /&gt;
| Adding new fields or attributes to form fields sent&lt;br /&gt;
| Changing or deleting any fields in form fields sent&lt;br /&gt;
|-&lt;br /&gt;
| Adding fields in returned data&lt;br /&gt;
| Changing or removing fields in returned data&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| Changing the URI of any resource&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Authentication ===&lt;br /&gt;
&lt;br /&gt;
To gain access to the API, your request must include a properly constructed X-Api-Signature HTTP header. Details on what to put in the header are below. To construct the header, you must have the following keys that that are generated from the [https://apps.rackspace.com/?cp Control Panel Web interface]. The key generation page can be found by clicking 'My Account' at the top, then 'Generate API Keys' in the Administrators section.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Key Name&lt;br /&gt;
!Description&lt;br /&gt;
!Example&lt;br /&gt;
|-&lt;br /&gt;
| User Key&lt;br /&gt;
| A public key that corresponds to your admin id&lt;br /&gt;
| ''eGbq9/2hcZsRlr1JV1Pi''&lt;br /&gt;
|-&lt;br /&gt;
| Secret Key&lt;br /&gt;
| A shared secret key&lt;br /&gt;
| ''QHOvchm/40czXhJ1OxfxK7jDHr3t''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An unsuccessful authentication will result in a 403 HTTP code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== X-Api-Signature Header ====&lt;br /&gt;
&lt;br /&gt;
Format is as follows:&lt;br /&gt;
&amp;lt;'''User Key'''&amp;gt;:&amp;lt;'''Timestamp'''&amp;gt;:&amp;lt;'''SHA1 Hash'''&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Example: ''eGbq9/2hcZsRlr1JV1Pi:20010317143725:46VIwd66mOFGG8IkbgnLlXnfnkU=''&lt;br /&gt;
&lt;br /&gt;
Remember to include the colons between the data strings!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''User Key''':&amp;lt;br&amp;gt;&lt;br /&gt;
This is the public key issued by the Control Panel browser interface.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Timestamp''':&amp;lt;br&amp;gt;&lt;br /&gt;
The format is YYYYMMDDHHmmss. All values besides year are zero-padded to two spaces. For example, March 08th 2001 at 2:37.25pm would be ''20010308143725''.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|YYYY&lt;br /&gt;
|Four-digit year&lt;br /&gt;
|-&lt;br /&gt;
| MM&lt;br /&gt;
| Month&lt;br /&gt;
|-&lt;br /&gt;
| DD&lt;br /&gt;
| Day&lt;br /&gt;
|-&lt;br /&gt;
| HH&lt;br /&gt;
| Hour in 24h format&lt;br /&gt;
|-&lt;br /&gt;
| mm&lt;br /&gt;
| Minute&lt;br /&gt;
|-&lt;br /&gt;
| ss&lt;br /&gt;
| Second&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''SHA1 Hash''':&lt;br /&gt;
&lt;br /&gt;
A SHA1 (Secure Hash Algorithm) hash must be applied to a string with the following information:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;'''User Key'''&amp;gt;&amp;lt;'''User Agent'''&amp;gt;&amp;lt;'''Timestamp'''&amp;gt;&amp;lt;'''Secret Key'''&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that the 'User Agent' must be the exact same as what is specified in the User-Agent HTTP header. Using the above example data, the string before hashing is:&amp;lt;br&amp;gt;''eGbq9/2hcZsRlr1JV1PiRackspace Management Interface20010308143725QHOvchm/40czXhJ1OxfxK7jDHr3t''&lt;br /&gt;
&lt;br /&gt;
Resulting base-64 SHA1 Hash:&amp;lt;br&amp;gt;''46VIwd66mOFGG8IkbgnLlXnfnkU=''&lt;br /&gt;
&lt;br /&gt;
Be sure to encode the binary hash, not the hex hash, into base-64. The resulting string should be 28 characters long.&lt;br /&gt;
&lt;br /&gt;
== Using the API ==&lt;br /&gt;
&lt;br /&gt;
=== Requests ===&lt;br /&gt;
&lt;br /&gt;
HTTP requests should be sent to the server with the correct URL, HTTP method, HTTP headers and form data (if needed). The URL specifies the resource, the HTTP method specifies what operation is done on the resource, and form data is used to specify the details of the resource when the resource is added or edited.&lt;br /&gt;
&lt;br /&gt;
The URLs, corresponding HTTP methods, and necessary form data for the desired operations are detailed in the [[#Operations|operation pages]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you're getting the HTTP status code 417 see [[Handling HTTP code 417:  Expectation failed]]&lt;br /&gt;
&lt;br /&gt;
==== URL ====&lt;br /&gt;
&lt;br /&gt;
The URLs are specifies the resource or resource collection. Objects are organized in a tree collection, starting with customers at the top, then domains, then domain objects next (such as mailboxes, contacts, and distribution lists) and so on. The URLs of the resources and collections accessible are found on the operation pages.&lt;br /&gt;
&lt;br /&gt;
==== HTTP Method ====&lt;br /&gt;
&lt;br /&gt;
It is the HTTP method that specifies what operation will be done on the resource. For example, to get the details of a mailbox a HTTP GET will be done on /customers/12345678/domains/example.com/ex/mailboxes/john.smith. If the mailbox does not exist, a HTTP POST to the same URL with the necessary form data will add the mailbox. Then, a HTTP PUT to the same URL will edit mailbox. And to delete the mailbox, an HTTP DELETE would be used.&lt;br /&gt;
&lt;br /&gt;
The types of operations a certain method performs is outlined below.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''HTTP Method''&lt;br /&gt;
!''Operations''&lt;br /&gt;
!''Response''&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=2|GET&lt;br /&gt;
|Index - returns a list of the resources&lt;br /&gt;
|rowspan=2|XML or JSON formatted data&lt;br /&gt;
|-&lt;br /&gt;
|Show - returns the details of the resource&lt;br /&gt;
|-&lt;br /&gt;
|POST&lt;br /&gt;
|Add - adds a new resource&lt;br /&gt;
|rowspan=3|Response code and error message (if applicable) only&lt;br /&gt;
|-&lt;br /&gt;
|PUT&lt;br /&gt;
|Edit - changes the details of the resource&lt;br /&gt;
|-&lt;br /&gt;
|DELETE&lt;br /&gt;
|Delete - deletes the resource&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== HTTP Headers ====&lt;br /&gt;
&lt;br /&gt;
All requests to the API must then include HTTP headers with the following information:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Header Name''&lt;br /&gt;
!''Description''&lt;br /&gt;
!''Example Header Value''&lt;br /&gt;
|-&lt;br /&gt;
| Accept&lt;br /&gt;
| The requested content type (required for Index and Show actions). Fill this with either 'text/xml' or 'application/json'. See [[#Formats|Response Formats]]&lt;br /&gt;
| ''text/xml''&lt;br /&gt;
|-&lt;br /&gt;
| User-Agent&lt;br /&gt;
| An identifier you choose for your client software&lt;br /&gt;
| ''Rackspace Management Interface''&lt;br /&gt;
|-&lt;br /&gt;
| X-Api-Signature&lt;br /&gt;
| An authentication string explained in detail [[#X-Api-Signature_Header|here]]&lt;br /&gt;
| ''eGbq9/2hcZsRlr1JV1Pi:20010317143725:HKUn0aajpSDx7qqGK3vqzn3FglI=''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Form Data ====&lt;br /&gt;
&lt;br /&gt;
When using Add and Edit operations, the details of the resource are sent to the API server via HTTP form data. Your HTTP library should include methods for sending form data along with an HTTP request. The library should by default send the data in the HTTP request body using the 'application/x-www-form-urlencoded' data format.&lt;br /&gt;
&lt;br /&gt;
==== Index Filter/Search ====&lt;br /&gt;
&lt;br /&gt;
The results of Index actions can be filtered/searched. The index URLs can take either one of the query strings: &amp;quot;?startswith=xx&amp;quot; or &amp;quot;?contains=xx,&amp;quot; where &amp;quot;xx&amp;quot; is the key word. If the request specifies more than one of these two query strings, a 400 HTTP error will be returned. Different fields will be searched depending on the resource type, see below.&lt;br /&gt;
&lt;br /&gt;
Note that &amp;quot;0-9&amp;quot; is a reserved key word for query string &amp;quot;startswith.&amp;quot; It represents any result starting with numbers.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Index Actions''&lt;br /&gt;
!''Where the key word will be searched''&lt;br /&gt;
|-&lt;br /&gt;
| Customer&lt;br /&gt;
| Customer name, account number, reference number&lt;br /&gt;
|-&lt;br /&gt;
| Domain&lt;br /&gt;
| Domain name&lt;br /&gt;
|-&lt;br /&gt;
| Mailbox&lt;br /&gt;
| Mailbox name, mailbox display name&lt;br /&gt;
|-&lt;br /&gt;
| Contact&lt;br /&gt;
| Contact display name, external email&lt;br /&gt;
|-&lt;br /&gt;
| Group&lt;br /&gt;
| Group name, group display name&lt;br /&gt;
|-&lt;br /&gt;
| Mobile Service&lt;br /&gt;
| Associated mailbox name, mailbox display name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Throttling ====&lt;br /&gt;
&lt;br /&gt;
The server limits the number of requests allowed per user in a certain period of time.  The number of requests made are logged per minute. Calls that were made correctly with a user's API key, but not completed for any reason, including those exceeding the throttle limit, are included in this count.&lt;br /&gt;
&lt;br /&gt;
If a user is over the throttling limit then a 403 HTTP code will be returned with an &amp;quot;Exceeded request limits&amp;quot; message.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Operation Category''&lt;br /&gt;
!''Request Limit''&lt;br /&gt;
|-&lt;br /&gt;
| GET&lt;br /&gt;
| 60 per minute&lt;br /&gt;
|-&lt;br /&gt;
| PUT, POST, DELETE&lt;br /&gt;
| 30 per minute&lt;br /&gt;
|-&lt;br /&gt;
| POST, PUT, DELETE on a domain&lt;br /&gt;
| 2 per minute&lt;br /&gt;
|-&lt;br /&gt;
| POST, DELETE on alternate domains&lt;br /&gt;
| 2 per minute&lt;br /&gt;
|-&lt;br /&gt;
| Enabling public folders for a domain&lt;br /&gt;
| 1 per 5 minutes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&lt;br /&gt;
Index of Exchange Mailboxes:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hypertext Transfer Protocol&lt;br /&gt;
    GET /v0/customers/12345678/domains/example.com/ex/mailboxes?size=100&amp;amp;offset=100 HTTP/1.1&lt;br /&gt;
    Host: api.emailsrvr.com&lt;br /&gt;
    User-Agent: Rackspace Management Interface&lt;br /&gt;
    X-Api-Signature: eGbq9/2hcZsRlr1JV1Pi:20010317143725:HKUn0aajpSDx7qqGK3vqzn3FglI=&lt;br /&gt;
    Accept: text/xml&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Adding New Exchange Mailbox:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hypertext Transfer Protocol&lt;br /&gt;
    POST /v0/customers/12345678/domains/example.com/ex/mailboxes/john.smith HTTP/1.1&lt;br /&gt;
    Host: api.emailsrvr.com&lt;br /&gt;
    User-Agent: Rackspace Management Interface&lt;br /&gt;
    X-Api-Signature: eGbq9/2hcZsRlr1JV1Pi:20010317143725:HKUn0aajpSDx7qqGK3vqzn3FglI=&lt;br /&gt;
    Content-Length: 53&lt;br /&gt;
        [Content length: 53]&lt;br /&gt;
    Content-Type: application/x-www-form-urlencoded&lt;br /&gt;
 &lt;br /&gt;
Line-based text data: application/x-www-form-urlencoded&lt;br /&gt;
    size=2048&amp;amp;displayName=John%20Smith&amp;amp;password=abcABC123&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Responses ===&lt;br /&gt;
&lt;br /&gt;
==== HTTP Status Code ====&lt;br /&gt;
&lt;br /&gt;
On a successfully executed request, a 200 HTTP Code is returned. If the request was unsuccessful however, an HTTP error code in the 400s or 500s will be returned.&lt;br /&gt;
&lt;br /&gt;
==== HTTP Response Body ====&lt;br /&gt;
&lt;br /&gt;
If the request is an Index or Show request, the request data will be returned in the format specified in the HTTP Body.&lt;br /&gt;
&lt;br /&gt;
===== Formats =====&lt;br /&gt;
&lt;br /&gt;
Requests for data (index and show requests) are returned with XML or JSON data based on what your application populates the [[#HTTP_Headers|HTTP Accept headers]] with.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For XML, populate the header with 'text/xml' (ex: Headers![&amp;quot;Accept&amp;quot;] = &amp;quot;text/xml&amp;quot;). The XML document returned will conform to a published XSD (XML Schema Document). There are many ways to parse the data in an XML document, but we have found that the [http://www.w3schools.com/XPath/default.asp XPath] tree-style traversal has served our purposes. In any case, your application will likely need to use a class library for your chosen method.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For JSON, populate the header with 'application/json' (ex: Headers![&amp;quot;Accept&amp;quot;] = &amp;quot;application/json&amp;quot;). As with XML, a library will likely be needed to parse the data.&lt;br /&gt;
&lt;br /&gt;
==== HTTP Headers ====&lt;br /&gt;
&lt;br /&gt;
The only data returned in the header is the error message (if any).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Header Name''&lt;br /&gt;
!''Description''&lt;br /&gt;
!''Example Header Value''&lt;br /&gt;
|-&lt;br /&gt;
| x-error-message&lt;br /&gt;
| The error message. See [[#Errors|Errors]].&lt;br /&gt;
| Missing required field: name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Errors ====&lt;br /&gt;
&lt;br /&gt;
In the event of an error, the error message will be returned the HTTP header '''x-error-message''' and an HTTP Status Code in the '''400'''s or '''500'''s will be returned.&lt;br /&gt;
&lt;br /&gt;
Note: Every language's HTTP library provides methods for retrieving HTTP response codes and response headers.&lt;br /&gt;
&lt;br /&gt;
Below are some errors that are common to many operations. Each operation also has some specific errors which are outlined with the operation. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
|Format is invalid&lt;br /&gt;
|400&lt;br /&gt;
|When requesting an index or show on a resource the 'Accept' header should be either 'text/xml' or 'application/json'&lt;br /&gt;
|-&lt;br /&gt;
|Expectation  Failed: See [[Handling HTTP code 417: Expectation failed]]&lt;br /&gt;
|417&lt;br /&gt;
|(none)&lt;br /&gt;
|-&lt;br /&gt;
|Customer account number is invalid&lt;br /&gt;
|404&lt;br /&gt;
|Invalid account number&lt;br /&gt;
|-&lt;br /&gt;
|Domain is not found&lt;br /&gt;
|404&lt;br /&gt;
|&amp;lt;domain name&amp;gt; not found&lt;br /&gt;
|-&lt;br /&gt;
|Mailbox is not found&lt;br /&gt;
|404&lt;br /&gt;
|Mailbox not found&lt;br /&gt;
|-&lt;br /&gt;
|Required form field is missing&lt;br /&gt;
|400&lt;br /&gt;
|Missing required field: &amp;lt;required field&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Required form field has null or empty string input&lt;br /&gt;
|400&lt;br /&gt;
|Required field &amp;lt;required field&amp;gt; cannot be empty&lt;br /&gt;
|-&lt;br /&gt;
|Integer form field has non-integer input&lt;br /&gt;
|400&lt;br /&gt;
|Invalid format for &amp;lt;field&amp;gt;, input must be an integer&lt;br /&gt;
|-&lt;br /&gt;
|Boolean form field has non-boolean input&lt;br /&gt;
|400&lt;br /&gt;
|Invalid format for &amp;lt;field&amp;gt;, input must be True or False&lt;br /&gt;
|-&lt;br /&gt;
|Form data has an unrecognized field&lt;br /&gt;
|400&lt;br /&gt;
|Unrecognized field: &amp;lt;field&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Entered invalid IP address&lt;br /&gt;
| 400&lt;br /&gt;
| invalid ip address: 123&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Paging ====&lt;br /&gt;
&lt;br /&gt;
The results of Index actions are split into pages to lessen potentially high resource usage. The index URLs have a query string with parameters in the format &amp;quot;?size=xx&amp;amp;offset=xx.&amp;quot; If a query parameter is omitted, the default value is used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Query Parameter''&lt;br /&gt;
!''Default''&lt;br /&gt;
!''Maximum''&lt;br /&gt;
!''Notes''&lt;br /&gt;
|-&lt;br /&gt;
| size&lt;br /&gt;
| 50&lt;br /&gt;
| 250&lt;br /&gt;
| This is the number of elements per page.&lt;br /&gt;
|-&lt;br /&gt;
| offset&lt;br /&gt;
| 0&lt;br /&gt;
| N/A&lt;br /&gt;
| This is the number of items to offset away from the first item in the list.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Example =====&lt;br /&gt;
&lt;br /&gt;
A PHP Example of paging can be found [[PHP_Examples_(Rest_API)| here]].&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 200 OK&lt;br /&gt;
Cache-Control: private&lt;br /&gt;
Content-Type: text/xml; charset=utf-8&lt;br /&gt;
Server: Microsoft-IIS/7.0&lt;br /&gt;
Date: Fri, 04 Dec 2009 19:08:11 GMT&lt;br /&gt;
Content-Length: 430&lt;br /&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;domainList xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:domainList&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;offset&amp;gt;0&amp;lt;/offset&amp;gt;&lt;br /&gt;
  &amp;lt;size&amp;gt;50&amp;lt;/size&amp;gt;&lt;br /&gt;
  &amp;lt;total&amp;gt;1&amp;lt;/total&amp;gt;&lt;br /&gt;
  &amp;lt;domains&amp;gt;&lt;br /&gt;
    &amp;lt;domain&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;customer.com&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;accountNumber&amp;gt;123456&amp;lt;/accountNumber&amp;gt;&lt;br /&gt;
      &amp;lt;serviceType&amp;gt;rsemail&amp;lt;/serviceType&amp;gt;&lt;br /&gt;
    &amp;lt;/domain&amp;gt;&lt;br /&gt;
  &amp;lt;/domains&amp;gt;&lt;br /&gt;
&amp;lt;/domainList&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 404 Not Found&lt;br /&gt;
Cache-Control: private&lt;br /&gt;
Server: Microsoft-IIS/7.0&lt;br /&gt;
x-error-message: Customer Not Found&lt;br /&gt;
Date: Fri, 04 Dec 2009 19:13:59 GMT&lt;br /&gt;
Content-Length: 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 400 Bad Request&lt;br /&gt;
Cache-Control: private&lt;br /&gt;
Server: Microsoft-IIS/7.0&lt;br /&gt;
x-error-message: Missing required field: type&lt;br /&gt;
Date: Fri, 04 Dec 2009 19:17:29 GMT&lt;br /&gt;
Content-Length: 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
This examples is written in [http://www.ruby-lang.org/en/ Ruby]. To make the examples shorter, helper methods have been written. These methods are part of a NetMethods module. The contents of the NetMethods module is listed below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require  'server.rb'&lt;br /&gt;
&lt;br /&gt;
server = Server.new&lt;br /&gt;
&lt;br /&gt;
response = server.get  '/customers', server.xml_format&lt;br /&gt;
&lt;br /&gt;
#fields = Hash['serviceType' =&amp;gt;  'exchange', 'exchangeMaxNumMailboxes' =&amp;gt; '4']&lt;br /&gt;
#response =  server.post '/customers/me/domains/newdomain.com', fields&lt;br /&gt;
&lt;br /&gt;
puts response.code&lt;br /&gt;
puts response['x-error-message']&lt;br /&gt;
puts response.body&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require 'test/unit/assertions'&lt;br /&gt;
require 'net/http'&lt;br /&gt;
require 'date'&lt;br /&gt;
require 'date/format'&lt;br /&gt;
require 'digest/sha1'&lt;br /&gt;
require 'base64'&lt;br /&gt;
require 'time'&lt;br /&gt;
&lt;br /&gt;
class Server&lt;br /&gt;
  include Test::Unit::Assertions&lt;br /&gt;
  &lt;br /&gt;
  def initialize(server='api.emailsrvr.com', version_prefix='/v0', user_key='xxxxxxxxxxxxxxxxxxxx', secret_hash='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')&lt;br /&gt;
    @server = server&lt;br /&gt;
    @version_prefix = version_prefix&lt;br /&gt;
    @user_key = user_key&lt;br /&gt;
    @secret_hash = secret_hash&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
# Response Type Enums&lt;br /&gt;
&lt;br /&gt;
  def xml_format&lt;br /&gt;
    'text/xml'&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def json_format&lt;br /&gt;
    'application/json'&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# HTTP Request Verbs&lt;br /&gt;
#  &lt;br /&gt;
  def get(url_string, format)&lt;br /&gt;
    uri = full_uri(url_string)&lt;br /&gt;
    headers = prepared_headers&lt;br /&gt;
    headers['Accept'] = format&lt;br /&gt;
    request = Net::HTTP::Get.new(request_uri(uri), headers)&lt;br /&gt;
    http_response = make_request request, uri&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def delete(url_string)&lt;br /&gt;
    uri = full_uri(url_string)&lt;br /&gt;
    request = Net::HTTP::Delete.new(request_uri(uri), prepared_headers)&lt;br /&gt;
    http_response = make_request request, uri&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def put(url_string, fields_hash)&lt;br /&gt;
    uri = full_uri(url_string)&lt;br /&gt;
    request = Net::HTTP::Put.new(request_uri(uri), prepared_headers)&lt;br /&gt;
    request.set_form_data(fields_hash)&lt;br /&gt;
    http_response = make_request request, uri&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def post(url_string, fields_hash)&lt;br /&gt;
    uri = full_uri(url_string)&lt;br /&gt;
    request = Net::HTTP::Post.new(request_uri(uri), prepared_headers)&lt;br /&gt;
    request.set_form_data(fields_hash)&lt;br /&gt;
    http_response = make_request request, uri&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
#&lt;br /&gt;
# HTTP Request Helpers&lt;br /&gt;
# &lt;br /&gt;
  def make_request request, uri&lt;br /&gt;
    response = Net::HTTP::start(uri.host, uri.port)  do |http|&lt;br /&gt;
      http.request request&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    response&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def full_uri url_string&lt;br /&gt;
    URI.parse('http://' + @server + @version_prefix + url_string)&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def request_uri uri&lt;br /&gt;
    request = uri.path&lt;br /&gt;
    if ! uri.query.nil?&lt;br /&gt;
      request = request + '?' + uri.query&lt;br /&gt;
    end&lt;br /&gt;
    request&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def prepared_headers&lt;br /&gt;
    headers = Hash.new&lt;br /&gt;
    headers.merge! headers_auth_creds(@user_key, @secret_hash)&lt;br /&gt;
    headers['Accept'] = xml_format&lt;br /&gt;
    headers&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def headers_auth_creds apiKey, secretKey&lt;br /&gt;
    userAgent = 'Ruby Test Client'&lt;br /&gt;
    timestamp = DateTime.now.strftime('%Y%m%d%H%M%S')&lt;br /&gt;
    &lt;br /&gt;
    data_to_sign = apiKey + userAgent + timestamp + secretKey&lt;br /&gt;
    &lt;br /&gt;
    hash = Base64.encode64(Digest::SHA1.digest(data_to_sign))&lt;br /&gt;
    signature = apiKey + &amp;quot;:&amp;quot; + timestamp + &amp;quot;:&amp;quot; + hash&lt;br /&gt;
    &lt;br /&gt;
    headers = Hash['User-Agent' =&amp;gt; userAgent, 'X-Api-Signature' =&amp;gt; signature]&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== C# ===&lt;br /&gt;
&lt;br /&gt;
This examples is written in [http://msdn.microsoft.com/en-us/vcsharp/default.aspx C#].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Specialized;&lt;br /&gt;
using System.Security.Cryptography;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Net;&lt;br /&gt;
&lt;br /&gt;
public class WebMethods&lt;br /&gt;
{&lt;br /&gt;
  private WebClientBase client;&lt;br /&gt;
  private string baseUrl;&lt;br /&gt;
  private string apiKey;&lt;br /&gt;
  private string secretKey;&lt;br /&gt;
&lt;br /&gt;
  public WebMethods(WebClientBase client, string baseUrl, string apiKey, string secretKey)&lt;br /&gt;
  {&lt;br /&gt;
    this.client = client;&lt;br /&gt;
    this.baseUrl = baseUrl;&lt;br /&gt;
    this.apiKey = apiKey;&lt;br /&gt;
    this.secretKey = secretKey;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  public virtual string Get(string url)&lt;br /&gt;
  {&lt;br /&gt;
    return MakeRemoteCall((client) =&amp;gt;&lt;br /&gt;
      {&lt;br /&gt;
        return client.DownloadString(baseUrl + url);&lt;br /&gt;
      },&lt;br /&gt;
      format);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  public virtual string Post(string url, NameValueCollection data)&lt;br /&gt;
  {&lt;br /&gt;
    return MakeRemoteCall((client) =&amp;gt;&lt;br /&gt;
      {&lt;br /&gt;
        var bytes = client.UploadValues(baseUrl + url, data);&lt;br /&gt;
        return Encoding.UTF8.GetString(bytes);&lt;br /&gt;
      },&lt;br /&gt;
      format);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  private void SignMessage()&lt;br /&gt;
  {&lt;br /&gt;
    var userAgent = &amp;quot;C# Client Library&amp;quot;;&lt;br /&gt;
    client.Headers[&amp;quot;User-Agent&amp;quot;] = userAgent;&lt;br /&gt;
&lt;br /&gt;
    var dateTime = DateTime.UtcNow.ToString(&amp;quot;yyyyMMddHHmmss&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    var dataToSign = apiKey + userAgent + dateTime + secretKey;&lt;br /&gt;
    var hash = SHA1.Create();&lt;br /&gt;
    var signedBytes = hash.ComputeHash(Encoding.UTF8.GetBytes(dataToSign));&lt;br /&gt;
    var signature = Convert.ToBase64String(signedBytes);&lt;br /&gt;
&lt;br /&gt;
    client.Headers[&amp;quot;X-Api-Signature&amp;quot;] = apiKey + &amp;quot;:&amp;quot; + dateTime + &amp;quot;:&amp;quot; + signature;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  private void AssignFormat(string format)&lt;br /&gt;
  {&lt;br /&gt;
    client.Headers[&amp;quot;Accept&amp;quot;] = format;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  private string MakeRemoteCall(Func&amp;lt;WebClientBase, string&amp;gt; remoteCall, string format)&lt;br /&gt;
  {&lt;br /&gt;
    try&lt;br /&gt;
    {&lt;br /&gt;
      SignMessage();&lt;br /&gt;
      AssignFormat(format);&lt;br /&gt;
      return remoteCall.Invoke(client);&lt;br /&gt;
    }&lt;br /&gt;
    catch (WebException e)&lt;br /&gt;
    {&lt;br /&gt;
      throw new ApiException(e);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PHP ===&lt;br /&gt;
&lt;br /&gt;
The PHP Example can be found [[PHP_Examples_(Rest_API)| here]].&lt;/div&gt;</summary>
		<author><name>Zhen.wei</name></author>	</entry>

	<entry>
		<id>http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=BusinessDomain&amp;diff=399</id>
		<title>BusinessDomain</title>
		<link rel="alternate" type="text/html" href="http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=BusinessDomain&amp;diff=399"/>
				<updated>2010-06-21T02:18:13Z</updated>
		
		<summary type="html">&lt;p&gt;Zhen.wei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
[[ping()]]&amp;lt;br&amp;gt;&lt;br /&gt;
===Find out about a domain===&lt;br /&gt;
[[GetDomainStats()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainUsers()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainUsersString()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainUsersSpamStatusString()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainUsersSafeListStatusString()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[CheckUserExists()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[CheckAliasExists()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[CheckUserAvailable()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainAllUserLastLogin()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainAllUserStats()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainAllUserStatsAlpha()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainAllUserLastLoginActive()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainAllUserStatsActive()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainAllUsersForward()]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===General domain settings===&lt;br /&gt;
[[SetNobodyAlias()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[RemoveNobodyAlias()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[SetDomainNotify()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainNotify()]]&amp;lt;br&amp;gt;&lt;br /&gt;
===Bulk operations===&lt;br /&gt;
[[SendMailDomainUsersAll()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[AddUsersBulk()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[ModifyUsersBulk()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[DeleteUsersBulk()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[SetUsersActiveBulk()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetUserAliasesBulk()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[AddUserAliasesBulk()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[DeleteUserAliasesBulk()]]&amp;lt;br&amp;gt;&lt;br /&gt;
===Mailbox size===&lt;br /&gt;
[[GetMailAllotStorage()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainUsersMailboxMaxSize()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[SetDomainUsersMailboxMaxSize()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainAllUserCurrentSizeActive()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainAllUserCurrentSize()]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Spam functions===&lt;br /&gt;
[[AddDomainSpam()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[DeleteDomainSpam()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainSpam()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[SetDomainSpamCleaner()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainSpamCleaner()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[SetDomainSpamSafeList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainSpamSafeList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[SetDomainSpamBlackList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainSpamBlackList()]]&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zhen.wei</name></author>	</entry>

	<entry>
		<id>http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=BusinessAll&amp;diff=398</id>
		<title>BusinessAll</title>
		<link rel="alternate" type="text/html" href="http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=BusinessAll&amp;diff=398"/>
				<updated>2010-06-21T02:17:26Z</updated>
		
		<summary type="html">&lt;p&gt;Zhen.wei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[AddAlias()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[AddDomainSpam()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[AddDomainSpamBlackList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[AddDomainSpamIPBlackList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[AddDomainSpamIPSafeList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[AddDomainSpamSafeList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[AddUser()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[AddUserAliasesBulk()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[AddUserSpam()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[AddUserSpamBlackList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[AddUserSpamIPBlackList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[AddUserSpamIPSafeList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[AddUserSpamSafeList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[AddUserWithLdapAttributes()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[AddUserWithLdapAttributesString()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[AddUsersBulk()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[CheckAliasExists()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[CheckUserAvailable()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[CheckUserExists()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[DeleteAlias()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[DeleteDomainSpam()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[DeleteUser()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[DeleteUserAliasesBulk()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[DeleteUserSpam()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[DeleteUsersBulk()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetAlias()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainAllUserCurrentSize()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainAllUserCurrentSizeActive()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainAllUserLastLogin()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainAllUserLastLoginActive()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainAllUserStats()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainAllUserStatsActive()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainAllUserStatsAlpha()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainAllUsersForward()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainNotify()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainSpam()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainSpamBlackList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainSpamCleaner()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainSpamSafeList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainStats()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainUsers()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainUsersMailboxMaxSize()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainUsersSafeListStatusString()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainUsersSpamStatusString()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainUsersString()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetMailAllotStorage()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetUserActiveStatus()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetUserAliasesBulk()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetUserAliasesString()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetUserAttributes()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetUserLastLogin()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetUserMailForward()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetUserMailVacation()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetUserMailboxMaxSize()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetUserSpam()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetUserSpamBlackList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetUserSpamCleaner()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetUserSpamSafeList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetUsersWithFilterStr()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[ModifyAlias()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[ModifyUser()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[ModifyUserWithLdapAttributes()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[ModifyUserWithLdapAttributesString()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[ModifyUsersBulk()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[RemoveDomainSpamBlackList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[RemoveDomainSpamIPBlackList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[RemoveDomainSpamIPSafeList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[RemoveDomainSpamSafeList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[RemoveNobodyAlias()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[RemoveUserMailForward()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[RemoveUserSpamBlackList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[RemoveUserSpamIPBlackList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[RemoveUserSpamIPSafeList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[RemoveUserSpamSafeList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[SendMailDomainUsersAll()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[SetDomainNotify()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[SetDomainSpamBlackList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[SetDomainSpamCleaner()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[SetDomainSpamSafeList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[SetDomainUsersMailboxMaxSize()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[SetNobodyAlias()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[SetUserMailForward()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[SetUserMailVacation()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[SetUserMailboxMaxSize()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[SetUserSpamBlackList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[SetUserSpamCleaner()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[SetUserSpamSafeList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[SetUsersActiveBulk()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[ping()]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Deprecated ==&lt;br /&gt;
&lt;br /&gt;
[[GetDomainSpamGreylist()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainAllUserCurrentSizeAlpha()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainAllUserLastLoginAlpha()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetUserSpamGreylist()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[SetDomainSpamGreylist()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[SetUserSpamGreylist()]]&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zhen.wei</name></author>	</entry>

	<entry>
		<id>http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Domain_administration&amp;diff=397</id>
		<title>Domain administration</title>
		<link rel="alternate" type="text/html" href="http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Domain_administration&amp;diff=397"/>
				<updated>2010-06-21T02:16:54Z</updated>
		
		<summary type="html">&lt;p&gt;Zhen.wei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[AddDomain()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[DeleteDomain()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[ModifyDomain()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[ModifyDomainAliases()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[ModifyDomainMaxMailboxSize()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[ModifyDomainMaxNumUsers()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainSettings()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainStats()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainNumUsers()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainNumUsersActive()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetAllDomains()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetAllDomainsStats()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetAllDomainsSettings()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetAllDomainsUserCount()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[SetNobodyAlias()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[RemoveNobodyAlias()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainAllUserLastLogin()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainAllUserCurrentSize()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainAllUserStats()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainAllUserLastLoginActive()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainAllUserCurrentSizeActive()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainAllUserStatsActive()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainAllUserStatsActiveString()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainAllUsersForward()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[SetDomainNotify()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainNotify()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[SendMailDomainUsersAll()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetMailAllotStorage()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainUsersMailboxMaxSize()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[SetDomainUsersMailboxMaxSize()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[AddMailAllotStorage()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainAllUserStatsAlpha()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[SearchDomains()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Subaccount_GetDomains()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Subaccount_GetAdmins()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Subaccount_AddAdmin()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Subaccount_ChangeAdminPassword()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Subaccount_ChangeAdminType()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Subaccount_GetAdminType()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Subaccount_DeleteAdmin()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Subaccount_AddDomain()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Subaccount_MoveDomain()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Subaccount_DeleteDomain()]]&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zhen.wei</name></author>	</entry>

	<entry>
		<id>http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Rackspace_Alias(Rest_API)&amp;diff=396</id>
		<title>Rackspace Alias(Rest API)</title>
		<link rel="alternate" type="text/html" href="http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Rackspace_Alias(Rest_API)&amp;diff=396"/>
				<updated>2010-06-21T02:16:46Z</updated>
		
		<summary type="html">&lt;p&gt;Zhen.wei: add rsemail alias page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== Index ==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] http://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /rs/aliases/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Shows a list of aliases for the Rackspace domain.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The show operation only supports the GET HTTP verb. For .xml format refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/RSAliasList.xsd RSAliasList.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/12345678/domains/example.com/rs/aliases', 'text/xml'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;aliasList xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:aliasList&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;aliases&amp;gt;&lt;br /&gt;
    &amp;lt;alias&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;alias1&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;numberOfMembers&amp;gt;3&amp;lt;/numberOfMembers&amp;gt;&lt;br /&gt;
    &amp;lt;/alias&amp;gt;&lt;br /&gt;
  &amp;lt;/aliases&amp;gt;&lt;br /&gt;
&amp;lt;/aliasList&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&amp;quot;aliases&amp;quot;:[{&amp;quot;name&amp;quot;:&amp;quot;alias1&amp;quot;,&amp;quot;numberOfMembers&amp;quot;:3}]}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Add ==&lt;br /&gt;
&lt;br /&gt;
''URL'': &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[POST] http://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /rs/aliases/(alias name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Create an alias.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Field Name''&lt;br /&gt;
!''Description''&lt;br /&gt;
|-&lt;br /&gt;
| aliasEmails&lt;br /&gt;
| Comma separated list of domain and non-domain emails.&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post '/customers/100018/domains/resellerallservices.net/rs/aliases/alias1',&lt;br /&gt;
{'aliasEmails'=&amp;gt;'jane.doe@resellerallservices.net, joe.schmoe@resellerallservices.net,e1@yahoo.com, e2@gmail.com'&lt;br /&gt;
},&lt;br /&gt;
Formats.xml&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
Currently there is a limit of 50 on domain emails and 4 on non-domain emails.&lt;br /&gt;
&lt;br /&gt;
''Errors'': &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Non-existent domain email address.&lt;br /&gt;
| 400&lt;br /&gt;
| An alias must point to a valid email address. The following email addresses do not exist: a@resellerallservices.net&lt;br /&gt;
|-&lt;br /&gt;
| Empty domain email list and non-domain email list.&lt;br /&gt;
| 400&lt;br /&gt;
| An alias must point to a valid email address.&lt;br /&gt;
|-&lt;br /&gt;
| More than four non-domain email addresses specified. &lt;br /&gt;
| 400&lt;br /&gt;
| Max number of non-local email recipients reached.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Show ==&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /rs/mailboxes/(mailbox name)/alias/(alias name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
The show operation will return detailed information about the specified alias.&lt;br /&gt;
&lt;br /&gt;
''Remarks'':&lt;br /&gt;
&lt;br /&gt;
The show operation only supports the GET HTTP verb. For .xml format refer to the following schema document: [http://api.emailsrvr.com/v0/Schemas/RSAlias.xsd RSAlias.xsd]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get '/customers/100018/domains/resellerallservices.net/rs/aliases/alias1', Formats.xml&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''XML Result Example'':&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;alias xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;urn:xml:alias&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;name&amp;gt;alias1&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;emailAddressList&amp;gt;&lt;br /&gt;
      &amp;lt;emailAddress&amp;gt;jane.doe@resellerallservices.net&amp;lt;/emailAddress&amp;gt;&lt;br /&gt;
      &amp;lt;emailAddress&amp;gt;e3@yahoo.com&amp;lt;/emailAddress&amp;gt;&lt;br /&gt;
  &amp;lt;/emailAddressList&amp;gt;&lt;br /&gt;
&amp;lt;/alias&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Json Result Example'':&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;emailAddressList&amp;quot;:{&amp;quot;emailAddress&amp;quot;:[&amp;quot;jane.doe@resellerallservices.net&amp;quot;,&amp;quot;e3@yahoo.com&amp;quot;]},&amp;quot;name&amp;quot;:&amp;quot;alias3&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
''Errors'': &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Non-existent alias.&lt;br /&gt;
| 404&lt;br /&gt;
| Resource not found.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Delete ==&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[DELETE] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
            /rs/aliases/(alias name)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Deletes the alias.&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
delete '/customers/100018/domains/resellerallservices.net/rs/aliases/alias1', Formats.xml&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Errors'': &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Non-existent alias.&lt;br /&gt;
| 404&lt;br /&gt;
| Resource not found.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Add Email Address to Alias List ==&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Adding an email address to a alias.&lt;br /&gt;
[POST] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /rs/aliases/(alias name)/(email address)&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Adds an email address to the domain email list or to the non-domain email list. &lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
post '/customers/100018/domains/resellerallservices.net/rs/aliases/alias1/joe.schmoe@resellerallservices.net', {}, Formats.xml&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Errors'': &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Non-existent email address in the alias.&lt;br /&gt;
| 400&lt;br /&gt;
| An alias must point to a valid email address. The following email addresses do not exist: a@resellerallservices.net&lt;br /&gt;
|-&lt;br /&gt;
| More than four non-domain email addresses specified. &lt;br /&gt;
| 400&lt;br /&gt;
| Max number of non-local email recipients reached.&lt;br /&gt;
|-&lt;br /&gt;
| Non existent alias. &lt;br /&gt;
| 404&lt;br /&gt;
| Resource not found.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Delete Email Address From Alias List ==&lt;br /&gt;
&lt;br /&gt;
''URL'':&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Deleting an email address from an alias.&lt;br /&gt;
[DELETE] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)&lt;br /&gt;
        /rs/aliases/(alias name)/(email address)&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Description'':&lt;br /&gt;
&lt;br /&gt;
Deletes an email address from the domain email list or from the non-domain email list.&lt;br /&gt;
&lt;br /&gt;
''Example'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
delete '/customers/100018/domains/resellerallservices.net/rs/aliases/alias1/joe.schmoe@resellerallservices.net', {}, Formats.xml&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Errors'': &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!''Description''&lt;br /&gt;
!''HTTP Response Code''&lt;br /&gt;
!''Sample Message''&lt;br /&gt;
|-&lt;br /&gt;
| Non existent alias. &lt;br /&gt;
| 404&lt;br /&gt;
| Resource not found.&lt;br /&gt;
|-&lt;br /&gt;
| Non existent email address in the alias.&lt;br /&gt;
| 404&lt;br /&gt;
| Email address jane.doe@resellerallservices.net does not exist in alias alias1.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Zhen.wei</name></author>	</entry>

	<entry>
		<id>http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Companies&amp;diff=395</id>
		<title>Companies</title>
		<link rel="alternate" type="text/html" href="http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=Companies&amp;diff=395"/>
				<updated>2010-06-21T02:15:10Z</updated>
		
		<summary type="html">&lt;p&gt;Zhen.wei: /* Function List */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Resellers of Rackspace Email hosting services can add sub-accounts to their main reseller account.  Each sub-account usually represents a company that purchases email hosting from the reseller.  Sub-accounts may only be one level deep with respect to the reseller (no sub-accounts of sub-accounts).&lt;br /&gt;
&lt;br /&gt;
== Function List ==&lt;br /&gt;
[[GetSubaccounts()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[SearchSubaccounts()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[SearchDomains()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[AddSubaccount()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[DeleteSubaccount()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[ModifySubaccount()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Subaccount_GetDomains()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Subaccount_GetAdmins()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Subaccount_GetAdminType()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Subaccount_AddAdmin()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Subaccount_ChangeAdminPassword()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Subaccount_ChangeAdminType()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Subaccount_DeleteAdmin()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Subaccount_AddDomain()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Subaccount_MoveDomain()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetAllDomainsUserCount()]]&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zhen.wei</name></author>	</entry>

	<entry>
		<id>http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=AllReseller&amp;diff=394</id>
		<title>AllReseller</title>
		<link rel="alternate" type="text/html" href="http://api-wiki.apps.rackspace.com/api-wiki/index.php?title=AllReseller&amp;diff=394"/>
				<updated>2010-06-21T02:14:24Z</updated>
		
		<summary type="html">&lt;p&gt;Zhen.wei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[AddAlias()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[AddDomain()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[AddDomainSpam()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[AddDomainSpamBlackList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[AddDomainSpamIPBlackList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[AddDomainSpamIPSafeList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[AddDomainSpamSafeList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[AddMailAllotStorage()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[AddSubaccount()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[AddUser()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[AddUserAliasesBulk()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[AddUserSpam()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[AddUserSpamBlackList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[AddUserSpamIPBlackList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[AddUserSpamIPSafeList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[AddUserSpamSafeList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[AddUserWithLdapAttributes()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[AddUserWithLdapAttributesString()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[AddUsersBulk()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[CheckAliasExists()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[CheckUserAvailable()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[CheckUserExists()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[DeleteAlias()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[DeleteDomain()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[DeleteDomainSpam()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[DeleteSubaccount()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[DeleteUser()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[DeleteUserAliasesBulk()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[DeleteUserSpam()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[DeleteUsersBulk()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetAlias()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetAllDomains()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetAllDomainsSettings()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetAllDomainsStats()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetAllDomainsUserCount()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetCurrentUserMailboxSize()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainAllUserCurrentSize()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainAllUserCurrentSizeActive()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainAllUserLastLogin()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainAllUserLastLoginActive()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainAllUserStats()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainAllUserStatsActive()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainAllUserStatsActiveString()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainAllUserStatsAlpha()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainAllUsersForward()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainNotify()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainNumBcc()]]&amp;lt;br /&amp;gt;&lt;br /&gt;
[[GetDomainNumUsers()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainNumUsersActive()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainSettings()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainSpam()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainSpamBlackList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainSpamCleaner()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainSpamSafeList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainStats()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainUsers()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainUsersBlackListStatusString()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainUsersMailboxMaxSize()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainUsersSafeListStatusString()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainUsersSpamStatusString()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainUsersString()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainUsersStringAlpha()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetMailAllotStorage()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetRetCodeDesc()]]&amp;lt;br /&amp;gt;&lt;br /&gt;
[[GetSubaccounts()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetUserActiveStatus()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetUserAliasesBulk()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetUserAliasesString()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetUserAttributes()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetUserLastLogin()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetUserMailForward()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetUserMailVacation()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetUserMailboxMaxSize()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetUserNumMessages()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetUserSpam()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetUserSpamBlackList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetUserSpamCleaner()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetUserSpamSafeList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetUserStatus()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetUsersWithFilterStr()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[LoginUserWebmail()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[ModifyAlias()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[ModifyDomain()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[ModifyDomainAliases()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[ModifyDomainMaxMailboxSize()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[ModifyDomainMaxNumUsers()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[ModifySubaccount()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[ModifyUser()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[ModifyUserWithLdapAttributes()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[ModifyUserWithLdapAttributesString()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[ModifyUsersBulk()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[RemoveDomainSpamBlackList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[RemoveDomainSpamIPBlackList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[RemoveDomainSpamIPSafeList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[RemoveDomainSpamSafeList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[RemoveNobodyAlias()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[RemoveUserMailForward()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[RemoveUserSpamBlackList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[RemoveUserSpamIPBlackList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[RemoveUserSpamIPSafeList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[RemoveUserSpamSafeList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[SearchDomains()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[SearchSubaccounts()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[SendMailDomainUsersAll()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[SetDomainNotify()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[SetDomainSpamBlackList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[SetDomainSpamCleaner()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[SetDomainSpamSafeList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[SetDomainUsersMailboxMaxSize()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[SetNobodyAlias()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[SetUserMailForward()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[SetUserMailVacation()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[SetUserMailboxMaxSize()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[SetUserSpamBlackList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[SetUserSpamCleaner()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[SetUserSpamSafeList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[SetUsersActiveBulk()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Subaccount_AddAdmin()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Subaccount_AddDomain()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Subaccount_ChangeAdminPassword()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Subaccount_ChangeAdminType()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Subaccount_DeleteAdmin()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Subaccount_DeleteDomain()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Subaccount_GetAdminType()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Subaccount_GetAdmins()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Subaccount_GetAllocatedStorage()]]&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Subaccount_GetDomains()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Subaccount_GetLimitedAdminPermissions()]]&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Subaccount_GetNumBcc()]]&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Subaccount_GetNumDomains()]]&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Subaccount_GetNumMailboxes()]]&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Subaccount_MoveDomain()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Subaccount_SetLimitedAdminPermissions()]]&amp;lt;br /&amp;gt;&lt;br /&gt;
[[ping()]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Deprecated ==&lt;br /&gt;
&lt;br /&gt;
[[GetAllDomainsMXRecords()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainAllUserCurrentSizeAlpha()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainAllUserLastLoginAlpha()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetDomainSpamGreylist()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetEMSubscriberLimit()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GetUserSpamGreylist()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[SetDomainSpamGreylist()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[SetUserSpamGreylist()]]&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zhen.wei</name></author>	</entry>

	</feed>