[MS-FSSHTTP]:

File Synchronization via SOAP over HTTP 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 .

§  License Programs. To see all of the protocols in scope under a specific license program and the associated patents, visit the Patent Map.

§  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 www.microsoft.com/trademarks.

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

Support. For questions and support, please contact .

Revision Summary

Date / Revision History / Revision Class / Comments /
7/13/2009 / 0.1 / Major / Initial Availability
8/28/2009 / 0.2 / Editorial / Revised and edited the technical content
11/6/2009 / 0.3 / Editorial / Revised and edited the technical content
2/19/2010 / 1.0 / Major / Updated and revised the technical content
3/31/2010 / 1.01 / Editorial / Revised and edited the technical content
4/30/2010 / 1.02 / Editorial / Revised and edited the technical content
6/7/2010 / 1.03 / Editorial / Revised and edited the technical content
6/29/2010 / 1.04 / Editorial / Changed language and formatting in the technical content.
7/23/2010 / 1.05 / Minor / Clarified the meaning of the technical content.
9/27/2010 / 1.06 / Editorial / Changed language and formatting in the technical content.
11/15/2010 / 1.06 / None / No changes to the meaning, language, or formatting of the technical content.
12/17/2010 / 1.06 / None / No changes to the meaning, language, or formatting of the technical content.
3/18/2011 / 1.06 / None / No changes to the meaning, language, or formatting of the technical content.
6/10/2011 / 1.06 / None / No changes to the meaning, language, or formatting of the technical content.
1/20/2012 / 2.0 / Major / Significantly changed the technical content.
4/11/2012 / 2.0 / None / No changes to the meaning, language, or formatting of the technical content.
7/16/2012 / 2.1 / Minor / Clarified the meaning of the technical content.
9/12/2012 / 2.1 / None / No changes to the meaning, language, or formatting of the technical content.
10/8/2012 / 2.2 / Minor / Clarified the meaning of the technical content.
2/11/2013 / 3.0 / Major / Significantly changed the technical content.
7/30/2013 / 3.1 / Minor / Clarified the meaning of the technical content.
11/18/2013 / 3.2 / Minor / Clarified the meaning of the technical content.
2/10/2014 / 3.3 / Minor / Clarified the meaning of the technical content.
4/30/2014 / 3.4 / Minor / Clarified the meaning of the technical content.
7/31/2014 / 3.5 / Minor / Clarified the meaning of the technical content.
10/30/2014 / 3.6 / Minor / Clarified the meaning of the technical content.
3/16/2015 / 4.0 / Major / Significantly changed the technical content.
6/30/2015 / 5.0 / Major / Significantly changed the technical content.
2/26/2016 / 6.0 / Major / Significantly changed the technical content.
4/14/2016 / 7.0 / Major / Significantly changed the technical content.
7/15/2016 / 7.0 / None / No changes to the meaning, language, or formatting of the technical content.
8/23/2016 / 7.0 / None / No changes to the meaning, language, or formatting of the technical content.
9/7/2016 / 7.1 / Minor / Clarified the meaning of the technical content.
12/15/2016 / 7.2 / Minor / Clarified the meaning of the technical content.
3/28/2017 / 8.0 / Major / Significantly changed the technical content.
6/20/2017 / 9.0 / Major / Significantly changed the technical content.
9/19/2017 / 9.1 / Minor / Clarified the meaning of the technical content.

Table of Contents

1 Introduction 9

1.1 Glossary 9

1.2 References 10

1.2.1 Normative References 10

1.2.2 Informative References 11

1.3 Overview 11

1.4 Relationship to Other Protocols 13

1.5 Prerequisites/Preconditions 14

1.6 Applicability Statement 14

1.7 Versioning and Capability Negotiation 14

1.8 Vendor-Extensible Fields 14

1.9 Standards Assignments 14

2 Messages 15

2.1 Transport 15

2.2 Common Message Syntax 15

2.2.1 Namespaces 15

2.2.2 Messages 15

2.2.2.1 Request 16

2.2.2.2 Response 16

