Difference between revisions of "Exchange Resource Mailbox (Rest API)"

From Rackspace Email & Apps API
Jump to: navigation, search
m (replace page with offset)
 
(8 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
__TOC__
 
__TOC__
  
 +
== v1 - Current==
  
=== Index ===
+
This resource supports submitting and responding with both XML and JSON.
 +
(The v0 method of submitting data via form URL-encoded variables is NOT supported in v1.)
  
''URL'':
+
=== Data Model ===
<nowiki>[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)
 
        /ex/resources</nowiki>
 
  
 +
(See [[Common_Exchange_API_Concepts#Serialization|Serialization]])
  
''Description'':
+
==== Exchange Resource ====
  
This operation returns a list of resource mailboxes associated with the domain.
+
Required for Create[[*]]
  
 +
Operations:
  
''Remarks'':
+
* Exchange Resource [[#List|List]], [[#Create|Create]], [[#Read|Read]], [[#Update|Update]], [[#Delete|Delete]], [[#Export|Export]]
  
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]
+
This model extends [[Common_Exchange_API_Concepts#Mailbox|Mailbox]].
  
 +
{| class="wikitable"
 +
!''Field Name''
 +
!''Data Type''
 +
!''Verbs''
 +
!''Description''
 +
|-
 +
| Type[[*]]
 +
| String
 +
| GET, POST, PUT
 +
| Room or Equipment
 +
|-
 +
| Upn
 +
| String
 +
| GET
 +
| User Principal Name
 +
|-
 +
| ResourceCapacity
 +
| Integer
 +
| GET, POST, PUT
 +
| e.g. The number of seats in a room.
 +
|-
 +
| CustomProperties
 +
| Custom Properties array
 +
| GET, POST, PUT
 +
| User-defined properties (see below).
 +
|-
 +
| ResourceCalendarProcessing
 +
| Calendar Processing
 +
| GET, POST, PUT
 +
| See examples below.
 +
|-
 +
| ResourceDelegates
 +
| Delegate Array
 +
| GET, POST, PUT
 +
| See examples below.
 +
|-
 +
| ResourcePermissions
 +
| Resource Permission Array
 +
| GET, POST, PUT
 +
| See examples below.
 +
|-
 +
| BookInPolicy
 +
| Recipients
 +
| GET, POST, PUT
 +
| See examples below.
 +
|-
 +
| RequestInPolicy
 +
| Recipients
 +
| GET, POST, PUT
 +
| See examples below.
 +
|-
 +
| RequestOutOfPolicy
 +
| Recipients
 +
| GET, POST, PUT
 +
| See examples below.
 +
|}
 +
 +
==== Calendar Processing ====
 +
 +
Operations:
  
''Example'':
+
* Exchange Resource [[#Create|Create]], [[#Update|Update]]
<pre>
+
* Calendar Processing [[#Read_2|Read]]
get '/customers/12345678/domains/example.com/ex/resources?size=100&offset=10&contains=conference', 'text/xml'
 
</pre>
 
  
 +
{| class="wikitable"
 +
!''Field Name''
 +
!''Data Type''
 +
!''Description''
 +
|-
 +
| AutoBooking
 +
| String
 +
| Must be "None", "AutoAccept", or "AutoUpdate"
 +
|-
 +
| BookingWindowInDays
 +
| Integer >= 0
 +
|
 +
|-
 +
| EnforceSchedulingHorizon
 +
| Boolean
 +
|
 +
|-
 +
| AllowRecurringMeetings
 +
| Boolean
 +
|
 +
|-
 +
| ScheduleOnlyDuringWorkHours
 +
| Boolean
 +
|
 +
|-
 +
| MaximumDurationInMinutes
 +
| Integer >= 0
 +
|
 +
|-
 +
| MaximumConflictInstances
 +
| Integer >= 0
 +
|
 +
|-
 +
| ConflictPercentageAllowed
 +
| Integer
 +
| Must be between 0 and 100.
 +
|-
 +
| AdditionalResponse
 +
| Calendar Processing Additional Response Object
 +
| See next object definition below.
 +
|}
  
''XML Result Example'':
+
===== Calendar Processing Additional Response =====
  
<pre>
+
{| class="wikitable"
<?xml version="1.0" encoding="utf-8"?>
+
!''Field Name''
<resourceList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:xml:resourceList">
+
!''Data Type''
  <offset>0</offset>
+
!''Description''
  <size>50</size>
+
|-
  <total>3</total>
+
| Enable
  <resources>
+
| Boolean
    <resource>
+
|
      <name>apiexresource43</name>
+
|-
      <displayName>API Test</displayName>
+
| Value
      <type>room</type>
+
| String
    </resource>
+
|
    <resource>
+
|}
      <name>apiexresource5</name>
 
      <displayName>API Test</displayName>
 
      <type>equipment</type>
 
    </resource>
 
    <resource>
 
      <name>apiexresource85</name>
 
      <displayName>API Test</displayName>
 
      <type>room</type>
 
    </resource>
 
  </resources>
 
</resourceList>
 
</pre>
 
  
 +
===== Delegate =====
  
''Json Result Example'':
+
Operations:
  
{"offset":0,"size":50,"total":3,"resources":[{"name":"apiexresource43","displayName":"API Test","type":"room"},{"name":"apiexresource5","displayName":"API Test","type":"equipment"},{"name":"apiexresource85","displayName":"API Test","type":"room"}]}
+
* Exchange Resource [[#Create|Create]], [[#Update|Update]]
 +
* Delegate [[#List_2|List]]
  
 +
{| class="wikitable"
 +
!''Field Name''
 +
!''Data Type''
 +
!''Description''
 +
|-
 +
| Value
 +
| String
 +
| Email Address
 +
|-
 +
| Action
 +
| String
 +
| Must be "Add" or "Remove". Only valid for PUT requests.
 +
|}
  
=== Show ===
+
===== Permission =====
  
''URL'':
+
Operations:
[<nowiki>GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)
 
        /ex/resources/(resource name)</nowiki>
 
  
 +
* Exchange Resource [[#Create|Create]], [[#Update|Update]]
 +
* Permission [[#List_3|List]]
  
''Description'':
+
{| class="wikitable"
 +
!''Field Name''
 +
!''Data Type''
 +
!''Description''
 +
|-
 +
| Recipient
 +
| String
 +
| Email Address
 +
|-
 +
| Permissions
 +
| Permission Type Array
 +
| Array of Permission Type (see below)
 +
|}
  
Returns the resource's details.
+
====== Permission Type ======
  
 +
{| class="wikitable"
 +
!''Field Name''
 +
!''Data Type''
 +
!''Description''
 +
|-
 +
| Permission
 +
| String
 +
| Must be "FullAccess" or "SendAs".
 +
|}
  
''Remarks'':
+
===== Recipients =====
  
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]
+
Operations:
  
 +
* Exchange Resource [[#Create|Create]], [[#Update|Update]]
 +
* Policy [[#List_4|List]]
  
''Example'':
+
{| class="wikitable"
<pre>
+
!''Field Name''
get '/customers/12345678/domains/example.com/ex/resource/conference.room', 'text/xml'
+
!''Data Type''
</pre>
+
!''Description''
 +
|-
 +
| All
 +
| Boolean
 +
|
 +
|-
 +
| Recipients
 +
| Recipient Array
 +
| Array of Recipient (see below).
 +
|}
  
 +
====== Recipient ======
  
''XML Result Example''
+
Operations:
  
<pre>
+
* New Resource Options [[#Available_Delegates_Recipients|Available Delegates Recipients]], [[#Available_Permissions_Recipients|Available Permissions Recipients]], [[#Available_Policy_Recipients|Available Policy Recipients]]
<?xml version="1.0" encoding="utf-8"?>
+
* Existing Resource Options [[#Available_Delegates_Recipients_2|Available Delegates Recipients]], [[#Available_Permissions_Recipients_2|Available Permissions Recipients]], [[#Available_Policy_Recipients_2|Available Policy Recipients]]
<?xml version="1.0" encoding="utf-8"?>
 
<resource xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:xml:resource">
 
  <name>apiexresource43</name>
 
  <displayName>API Test</displayName>
 
  <type>room</type>
 
</resource>
 
</pre>
 
  
 +
{| class="wikitable"
 +
!''Field Name''
 +
!''Data Type''
 +
!''Description''
 +
|-
 +
| Value
 +
| String
 +
| Email Address
 +
|-
 +
| Action
 +
| String
 +
| Must be "Add" or "Remove". Only valid for PUT requests.
 +
|}
  
''Json Result Example'':
+
----
  
{"name":"apiexresource43","displayName":"API Test","type":"room"}
+
=== List ===
  
 +
{| class="wikitable"
 +
! Verb
 +
| GET
 +
|-
 +
! URL Format
 +
| /v1/customers/{customer account number}/domains/{domain name}/ex/resources/
 +
|-
 +
! Description
 +
| Use this to list resource mailboxes, supports exporting, supports exporting. (see [[Common Exchange API Concepts#Listings|Listings]])
 +
|-
 +
! Model
 +
| [[#Exchange_Resource|Exchange Resource]] Listing
 +
|}
  
''Errors'':
+
HTTP Codes
  
 
{| class="wikitable"
 
{| class="wikitable"
!''Description''
+
! Code
!''HTTP Response Code''
+
! Condition
!''Sample Message''
+
|-
 +
| 200 OK
 +
| The listing was successfully retrieved.
 
|-
 
|-
| Resource is not found
+
| 400 Bad Request
| 404
+
| The request was invalid.  Inspect the <tt>validationFault</tt> response for more detail.
| Resource not found
 
 
|-
 
|-
| Entity is found but it's not a resource mailbox
+
| 404 Not Found
| 404
+
| The domain does not exist, the domain does not have Exchange, or the marker was not found.  Inspect the <tt>itemNotFondFault</tt> for more detail.
| Mailbox is not a resource.
 
 
|}
 
|}
  
 +
<pre>
 +
Request:
 +
GET https://api.emailsrvr.com/v1/domains/example.com/ex/resources
  
 +
Response:
 +
200 OK
 +
{
 +
  "ResourceMailboxes": [
 +
    {
 +
      "Type": "Room",
 +
      "PhoneNumber": "1234567890",
 +
      "Upn": "room.101@example.com",
 +
      "ResourceCapacity": 25,
 +
      "CustomProperties": [
 +
        {
 +
          "Value": "Videoconferencing",
 +
          "ExchangeAction": 0
 +
        },
 +
        {
 +
          "Value": "Whiteboard",
 +
          "ExchangeAction": 0
 +
        }
 +
      ],
 +
      "CommonName": "room.101",
 +
      "DisplayName": "Room 101",
 +
      "Alias": "room.101.example.com",
 +
      "IsHiddenFromAddressList": false,
 +
      "PrimarySmtpAddress": null,
 +
      "EmailAddresses": null,
 +
      "Status": "Ready",
 +
      "LegacyExchangeDn": "/o=e14s/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=room.101b5c"
 +
    },
 +
    {
 +
      "Type": "Room",
 +
      "PhoneNumber": "1234567890",
 +
      "Upn": "room.102@example.com",
 +
      "ResourceCapacity": 25,
 +
      "CustomProperties": [
 +
        {
 +
          "Value": "Videoconferencing",
 +
          "ExchangeAction": 0
 +
        },
 +
        {
 +
          "Value": "Whiteboard",
 +
          "ExchangeAction": 0
 +
        }
 +
      ],
 +
      "CommonName": "room.102",
 +
      "DisplayName": "Room 101",
 +
      "Alias": "room.102.example.com",
 +
      "IsHiddenFromAddressList": false,
 +
      "PrimarySmtpAddress": null,
 +
      "EmailAddresses": null,
 +
      "Status": "Ready",
 +
      "LegacyExchangeDn": "/o=e14s/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=room.1029fd"
 +
    },
 +
    {
 +
      "Type": "Room",
 +
      "PhoneNumber": "1234567890",
 +
      "Upn": "room.103@example.com",
 +
      "ResourceCapacity": 25,
 +
      "CustomProperties": [
 +
        {
 +
          "Value": "Videoconferencing",
 +
          "ExchangeAction": 0
 +
        },
 +
        {
 +
          "Value": "Whiteboard",
 +
          "ExchangeAction": 0
 +
        }
 +
      ],
 +
      "CommonName": "room.103",
 +
      "DisplayName": "Room 103",
 +
      "Alias": "room.103.example.com",
 +
      "IsHiddenFromAddressList": false,
 +
      "PrimarySmtpAddress": null,
 +
      "EmailAddresses": null,
 +
      "Status": "Ready",
 +
      "LegacyExchangeDn": "/o=e14s/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=room.10370c"
 +
    }
 +
  ],
 +
  "Sort": "cn",
 +
  "Limit": 50,
 +
  "Total": 3,
 +
  "Order": "asc"
 +
}
 +
</pre>
  
=== Add/Edit ===
+
=== Resource ===
  
''URL'':
+
POSTS, PUTS, and DELETES support [[Common_Exchange_API_Concepts#Asynchronous_Statuses|Asynchronous Statuses]] and [[Common_Exchange_API_Concepts#Asynchronous_Errors|Asynchronous Errors]].
<nowiki>Add: [POST] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)
 
                /ex/resources/(resource name)
 
Edit: [PUT] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)
 
                /ex/resources/(resource name)</nowiki>
 
  
 +
==== Create ====
  
''Description'':
+
{| class="wikitable"
 +
! Verb
 +
| POST
 +
|-
 +
! URL Format
 +
| /v1/customers/{customer account number}/domains/{domain name}/ex/resources/
 +
|-
 +
! Description
 +
| Use this route to add a new resource mailbox.
 +
|-
 +
! Model
 +
| [[#Exchange_Resource|Exchange Resource]]
 +
|}
  
Adds/edits the resource with the specified information.  Required fields must be supplied when adding. Others are optional.
+
HTTP Codes
  
 +
{| class="wikitable"
 +
! Code
 +
! Condition
 +
|-
 +
| 204 No Content
 +
| The request has been accepted and will be processed.
 +
|-
 +
| 400 Bad Request
 +
| The request was invalid.  Inspect the <tt>validationFault</tt> response for more detail.
 +
|-
 +
| 404 Not Found
 +
| The domain does not exist, the domain does not have Exchange, or the marker was not found.  Inspect the <tt>itemNotFondFault</tt> for more detail.
 +
|}
 +
 +
<pre>
 +
Request:
 +
POST https://api.emailsrvr.com/v1/domains/example.com/ex/resources
 +
{
 +
  "CommonName": "room.101",
 +
  "Type": "Room",
 +
  "DisplayName": "Room 101",
 +
  "PhoneNumber": "1234567890",
 +
  "ResourceCapacity": 25,
 +
  "CustomProperties": [
 +
    {
 +
      "Value": "Videoconferencing"
 +
    },
 +
    {
 +
      "Value": "Whiteboard"
 +
    }
 +
  ],
 +
  "CalendarProcessing": {
 +
    "AutoBooking": "AutoUpdate",
 +
    "BookingWindowInDays": 90,
 +
    "EnforceSchedulingHorizon": false,
 +
    "AllowConflicts": true,
 +
    "AllowRecurringMeetings": false,
 +
    "ScheduleOnlyDuringWorkHours": true,
 +
    "MaximumDurationInMinutes": 720,
 +
    "MaximumConflictInstances": 1,
 +
    "ConflictPercentageAllowed": 50,
 +
    "AdditionalResponse": {
 +
      "Enable": true,
 +
      "Value": "This is an additional response"
 +
    }
 +
  },
 +
  "Delegates": [
 +
    {
 +
      "Value": "user1"
 +
    },
 +
    {
 +
      "Value": "user2"
 +
    },
 +
    {
 +
      "Value": "user3"
 +
    }
 +
  ],
 +
  "Permissions": [
 +
    {
 +
      "Recipient": "user5",
 +
      "Types": [
 +
        "FullAccess"
 +
      ]
 +
    },
 +
    {
 +
      "Recipient": "user6",
 +
      "Types": [
 +
        "SendAs"
 +
      ]
 +
    },
 +
    {
 +
      "Recipient": "user7",
 +
      "Types": [
 +
        "FullAccess",
 +
        "SendAs"
 +
      ]
 +
    }
 +
  ],
 +
  "BookInPolicy": {
 +
    "Recipients": [
 +
      {
 +
        "Value": "user1"
 +
      },
 +
      {
 +
        "Value": "user2"
 +
      }
 +
    ]
 +
  },
 +
  "RequestInPolicy": {
 +
    "Recipients": [
 +
      {
 +
        "Value": "user4"
 +
      },
 +
      {
 +
        "Value": "user5"
 +
      }
 +
    ]
 +
  },
 +
  "RequestOutOfPolicy": {
 +
    "AllUsers": true
 +
  }
 +
}
 +
 +
Response:
 +
204 No Content
 +
</pre>
 +
 +
==== Read ====
  
 
{| class="wikitable"
 
{| class="wikitable"
!''Field Name''
+
! Verb
!''Data Type''
+
| GET
!''Description''
 
 
|-
 
|-
| displayName
+
! URL Format
| string
+
| /v1/customers/{customer account number}/domains/{domain name}/ex/resources/(common name)
| Resource display name (Required for add)
 
 
|-
 
|-
| type
+
! Description
| string
+
| Use this route to read an existing resource mailbox.
| The resource type, 'room' or 'equipment' (Required for add)
 
 
|-
 
|-
| password
+
! Model
| string
+
| [[#Exchange_Resource|Exchange Resource]] *
| The password to change the settings of the mailbox or add/remove admins (Required for add)
 
 
|}
 
|}
  
 +
<nowiki>*</nowiki> Note: The Exchange Resource resource contains some paged data that must be accessed via separate GET requests.  Properties directly on the object and <tt>CustomProperties</tt>, can be accessed via a GET on the base resource.
 +
 +
HTTP Codes
 +
 +
{| class="wikitable"
 +
! Code
 +
! Condition
 +
|-
 +
| 200 OK
 +
| The resource was successfully retrieved.
 +
|-
 +
| 400 Bad Request
 +
| The request was invalid.  Inspect the <tt>validationFault</tt> response for more detail.
 +
|-
 +
| 404 Not Found
 +
| The domain does not exist, the domain does not have Exchange, or the marker was not found.  Inspect the <tt>itemNotFondFault</tt> for more detail.
 +
|}
  
''Example'':
 
 
<pre>
 
<pre>
post '/customers/12345678/domains/example.com/ex/resources/conference.room',
+
Request:
 +
GET https://api.emailsrvr.com/v1/domains/example.com/ex/resources/room.1
 +
 
 +
 
 +
Response:
 +
200 OK
 
{
 
{
  'displayName' => 'Conference Room'
+
  "Type": "Room",
  'type' => 'room'
+
  "PhoneNumber": "1234567890",
  'password' => 'abcDEF123'
+
  "Upn": "room.101@example.com",
},
+
  "ResourceCapacity": 25,
'text/xml'
+
  "CustomProperties": [
 +
    {
 +
      "Value": "Videoconferencing",
 +
      "ExchangeAction": 0
 +
    },
 +
    {
 +
      "Value": "Whiteboard",
 +
      "ExchangeAction": 0
 +
    }
 +
  ],
 +
  "CommonName": "room.101",
 +
  "DisplayName": "Room 101",
 +
  "Alias": "room.101.example.com",
 +
  "IsHiddenFromAddressList": false,
 +
  "PrimarySmtpAddress": null,
 +
  "EmailAddresses": null,
 +
  "Status": "Ready",
 +
  "LegacyExchangeDn": "/o=e14s/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=room.1019d4"
 +
}
 
</pre>
 
</pre>
 +
 +
==== Update ====
 +
 +
{| class="wikitable"
 +
! Verb
 +
| PUT
 +
|-
 +
! URL Format
 +
| /v1/customers/{customer account number}/domains/{domain name}/ex/resources/(common name)
 +
|-
 +
! Description
 +
| Use this route to update an existing resource mailbox.
 +
|-
 +
! Model
 +
| [[#Exchange_Resource|Exchange Resource]]
 +
|}
 +
 +
HTTP Codes
 +
 +
{| class="wikitable"
 +
! Code
 +
! Condition
 +
|-
 +
| 204 No Content
 +
| The request has been accepted and will be processed.
 +
|-
 +
| 400 Bad Request
 +
| The request was invalid.  Inspect the <tt>validationFault</tt> response for more detail.
 +
|-
 +
| 404 Not Found
 +
| The domain does not exist, the domain does not have Exchange, or the marker was not found.  Inspect the <tt>itemNotFondFault</tt> for more detail.
 +
|}
 +
 +
All data that is part of the Exchange Resource resource can be updated in a single PUT request.  <tt>CustomProperties</tt>, <tt>Delegates</tt>, and <tt>policies</tt> must specify an <tt>Action</tt>, set to either <tt>Add</tt> or <tt>Remove</tt>, to specify the operation for that value.  <tt>Permissions</tt> must be specified in whole.  For example, <tt>resource1@example.com</tt> has <tt>user5/tt>'s permission types set to <tt>FullAccess</tt>.  To add <tt>SendAs</tt>, the request must contain both <tt>FullAccess</tt> and <tt>SendAs</tt> for that user.  To remove all permissions from <tt>user7</tt>, the request must contain an empty <tt>Type</tt> array for that user.
  
 
<pre>
 
<pre>
put '/customers/12345678/domains/example.com/ex/resources/all.employees',
+
Request:
 +
PUT https://api.emailsrvr.com/v1/domains/example.com/ex/resources/room.101
 
{
 
{
  'displayName' => 'Conference Room A'
+
  "Type": "Room",
  'password' => 'ABCd4321'
+
  "DisplayName": "Conference Room 101",
},
+
  "PhoneNumber": "try shouting",
'text/xml',
+
  "ResourceCapacity": "30",
 +
  "CustomProperties": [
 +
    {
 +
      "Value": "Whiteboard",
 +
      "Action": "Remove"
 +
    }
 +
  ],
 +
  "CalendarProcessing": {
 +
    "AutoBooking": "AutoUpdate",
 +
    "BookingWindowInDays": 180,
 +
    "EnforceSchedulingHorizon": true,
 +
    "AllowConflicts": false,
 +
    "AllowRecurringMeetings": true,
 +
    "ScheduleOnlyDuringWorkHours": false,
 +
    "MaximumDurationInMinutes": 1440,
 +
    "MaximumConflictInstances": 0,
 +
    "ConflictPercentageAllowed": 0,
 +
    "AdditionalResponse": {
 +
      "Enable": false
 +
    }
 +
  },
 +
  "Delegates": [
 +
    {
 +
      "Value": "user3",
 +
      "Action": "Remove"
 +
    },
 +
    {
 +
      "Value": "user4",
 +
      "Action": "Add"
 +
    }
 +
  ],
 +
  "Permissions": [
 +
    {
 +
      "Recipient": "user5",
 +
      "Types": [
 +
        "FullAccess",
 +
        "SendAs"
 +
      ]
 +
    },
 +
    {
 +
      "Recipient": "user7",
 +
      "Types": []
 +
    },
 +
    {
 +
      "Recipient": "user8",
 +
      "Types": [
 +
        "FullAccess"
 +
      ]
 +
    }
 +
  ],
 +
  "BookInPolicy": {
 +
    "Recipients": [
 +
      {
 +
        "Value": "user2",
 +
        "Action": "Remove"
 +
      },
 +
      {
 +
        "Value": "user3",
 +
        "Action": "Add"
 +
      }
 +
    ]
 +
  },
 +
  "RequestInPolicy": {
 +
    "AllUsers": true
 +
  },
 +
  "RequestOutOfPolicy": {
 +
    "AllUsers": false,
 +
    "Recipients": [
 +
      {
 +
        "Value": "user7",
 +
        "Action": "Add"
 +
      },
 +
      {
 +
        "Value": "user8",
 +
        "Action": "Add"
 +
      }
 +
    ]
 +
  }
 +
}
 +
 
 +
 
 +
Response:
 +
204 No Content
 
</pre>
 
</pre>
  
''Errors'':
+
==== Delete ====
  
 
{| class="wikitable"
 
{| class="wikitable"
!''Description''
+
! Verb
!''HTTP Response Code''
+
| DELETE
!''Sample Message''
+
|-
 +
! URL Format
 +
| /v1/customers/{customer account number}/domains/{domain name}/ex/resources/(common name)
 +
|-
 +
! Description
 +
| Use this route to delete a resource mailbox.
 
|-
 
|-
| New resource mailbox already exists
+
! Model
| 400
+
| None
| The email address conference.room@abc.com is already in use
+
|}
 +
 
 +
HTTP Codes
 +
 
 +
{| class="wikitable"
 +
! Code
 +
! Condition
 
|-
 
|-
| New resource mailbox name doesn't meet the naming requirements
+
| 204 No Content
| 400
+
| The request has been accepted and will be processed.
| Invalid resource name
 
 
|-
 
|-
| New display name doesn't meet the naming requirements
+
| 400 Bad Request
| 400
+
| The request was invalid.  Inspect the <tt>validationFault</tt> response for more detail.
| Invalid display name
 
 
|-
 
|-
| Invalid resource mailbox type
+
| 404 Not Found
| 400
+
| The domain does not exist, the domain does not have Exchange, or the marker was not found. Inspect the <tt>itemNotFondFault</tt> for more detail.
| Invalid Resource Type. The input must be: room/equipment.
 
 
|}
 
|}
  
 +
<pre>
 +
Request:
 +
DELETE https://api.emailsrvr.com/v1/domains/example.com/ex/resources/room.101
  
=== Delete ===
 
  
''URL'':
+
Response:
<nowiki>[DELETE] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)
+
204 No Content
            /ex/resources/(resource name)</nowiki>
+
</pre>
 +
 
 +
----
  
 +
==== Export ====
  
''Description'':
+
{| class="wikitable"
 +
! Verb
 +
| GET
 +
|-
 +
! URL Format
 +
| /v1/customers/{customer account number}/domains/{domain name}/ex/resources?exportTo={your email address}
 +
|-
 +
! Description
 +
| Use this route to export a file of resource mailboxes.
 +
|-
 +
! Model
 +
| [[#Exchange_Resource|Exchange Resource]] Listing
 +
|}
  
Deletes the resource.
+
HTTP Codes
  
 +
{| class="wikitable"
 +
! Code
 +
! Condition
 +
|-
 +
| 202 Accepted
 +
| The request has been accepted and will be processed.
 +
|-
 +
| 400 Bad Request
 +
| The request was invalid.  Inspect the <tt>validationFault</tt> response for more detail.
 +
|-
 +
| 404 Not Found
 +
| The domain does not exist, the domain does not have Exchange, or the marker was not found.  Inspect the <tt>itemNotFoundFault</tt> for more detail.
 +
|}
  
''Example'':
 
 
<pre>
 
<pre>
delete '/customers/12345678/domains/example.com/ex/resources/all.employees', 'text/xml'
+
Request:
 +
GET https://api.emailsrvr.com/v1/domains/example.com/ex/resources?exportTo=myAdminEmail@example.com
 +
 
 +
Response:
 +
202 Accepted
 
</pre>
 
</pre>
  
 +
----
 +
 +
==== Import ====
  
 
{| class="wikitable"
 
{| class="wikitable"
!''Description''
+
! Verb
!''HTTP Response Code''
+
| POST
!''Sample Message''
+
|-
 +
! URL Format
 +
| /v1/customers/{customer account number}/domains/{domain name}/ex/resources?emailAddress={your email address}
 
|-
 
|-
| Resource is not found
+
! Description
| 404
+
| Use this route to import a file of resource mailboxes.
| Resource not found
 
 
|-
 
|-
| Entity is found but it's not a resource mailbox
+
! Model
| 404
+
| FileUrl (string), OverrideExisting (boolean)
| Mailbox is not a resource.
 
 
|}
 
|}
  
 +
HTTP Codes
  
=== Admins ===
+
{| class="wikitable"
 +
! Code
 +
! Condition
 +
|-
 +
| 202 Accepted
 +
| The request has been accepted and will be processed.
 +
|-
 +
| 400 Bad Request
 +
| The request was invalid.  Inspect the <tt>validationFault</tt> response for more detail.
 +
|-
 +
| 404 Not Found
 +
| The domain does not exist, the domain does not have Exchange, or the marker was not found.  Inspect the <tt>itemNotFoundFault</tt> for more detail.
 +
|}
  
This refers to the admins that can manage the resource.
+
Instructions:
  
==== Index Admin ====
+
1. Create a CSV (comma-separated values) file containing the resource mailboxes you'd like to import. You can get a valid CSV file format by bulk-exporting your current resource mailboxes.
  
''URL'':
+
2. Upload the file to a public accessible URL (e.g. cloud-files, CDN, etc.)
<nowiki>[GET] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)
 
        /ex/resources/(resource name)/admins</nowiki>
 
  
 +
3. Call this endpoint with the url of the file in the body.
  
''Description'':
+
4. The OverrideExisting field is optional and defaults to false. When true, any existing resource mailboxes will be modified to match the CSV file, including the removal of assets, permissions and delegates. 
 +
* NOTE: The Capacity and PhoneNumber fields will be cleared out if left blank when OverrideExisting is true or false.
  
Gets the list of resource admins.
+
5. You will receive a confirmation email to the address specified in the URL when the import is complete. Any rows that were not able to be imported are available via a link provided in the confirmation email.
  
 +
<pre>
 +
Request:
 +
POST https://api.emailsrvr.com/v1/domains/example.com/ex/resources?emailAddress=myAdminEmail@example.com
 +
{
 +
    "FileUrl": "http://asdfasdfzxcvzxcvasdfasdf.cf1.rackcdn.com/MyResourceMailboxes.csv",
 +
    "OverrideExisting": false
 +
}
 +
Response:
 +
202 Accepted
 +
</pre>
 +
 +
----
  
''Remarks'':
+
==== Calendar Processing ====
  
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]
+
===== Read =====
 +
 
 +
{| class="wikitable"
 +
! Verb
 +
| GET
 +
|-
 +
! URL Format
 +
| /v1/customers/{customer account number}/domains/{domain name}/ex/resources/(common name)/calendarProcessing
 +
|-
 +
! Description
 +
| Use this route to read an existing resource mailbox's calendar processing data.
 +
|-
 +
! Model
 +
| [[#Calendar_Processing|Calendar Processing]]
 +
|}
 +
 
 +
HTTP Codes
 +
 
 +
{| class="wikitable"
 +
! Code
 +
! Condition
 +
|-
 +
| 200 OK
 +
| The data was successfully retrieved.
 +
|-
 +
| 404 Not Found
 +
| The domain does not exist, the domain does not have Exchange, or the resource was not found. Inspect the <tt>itemNotFondFault</tt> for more detail.
 +
|}
  
  
''Example'':
 
 
<pre>
 
<pre>
get '/customers/12345678/domains/example.com/ex/resources/conference.room/admins', 'text/xml'
+
Request:
 +
GET https://api.emailsrvr.com/v1/domains/example.com/ex/resources/room.101/calendarProcessing
 +
 
 +
 
 +
Response:
 +
200 OK
 +
{
 +
  "AutoBooking": "AutoUpdate",
 +
  "BookingWindowInDays": 90,
 +
  "EnforceSchedulingHorizon": false,
 +
  "AllowConflicts": true,
 +
  "AllowRecurringMeetings": false,
 +
  "ScheduleOnlyDuringWorkHours": true,
 +
  "MaximumDurationInMinutes": 720,
 +
  "MaximumConflictInstances": 1,
 +
  "ConflictPercentageAllowed": 50,
 +
  "AdditionalResponse": {
 +
    "Enable": true,
 +
    "Value": "This is an additional response"
 +
  }
 +
}
 
</pre>
 
</pre>
  
 +
==== Delegates ====
 +
 +
===== List =====
 +
 +
{| class="wikitable"
 +
! Verb
 +
| GET
 +
|-
 +
! URL Format
 +
| /v1/customers/{customer account number}/domains/{domain name}/ex/resources/(common name)/delegates
 +
|-
 +
! Description
 +
| Use this route to list an existing resource mailbox's delegates data. (see [[Common Exchange API Concepts#Listings|Listings]])
 +
|-
 +
! Model
 +
| [[#Delegates|Delegates]] Listing
 +
|}
 +
 +
HTTP Codes
  
''XML Result Example'':
+
{| class="wikitable"
 +
! Code
 +
! Condition
 +
|-
 +
| 200 OK
 +
| The data was successfully retrieved.
 +
|-
 +
| 404 Not Found
 +
| The domain does not exist, the domain does not have Exchange, or the resource was not found.  Inspect the <tt>itemNotFondFault</tt> for more detail.
 +
|}
  
 
<pre>
 
<pre>
<?xml version="1.0" encoding="utf-8"?>
+
Request:
<resourceAdminList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:xml:resourceAdminList">
+
GET https://api.emailsrvr.com/v1/domains/example.com/ex/resources/room.101/delegates
  <offset>0</offset>
+
 
  <size>50</size>
+
Response:
  <total>3</total>
+
200 OK
  <admins>
+
{
    <admin>apiexmailbox70@apidomain90.com</admin>
+
  "Delegates": [
    <admin>apiexmailbox87@apidomain90.com</admin>
+
    {
    <admin>apiexmailbox89@apidomain90.com</admin>
+
      "Value": "user1"
  </admins>
+
    },
</resourceAdminList>
+
    {
 +
      "Value": "user2"
 +
    },
 +
    {
 +
      "Value": "user3"
 +
    }
 +
  ],
 +
  "Limit": 50,
 +
  "Total": 3,
 +
  "Order": "asc"
 +
}
 
</pre>
 
</pre>
  
 +
==== Permissions ====
 +
 +
===== List =====
 +
 +
{| class="wikitable"
 +
! Verb
 +
| GET
 +
|-
 +
! URL Format
 +
| /v1/customers/{customer account number}/domains/{domain name}/ex/resources/(common name)/permissions
 +
|-
 +
! Description
 +
| Use this route to list an existing resource mailbox's permissions data. (see [[Common Exchange API Concepts#Listings|Listings]])
 +
|-
 +
! Model
 +
| [[#Permission|Permission]] Listing
 +
|}
 +
 +
HTTP Codes
 +
 +
{| class="wikitable"
 +
! Code
 +
! Condition
 +
|-
 +
| 200 OK
 +
| The data was successfully retrieved.
 +
|-
 +
| 404 Not Found
 +
| The domain does not exist, the domain does not have Exchange, or the resource was not found.  Inspect the <tt>itemNotFondFault</tt> for more detail.
 +
|}
 +
 +
<pre>
 +
Request:
 +
GET https://api.emailsrvr.com/v1/domains/example.com/ex/resources/room.101/permissions
  
''Json Result Example'':
 
  
{"offset":0,"size":50,"total":3,"admins":["apiexmailbox70@apidomain90.com","apiexmailbox87@apidomain90.com","apiexmailbox89@apidomain90.com"]}
+
Response:
 +
200 OK
 +
{
 +
  "Permissions": [
 +
    {
 +
      "Recipient": "user5",
 +
      "Types": [
 +
        "FullAccess"
 +
      ]
 +
    },
 +
    {
 +
      "Recipient": "user6",
 +
      "Types": [
 +
        "SendAs"
 +
      ]
 +
    },
 +
    {
 +
      "Recipient": "user7",
 +
      "Types": [
 +
        "FullAccess",
 +
        "SendAs"
 +
      ]
 +
    }
 +
  ],
 +
  "Limit": 50,
 +
  "Total": 3,
 +
  "Order": "asc"
 +
}
 +
</pre>
 +
 
 +
==== Policies ====
  
 +
BookIn, RequestIn, and RequestOutOf policies can all be accessed via the resource's URL followed by <tt>/bookInPolicy</tt>, <tt>/requestInPolicy</tt>, and <tt>/requestOutOfPolicy</tt>, respectively.  Examples in this section will use BookInPolicy, but the interface for the three is all the same.
  
''Errors'':
+
===== List =====
  
 
{| class="wikitable"
 
{| class="wikitable"
!''Description''
+
! Verb
!''HTTP Response Code''
+
| GET
!''Sample Message''
+
|-
 +
! URL Format
 +
| /v1/customers/{customer account number}/domains/{domain name}/ex/resources/(common name)/bookInPolicy
 +
 
 +
/v1/customers/{customer account number}/domains/{domain name}/ex/resources/(common name)/requestInPolicy
 +
 
 +
/v1/customers/{customer account number}/domains/{domain name}/ex/resources/(common name)/requestOutOfPolicy
 
|-
 
|-
| Resource is not found
+
! Description
| 404
+
| Use this route to list an existing resource mailbox's policies data. (see [[Common Exchange API Concepts#Listings|Listings]])
| Resource not found
 
 
|-
 
|-
| Entity is found but it's not a resource mailbox
+
! Model
| 404
+
| [[#Recipient|Recipient]] Listing
| Mailbox is not a resource.
 
 
|}
 
|}
  
 +
HTTP Codes
  
==== Add Admin ====
+
{| class="wikitable"
 +
! Code
 +
! Condition
 +
|-
 +
| 200 OK
 +
| The data was successfully retrieved.
 +
|-
 +
| 404 Not Found
 +
| The domain does not exist, the domain does not have Exchange, or the resource was not found.  Inspect the <tt>itemNotFondFault</tt> for more detail.
 +
|}
  
''URL'':
+
<pre>
<nowiki>[POST] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)
+
Request:
        /ex/resources/(resource name)/admins/(admin name)</nowiki>
+
GET https://api.emailsrvr.com/v1/domains/example.com/ex/resources/room.101/bookInPolicy
  
  
''Description'':
+
Response:
 +
{
 +
  "Recipients": [
 +
    {
 +
      "Value": "user1"
 +
    },
 +
    {
 +
      "Value": "user2"
 +
    }
 +
  ],
 +
  "AllUsers":false,
 +
  "Limit": 50,
 +
  "Total": 2,
 +
  "Order": "asc"
 +
}
 +
</pre>
  
Adds an admin to the resource.
+
=== New Resource Options ===
 +
<tt><nowiki>https://api.emailsrvr.com/v1/domains/(domain)/ex/resourceOptions/</nowiki></tt> is the base URL for getting complete sets of valid data that can be submitted as part of an Exchange Resource add operation.
  
 +
==== Available Delegates Recipients ====
 +
 +
{| class="wikitable"
 +
! Verb
 +
| GET
 +
|-
 +
! URL Format
 +
| /v1/customers/{customer account number}/domains/{domain name}/ex/resources/resourceOptions/AvailableDelegatesRecipients
 +
|-
 +
! Description
 +
| Use this route to list recipients that can be delegates for a new resource on a given domain.
 +
|-
 +
! Model
 +
| [[#Recipient|Recipient]] Listing
 +
|}
  
''Example'':
 
 
<pre>
 
<pre>
post '/customers/12345678/domains/example.com/ex/resources/conference.room/admins/john.smith', {}, 'text/xml'
+
Request:
 +
GET https://api.emailsrvr.com/v1/domains/example.com/ex/resourceOptions/AvailableDelegatesRecipients
 +
 
 +
 
 +
Response:
 +
200 OK
 +
{
 +
  "Recipients": [
 +
    {
 +
      "Value": "user1"
 +
    },
 +
    {
 +
      "Value": "user10"
 +
    },
 +
    {
 +
      "Value": "user2"
 +
    },
 +
    {
 +
      "Value": "user3"
 +
    },
 +
    {
 +
      "Value": "user4"
 +
    },
 +
    {
 +
      "Value": "user5"
 +
    },
 +
    {
 +
      "Value": "user6"
 +
    },
 +
    {
 +
      "Value": "user7"
 +
    },
 +
    {
 +
      "Value": "user8"
 +
    },
 +
    {
 +
      "Value": "user9"
 +
    }
 +
  ],
 +
  "Limit": 50,
 +
  "Total": 10,
 +
  "Order": "asc"
 +
}
 
</pre>
 
</pre>
  
''Errors'':
+
==== Available Permissions Recipients ====
  
 
{| class="wikitable"
 
{| class="wikitable"
!''Description''
+
! Verb
!''HTTP Response Code''
+
| GET
!''Sample Message''
+
|-
 +
! URL Format
 +
| /v1/customers/{customer account number}/domains/{domain name}/ex/resources/resourceOptions/AvailablePermissionsRecipients
 +
|-
 +
! Description
 +
| Use this route to list recipients that can have permissions for a new resource on a given domain.
 
|-
 
|-
| Resource not found
+
! Model
| 404
+
| [[#Recipient|Recipient]] Listing
| Resource not found
 
 
|}
 
|}
  
 +
<pre>
 +
Request:
 +
GET https://api.emailsrvr.com/v1/domains/example.com/ex/resourceOptions/AvailablePermissionsRecipients
 +
 +
Response:
 +
{
 +
  "Recipients": [
 +
    {
 +
      "Value": "user1"
 +
    },
 +
    {
 +
      "Value": "user10"
 +
    },
 +
    {
 +
      "Value": "user2"
 +
    },
 +
    {
 +
      "Value": "user3"
 +
    },
 +
    {
 +
      "Value": "user4"
 +
    },
 +
    {
 +
      "Value": "user5"
 +
    },
 +
    {
 +
      "Value": "user6"
 +
    },
 +
    {
 +
      "Value": "user7"
 +
    },
 +
    {
 +
      "Value": "user8"
 +
    },
 +
    {
 +
      "Value": "user9"
 +
    }
 +
  ],
 +
  "Limit": 50,
 +
  "Total": 10,
 +
  "Order": "asc"
 +
}
 +
</pre>
  
 +
==== Available Policy Recipients ====
  
''Errors'':
+
Available BookIn, RequestIn, and RequestOutOf policy recipients can all be accessed via the resourceOptions URL followed by <tt>/availableBookInPolicyRecipients</tt>, <tt>/availableRequestInPolicyRecipients</tt>, and <tt>/availableRequestOutOfRecipients</tt>, respectively. The example in this section will use BookInPolicy, but the interface for the three is all the same.
  
 
{| class="wikitable"
 
{| class="wikitable"
!''Description''
+
! Verb
!''HTTP Response Code''
+
| GET
!''Sample Message''
 
 
|-
 
|-
| Resource is not found
+
! URL Format
| 404
+
| /v1/customers/{customer account number}/domains/{domain name}/ex/resources/resourceOptions/availableBookInPolicyRecipients
| Resource not found
+
 
 +
/v1/customers/{customer account number}/domains/{domain name}/ex/resources/resourceOptions/availableRequestInPolicyRecipients
 +
 
 +
/v1/customers/{customer account number}/domains/{domain name}/ex/resources/resourceOptions/availableRequestOutOfRecipients
 
|-
 
|-
| Entity is found but it's not a resource mailbox
+
! Description
| 404
+
| Use this route to list recipients that can be in policies for a new resource on a given domain.
| Mailbox is not a resource.
 
 
|-
 
|-
| Admin is already on the resource admin list.
+
! Model
| 400
+
| [[#Recipient|Recipient]] Listing
| User is already on the resource admin list.
 
 
|}
 
|}
  
==== Delete Admin ====
 
  
''URL'':
+
<pre>
<nowiki>[DELETE] https://api.emailsrvr.com/v0/customers/(customer account number)/domains/(domain name)
+
Request:
        /ex/resources/(resource name)/admins/(admin name)</nowiki>
+
GET https://api.emailsrvr.com/v1/domains/example.com/ex/resourceOptions/availableBookInPolicyRecipients
  
 +
Response:
 +
200 OK
 +
{
 +
  "Recipients": [
 +
    {
 +
      "Value": "user1"
 +
    },
 +
    {
 +
      "Value": "user10"
 +
    },
 +
    {
 +
      "Value": "user2"
 +
    },
 +
    {
 +
      "Value": "user3"
 +
    },
 +
    {
 +
      "Value": "user4"
 +
    },
 +
    {
 +
      "Value": "user5"
 +
    },
 +
    {
 +
      "Value": "user6"
 +
    },
 +
    {
 +
      "Value": "user7"
 +
    },
 +
    {
 +
      "Value": "user8"
 +
    },
 +
    {
 +
      "Value": "user9"
 +
    }
 +
  ],
 +
  "Limit": 50,
 +
  "Total": 10,
 +
  "Order": "asc"
 +
}
 +
</pre>
 +
 +
=== Existing Resource Options ===
 +
 +
<tt><nowiki>https://api.emailsrvr.com/v1/domains/(domain)/ex/resource/(common name)/options</nowiki></tt> is the base URL for getting complete sets of valid data that can be submitted as part of an Exchange Resource edit operation.
 +
 +
==== Available Delegates Recipients ====
 +
 +
{| class="wikitable"
 +
! Verb
 +
| GET
 +
|-
 +
! URL Format
 +
| /v1/customers/{customer account number}/domains/{domain name}/ex/resources/resources/(common name)/AvailableDelegatesRecipients
 +
|-
 +
! Description
 +
| Use this route to list recipients that can be delegates for an existing resource
 +
|-
 +
! Model
 +
| [[#Recipient|Recipient]] Listing
 +
|}
 +
 +
<pre>
 +
Request:
 +
GET https://api.emailsrvr.com/v1/domains/example.com/ex/resources/room.101/options/AvailableDelegatesRecipients
  
''Description'':
+
Response:
 +
200 OK
 +
{
 +
  "Recipients": [
 +
    {
 +
      "Value": "user10"
 +
    },
 +
    {
 +
      "Value": "user4"
 +
    },
 +
    {
 +
      "Value": "user5"
 +
    },
 +
    {
 +
      "Value": "user6"
 +
    },
 +
    {
 +
      "Value": "user7"
 +
    },
 +
    {
 +
      "Value": "user8"
 +
    },
 +
    {
 +
      "Value": "user9"
 +
    }
 +
  ],
 +
  "Limit": 50,
 +
  "Total": 7,
 +
  "Order": "asc"
 +
}
 +
</pre>
  
Removes the admin from the resource.
+
==== Available Permissions Recipients ====
  
 +
{| class="wikitable"
 +
! Verb
 +
| GET
 +
|-
 +
! URL Format
 +
| /v1/customers/{customer account number}/domains/{domain name}/ex/resources/(common name)/AvailablePermissionsRecipients
 +
|-
 +
! Description
 +
| Use this route to list recipients that can have permissions for an existing resource
 +
|-
 +
! Model
 +
| [[#Recipient|Recipient]] Listing
 +
|}
  
''Example'':
 
 
<pre>
 
<pre>
delete '/customers/12345678/domains/example.com/ex/resources/conference.room/admins/john.smith', 'text/xml'
+
Request:
 +
GET https://api.emailsrvr.com/v1/domains/example.com/ex/resources/room.101/options/AvailablePermissionsRecipients
 +
 
 +
Response:
 +
{
 +
  "Recipients": [
 +
    {
 +
      "Value": "user1"
 +
    },
 +
    {
 +
      "Value": "user10"
 +
    },
 +
    {
 +
      "Value": "user2"
 +
    },
 +
    {
 +
      "Value": "user3"
 +
    },
 +
    {
 +
      "Value": "user4"
 +
    },
 +
    {
 +
      "Value": "user8"
 +
    },
 +
    {
 +
      "Value": "user9"
 +
    }
 +
  ],
 +
  "Limit": 50,
 +
  "Total": 7,
 +
  "Order": "asc"
 +
}
 
</pre>
 
</pre>
  
 +
==== Available Policy Recipients ====
  
''Errors'':
+
Available BookIn, RequestIn, and RequestOutOf policy recipients for an existing resource can all be accessed via the resource's URL followed by <tt>/availableBookInPolicyRecipients</tt>, <tt>/availableRequestInPolicyRecipients</tt>, and <tt>/availableRequestOutOfRecipients</tt>, respectively. The example in this section will use BookInPolicy, but the interface for the three is all the same.
  
 
{| class="wikitable"
 
{| class="wikitable"
!''Description''
+
! Verb
!''HTTP Response Code''
+
| GET
!''Sample Message''
 
 
|-
 
|-
| Resource is not found
+
! URL Format
| 404
+
| /v1/customers/{customer account number}/domains/{domain name}/ex/resources/resources/(common name)/availableBookInPolicyRecipients
| Resource not found
+
 
 +
/v1/customers/{customer account number}/domains/{domain name}/ex/resources/resources/(common name)/availableBookInPolicyRecipients
 +
 
 +
/v1/customers/{customer account number}/domains/{domain name}/ex/resources/resources/(common name)/availableBookInPolicyRecipients
 
|-
 
|-
| Entity is found but it's not a resource mailbox
+
! Description
| 404
+
| Use this route to list recipients that can be in policies for an existing resource
| Mailbox is not a resource.
 
 
|-
 
|-
| Admin is not found on the resource admin list.
+
! Model
| 400
+
| [[#Recipient|Recipient]] Listing
| User is not on the resource admin list.
 
 
|}
 
|}
 +
 +
<pre>
 +
Request:
 +
GET https://api.emailsrvr.com/v1/domains/example.com/ex/resources/room.101/options/availableBookInPolicyRecipients
 +
 +
Response:
 +
200 OK
 +
{
 +
  "Recipients": [
 +
    {
 +
      "Value": "user10"
 +
    },
 +
    {
 +
      "Value": "user3"
 +
    },
 +
    {
 +
      "Value": "user4"
 +
    },
 +
    {
 +
      "Value": "user5"
 +
    },
 +
    {
 +
      "Value": "user6"
 +
    },
 +
    {
 +
      "Value": "user7"
 +
    },
 +
    {
 +
      "Value": "user8"
 +
    },
 +
    {
 +
      "Value": "user9"
 +
    }
 +
  ],
 +
  "Limit": 50,
 +
  "Total": 8,
 +
  "Order": "asc"
 +
}
 +
</pre>

Latest revision as of 11:27, 23 September 2014

v1 - Current

This resource supports submitting and responding with both XML and JSON. (The v0 method of submitting data via form URL-encoded variables is NOT supported in v1.)

Data Model

(See Serialization)

Exchange Resource

Required for Create*

Operations:

This model extends Mailbox.

Field Name Data Type Verbs Description
Type* String GET, POST, PUT Room or Equipment
Upn String GET User Principal Name
ResourceCapacity Integer GET, POST, PUT e.g. The number of seats in a room.
CustomProperties Custom Properties array GET, POST, PUT User-defined properties (see below).
ResourceCalendarProcessing Calendar Processing GET, POST, PUT See examples below.
ResourceDelegates Delegate Array GET, POST, PUT See examples below.
ResourcePermissions Resource Permission Array GET, POST, PUT See examples below.
BookInPolicy Recipients GET, POST, PUT See examples below.
RequestInPolicy Recipients GET, POST, PUT See examples below.
RequestOutOfPolicy Recipients GET, POST, PUT See examples below.

Calendar Processing

Operations:

Field Name Data Type Description
AutoBooking String Must be "None", "AutoAccept", or "AutoUpdate"
BookingWindowInDays Integer >= 0
EnforceSchedulingHorizon Boolean
AllowRecurringMeetings Boolean
ScheduleOnlyDuringWorkHours Boolean
MaximumDurationInMinutes Integer >= 0
MaximumConflictInstances Integer >= 0
ConflictPercentageAllowed Integer Must be between 0 and 100.
AdditionalResponse Calendar Processing Additional Response Object See next object definition below.
Calendar Processing Additional Response
Field Name Data Type Description
Enable Boolean
Value String
Delegate

Operations:

Field Name Data Type Description
Value String Email Address
Action String Must be "Add" or "Remove". Only valid for PUT requests.
Permission

Operations:

Field Name Data Type Description
Recipient String Email Address
Permissions Permission Type Array Array of Permission Type (see below)
Permission Type
Field Name Data Type Description
Permission String Must be "FullAccess" or "SendAs".
Recipients

Operations:

Field Name Data Type Description
All Boolean
Recipients Recipient Array Array of Recipient (see below).
Recipient

Operations:

Field Name Data Type Description
Value String Email Address
Action String Must be "Add" or "Remove". Only valid for PUT requests.

List

Verb GET
URL Format /v1/customers/{customer account number}/domains/{domain name}/ex/resources/
Description Use this to list resource mailboxes, supports exporting, supports exporting. (see Listings)
Model Exchange Resource Listing

HTTP Codes

Code Condition
200 OK The listing was successfully retrieved.
400 Bad Request The request was invalid. Inspect the validationFault response for more detail.
404 Not Found The domain does not exist, the domain does not have Exchange, or the marker was not found. Inspect the itemNotFondFault for more detail.
Request:
GET https://api.emailsrvr.com/v1/domains/example.com/ex/resources

Response:
200 OK
{
  "ResourceMailboxes": [
    {
      "Type": "Room",
      "PhoneNumber": "1234567890",
      "Upn": "room.101@example.com",
      "ResourceCapacity": 25,
      "CustomProperties": [
        {
          "Value": "Videoconferencing",
          "ExchangeAction": 0
        },
        {
          "Value": "Whiteboard",
          "ExchangeAction": 0
        }
      ],
      "CommonName": "room.101",
      "DisplayName": "Room 101",
      "Alias": "room.101.example.com",
      "IsHiddenFromAddressList": false,
      "PrimarySmtpAddress": null,
      "EmailAddresses": null,
      "Status": "Ready",
      "LegacyExchangeDn": "/o=e14s/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=room.101b5c"
    },
    {
      "Type": "Room",
      "PhoneNumber": "1234567890",
      "Upn": "room.102@example.com",
      "ResourceCapacity": 25,
      "CustomProperties": [
        {
          "Value": "Videoconferencing",
          "ExchangeAction": 0
        },
        {
          "Value": "Whiteboard",
          "ExchangeAction": 0
        }
      ],
      "CommonName": "room.102",
      "DisplayName": "Room 101",
      "Alias": "room.102.example.com",
      "IsHiddenFromAddressList": false,
      "PrimarySmtpAddress": null,
      "EmailAddresses": null,
      "Status": "Ready",
      "LegacyExchangeDn": "/o=e14s/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=room.1029fd"
    },
    {
      "Type": "Room",
      "PhoneNumber": "1234567890",
      "Upn": "room.103@example.com",
      "ResourceCapacity": 25,
      "CustomProperties": [
        {
          "Value": "Videoconferencing",
          "ExchangeAction": 0
        },
        {
          "Value": "Whiteboard",
          "ExchangeAction": 0
        }
      ],
      "CommonName": "room.103",
      "DisplayName": "Room 103",
      "Alias": "room.103.example.com",
      "IsHiddenFromAddressList": false,
      "PrimarySmtpAddress": null,
      "EmailAddresses": null,
      "Status": "Ready",
      "LegacyExchangeDn": "/o=e14s/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=room.10370c"
    }
  ],
  "Sort": "cn",
  "Limit": 50,
  "Total": 3,
  "Order": "asc"
}

Resource

POSTS, PUTS, and DELETES support Asynchronous Statuses and Asynchronous Errors.

Create

Verb POST
URL Format /v1/customers/{customer account number}/domains/{domain name}/ex/resources/
Description Use this route to add a new resource mailbox.
Model Exchange Resource

HTTP Codes

Code Condition
204 No Content The request has been accepted and will be processed.
400 Bad Request The request was invalid. Inspect the validationFault response for more detail.
404 Not Found The domain does not exist, the domain does not have Exchange, or the marker was not found. Inspect the itemNotFondFault for more detail.
Request:
POST https://api.emailsrvr.com/v1/domains/example.com/ex/resources
{
  "CommonName": "room.101",
  "Type": "Room",
  "DisplayName": "Room 101",
  "PhoneNumber": "1234567890",
  "ResourceCapacity": 25,
  "CustomProperties": [
    {
      "Value": "Videoconferencing"
    },
    {
      "Value": "Whiteboard"
    }
  ],
  "CalendarProcessing": {
    "AutoBooking": "AutoUpdate",
    "BookingWindowInDays": 90,
    "EnforceSchedulingHorizon": false,
    "AllowConflicts": true,
    "AllowRecurringMeetings": false,
    "ScheduleOnlyDuringWorkHours": true,
    "MaximumDurationInMinutes": 720,
    "MaximumConflictInstances": 1,
    "ConflictPercentageAllowed": 50,
    "AdditionalResponse": {
      "Enable": true,
      "Value": "This is an additional response"
    }
  },
  "Delegates": [
    {
      "Value": "user1"
    },
    {
      "Value": "user2"
    },
    {
      "Value": "user3"
    }
  ],
  "Permissions": [
    {
      "Recipient": "user5",
      "Types": [
        "FullAccess"
      ]
    },
    {
      "Recipient": "user6",
      "Types": [
        "SendAs"
      ]
    },
    {
      "Recipient": "user7",
      "Types": [
        "FullAccess",
        "SendAs"
      ]
    }
  ],
  "BookInPolicy": {
    "Recipients": [
      {
        "Value": "user1"
      },
      {
        "Value": "user2"
      }
    ]
  },
  "RequestInPolicy": {
    "Recipients": [
      {
        "Value": "user4"
      },
      {
        "Value": "user5"
      }
    ]
  },
  "RequestOutOfPolicy": {
    "AllUsers": true
  }
}

Response:
204 No Content

Read

Verb GET
URL Format /v1/customers/{customer account number}/domains/{domain name}/ex/resources/(common name)
Description Use this route to read an existing resource mailbox.
Model Exchange Resource *

* Note: The Exchange Resource resource contains some paged data that must be accessed via separate GET requests. Properties directly on the object and CustomProperties, can be accessed via a GET on the base resource.

HTTP Codes

Code Condition
200 OK The resource was successfully retrieved.
400 Bad Request The request was invalid. Inspect the validationFault response for more detail.
404 Not Found The domain does not exist, the domain does not have Exchange, or the marker was not found. Inspect the itemNotFondFault for more detail.
Request:
GET https://api.emailsrvr.com/v1/domains/example.com/ex/resources/room.1


Response:
200 OK
{
  "Type": "Room",
  "PhoneNumber": "1234567890",
  "Upn": "room.101@example.com",
  "ResourceCapacity": 25,
  "CustomProperties": [
    {
      "Value": "Videoconferencing",
      "ExchangeAction": 0
    },
    {
      "Value": "Whiteboard",
      "ExchangeAction": 0
    }
  ],
  "CommonName": "room.101",
  "DisplayName": "Room 101",
  "Alias": "room.101.example.com",
  "IsHiddenFromAddressList": false,
  "PrimarySmtpAddress": null,
  "EmailAddresses": null,
  "Status": "Ready",
  "LegacyExchangeDn": "/o=e14s/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=room.1019d4"
}

Update

Verb PUT
URL Format /v1/customers/{customer account number}/domains/{domain name}/ex/resources/(common name)
Description Use this route to update an existing resource mailbox.
Model Exchange Resource

HTTP Codes

Code Condition
204 No Content The request has been accepted and will be processed.
400 Bad Request The request was invalid. Inspect the validationFault response for more detail.
404 Not Found The domain does not exist, the domain does not have Exchange, or the marker was not found. Inspect the itemNotFondFault for more detail.

All data that is part of the Exchange Resource resource can be updated in a single PUT request. CustomProperties, Delegates, and policies must specify an Action, set to either Add or Remove, to specify the operation for that value. Permissions must be specified in whole. For example, resource1@example.com has user5/tt>'s permission types set to <tt>FullAccess. To add SendAs, the request must contain both FullAccess and SendAs for that user. To remove all permissions from user7, the request must contain an empty Type array for that user.

Request:
PUT https://api.emailsrvr.com/v1/domains/example.com/ex/resources/room.101
{
  "Type": "Room",
  "DisplayName": "Conference Room 101",
  "PhoneNumber": "try shouting",
  "ResourceCapacity": "30",
  "CustomProperties": [
    {
      "Value": "Whiteboard",
      "Action": "Remove"
    }
  ],
  "CalendarProcessing": {
    "AutoBooking": "AutoUpdate",
    "BookingWindowInDays": 180,
    "EnforceSchedulingHorizon": true,
    "AllowConflicts": false,
    "AllowRecurringMeetings": true,
    "ScheduleOnlyDuringWorkHours": false,
    "MaximumDurationInMinutes": 1440,
    "MaximumConflictInstances": 0,
    "ConflictPercentageAllowed": 0,
    "AdditionalResponse": {
      "Enable": false
    }
  },
  "Delegates": [
    {
      "Value": "user3",
      "Action": "Remove"
    },
    {
      "Value": "user4",
      "Action": "Add"
    }
  ],
  "Permissions": [
    {
      "Recipient": "user5",
      "Types": [
        "FullAccess",
        "SendAs"
      ]
    },
    {
      "Recipient": "user7",
      "Types": []
    },
    {
      "Recipient": "user8",
      "Types": [
        "FullAccess"
      ]
    }
  ],
  "BookInPolicy": {
    "Recipients": [
      {
        "Value": "user2",
        "Action": "Remove"
      },
      {
        "Value": "user3",
        "Action": "Add"
      }
    ]
  },
  "RequestInPolicy": {
    "AllUsers": true
  },
  "RequestOutOfPolicy": {
    "AllUsers": false,
    "Recipients": [
      {
        "Value": "user7",
        "Action": "Add"
      },
      {
        "Value": "user8",
        "Action": "Add"
      }
    ]
  }
}


Response:
204 No Content

Delete

Verb DELETE
URL Format /v1/customers/{customer account number}/domains/{domain name}/ex/resources/(common name)
Description Use this route to delete a resource mailbox.
Model None

HTTP Codes

Code Condition
204 No Content The request has been accepted and will be processed.
400 Bad Request The request was invalid. Inspect the validationFault response for more detail.
404 Not Found The domain does not exist, the domain does not have Exchange, or the marker was not found. Inspect the itemNotFondFault for more detail.
Request:
DELETE https://api.emailsrvr.com/v1/domains/example.com/ex/resources/room.101


Response:
204 No Content

Export

Verb GET
URL Format /v1/customers/{customer account number}/domains/{domain name}/ex/resources?exportTo={your email address}
Description Use this route to export a file of resource mailboxes.
Model Exchange Resource Listing

HTTP Codes

Code Condition
202 Accepted The request has been accepted and will be processed.
400 Bad Request The request was invalid. Inspect the validationFault response for more detail.
404 Not Found The domain does not exist, the domain does not have Exchange, or the marker was not found. Inspect the itemNotFoundFault for more detail.
Request:
GET https://api.emailsrvr.com/v1/domains/example.com/ex/resources?exportTo=myAdminEmail@example.com

Response:
202 Accepted

Import

Verb POST
URL Format /v1/customers/{customer account number}/domains/{domain name}/ex/resources?emailAddress={your email address}
Description Use this route to import a file of resource mailboxes.
Model FileUrl (string), OverrideExisting (boolean)

HTTP Codes

Code Condition
202 Accepted The request has been accepted and will be processed.
400 Bad Request The request was invalid. Inspect the validationFault response for more detail.
404 Not Found The domain does not exist, the domain does not have Exchange, or the marker was not found. Inspect the itemNotFoundFault for more detail.

Instructions:

1. Create a CSV (comma-separated values) file containing the resource mailboxes you'd like to import. You can get a valid CSV file format by bulk-exporting your current resource mailboxes.

2. Upload the file to a public accessible URL (e.g. cloud-files, CDN, etc.)

3. Call this endpoint with the url of the file in the body.

4. The OverrideExisting field is optional and defaults to false. When true, any existing resource mailboxes will be modified to match the CSV file, including the removal of assets, permissions and delegates.

  • NOTE: The Capacity and PhoneNumber fields will be cleared out if left blank when OverrideExisting is true or false.

5. You will receive a confirmation email to the address specified in the URL when the import is complete. Any rows that were not able to be imported are available via a link provided in the confirmation email.

Request:
POST https://api.emailsrvr.com/v1/domains/example.com/ex/resources?emailAddress=myAdminEmail@example.com
{
    "FileUrl": "http://asdfasdfzxcvzxcvasdfasdf.cf1.rackcdn.com/MyResourceMailboxes.csv",
    "OverrideExisting": false
}
Response:
202 Accepted

Calendar Processing

Read
Verb GET
URL Format /v1/customers/{customer account number}/domains/{domain name}/ex/resources/(common name)/calendarProcessing
Description Use this route to read an existing resource mailbox's calendar processing data.
Model Calendar Processing

HTTP Codes

Code Condition
200 OK The data was successfully retrieved.
404 Not Found The domain does not exist, the domain does not have Exchange, or the resource was not found. Inspect the itemNotFondFault for more detail.


Request:
GET https://api.emailsrvr.com/v1/domains/example.com/ex/resources/room.101/calendarProcessing


Response:
200 OK
{
  "AutoBooking": "AutoUpdate",
  "BookingWindowInDays": 90,
  "EnforceSchedulingHorizon": false,
  "AllowConflicts": true,
  "AllowRecurringMeetings": false,
  "ScheduleOnlyDuringWorkHours": true,
  "MaximumDurationInMinutes": 720,
  "MaximumConflictInstances": 1,
  "ConflictPercentageAllowed": 50,
  "AdditionalResponse": {
    "Enable": true,
    "Value": "This is an additional response"
  }
}

Delegates

List
Verb GET
URL Format /v1/customers/{customer account number}/domains/{domain name}/ex/resources/(common name)/delegates
Description Use this route to list an existing resource mailbox's delegates data. (see Listings)
Model Delegates Listing

HTTP Codes

Code Condition
200 OK The data was successfully retrieved.
404 Not Found The domain does not exist, the domain does not have Exchange, or the resource was not found. Inspect the itemNotFondFault for more detail.
Request:
GET https://api.emailsrvr.com/v1/domains/example.com/ex/resources/room.101/delegates

Response:
200 OK
{
  "Delegates": [
    {
      "Value": "user1"
    },
    {
      "Value": "user2"
    },
    {
      "Value": "user3"
    }
  ],
  "Limit": 50,
  "Total": 3,
  "Order": "asc"
}

Permissions

List
Verb GET
URL Format /v1/customers/{customer account number}/domains/{domain name}/ex/resources/(common name)/permissions
Description Use this route to list an existing resource mailbox's permissions data. (see Listings)
Model Permission Listing

HTTP Codes

Code Condition
200 OK The data was successfully retrieved.
404 Not Found The domain does not exist, the domain does not have Exchange, or the resource was not found. Inspect the itemNotFondFault for more detail.
Request:
GET https://api.emailsrvr.com/v1/domains/example.com/ex/resources/room.101/permissions


Response:
200 OK
{
  "Permissions": [
    {
      "Recipient": "user5",
      "Types": [
        "FullAccess"
      ]
    },
    {
      "Recipient": "user6",
      "Types": [
        "SendAs"
      ]
    },
    {
      "Recipient": "user7",
      "Types": [
        "FullAccess",
        "SendAs"
      ]
    }
  ],
  "Limit": 50,
  "Total": 3,
  "Order": "asc"
}

Policies

BookIn, RequestIn, and RequestOutOf policies can all be accessed via the resource's URL followed by /bookInPolicy, /requestInPolicy, and /requestOutOfPolicy, respectively. Examples in this section will use BookInPolicy, but the interface for the three is all the same.

List
Verb GET
URL Format /v1/customers/{customer account number}/domains/{domain name}/ex/resources/(common name)/bookInPolicy

/v1/customers/{customer account number}/domains/{domain name}/ex/resources/(common name)/requestInPolicy

/v1/customers/{customer account number}/domains/{domain name}/ex/resources/(common name)/requestOutOfPolicy

Description Use this route to list an existing resource mailbox's policies data. (see Listings)
Model Recipient Listing

HTTP Codes

Code Condition
200 OK The data was successfully retrieved.
404 Not Found The domain does not exist, the domain does not have Exchange, or the resource was not found. Inspect the itemNotFondFault for more detail.
Request:
GET https://api.emailsrvr.com/v1/domains/example.com/ex/resources/room.101/bookInPolicy


Response:
{
  "Recipients": [
    {
      "Value": "user1"
    },
    {
      "Value": "user2"
    }
  ],
  "AllUsers":false,
  "Limit": 50,
  "Total": 2,
  "Order": "asc"
}

New Resource Options

https://api.emailsrvr.com/v1/domains/(domain)/ex/resourceOptions/ is the base URL for getting complete sets of valid data that can be submitted as part of an Exchange Resource add operation.

Available Delegates Recipients

Verb GET
URL Format /v1/customers/{customer account number}/domains/{domain name}/ex/resources/resourceOptions/AvailableDelegatesRecipients
Description Use this route to list recipients that can be delegates for a new resource on a given domain.
Model Recipient Listing
Request:
GET https://api.emailsrvr.com/v1/domains/example.com/ex/resourceOptions/AvailableDelegatesRecipients


Response:
200 OK
{
  "Recipients": [
    {
      "Value": "user1"
    },
    {
      "Value": "user10"
    },
    {
      "Value": "user2"
    },
    {
      "Value": "user3"
    },
    {
      "Value": "user4"
    },
    {
      "Value": "user5"
    },
    {
      "Value": "user6"
    },
    {
      "Value": "user7"
    },
    {
      "Value": "user8"
    },
    {
      "Value": "user9"
    }
  ],
  "Limit": 50,
  "Total": 10,
  "Order": "asc"
}

Available Permissions Recipients

Verb GET
URL Format /v1/customers/{customer account number}/domains/{domain name}/ex/resources/resourceOptions/AvailablePermissionsRecipients
Description Use this route to list recipients that can have permissions for a new resource on a given domain.
Model Recipient Listing
Request:
GET https://api.emailsrvr.com/v1/domains/example.com/ex/resourceOptions/AvailablePermissionsRecipients

Response:
{
  "Recipients": [
    {
      "Value": "user1"
    },
    {
      "Value": "user10"
    },
    {
      "Value": "user2"
    },
    {
      "Value": "user3"
    },
    {
      "Value": "user4"
    },
    {
      "Value": "user5"
    },
    {
      "Value": "user6"
    },
    {
      "Value": "user7"
    },
    {
      "Value": "user8"
    },
    {
      "Value": "user9"
    }
  ],
  "Limit": 50,
  "Total": 10,
  "Order": "asc"
}

Available Policy Recipients

Available BookIn, RequestIn, and RequestOutOf policy recipients can all be accessed via the resourceOptions URL followed by /availableBookInPolicyRecipients, /availableRequestInPolicyRecipients, and /availableRequestOutOfRecipients, respectively. The example in this section will use BookInPolicy, but the interface for the three is all the same.

Verb GET
URL Format /v1/customers/{customer account number}/domains/{domain name}/ex/resources/resourceOptions/availableBookInPolicyRecipients

/v1/customers/{customer account number}/domains/{domain name}/ex/resources/resourceOptions/availableRequestInPolicyRecipients

/v1/customers/{customer account number}/domains/{domain name}/ex/resources/resourceOptions/availableRequestOutOfRecipients

Description Use this route to list recipients that can be in policies for a new resource on a given domain.
Model Recipient Listing


Request:
GET https://api.emailsrvr.com/v1/domains/example.com/ex/resourceOptions/availableBookInPolicyRecipients

Response:
200 OK
{
  "Recipients": [
    {
      "Value": "user1"
    },
    {
      "Value": "user10"
    },
    {
      "Value": "user2"
    },
    {
      "Value": "user3"
    },
    {
      "Value": "user4"
    },
    {
      "Value": "user5"
    },
    {
      "Value": "user6"
    },
    {
      "Value": "user7"
    },
    {
      "Value": "user8"
    },
    {
      "Value": "user9"
    }
  ],
  "Limit": 50,
  "Total": 10,
  "Order": "asc"
}

Existing Resource Options

https://api.emailsrvr.com/v1/domains/(domain)/ex/resource/(common name)/options is the base URL for getting complete sets of valid data that can be submitted as part of an Exchange Resource edit operation.

Available Delegates Recipients

Verb GET
URL Format /v1/customers/{customer account number}/domains/{domain name}/ex/resources/resources/(common name)/AvailableDelegatesRecipients
Description Use this route to list recipients that can be delegates for an existing resource
Model Recipient Listing
Request:
GET https://api.emailsrvr.com/v1/domains/example.com/ex/resources/room.101/options/AvailableDelegatesRecipients

Response:
200 OK
{
  "Recipients": [
    {
      "Value": "user10"
    },
    {
      "Value": "user4"
    },
    {
      "Value": "user5"
    },
    {
      "Value": "user6"
    },
    {
      "Value": "user7"
    },
    {
      "Value": "user8"
    },
    {
      "Value": "user9"
    }
  ],
  "Limit": 50,
  "Total": 7,
  "Order": "asc"
}

Available Permissions Recipients

Verb GET
URL Format /v1/customers/{customer account number}/domains/{domain name}/ex/resources/(common name)/AvailablePermissionsRecipients
Description Use this route to list recipients that can have permissions for an existing resource
Model Recipient Listing
Request:
GET https://api.emailsrvr.com/v1/domains/example.com/ex/resources/room.101/options/AvailablePermissionsRecipients

Response:
{
  "Recipients": [
    {
      "Value": "user1"
    },
    {
      "Value": "user10"
    },
    {
      "Value": "user2"
    },
    {
      "Value": "user3"
    },
    {
      "Value": "user4"
    },
    {
      "Value": "user8"
    },
    {
      "Value": "user9"
    }
  ],
  "Limit": 50,
  "Total": 7,
  "Order": "asc"
}

Available Policy Recipients

Available BookIn, RequestIn, and RequestOutOf policy recipients for an existing resource can all be accessed via the resource's URL followed by /availableBookInPolicyRecipients, /availableRequestInPolicyRecipients, and /availableRequestOutOfRecipients, respectively. The example in this section will use BookInPolicy, but the interface for the three is all the same.

Verb GET
URL Format /v1/customers/{customer account number}/domains/{domain name}/ex/resources/resources/(common name)/availableBookInPolicyRecipients

/v1/customers/{customer account number}/domains/{domain name}/ex/resources/resources/(common name)/availableBookInPolicyRecipients

/v1/customers/{customer account number}/domains/{domain name}/ex/resources/resources/(common name)/availableBookInPolicyRecipients

Description Use this route to list recipients that can be in policies for an existing resource
Model Recipient Listing
Request:
GET https://api.emailsrvr.com/v1/domains/example.com/ex/resources/room.101/options/availableBookInPolicyRecipients

Response:
200 OK
{
  "Recipients": [
    {
      "Value": "user10"
    },
    {
      "Value": "user3"
    },
    {
      "Value": "user4"
    },
    {
      "Value": "user5"
    },
    {
      "Value": "user6"
    },
    {
      "Value": "user7"
    },
    {
      "Value": "user8"
    },
    {
      "Value": "user9"
    }
  ],
  "Limit": 50,
  "Total": 8,
  "Order": "asc"
}