Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Protocol conformance: links to sections #77

Merged
merged 55 commits into from
Aug 1, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
81f5e64
Clean 4.01 OS documents for copy-editing
ralfhandl Jul 26, 2023
cf678c1
More bullet points
ralfhandl Jul 26, 2023
e855f07
More bullets
ralfhandl Jul 26, 2023
16fb978
Representation-specific blocks
ralfhandl Jul 26, 2023
a064719
References
ralfhandl Jul 26, 2023
69c0ba8
Improved code blocks
ralfhandl Jul 26, 2023
78f2a88
Generate index in appendix B.
HeikoTheissen Jul 26, 2023
a185bd8
Merge branch 'csdl/import-4.01-os-content' of [email protected]:oasis-tc…
HeikoTheissen Jul 26, 2023
5506fdc
Beginning of section 4 and index
HeikoTheissen Jul 26, 2023
8e5b2be
auto-refreshed
HeikoTheissen Jul 26, 2023
f8a48ae
Monospaced
HeikoTheissen Jul 26, 2023
ea19ac0
Less formatting
ralfhandl Jul 26, 2023
f2af619
Fewer anchors
ralfhandl Jul 26, 2023
21b42cc
Reference
HeikoTheissen Jul 26, 2023
ab7ac2e
Merge branch 'csdl/import-4.01-os-content' of [email protected]:oasis-tc…
HeikoTheissen Jul 26, 2023
dab13d4
Section 4
HeikoTheissen Jul 26, 2023
8def4af
Use placeholders
HeikoTheissen Jul 26, 2023
fbeb9e4
JSON and XML variants from one source
HeikoTheissen Jul 27, 2023
5559eca
section 2
HeikoTheissen Jul 27, 2023
f606702
Schema
HeikoTheissen Jul 27, 2023
b4083d7
[References]
HeikoTheissen Jul 27, 2023
61ca3f6
Short filenames
HeikoTheissen Jul 28, 2023
dbe0f49
One source directory for odata-csdl
HeikoTheissen Jul 28, 2023
8ffb0e1
Complete document
HeikoTheissen Jul 28, 2023
d01c1bb
Example 8
HeikoTheissen Jul 28, 2023
70bb405
Appendix
HeikoTheissen Jul 29, 2023
05671c8
clean-up
HeikoTheissen Jul 29, 2023
76bf1d6
Remove  
HeikoTheissen Jul 31, 2023
5a601bb
fine-tuning
HeikoTheissen Jul 31, 2023
9fb08df
Protocol 4.01 OS content
ralfhandl Aug 1, 2023
6a43064
Rebuilt
ralfhandl Aug 1, 2023
ae17722
Merge branch 'csdl/import-4.01-os-content' into core/import-4.01-os-c…
ralfhandl Aug 1, 2023
28d8086
Digits in section hyperlinks
HeikoTheissen Aug 1, 2023
3b83e02
Rebuilt
ralfhandl Aug 1, 2023
797a7f4
Merge branch 'core/import-4.01-os-content' of https://github.com/oasi…
ralfhandl Aug 1, 2023
4477042
Rebuilt
ralfhandl Aug 1, 2023
4197831
Response code references
ralfhandl Aug 1, 2023
39d6b54
Update 12 Conformance.md
ralfhandl Aug 1, 2023
2debabc
auto-refreshed
ralfhandl Aug 1, 2023
8fb804c
Rebuilt
ralfhandl Aug 1, 2023
3649343
Merge branch 'main' into core/import-4.01-os-content
ralfhandl Aug 1, 2023
7ef8e5b
Merge branch 'core/import-4.01-os-content' of https://github.com/oasi…
ralfhandl Aug 1, 2023
06471c1
Prepare section links
ralfhandl Aug 1, 2023
ce661fd
auto-refreshed
ralfhandl Aug 1, 2023
9e9828c
Merge branch 'main' into core/protocol-conformance-links-to-sections
ralfhandl Aug 1, 2023
bdbcd12
Rebuilt
ralfhandl Aug 1, 2023
16ef8bc
Merge branch 'core/protocol-conformance-links-to-sections' of https:/…
ralfhandl Aug 1, 2023
04ee21a
Update 12 Conformance.md
ralfhandl Aug 1, 2023
113b2c0
auto-refreshed
ralfhandl Aug 1, 2023
fb3bc6f
More section references
ralfhandl Aug 1, 2023
cc35d2f
Merge branch 'core/protocol-conformance-links-to-sections' of https:/…
ralfhandl Aug 1, 2023
2224e3c
Remove unnecessary whitespace
ralfhandl Aug 1, 2023
5f6c099
Whitespace
ralfhandl Aug 1, 2023
52d36c2
Fixed bug in section links with digits
HeikoTheissen Aug 1, 2023
7309c59
Restore odata-csdl
HeikoTheissen Aug 1, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified docs/odata-csdl-json/odata-csdl-json.pdf
Binary file not shown.
Binary file modified docs/odata-csdl-xml/odata-csdl-xml.pdf
Binary file not shown.
Binary file modified docs/odata-data-aggregation-ext/odata-data-aggregation-ext.pdf
Binary file not shown.
Binary file modified docs/odata-json-format/odata-json-format.pdf
Binary file not shown.
38 changes: 19 additions & 19 deletions docs/odata-protocol/odata-protocol.html
Original file line number Diff line number Diff line change
Expand Up @@ -2575,20 +2575,20 @@ <h3 id="1211-odata-40-minimal-conformance-level"><a name="OData40MinimalConforma
<ol type="1">
<li>MUST publish a <a href="#ServiceDocumentRequest">service document</a> at the service root (<a href="#ServiceDocumentRequest">section 11.1.1</a>)</li>
<li>MUST return data according to the <a href="#ODataJSON">OData-JSON</a> format</li>
<li>MUST use <a href="#ServerDrivenPaging">server-driven paging</a> when returning partial results (section 11.2.6.7) and not use any other mechanism</li>
<li>MUST return the appropriate <a href="#HeaderODataVersion"><code>OData-Version</code></a> header (section 8.1.5)</li>
<li>MUST use <a href="#ServerDrivenPaging">server-driven paging</a> when returning partial results (<a href="#ServerDrivenPaging">section 11.2.6.7</a>) and not use any other mechanism</li>
<li>MUST return the appropriate <a href="#HeaderODataVersion"><code>OData-Version</code></a> header (<a href="#HeaderODataVersion">section 8.1.5</a>)</li>
<li>MUST conform to the semantics the following headers, or fail the request
<ol type="1">
<li><code>Accept</code> (<a href="#HeaderAccept">section 8.2.1</a>)</li>
<li><code>OData-MaxVersion</code> (<a href="#HeaderODataMaxVersion">section 8.2.7</a>)</li>
<li><a href="#HeaderAccept"><code>Accept</code></a> (<a href="#HeaderAccept">section 8.2.1</a>)</li>
<li><a href="#HeaderODataMaxVersion"><code>OData-MaxVersion</code></a> (<a href="#HeaderODataMaxVersion">section 8.2.7</a>)</li>
</ol></li>
<li>MUST follow OData guidelines for extensibility (<a href="#Extensibility">section 6</a> and all subsections)</li>
<li>MUST successfully parse the request according to <a href="#ODataABNF">OData-ABNF</a> for any supported system query options and either follow the specification or return [<code>501 Not Implemented</code>] for any unsupported functionality ([section 1501NotImplemented])</li>
<li>MUST follow OData guidelines for <a href="#Extensibility">extensibility</a> (<a href="#Extensibility">section 6</a> and all subsections)</li>
<li>MUST successfully parse the request according to <a href="#ODataABNF">OData-ABNF</a> for any supported system query options and either follow the specification or return <a href="#ResponseCode501NotImplemented"><code>501 Not Implemented</code></a> for any unsupported functionality (<a href="#ResponseCode501NotImplemented">section 9.3.1</a>)</li>
<li>MUST expose only data types defined in <a href="#ODataCSDL">OData-CSDLXML</a></li>
<li>MUST NOT require clients to understand any metadata or instance annotations (<a href="#VocabularyExtensibility">section 6.4</a>), custom headers (<a href="#HeaderFieldExtensibility">section 6.5</a>), or custom content (<a href="#PayloadExtensibility">section 6.2</a>) in the payload in order to correctly consume the service</li>
<li>MUST NOT violate any OData update semantics (<a href="#DataModification">section 11.4</a>) and all subsections)</li>
<li>MUST NOT violate any OData <a href="#DataModification">update semantics</a> (<a href="#DataModification">section 11.4</a> and all subsections)</li>
<li>MUST NOT violate any other OData-defined semantics</li>
<li>SHOULD support <code>$expand</code> (<a href="#SystemQueryOptionexpand">section 11.2.5.2</a>)</li>
<li>SHOULD support <a href="#SystemQueryOptionexpand"><code>$expand</code></a> (<a href="#SystemQueryOptionexpand">section 11.2.5.2</a>)</li>
<li>SHOULD publish metadata at <code>$metadata</code> according to <a href="#ODataCSDL">OData-CSDLXML</a> and MAY publish metadata according to <a href="#ODataCSDL">OData-CSDLJSON</a> (<a href="#MetadataDocumentRequest">section 11.1.2</a>)</li>
<li>MUST support prefixed variants of supported headers and preference values</li>
<li>MUST support enumeration and duration literals in URLs with the type prefix</li>
Expand Down Expand Up @@ -2621,17 +2621,17 @@ <h3 id="1212-odata-40-intermediate-conformance-level"><a name="OData40Intermedia
<p>In order to conform to the OData Intermediate Conformance Level, a service:</p>
<ol type="1">
<li>MUST conform to the <a href="#OData40MinimalConformanceLevel">OData 4.0 Minimal Conformance Level</a></li>
<li>MUST successfully parse the <a href="#ODataABNF">OData-ABNF</a> and either follow the specification or return <code>501 Not Implemented</code> for any unsupported functionality ([section 2501NotImplemented])</li>
<li>MUST successfully parse the <a href="#ODataABNF">OData-ABNF</a> and either follow the specification or return <code>501 Not Implemented</code> for any unsupported functionality (<a href="#ResponseCode501NotImplemented">section 9.3.1</a>)</li>
<li>MUST support <code>$select</code> (<a href="#SystemQueryOptionselect">section 11.2.5.1</a>)`</li>
<li>MUST support casting to a derived type according to <a href="#ODataURL">OData URL</a> if derived types are present in the model</li>
<li>MUST support <code>$top</code> (<a href="#SystemQueryOptiontop">section 11.2.6.3</a>)</li>
<li>MUST support <code>/$value</code> on media entities (section 4.12 in <a href="#ODataURL">OData URL</a>) and individual properties (<a href="#RequestingaPropertysRawValueusingvalue">section 11.2.4.1</a>)</li>
<li>MUST support <code>/$value</code> on media entities (<a href="#MetadataDocumentRequest">section 11.1.2</a>) and individual properties (<a href="#RequestingaPropertysRawValueusingvalue">section 11.2.4.1</a>)</li>
<li>MUST support <code>$filter</code> (<a href="#SystemQueryOptionfilter">section 11.2.6.1</a>)
<ol type="1">
<li>MUST support <code>eq</code>, <code>ne</code> filter operations on properties of entities in the requested entity set (<a href="#SystemQueryOptionfilter">section 11.2.6.1</a>)</li>
<li>MUST support aliases in <code>$filter</code> expressions (<a href="#ParameterAliases">section 11.2.6.1.2</a>)</li>
<li>SHOULD support additional filter operations (<a href="#BuiltinQueryFunctions">section 11.2.6.1.1</a>) and MUST return <code>501 Not Implemented</code> for any unsupported filter operations ([section 3501NotImplemented])</li>
<li>SHOULD support the canonical functions (<a href="#BuiltinQueryFunctions">section 11.2.6.1.1</a>) and MUST return <code>501 Not Implemented</code> for any unsupported canonical functions ([section 4501NotImplemented])</li>
<li>SHOULD support additional filter operations (<a href="#BuiltinQueryFunctions">section 11.2.6.1.1</a>) and MUST return <code>501 Not Implemented</code> for any unsupported filter operations (<a href="#ResponseCode501NotImplemented">section 9.3.1</a>)</li>
<li>SHOULD support the canonical functions (<a href="#BuiltinQueryFunctions">section 11.2.6.1.1</a>) and MUST return <code>501 Not Implemented</code> for any unsupported canonical functions (<a href="#ResponseCode501NotImplemented">section 9.3.1</a>)</li>
<li>SHOULD support <code>$filter</code> on expanded entities (<a href="#ExpandOptions">section 11.2.5.2.1</a>)</li>
</ol></li>
<li>SHOULD publish metadata at <code>$metadata</code> according to <a href="#ODataCSDL">OData-CSDLXML</a> (<a href="#MetadataDocumentRequest">section 11.1.2</a>)</li>
Expand Down Expand Up @@ -2682,7 +2682,7 @@ <h3 id="1221-odata-401-minimal-conformance-level"><a name="OData401MinimalConfor
<p>In order to conform to the OData 4.01 Minimal Conformance Level, a service:</p>
<ol type="1">
<li>MUST conform to the <a href="#OData40MinimalConformanceLevel">OData 4.0 Minimal Conformance Level</a></li>
<li>MUST be compliant with version 4.01 of the <a href="#ODataJSON">OData-JSON</a> format</li>
<li>MUST be compliant with version 4.01 of the <a href="#ODataJSON">OData-JSON</a> format</li>
<li>MUST return the <a href="#HeaderAsyncResult"><code>AsyncResult</code></a> result header in the final response to an asynchronous request if asynchronous operations are supported.</li>
<li>MUST support both prefixed and non-prefixed variants of supported headers and preference values</li>
<li>MUST reject a request with an incompatible <a href="#SystemQueryOptionschemaversion"><code>$schemaversion</code></a> system query option if a <a href="https://github.com/oasis-tcs/odata-vocabularies/blob/master/vocabularies/Org.OData.Core.V1.md#SchemaVersion"><code>Core.SchemaVersion</code></a> annotation is returned in <code>$metadata</code></li>
Expand All @@ -2709,7 +2709,7 @@ <h3 id="1221-odata-401-minimal-conformance-level"><a name="OData401MinimalConfor
<li>MAY support the count of a filtered collection in a common expression</li>
<li>MAY support equal and non-equal structural comparison</li>
</ol></li>
<li>SHOULD publish metadata at <code>$metadata</code> according to both <a href="#ODataCSDL">OData-CSDLXML</a> and <a href="#ODataCSDL">OData-CSDLJSON</a> (section 11.1.2)</li>
<li>SHOULD publish metadata at <code>$metadata</code> according to both <a href="#ODataCSDL">OData-CSDLXML</a> and <a href="#ODataCSDL">OData-CSDLJSON</a> (<a href="#MetadataDocumentRequest">section 11.1.2</a>)</li>
<li>SHOULD NOT have identifiers within a uniqueness scope (e.g. a schema, a structural type, or an entity container) that differ only by case</li>
<li>SHOULD return the <a href="https://github.com/oasis-tcs/odata-vocabularies/blob/master/vocabularies/Org.OData.Core.V1.md#ODataVersions"><code>Core.ODataVersions</code></a> annotation</li>
<li>SHOULD report capabilities through the Capabilities vocabulary</li>
Expand All @@ -2718,7 +2718,7 @@ <h3 id="1221-odata-401-minimal-conformance-level"><a name="OData401MinimalConfor
<li>MAY support <code>$search</code> for all collections</li>
<li>MAY support 4.01 behavior, including returning 4.01 content and payloads, if the client does not specify the <code>OData-MaxVersion:4.0</code> request header</li>
</ol>
<p> In addition, to be considered an <em>Updatable OData 4.01 Service</em>, the service:</p>
<p>In addition, to be considered an <em>Updatable OData 4.01 Service</em>, the service:</p>
<ol start="18" type="1">
<li>MUST conform to the <a href="#OData40MinimalConformanceLevel">OData 4.0 Minimal Conformance Level</a> for an Updateable service.</li>
<li>MUST support <code>DELETE</code> to the reference of a collection member to be removed, identified by key (<a href="#RemoveaReferencetoanEntity">section 11.4.6.2</a>)</li>
Expand Down Expand Up @@ -2765,16 +2765,16 @@ <h3 id="1223-odata-401-advanced-conformance-level"><a name="OData401AdvancedConf
<li>MUST support batch requests according both to the multipart format (<a href="#BatchRequests">section 11.7</a> and all subsections) and the JSON Batch format defined in <a href="#ODataJSON">OData-JSON</a></li>
<li>SHOULD support filtering a collection using a <code>/$filter</code> path segment</li>
<li>SHOULD support nested parameter alias assignments in <code>$select</code> and <code>$expand</code></li>
<li>MAY support case-insensitive comparison of identifiers in URLs and request payloads if no exact match is found, using the same lookup sequence as for <a href="#DefaultNamespaces">default namespaces</a> with a case-insensitive comparison </li>
<li>MAY support case-insensitive comparison of identifiers in URLs and request payloads if no exact match is found, using the same lookup sequence as for <a href="#DefaultNamespaces">default namespaces</a> with a case-insensitive comparison</li>
</ol>
<h2 id="123-interoperable-odata-clients"><a name="InteroperableODataClients" href="#InteroperableODataClients">12.3 Interoperable OData Clients</a></h2>
<p>Interoperable OData clients can expect to work with OData Services that comply with at least the <a href="#OData40MinimalConformanceLevel">OData 4.0 Minimal Conformance Level</a> and implement the <a href="#ODataJSON">OData-JSON</a> format.</p>
<p>To be generally interoperable, OData clients      </p>
<p>To be generally interoperable, OData clients</p>
<ol type="1">
<li>MUST specify the <code>OData-MaxVersion</code> header in requests (section 8.2.7)</li>
<li>MUST specify the <code>OData-MaxVersion</code> header in requests (<a href="#HeaderODataMaxVersion">section 8.2.7</a>)</li>
<li>MUST specify <code>OData-Version</code> (<a href="#HeaderODataVersion">section 8.1.5</a>) and <code>Content-Type</code> (<a href="#HeaderContentType">section 8.1.1</a>) in any request with a payload</li>
<li>MUST be a conforming consumer of OData as defined in <a href="#ODataJSON">OData-JSON</a></li>
<li>MUST follow redirects ([section 53xxRedirection])</li>
<li>MUST follow redirects (<a href="#ResponseCode3xxRedirection">section 9.1.5</a>)</li>
<li>MUST correctly handle next links (<a href="#ServerDrivenPaging">section 11.2.6.7</a>)</li>
<li>MUST support instances returning properties and navigation properties not specified in metadata (<a href="#RequestingData">section 11.2</a>)</li>
<li>MUST generate <code>PATCH</code> requests for updates, if the client supports updates (<a href="#UpdateanEntity">section 11.4.3</a>)</li>
Expand Down
47 changes: 23 additions & 24 deletions docs/odata-protocol/odata-protocol.md
Original file line number Diff line number Diff line change
Expand Up @@ -6248,29 +6248,29 @@ service:
service root ([section 11.1.1](#ServiceDocumentRequest))
2. MUST return data according to the [OData-JSON](#ODataJSON) format
3. MUST use [server-driven paging](#ServerDrivenPaging) when returning
partial results (section 11.2.6.7) and not use any other mechanism
partial results ([section 11.2.6.7](#ServerDrivenPaging)) and not use any other mechanism
4. MUST return the appropriate [`OData-Version`](#HeaderODataVersion)
header (section 8.1.5)
header ([section 8.1.5](#HeaderODataVersion))
5. MUST conform to the semantics the following headers, or fail the
request
1. `Accept` ([section 8.2.1](#HeaderAccept))
2. `OData-MaxVersion` ([section 8.2.7](#HeaderODataMaxVersion))
6. MUST follow OData guidelines for extensibility
1. [`Accept`](#HeaderAccept) ([section 8.2.1](#HeaderAccept))
2. [`OData-MaxVersion`](#HeaderODataMaxVersion) ([section 8.2.7](#HeaderODataMaxVersion))
6. MUST follow OData guidelines for [extensibility](#Extensibility)
([section 6](#Extensibility) and all subsections)
7. MUST successfully parse the request according to
[OData-ABNF](#ODataABNF) for any supported system query options and
either follow the specification or return
[`501 Not Implemented`] for any
unsupported functionality ([section 1501NotImplemented])
[`501 Not Implemented`](#ResponseCode501NotImplemented) for any
unsupported functionality ([section 9.3.1](#ResponseCode501NotImplemented))
8. MUST expose only data types defined in [OData-CSDLXML](#ODataCSDL)
9. MUST NOT require clients to understand any metadata or instance
annotations ([section 6.4](#VocabularyExtensibility)), custom headers ([section 6.5](#HeaderFieldExtensibility)), or custom
content ([section 6.2](#PayloadExtensibility)) in the payload in order to correctly consume the
service
10. MUST NOT violate any OData update semantics
([section 11.4](#DataModification)) and all subsections)
10. MUST NOT violate any OData [update semantics](#DataModification)
([section 11.4](#DataModification) and all subsections)
11. MUST NOT violate any other OData-defined semantics
12. SHOULD support `$expand` ([section 11.2.5.2](#SystemQueryOptionexpand))
12. SHOULD support [`$expand`](#SystemQueryOptionexpand) ([section 11.2.5.2](#SystemQueryOptionexpand))
13. SHOULD publish metadata at `$metadata` according to
[OData-CSDLXML](#ODataCSDL) and MAY publish metadata according to
[OData-CSDLJSON](#ODataCSDL) ([section 11.1.2](#MetadataDocumentRequest))
Expand Down Expand Up @@ -6329,23 +6329,22 @@ service:
Level](#OData40MinimalConformanceLevel)
2. MUST successfully parse the [OData-ABNF](#ODataABNF) and either
follow the specification or return `501 Not Implemented` for any
unsupported functionality ([section 2501NotImplemented])
unsupported functionality ([section 9.3.1](#ResponseCode501NotImplemented))
3. MUST support `$select` ([section 11.2.5.1](#SystemQueryOptionselect))`
4. MUST support casting to a derived type according to
[OData URL](#ODataURL) if derived types are present in the model
5. MUST support `$top` ([section 11.2.6.3](#SystemQueryOptiontop))
6. MUST support `/$value` on media entities (section 4.12 in
[OData URL](#ODataURL)) and individual properties ([section 11.2.4.1](#RequestingaPropertysRawValueusingvalue))
6. MUST support `/$value` on media entities ([section 11.1.2](#MetadataDocumentRequest)) and individual properties ([section 11.2.4.1](#RequestingaPropertysRawValueusingvalue))
7. MUST support `$filter` ([section 11.2.6.1](#SystemQueryOptionfilter))
1. MUST support `eq`, `ne` filter operations on properties of entities
in the requested entity set ([section 11.2.6.1](#SystemQueryOptionfilter))
2. MUST support aliases in `$filter` expressions ([section 11.2.6.1.2](#ParameterAliases))
3. SHOULD support additional filter operations ([section 11.2.6.1.1](#BuiltinQueryFunctions))
and MUST return `501 Not Implemented` for any unsupported filter
operations ([section 3501NotImplemented])
operations ([section 9.3.1](#ResponseCode501NotImplemented))
4. SHOULD support the canonical functions ([section 11.2.6.1.1](#BuiltinQueryFunctions)) and
MUST return `501 Not Implemented` for any unsupported canonical
functions ([section 4501NotImplemented])
functions ([section 9.3.1](#ResponseCode501NotImplemented))
5. SHOULD support `$filter` on expanded entities ([section 11.2.5.2.1](#ExpandOptions))
8. SHOULD publish metadata at `$metadata` according to
[OData-CSDLXML](#ODataCSDL) ([section 11.1.2](#MetadataDocumentRequest))
Expand Down Expand Up @@ -6424,7 +6423,7 @@ service:

1. MUST conform to the [OData 4.0 Minimal Conformance
Level](#OData40MinimalConformanceLevel)
2. MUST be compliant with version 4.01 of the [OData-JSON](#ODataJSON) format
2. MUST be compliant with version 4.01 of the [OData-JSON](#ODataJSON) format
3. MUST return the [`AsyncResult`](#HeaderAsyncResult) result header in
the final response to an asynchronous request if asynchronous operations
are supported.
Expand Down Expand Up @@ -6469,8 +6468,8 @@ with a maximum cardinality of one
expression
14. MAY support equal and non-equal structural comparison
10. SHOULD publish metadata at `$metadata` according to both
[OData-CSDLXML](#ODataCSDL) and [OData-CSDLJSON](#ODataCSDL) (section
11.1.2)
[OData-CSDLXML](#ODataCSDL) and [OData-CSDLJSON](#ODataCSDL) ([section
11.1.2](#MetadataDocumentRequest))
11. SHOULD NOT have identifiers within a uniqueness scope (e.g. a
schema, a structural type, or an entity container) that differ only by
case
Expand All @@ -6485,7 +6484,7 @@ annotation
payloads, if the client does not specify the `OData-MaxVersion:4.0`
request header

 In addition, to be considered an *Updatable OData 4.01 Service*, the
In addition, to be considered an *Updatable OData 4.01 Service*, the
service:

18. MUST conform to the [OData 4.0 Minimal Conformance
Expand Down Expand Up @@ -6560,23 +6559,23 @@ segment
10. MAY support case-insensitive comparison of identifiers in URLs and
request payloads if no exact match is found, using the same lookup
sequence as for [default namespaces](#DefaultNamespaces) with a
case-insensitive comparison 
case-insensitive comparison

## <a name="InteroperableODataClients" href="#InteroperableODataClients">12.3 Interoperable OData Clients</a>

Interoperable OData clients can expect to work with OData Services that
comply with at least the [OData 4.0 Minimal Conformance
Level](#OData40MinimalConformanceLevel) and implement the
[OData-JSON](#ODataJSON) format.

To be generally interoperable, OData clients      
To be generally interoperable, OData clients

1. MUST specify the `OData-MaxVersion` header in requests (section
8.2.7)
1. MUST specify the `OData-MaxVersion` header in requests ([section 8.2.7](#HeaderODataMaxVersion))
2. MUST specify `OData-Version` ([section 8.1.5](#HeaderODataVersion)) and `Content-Type`
([section 8.1.1](#HeaderContentType)) in any request with a payload
3. MUST be a conforming consumer of OData as defined in
[OData-JSON](#ODataJSON)
4. MUST follow redirects ([section 53xxRedirection])
4. MUST follow redirects ([section 9.1.5](#ResponseCode3xxRedirection))
5. MUST correctly handle next links ([section 11.2.6.7](#ServerDrivenPaging))
6. MUST support instances returning properties and navigation
properties not specified in metadata ([section 11.2](#RequestingData))
Expand Down
Binary file modified docs/odata-protocol/odata-protocol.pdf
Binary file not shown.
Binary file modified docs/odata-url-conventions/odata-url-conventions.pdf
Binary file not shown.
Loading