2.2.2.3 SOAP Fault 17

2.2.3 Elements 17

2.2.3.1 Include 18

2.2.3.2 Request 18

2.2.3.3 RequestCollection 22

2.2.3.4 RequestVersion 22

2.2.3.5 Response 23

2.2.3.6 ResponseCollection 24

2.2.3.7 ResponseVersion 24

2.2.3.8 SubRequest 25

2.2.3.9 SubRequestData 25

2.2.3.10 SubResponse 25

2.2.3.11 SubResponseData 25

2.2.4 Complex Types 26

2.2.4.1 GenericPropertiesType 26

2.2.4.2 PropertyType 26

2.2.4.3 SubRequestDataGenericType 27

2.2.4.4 SubRequestElementGenericType 28

2.2.4.5 SubRequestType 30

2.2.4.6 SubResponseDataGenericType 30

2.2.4.7 SubResponseElementGenericType 32

2.2.4.8 SubResponseType 34

2.2.4.9 VersionType 35

2.2.5 Simple Types 35

2.2.5.1 CoauthStatusType 37

2.2.5.2 DependencyCheckRelatedErrorCodeTypes 37

2.2.5.3 DependencyTypes 38

2.2.5.4 ErrorCodeTypes 39

2.2.5.5 ExclusiveLockReturnReasonTypes 39

2.2.5.6 GenericErrorCodeTypes 40

2.2.5.7 GUID 42

2.2.5.8 LockAndCoauthRelatedErrorCodeTypes 42

2.2.5.9 LockTypes 44

2.2.5.10 MinorVersionNumberType 45

2.2.5.11 SubRequestAttributeType 46

2.2.5.12 TRUEFALSE 47

2.2.5.13 VersionNumberType 48

2.2.5.14 NewEditorsTableCategoryErrorCodeTypes 48

2.2.5.15 FileVersionNumberType 49

2.2.5.16 VersioningRelatedErrorCodeTypes 49

2.2.6 Attributes 49

2.2.7 Groups 49

2.2.8 Attribute Groups 49

2.2.8.1 SubRequestDataOptionalAttributes 50

2.2.8.2 SubResponseDataOptionalAttributes 52

2.2.9 Common Data Structures 54

2.3 Subsidiary Message Syntax 54

2.3.1 Complex Types 54

2.3.1.1 CellSubRequestDataType 57

2.3.1.2 CellSubRequestType 58

2.3.1.3 CellSubResponseDataType 58

2.3.1.4 CellSubResponseType 59

2.3.1.5 CoauthSubRequestDataType 59

2.3.1.6 CoauthSubRequestType 61

2.3.1.7 CoauthSubResponseDataType 61

2.3.1.8 CoauthSubResponseType 62

2.3.1.9 ExclusiveLockSubRequestDataType 63

2.3.1.10 ExclusiveLockSubRequestType 64

2.3.1.11 ExclusiveLockSubResponseDataType 64

2.3.1.12 ExclusiveLockSubResponseType 65

2.3.1.13 SchemaLockSubRequestDataType 65

2.3.1.14 SchemaLockSubRequestType 67

2.3.1.15 SchemaLockSubResponseDataType 67

2.3.1.16 SchemaLockSubResponseType 67

2.3.1.17 ServerTimeSubRequestType 68

2.3.1.18 ServerTimeSubResponseDataType 68

2.3.1.19 ServerTimeSubResponseType 69

2.3.1.20 WhoAmISubRequestType 69

2.3.1.21 WhoAmISubResponseDataType 69

2.3.1.22 WhoAmISubResponseType 70

2.3.1.23 EditorsTableSubRequestDataType 70

2.3.1.24 EditorsTableSubRequestType 71

2.3.1.25 EditorsTableSubResponseType 72

2.3.1.26 GetDocMetaInfoSubRequestType 72

2.3.1.27 GetDocMetaInfoSubResponseDataType 73

2.3.1.28 GetDocMetaInfoPropertySetType 73

2.3.1.29 GetDocMetaInfoPropertyType 73

