[MS-SPEMAWS]:
SharePoint Email Web Service Protocol
Intellectual Property Rights Notice for Open Specifications Documentation
Technical Documentation. Microsoft publishes Open Specifications documentation (“this documentation”) for protocols, file formats, data portability, computer languages, and standards support. Additionally, overview documents cover inter-protocol relationships and interactions.
Copyrights. This documentation is covered by Microsoft copyrights. Regardless of any other terms that are contained in the terms of use for the Microsoft website that hosts this documentation, you can make copies of it in order to develop implementations of the technologies that are described in this documentation and can distribute portions of it in your implementations that use these technologies or in your documentation as necessary to properly document the implementation. You can also distribute in your implementation, with or without modification, any schemas, IDLs, or code samples that are included in the documentation. This permission also applies to any documents that are referenced in the Open Specifications documentation.
No Trade Secrets. Microsoft does not claim any trade secret rights in this documentation.
Patents. Microsoft has patents that might cover your implementations of the technologies described in the Open Specifications documentation. Neither this notice nor Microsoft's delivery of this documentation grants any licenses under those patents or any other Microsoft patents. However, a given Open Specifications document might be covered by the Microsoft Open Specifications Promise or the Microsoft Community Promise. If you would prefer a written license, or if the technologies described in this documentation are not covered by the Open Specifications Promise or Community Promise, as applicable, patent licenses are available by contacting .
Trademarks. The names of companies and products contained in this documentation might be covered by trademarks or similar intellectual property rights. This notice does not grant any licenses under those rights. For a list of Microsoft trademarks, visit
Fictitious Names. The example companies, organizations, products, domain names, email addresses, logos, people, places, and events that are depicted in this documentation are fictitious. No association with any real company, organization, product, domain name, email address, logo, person, place, or event is intended or should be inferred.
Reservation of Rights. All other rights are reserved, and this notice does not grant any rights other than as specifically described above, whether by implication, estoppel, or otherwise.
Tools. The Open Specifications documentation does not require the use of Microsoft programming tools or programming environments in order for you to develop an implementation. If you have access to Microsoft programming tools and environments, you are free to take advantage of them. Certain Open Specifications documents are intended for use in conjunction with publicly available standards specifications and network programming art and, as such, assume that the reader either is familiar with the aforementioned material or has immediate access to it.
Revision Summary
Date / Revision History / Revision Class / Comments4/4/2008 / 0.1 / New / Initial Availability
6/27/2008 / 1.0 / Major / Revised and edited the technical content
8/15/2008 / 1.01 / Editorial / Revised and edited the technical content
12/12/2008 / 1.02 / Editorial / Revised and edited the technical content
7/13/2009 / 1.03 / Major / Revised and edited the technical content
8/28/2009 / 1.04 / Editorial / Revised and edited the technical content
11/6/2009 / 1.05 / Editorial / Revised and edited the technical content
2/19/2010 / 2.0 / Minor / Updated the technical content
3/31/2010 / 2.01 / Editorial / Revised and edited the technical content
4/30/2010 / 2.02 / Editorial / Revised and edited the technical content
6/7/2010 / 2.03 / Editorial / Revised and edited the technical content
6/29/2010 / 2.04 / Minor / Clarified the meaning of the technical content.
7/23/2010 / 2.04 / None / No changes to the meaning, language, or formatting of the technical content.
9/27/2010 / 2.04 / None / No changes to the meaning, language, or formatting of the technical content.
11/15/2010 / 2.04 / None / No changes to the meaning, language, or formatting of the technical content.
12/17/2010 / 2.04 / None / No changes to the meaning, language, or formatting of the technical content.
3/18/2011 / 2.04 / None / No changes to the meaning, language, or formatting of the technical content.
6/10/2011 / 2.04 / None / No changes to the meaning, language, or formatting of the technical content.
1/20/2012 / 3.0 / Major / Significantly changed the technical content.
4/11/2012 / 3.0 / None / No changes to the meaning, language, or formatting of the technical content.
7/16/2012 / 3.0 / None / No changes to the meaning, language, or formatting of the technical content.
9/12/2012 / 3.0 / None / No changes to the meaning, language, or formatting of the technical content.
10/8/2012 / 3.1 / Minor / Clarified the meaning of the technical content.
2/11/2013 / 3.1 / None / No changes to the meaning, language, or formatting of the technical content.
7/30/2013 / 3.2 / Minor / Clarified the meaning of the technical content.
11/18/2013 / 3.2 / None / No changes to the meaning, language, or formatting of the technical content.
2/10/2014 / 3.2 / None / No changes to the meaning, language, or formatting of the technical content.
4/30/2014 / 3.3 / Minor / Clarified the meaning of the technical content.
7/31/2014 / 3.3 / None / No changes to the meaning, language, or formatting of the technical content.
10/30/2014 / 3.3 / None / No changes to the meaning, language, or formatting of the technical content.
3/16/2015 / 4.0 / Major / Significantly changed the technical content.
2/26/2016 / 5.0 / Major / Significantly changed the technical content.
7/15/2016 / 5.0 / None / No changes to the meaning, language, or formatting of the technical content.
9/14/2016 / 5.0 / None / No changes to the meaning, language, or formatting of the technical content.
Table of Contents
1Introduction
1.1Glossary
1.2References
1.2.1Normative References
1.2.2Informative References
1.3Overview
1.4Relationship to Other Protocols
1.5Prerequisites/Preconditions
1.6Applicability Statement
1.7Versioning and Capability Negotiation
1.8Vendor-Extensible Fields
1.9Standards Assignments
2Messages
2.1Transport
2.2Common Message Syntax
2.2.1Namespaces
2.2.2Messages
2.2.3Elements
2.2.4Complex Types
2.2.4.1ArrayOfString
2.2.4.2RequestInfo
2.2.4.3RequestResponse
2.2.5Simple Types
2.2.5.1ContactFlags
2.2.5.2DistributionGroupFlags
2.2.5.3guid
2.2.5.4RequestStatus
2.2.6Attributes
2.2.7Groups
2.2.8Attribute Groups
2.2.9Common Data Structures
3Protocol Details
3.1SharepointEmailWSSoap Server Details
3.1.1Abstract Data Model
3.1.2Timers
3.1.3Initialization
3.1.4Message Processing Events and Sequencing Rules
3.1.4.1ChangeContactsMembershipInDistributionGroup
3.1.4.1.1Messages
3.1.4.1.1.1ChangeContactsMembershipInDistributionGroupSoapIn
3.1.4.1.1.2ChangeContactsMembershipInDistributionGroupSoapOut
3.1.4.1.2Elements
3.1.4.1.2.1ChangeContactsMembershipInDistributionGroup
3.1.4.1.2.2ChangeContactsMembershipInDistributionGroupResponse
3.1.4.1.3Complex Types
3.1.4.1.4Simple Types
3.1.4.1.5Attributes
3.1.4.1.6Groups
3.1.4.1.7Attribute Groups
3.1.4.2ChangeUsersMembershipInDistributionGroup
3.1.4.2.1Messages
3.1.4.2.1.1ChangeUsersMembershipInDistributionGroupSoapIn
3.1.4.2.1.2ChangeUsersMembershipInDistributionGroupSoapOut
3.1.4.2.2Elements
3.1.4.2.2.1ChangeUsersMembershipInDistributionGroup
3.1.4.2.2.2ChangeUsersMembershipInDistributionGroupResponse
3.1.4.2.3Complex Types
3.1.4.2.4Simple Types
3.1.4.2.5Attributes
3.1.4.2.6Groups
3.1.4.2.7Attribute Groups
3.1.4.3CreateContact
3.1.4.3.1Messages
3.1.4.3.1.1CreateContactSoapIn
3.1.4.3.1.2CreateContactSoapOut
3.1.4.3.2Elements
3.1.4.3.2.1CreateContact
3.1.4.3.2.2CreateContactResponse
3.1.4.3.3Complex Types
3.1.4.3.4Simple Types
3.1.4.3.5Attributes
3.1.4.3.6Groups
3.1.4.3.7Attribute Groups
3.1.4.4CreateDistributionGroup
3.1.4.4.1Messages
3.1.4.4.1.1CreateDistributionGroupSoapIn
3.1.4.4.1.2CreateDistributionGroupSoapOut
3.1.4.4.2Elements
3.1.4.4.2.1CreateDistributionGroup
3.1.4.4.2.2CreateDistributionGroupResponse
3.1.4.4.3Complex Types
3.1.4.4.4Simple Types
3.1.4.4.5Attributes
3.1.4.4.6Groups
3.1.4.4.7Attribute Groups
3.1.4.5DeleteContact
3.1.4.5.1Messages
3.1.4.5.1.1DeleteContactSoapIn
3.1.4.5.1.2DeleteContactSoapOut
3.1.4.5.2Elements
3.1.4.5.2.1DeleteContact
3.1.4.5.2.2DeleteContactResponse
3.1.4.5.3Complex Types
3.1.4.5.4Simple Types
3.1.4.5.5Attributes
3.1.4.5.6Groups
3.1.4.5.7Attribute Groups
3.1.4.6DeleteDistributionGroup
3.1.4.6.1Messages
3.1.4.6.1.1DeleteDistributionGroupSoapIn
3.1.4.6.1.2DeleteDistributionGroupSoapOut
3.1.4.6.2Elements
3.1.4.6.2.1DeleteDistributionGroup
3.1.4.6.2.2DeleteDistributionGroupResponse
3.1.4.6.3Complex Types
3.1.4.6.4Simple Types
3.1.4.6.5Attributes
3.1.4.6.6Groups
3.1.4.6.7Attribute Groups
3.1.4.7GetJobStatus
3.1.4.7.1Messages
3.1.4.7.1.1GetJobStatusSoapIn
3.1.4.7.1.2GetJobStatusSoapOut
3.1.4.7.2Elements
3.1.4.7.2.1GetJobStatus
3.1.4.7.2.2GetJobStatusResponse
3.1.4.7.3Complex Types
3.1.4.7.4Simple Types
3.1.4.7.5Attributes
3.1.4.7.6Groups
3.1.4.7.7Attribute Groups
3.1.4.8ModifyContact
3.1.4.8.1Messages
3.1.4.8.1.1ModifyContactSoapIn
3.1.4.8.1.2ModifyContactSoapOut
3.1.4.8.2Elements
3.1.4.8.2.1ModifyContact
3.1.4.8.2.2ModifyContactResponse
3.1.4.8.3Complex Types
3.1.4.8.4Simple Types
3.1.4.8.5Attributes
3.1.4.8.6Groups
3.1.4.8.7Attribute Groups
3.1.4.9ModifyDistributionGroup
3.1.4.9.1Messages
3.1.4.9.1.1ModifyDistributionGroupSoapIn
3.1.4.9.1.2ModifyDistributionGroupSoapOut
3.1.4.9.2Elements
3.1.4.9.2.1ModifyDistributionGroup
3.1.4.9.2.2ModifyDistributionGroupResponse
3.1.4.9.3Complex Types
3.1.4.9.4Simple Types
3.1.4.9.5Attributes
3.1.4.9.6Groups
3.1.4.9.7Attribute Groups
3.1.4.10RenameDistributionGroup
3.1.4.10.1Messages
3.1.4.10.1.1RenameDistributionGroupSoapIn
3.1.4.10.1.2RenameDistributionGroupSoapOut
3.1.4.10.2Elements
3.1.4.10.2.1RenameDistributionGroup
3.1.4.10.2.2RenameDistributionGroupResponse
3.1.4.10.3Complex Types
3.1.4.10.4Simple Types
3.1.4.10.5Attributes
3.1.4.10.6Groups
3.1.4.10.7Attribute Groups
3.1.5Timer Events
3.1.6Other Local Events
4Protocol Examples
4.1Create and Add a User to a Distribution List
4.1.1Create a Distribution List
4.1.2Add a User to a Distribution List
4.2Create and Add a Contact to a Distribution List
4.2.1Create a Contact
4.2.2Add a Contact to a Distribution List
4.3Modify a Contact
4.4Remove a Contact and Rename a Distribution List
4.4.1Remove a Contact from a Distribution List
4.4.2Delete a Contact
4.4.3Change the Name of a Distribution List
4.5Modify a Distribution List
4.6Delete a Distribution List
4.7Check the Status of a Deletion Request
4.7.1Delete a Distribution List
4.7.2Check the Status of a Job
5Security
5.1Security Considerations for Implementers
5.2Index of Security Parameters
6Appendix A: Full WSDL
7Appendix B: Product Behavior
8Change Tracking
9Index
1Introduction
The SharePoint Email Web Service Protocol is a SOAP-based protocol that enables system administrators to manage information about contacts and groups of contacts that are controlled by Active Directory Domain Services (AD DS) or a directory service that is compatible with AD DS. This protocol also enables system administrators to query the status of operations that are defined by this protocol.
Sections 1.5, 1.8, 1.9, 2, and 3 of this specification are normative. All other sections and examples in this specification are informative.
1.1Glossary
This document uses the following terms:
Active Directory Domain Services (AD DS): A directory service (DS) implemented by a domain controller (DC). The DS provides a data store for objects that is distributed across multiple DCs. The DCs interoperate as peers to ensure that a local change to an object replicates correctly across DCs. For more information, see [MS-AUTHSOD] section 1.1.1.5.2 and [MS-ADTS]. For information about product versions, see [MS-ADTS] section 1. See also Active Directory.
authenticated user: A built-in security group specified in [MS-WSO] whose members include all users that can be authenticated by a computer.
contact: A person, company, or other entity that is stored in a directory and is associated with one or more unique identifiers and attributes (2), such as an Internet message address or login name.
directory service (DS): A service that stores and organizes information about a computer network's users and network shares, and that allows network administrators to manage users' access to the shares. See also Active Directory.
distribution list: A collection of users, computers, contacts, or other groups that is used only for email distribution, and addressed as a single recipient.
domain account: A stored set of attributes (2) representing a principal used to authenticate a user or machine to an Active Directory domain.
email address: A string that identifies a user and enables the user to receive Internet messages.
email alias: A string which is the local-part of a mailbox as specified in [RFC2821].
endpoint: A communication port that is exposed by an application server for a specific shared service and to which messages can be addressed.
globally unique identifier (GUID): A term used interchangeably with universally unique identifier (UUID) in Microsoft protocol technical documents (TDs). Interchanging the usage of these terms does not imply or require a specific algorithm or mechanism to generate the value. Specifically, the use of this term does not imply or require that the algorithms described in [RFC4122] or [C706] must be used for generating the GUID. See also universally unique identifier (UUID).
Hypertext Transfer Protocol (HTTP): An application-level protocol for distributed, collaborative, hypermedia information systems (text, graphic images, sound, video, and other multimedia files) on the World Wide Web.
Hypertext Transfer Protocol Secure (HTTPS): An extension of HTTP that securely encrypts and decrypts web page requests. In some older protocols, "Hypertext Transfer Protocol over Secure Sockets Layer" is still used (Secure Sockets Layer has been deprecated). For more information, see [SSL3] and [RFC5246].
SOAP: A lightweight protocol for exchanging structured information in a decentralized, distributed environment. SOAP uses XML technologies to define an extensible messaging framework, which provides a message construct that can be exchanged over a variety of underlying protocols. The framework has been designed to be independent of any particular programming model and other implementation-specific semantics. SOAP 1.2 supersedes SOAP 1.1. See [SOAP1.2-1/2003].
SOAP action: The HTTP request header field used to indicate the intent of the SOAP request, using a URI value. See [SOAP1.1] section 6.1.1 for more information.
SOAP body: A container for the payload data being delivered by a SOAP message to its recipient. See [SOAP1.2-1/2007] section 5.3 for more information.
SOAP fault: A container for error and status information within a SOAP message. See [SOAP1.2-1/2007] section 5.4 for more information.
XML namespace: A collection of names that is used to identify elements, types, and attributes in XML documents identified in a URI reference [RFC3986]. A combination of XML namespace and local name allows XML documents to use elements, types, and attributes that have the same names but come from different sources. For more information, see [XMLNS-2ED].
MAY, SHOULD, MUST, SHOULD NOT, MUST NOT: These terms (in all caps) are used as defined in [RFC2119]. All statements of optional behavior use either MAY, SHOULD, or SHOULD NOT.
1.2References
Links to a document in the Microsoft Open Specifications library point to the correct section in the most recently published version of the referenced document. However, because individual documents in the library are not updated at the same time, the section numbers in the documents may not match. You can confirm the correct section numbering by checking the Errata.
1.2.1Normative References
We conduct frequent surveys of the normative references to assure their continued availability. If you have any issue with finding a normative reference, please contact . We will assist you in finding the relevant information.
[MS-ADA1] Microsoft Corporation, "Active Directory Schema Attributes A-L".
[MS-ADA3] Microsoft Corporation, "Active Directory Schema Attributes N-Z".
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997,
[RFC2616] Fielding, R., Gettys, J., Mogul, J., et al., "Hypertext Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999,
[SOAP1.1] Box, D., Ehnebuske, D., Kakivaya, G., et al., "Simple Object Access Protocol (SOAP) 1.1", May 2000,
[SOAP1.2/1] Gudgin, M., Hadley, M., Mendelsohn, N., Moreau, J., and Nielsen, H.F., "SOAP Version 1.2 Part 1: Messaging Framework", W3C Recommendation, June 2003,
[SOAP1.2/2] Gudgin, M., Hadley, M., Mendelsohn, N., Moreau, J., and Nielsen, H.F., "SOAP Version 1.2 Part 2: Adjuncts", W3C Recommendation, June 2003,
[WSDL] Christensen, E., Curbera, F., Meredith, G., and Weerawarana, S., "Web Services Description Language (WSDL) 1.1", W3C Note, March 2001,
[XMLNS] Bray, T., Hollander, D., Layman, A., et al., Eds., "Namespaces in XML 1.0 (Third Edition)", W3C Recommendation, December 2009,
[XMLSCHEMA1] Thompson, H., Beech, D., Maloney, M., and Mendelsohn, N., Eds., "XML Schema Part 1: Structures", W3C Recommendation, May 2001,
[XMLSCHEMA2] Biron, P.V., Ed. and Malhotra, A., Ed., "XML Schema Part 2: Datatypes", W3C Recommendation, May 2001,
1.2.2Informative References
None.
1.3Overview
This protocol enables system administrators to manage contacts and groups of contacts that are controlled by either Active Directory Domain Services (AD DS) or a directory service (DS) that is compatible with AD DS. System administrators can use this protocol to do the following:
Create, modify, and delete contacts.
Add, update, and remove contacts from existing groups of contacts, which are referred to as distribution lists.
Create, update, and delete distribution lists.
Check the status of operations that are defined by this protocol.
Integrate a protocol server with AD DS.
1.4Relationship to Other Protocols
This protocol uses the SOAP message protocol for formatting request and response messages, as described in [SOAP1.1], [SOAP1.2/1] and [SOAP1.2/2]. It transmits those messages by using HTTP, as described in [RFC2616], or Hypertext Transfer Protocol over Secure Sockets Layer (HTTPS), as described in [RFC2818].
The following diagram shows the underlying messaging and transport stack used by the protocol:
Figure 1: This protocol in relation to other protocols
1.5Prerequisites/Preconditions
This protocol operates against a site that is identified by a URL that is known by protocol clients. The protocol server endpoint is formed by appending "/_vti_bin/SharepointEmailWS.asmx" to the URL of the site, for example "
This protocol assumes that authentication has been performed by the underlying protocols.
1.6Applicability Statement
This protocol is designed to enable a protocol client to create, modify, or delete contacts and distribution lists that are controlled by either AD DS or a DS that is compatible with AD DS. It also enables a protocol server to require external approval for operations that are defined by this protocol.
This protocol does not enable a protocol client to query the state of a DS.
1.7Versioning and Capability Negotiation
This protocol uses multiple transports as specified in section 2.1.
1.8Vendor-Extensible Fields
None.
1.9Standards Assignments
None.
2Messages
2.1Transport
Protocol servers MUST support Simple Object Access Protocol (SOAP) over Hypertext Transfer Protocol (HTTP). Protocol servers SHOULD additionally support SOAP over Hypertext Transfer Protocol over Secure Sockets Layer (HTTPS) to help secure communications with protocol clients.
Protocol messages MUST be formatted as specified in either [SOAP1.1] section 4 or [SOAP1.2/1] section 5. Server faults MUST be returned by using either HTTP status codes, as specified in [RFC2616] section 10, or SOAP faults, as specified in [SOAP1.1] section 4.4 or [SOAP1.2/1] section 5.4.
2.2Common Message Syntax
This section contains common definitions that are used by this protocol. The syntax of the definitions uses XML schema, as specified in [XMLSCHEMA1] and [XMLSCHEMA2], and WSDL, as specified in [WSDL].
2.2.1Namespaces
This specification defines and references various XML namespaces using the mechanisms specified in [XMLNS]. Although this specification associates a specific XML namespace prefix for each XML namespace that is used, the choice of any particular XML namespace prefix is implementation-specific and not significant for interoperability. These namespaces are described in the following table.
Prefix / Namespace URI / ReferenceSoap / / [SOAP1.1]
Tns /
s1 /
S / / [XMLSCHEMA1]
[XMLSCHEMA2]
soap12 / / [SOAP1.2/1]
[SOAP1.2/2]
Wsdl / / [WSDL]
2.2.2Messages
This specification does not define any common WSDL message definitions.
2.2.3Elements
This specification does not define any common XML schema element definitions.
2.2.4Complex Types
The following table summarizes the set of common XML schema complex type definitions defined by this specification. XML schema complex type definitions that are specific to a particular operation are described with the operation.
Complex type / DescriptionArrayOfString / Stores an array of strings.
RequestInfo / Specifies information about a request to create, modify, or delete a distribution list.
RequestResponse / Contains return information for a request.
2.2.4.1ArrayOfString
The ArrayOfString complex type contains an array of string values. It is used by the ChangeContactsMembershipInDistributionGroup (section 3.1.4.1) and ChangeUsersMembershipInDistributionGroup (section 3.1.4.2) operations.
<s:complexType name="ArrayOfString">
<s:sequence>
<s:element name="string" type="s:string" nillable="true" minOccurs="0" maxOccurs="unbounded" />
</s:sequence>
</s:complexType>
string: A string variable that contains email aliases of the contacts or domain accounts for the users.
2.2.4.2RequestInfo
The RequestInfo complex type contains information about a request to create, modify, or delete a distribution list. It is used by the following operations:
CreateDistributionGroup (section 3.1.4.4)
DeleteDistributionGroup (section 3.1.4.6)
ModifyDistributionGroup (section 3.1.4.9)
RenameDistributionGroup (section 3.1.4.10)
<s:complexType name="RequestInfo">
<s:sequence>
<s:element name="RequestorEmail" type="s:string" />
<s:element name="Justification" type="s:string" minOccurs="0" />
<s:element name="RequestId" type="s1:guid" />
</s:sequence>
</s:complexType>
RequestorEmail: The e-mail address of the user who is attempting to create, modify, or delete the distribution list. This value MUST be 255 or fewer characters. Additional limitations on this value are defined in [MS-ADA1] section 2.110.
Justification: The requestor's reasons for making the request. This value MUST be 4,000 or fewer characters.
RequestId: A GUID that identifies the request. This value MUST be ignored by the protocol server.
2.2.4.3RequestResponse
The RequestResponse complex type specifies return information for a request. It is used by the following operations:
CreateDistributionGroup (section 3.1.4.4)
DeleteDistributionGroup (section 3.1.4.6)
GetJobStatus (section 3.1.4.7)
ModifyDistributionGroup (section 3.1.4.9)
RenameDistributionGroup (section 3.1.4.10)
<s:complexType name="RequestResponse">
<s:sequence>
<s:element name="JobID" type="s:int" />
<s:element name="Comment" type="s:string" minOccurs="0" />
<s:element name="JobStatus" type="tns:RequestStatus" />
<s:element name="Alias" type="s:string" minOccurs="0" />
</s:sequence>
</s:complexType>
JobID: An integer that identifies a newly created job or an existing job whose status is being retrieved by the GetJobStatus operation. If a new job was created, this value MUST be greater than 0. If the job creation failed and JobStatus equals AccessDenied, this value MUST be -1. Otherwise, if the job creation failed or the request was automatically approved, this value MUST be 0.
Comment: A string that contains additional information about the request.
JobStatus: A RequestStatus simple type (section 2.2.5.4) that contains the status of the request.
Alias: The e-mail alias of the contact or distribution list that the request applies to.
2.2.5Simple Types
The following table summarizes the set of common XML schema simple type definitions defined by this specification. XML schema simple type definitions that are specific to a particular operation are described with the operation.