2.2.2 Request Message Syntax

A request message specifies the format used to contain sub-requests (section 2.2.2.1) in the following format.


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

Protocol Version

Minimum Version

Signature

...

Request Start

User Agent Start

User Agent GUID (optional)

GUID (16 bytes, optional)

...

...

...

User Agent Client And Platform

Client Count (variable)

...

...

...

Client Byte Array (variable)

...

...

...

Platform Count (variable)

...

...

...

Platform Byte Array (variable)

...

...

...

User Agent Version

Version

User Agent End

Request Hashing Options Declaration

...

Request Hashing Schema (variable)

...

...

...

A

B

C

D

E

Cell Roundtrip Options

...

F

G

H

Sub-requests (variable)

...

...

...

Data Element Package (variable)

...

...

...

Cell Request End

Protocol Version (2bytes): An unsigned integer that specifies the protocol schema version number used in this request. The valid values for this field are 12, 13 and 14.<5>

Minimum Version (2 bytes): An unsigned integer that specifies the oldest version of the protocol schema that this schema is compatible with. This value MUST be 11.

Signature (8 bytes): An unsigned integer that specifies a constant signature that identifies this as a request. This MUST be set to 0x9B069439F329CF9C.

Request Start (4 bytes): A 32-bit Stream Object Header (section 2.2.1.5.2) that specifies a request start.

User Agent Start (4 bytes): A 32-bit Stream Object Header that specifies a user agent start.

User Agent GUID (4 bytes, optional): A 32-bit Stream Object Header that specifies a user agent GUID.

GUID (16 bytes, optional): A GUID that specifies the user agent. This GUID MUST be specified if and only if the User Agent GUID is specified.

User Agent Client and Platform (4 bytes): A 32-bit Stream Object Header that specifies a user agent client and platform (with Client Count, Client Byte Array, Platform Count and Platform Byte Array). This object replaces the User Agent GUID. If this is specified, the User Agent GUID SHOULD NOT be specified.

Client Count (variable): A compact unsigned 64-bit integer (section 2.2.1.1) that specifies the count of bytes in the Client Byte Array.

Client Byte Array (variable): An array of bytes that is a UTF-8 encoded string specifying the client name for the user agent.

Platform Count (variable): A compact unsigned 64-bit integer (section 2.2.1.1) that specifies the count of bytes in the Platform Byte Array.

Platform Byte Array (variable): An array of bytes that is a UTF-8 encoded string specifying the platform name for the user agent.

User Agent Version (4 bytes): A 32-bit Stream Object Header that specifies a user agent version.

Version (4 bytes): An unsigned integer that specifies the version of the client.

User Agent End (2 bytes): A 16-bit Stream Object Header (section 2.2.1.5.4) that specifies a user agent end.

Request Hashing Options Declaration: An optional 32-bit Stream Object Header that specifies a request hashing options declaration.<6>

Request Hashing Schema (variable): An optional compact unsigned 64-bit integer that specifies the Hashing Schema being requested that MUST be set to 1, indicating Content Information Data Structure Version 1.0 as specified in [MS-PCCRC] section 2.3.

A – Reserved (1 bit, optional): A reserved bit that MUST be set to zero and MUST be ignored.

B – Reserved (1 bit, optional): A reserved bit that MUST be set to zero and MUST be ignored.

C – Request Data Element Hashes Instead of Data (1 bit, optional): If set, a bit that specifies to exclude object data and instead return data element hashes; otherwise, object data is included.

D – Request Data Element Hashes (1 bit, optional): If set, a bit that specifies to include data element hashes (if available) when returning data elements; otherwise data element hashes will not be returned. If data element hashes are returned they MUST be encoded in the schema specified by Request Hashing Schema.

E - Reserved1 (4 bits, optional): A 4-bit reserved field that MUST be set to zero and MUST be ignored.

Cell Roundtrip Options (4 bytes): An optional 32-bit Stream Object Header that specifies cell roundtrip options.<7>

F – Request Version Token knowledge (1 bit, optional): If set, a bit that specifies to return the Version Token Knowledge (section 2.2.1.13.6); otherwise, Version Token Knowledge is not included.

G – Non Generic Schema (1 bit, optional): This attribute MAY be set. If set, a bit that sets the non-generic schema hint on the upload requests.

H - Reserved (6 bits, optional): A 6-bit reserved field that MUST be set to zero and MUST be ignored.

Sub-requests (variable): An array of sub-requests (section 2.2.2.1), that specifies request information to execute on the server.

Data Element Package (variable): A Data Element Package (section 2.2.1.12) that specifies the serialized data elements for the request. Put Changes (section 2.2.2.1.4) is the only sub-request type that can be used to reference data elements within this package.

Cell Request End (2 bytes): A 16-bit Stream Object Header that specifies a cell request end.