2.3.1.30 GetDocMetaInfoSubResponseType 74

2.3.1.31 GetVersionsSubRequestType 74

2.3.1.32 GetVersionsSubResponseType 74

2.3.1.33 FileOperationSubRequestDataType 75

2.3.1.34 FileOperationSubRequestType 75

2.3.1.35 FileOperationSubResponseType 76

2.3.1.36 VersioningSubRequestDataType 76

2.3.1.37 VersioningSubRequestType 77

2.3.1.38 VersioningSubResponseDataType 77

2.3.1.39 VersioningSubResponseType 78

2.3.1.40 VersioningUserTableType 78

2.3.1.41 VersioningVersionListType 78

2.3.1.42 UserDataType 79

2.3.1.43 FileVersionDataType 79

2.3.1.44 FileVersionEventDataType 80

2.3.1.45 AmIAloneSubRequestDataType 80

2.3.1.46 AmIAloneSubRequestType 81

2.3.1.47 AmIAloneSubResponseDataType 81

2.3.1.48 AmIAloneSubResponseType 81

2.3.1.49 LockStatusSubRequestType 82

2.3.1.50 LockStatusSubResponseDataType 82

2.3.1.51 LockStatusSubResponseType 82

2.3.1.52 PropertiesSubRequestDataType 83

2.3.1.53 PropertiesSubRequestType 83

2.3.1.54 PropertiesSubResponseDataType 84

2.3.1.55 PropertiesSubResponseType 84

2.3.1.56 PropertyIdsType 84

2.3.1.57 PropertyIdType 85

2.3.1.58 PropertyValuesType 85

2.3.1.59 PropertyValueType 85

2.3.2 Simple Types 85

2.3.2.1 CellRequestErrorCodeTypes 86

2.3.2.2 CoauthRequestTypes 87

2.3.2.3 ExclusiveLockRequestTypes 88

2.3.2.4 SchemaLockRequestTypes 88

2.3.2.5 EditorsTableRequestTypes 89

2.3.2.6 UserLoginType 90

2.3.2.7 UserNameType 90

2.3.2.8 FileOperationRequestTypes 90

2.3.2.9 VersioningRequestTypes 91

2.3.2.10 PropertiesRequestTypes 91

2.3.3 Attribute Groups 92

2.3.3.1 CellSubRequestDataOptionalAttributes 92

2.3.3.2 CellSubResponseDataOptionalAttributes 94

2.3.3.3 CoauthSubRequestDataOptionalAttributes 95

2.3.3.4 ExclusiveLockSubRequestDataOptionalAttributes 97

2.3.3.5 SchemaLockSubRequestDataOptionalAttributes 98

2.3.3.6 WhoAmISubResponseDataOptionalAttributes 99

2.3.3.7 EditorsTableSubRequestDataOptionalAttributes 99

2.3.3.8 FileOperationSubRequestDataOptionalAttributes 100

2.3.3.9 VersioningSubRequestDataOptionalAttributes 101

2.3.3.10 PropertiesSubRequestDataOptionalAttributes 101

3 Protocol Details 103

3.1 Server Details 103

3.1.1 Abstract Data Model 103

3.1.2 Timers 103

3.1.3 Initialization 103

3.1.4 Message Processing Events and Sequencing Rules 103

3.1.4.1 Common Message Processing Rules and Events 104

3.1.4.2 Cell Subrequest 105

3.1.4.3 Coauth Subrequest 107

3.1.4.3.1 Join Coauthoring Session 109

3.1.4.3.2 Exit Coauthoring Session 110

3.1.4.3.3 Refresh Coauthoring Session 110

3.1.4.3.4 Convert to Exclusive Lock 111

3.1.4.3.5 Check Lock Availability 112

3.1.4.3.6 Mark Transition to Complete 112

3.1.4.3.7 Get Coauthoring Session 113

3.1.4.4 SchemaLock Subrequest 114

3.1.4.4.1 Get Lock 116

3.1.4.4.2 Release Lock 116

3.1.4.4.3 Refresh Lock 117

