2.3.3.1 CellSubRequestDataOptionalAttributes

The CellSubRequestDataOptionalAttributes attribute group contains attributes that MUST be used only for SubRequestData elements associated with the parent SubRequest element where the Type attribute has a value of CellSubRequestType. The attributes in CellSubRequestDataOptionalAttributes are used as input parameters for processing the data associated with a cell subrequest. The definition of the CellSubRequestDataOptionalAttributes attribute group is as follows:

 <xs:attributeGroup name="CellSubRequestDataOptionalAttributes">
     <xs:attribute name="Coalesce" type="xs:boolean" use="optional" />
     <xs:attribute name="GetFileProps" type="xs:boolean" use="optional" />
     <xs:attribute name="CoauthVersioning" type="xs:boolean" use="optional" />
     <xs:attribute name="Etag" type="xs:string" use="optional" /> 
     <xs:attribute name="ContentChangeUnit" type="xs:string" use="optional" />
     <xs:attribute name="ClientFileID" type="xs:string" use="optional" />
     <xs:attribute name="PartitionID" type="tns:guid" use="optional" />
     <xs:attribute name="ExpectNoFileExists" type="xs:boolean" use="optional" />
     <xs:attribute name="BypassLockID" type="xs:string" use="optional" />
     <xs:attribute name="LastModifiedTime" type="xs:integer" use="optional"/>
 </xs:attributeGroup>

Coalesce: A Boolean value that specifies whether the protocol server SHOULD<38> fully save all changes to the underlying store without storing the changes in any intermediate write cache after processing the subrequest. If the Coalesce attribute is set to true in a cell subrequest, the protocol server persists all changes to the file after processing the subrequest. The Coalesce attribute is set to false in the cell subrequest for updates to other partitions that do not contain binary file contents.

GetFileProps: A Boolean value that specifies whether the file properties have been requested. When set to true, file properties have been requested as part of the cell subrequest. When set to false, file properties have not been requested as part of the cell subrequest. When set to true, the protocol server MUST return CreateTime and LastModifiedTime as attributes in the cell SubResponseData element.<39>

CoauthVersioning: A Boolean value. If the coauthoring status of a client is "Coauthoring", this value MUST be true for upload requests, which helps prevent the protocol server from doing multiple version updates in a short period of time. Otherwise, it MUST be false. For more details about the coauthoring status, see section 2.2.5.1.

Etag: A unique string value that gets updated every time the file contents are changed. The unique string gets updated irrespective of which protocol client updated the file contents in a coauthorable file. Any time the protocol client specifies the Etag attribute in a cell subrequest, the server MUST check to ensure that the Etag sent by the protocol client matches the Etag specified for that file on the server. If there is a mismatch, the protocol server MUST send an error code value set to "CellRequestFail" in the cell subresponse message. The protocol server processes this value as specified in [RFC2616].

ContentChangeUnit: A string value that uniquely identifies the synchronization version of the file contents. It is the value of the vti_contentchangeunit property, as specified in [MS-LISTSWS].

ClientFileID: A string value that uniquely identifies the file contents on the protocol client and that is stored by the protocol server. When a protocol client sends requests for the upload of these file contents, the protocol server uses the unique ClientFileID to identify the specific file content to which the cell subrequest applies. It is the value of the vti_clientid property, as specified in [MS-LISTSWS].

PartitionID: A guid that specifies a unique identifier for the Partition-block in which the file contents or file metadata contents has been requested to be updated. The guid type is defined in section 2.2.5.7. The Partition-block is defined in section 3.1.1. A protocol client using a value of 2.2 or greater for the VersionNumberType, as specified in section 2.2.4.9, MUST specify the Target Partition Id attribute in a cell subrequest, as specified in [MS-FSSHTTPB] section 2.2.2.1.1, and MUST NOT include this attribute if communicating with a protocol server that has a version number of 2.2 or greater. The protocol client MUST specify the PartitionID attribute if communicating with a protocol server that has a versions number of 2.0. A protocol server that has a version number of 2.2 MUST accept a PartitionID attribute from clients using protocol numbers of 2.0 and 2.2. The value of PartitionID for the file contents is "00000000-0000-0000-0000-000000000000".

The value of PartitionID MUST be one of the values in the following table.

Value

Description

"00000000-0000-0000-0000-000000000000"

Default. The partition identifier for the file contents.

"383adc0b-e66e-4438-95e6-e39ef9720122"

The partition identifier for metadata.

"7808f4dd-2385-49d6-b7ce-37aca5e43602"

The partition identifier for editors table.

ExpectNoFileExists: A Boolean value that specifies whether the protocol server can expect that no file contents can be found when an empty Etag is sent by a client during an upload of file content.

BypassLockID: A unique string value. If a client has got an exclusive lock, this value MUST be the same as the value of ExclusiveLockID, as specified in section 2.3.1.1. If a client has got a shared lock, this value MUST be the same as the value of SchemaLockID, as specified in section 2.3.1.1. The value of LockID, as specified in [MS-FSSHTTPB] section 2.2.2.1.4.2, is the same as this value if the value of VersionNumberType, as specified in section 2.2.4.9, is 2.2 or greater. A protocol client that has a version number of 2.2 MUST specify LockID by using the cell subrequest parameter and MUST NOT include this attribute if communicating with a protocol server that has a version number of 2.2 or greater. The protocol client MUST specify the BypassLockID attribute if communicating with a protocol server that has a version number of 2.0. A protocol server that has a version number of 2.2 MUST accept both LockID and BypassLockID.

LastModifiedTime: An integer that specifies the last modified time, which is expressed as a tick count. A single tick represents 100 nanoseconds, or one ten-millionth of a second. LastModifiedTime specifies the number of 100-nanosecond intervals that have elapsed since 00:00:00 on January 1, 1601, which MUST be Coordinated Universal Time (UTC). The protocol server MUST save the file with this value as the LastModifiedTime instead of the current time.