3.1.4.4.4 Convert to Exclusive Lock 118

3.1.4.4.5 Check Lock Availability 118

3.1.4.5 ExclusiveLock Subrequest 119

3.1.4.5.1 Get Lock 120

3.1.4.5.2 Release Lock 120

3.1.4.5.3 Refresh Lock 121

3.1.4.5.4 Convert to Schema Lock with Coauthoring Transition Tracked 121

3.1.4.5.5 Convert to Schema Lock 123

3.1.4.5.6 Check Lock Availability 124

3.1.4.6 WhoAmI Subrequest 124

3.1.4.7 ServerTime Subrequest 125

3.1.4.8 EditorsTable Subrequest 125

3.1.4.8.1 Join Editing Session 126

3.1.4.8.2 Leave Editing Session 127

3.1.4.8.3 Refresh Editing Session 127

3.1.4.8.4 Update Editor Metadata 127

3.1.4.8.5 Remove Editor Metadata 127

3.1.4.9 GetDocMetaInfo Subrequest 127

3.1.4.10 GetVersions Subrequest 128

3.1.4.11 Versioning Subrequest 129

3.1.4.11.1 Get Version List 129

3.1.4.11.2 Restore Version 130

3.1.4.12 FileOperation Subrequest 130

3.1.4.13 AmIAlone Subrequest 131

3.1.4.14 LockStatus Subrequest 131

3.1.4.15 Properties Subrequest 132

3.1.4.15.1 Property Enumerate 132

3.1.4.15.2 Property Get 133

3.1.5 Timer Events 133

3.1.6 Other Local Events 133

4 Protocol Examples 134

4.1 Successful File Open of a Coauthorable Document 134

4.1.1 Request 134

4.1.2 Response 135

4.2 Successful File Save of a Coauthorable Document 137

4.2.1 Request 137

4.2.2 Response 138

4.3 Successful File Open of a Document that Is Not Coauthorable 139

4.3.1 Request 139

4.3.2 Response 140

4.4 Unsuccessful File Open of a Document that Is Not Coauthorable 141

4.4.1 Request 141

4.4.2 Response 141

4.5 Successful File Save of a Document that Is Not Coauthorable 142

4.5.1 Request 142

4.5.2 Response 143

4.6 Unsuccessful File Open of a Coauthorable Document 144

4.6.1 Request 144

4.6.2 Response 145

5 Security 146

5.1 Security Considerations for Implementers 146

5.2 Index of Security Parameters 146

6 Appendix A: Full XML Schema 147

6.1 Request Message Schema 147

6.2 Response Message Schema 156

7 Appendix B: Product Behavior 167

8 Change Tracking 172

9 Index 173

1  Introduction

The File Synchronization via SOAP over HTTP Protocol enables one or more protocol clients to synchronize changes done on shared files stored on a server.

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.1  Glossary

This document uses the following terms:

absolute URL: The full Internet address of a page or other World Wide Web resource. The absolute URL includes a protocol, such as "http," a network location, and an optional path and file name — for example, http://www.treyresearch.net/.

base64 encoding: A binary-to-text encoding scheme whereby an arbitrary sequence of bytes is converted to a sequence of printable ASCII characters, as described in [RFC4648].

claim-based authentication mode: A set of operations that is used to establish trust relationships between claims providers and relying party applications. It involves the exchange of identifying certificates that make it possible for a relying party to trust the content of a claim that is issued by a claims provider.

Coordinated Universal Time (UTC): A high-precision atomic time standard that approximately tracks Universal Time (UT). It is the basis for legal, civil time all over the Earth. Time zones around the world are expressed as positive and negative offsets from UTC. In this role, it is also referred to as Zulu time (Z) and Greenwich Mean Time (GMT). In these specifications, all references to UTC refer to the time at UTC-0 (or GMT).

friendly name: A name for a user or object that can be read and understood easily by a human.

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

HRESULT: An integer value that indicates the result or status of an operation. A particular HRESULT can have different meanings depending on the protocol using it. See [MS-ERREF] section 2.1 and specific protocol documents for further details.