From fb3bc6f50d8d80fc867b210efc0997753c92f179 Mon Sep 17 00:00:00 2001 From: Ralf Handl Date: Tue, 1 Aug 2023 16:44:53 +0200 Subject: [PATCH] More section references --- docs/odata-protocol/odata-protocol.html | 136 ++++++++++----------- docs/odata-protocol/odata-protocol.md | 153 ++++++++++++------------ odata-protocol/12 Conformance.md | 10 +- 3 files changed, 148 insertions(+), 151 deletions(-) diff --git a/docs/odata-protocol/odata-protocol.html b/docs/odata-protocol/odata-protocol.html index 8f3cbdd8a..0f5a13742 100644 --- a/docs/odata-protocol/odata-protocol.html +++ b/docs/odata-protocol/odata-protocol.html @@ -2601,62 +2601,62 @@

  • MUST include edit links (explicitly or implicitly) for all updatable or deletable resources according to OData-JSON
  • -
  • MUST support POST of new entities to insertable entity sets ([section ##11.4.1.5] and [section ##11.4.2.1])
  • -
  • MUST support POST of new related entities to updatable navigation properties ([section ##11.4.2])
  • -
  • MUST support POST to $ref to add an existing entity to an updatable related collection ([section ##11.4.6.1])
  • -
  • MUST support PUT to $ref to set an existing single updatable related entity ([section ##11.4.6.3])
  • -
  • MUST support PATCH to all edit URLs for updatable resources ([section ##11.4.3])
  • -
  • MUST support DELETE to all edit URLs for deletable resources ([section ##11.4.5])
  • -
  • MUST support DELETE to $ref to remove a reference to an entity from an updatable navigation property ([section ##11.4.6.2])
  • -
  • MUST support If-Match header in update/delete of any resources returned with an ETag ([section ##11.4.1.1])
  • -
  • MUST return a Location header with the edit URL or read URL of a created resource ([section ##11.4.2])
  • -
  • MUST include the OData-EntityId header in response to any create or upsert operation that returns 204 No Content ([section ##8.3.4])
  • -
  • MUST support Upserts ([section ##11.4.4])
  • -
  • SHOULD support PUT and PATCH to an individual primitive ([section ##11.4.9.1]) or complex ([section ##11.4.9.3]) property (respectively)
  • -
  • SHOULD support DELETE to set an individual property to null ([section ##11.4.9.2])
  • -
  • SHOULD support deep inserts ([section ##11.4.2.2])
  • -
  • MAY support set-based updates ([section ##11.4.13]) or deletes (section 11.4.14) to members of a collection
  • +
  • MUST support POST of new entities to insertable entity sets (section 11.4.1.5)
  • +
  • MUST support POST of new related entities to updatable navigation properties (section 11.4.2)
  • +
  • MUST support POST to $ref to add an existing entity to an updatable related collection (section 11.4.6.1)
  • +
  • MUST support PUT to $ref to set an existing single updatable related entity (section 11.4.6.3)
  • +
  • MUST support PATCH to all edit URLs for updatable resources (section 11.4.3)
  • +
  • MUST support DELETE to all edit URLs for deletable resources (section 11.4.5)
  • +
  • MUST support DELETE to $ref to remove a reference to an entity from an updatable navigation property (section 11.4.6.2)
  • +
  • MUST support If-Match header in update/delete of any resources returned with an ETag (section 11.4.1.1)
  • +
  • MUST return a Location header with the edit URL or read URL of a created resource (section 11.4.2)
  • +
  • MUST include the OData-EntityId header in response to any create or upsert operation that returns 204 No Content (section 8.3.4)
  • +
  • MUST support Upserts (section 11.4.4)
  • +
  • SHOULD support PUT and PATCH to an individual primitive (section 11.4.9.1) or complex (section 11.4.9.3) property (respectively)
  • +
  • SHOULD support DELETE to set an individual property to null (section 11.4.9.2)
  • +
  • SHOULD support deep inserts (section 11.4.2.2)
  • +
  • MAY support set-based updates (section 11.4.13) or deletes (section 11.4.14) to members of a collection
  • 12.1.2 OData 4.0 Intermediate Conformance Level

    In order to conform to the OData Intermediate Conformance Level, a service:

    1. MUST conform to the OData 4.0 Minimal Conformance Level
    2. -
    3. MUST successfully parse the OData-ABNF and either follow the specification or return 501 Not Implemented for any unsupported functionality ([section ##9.3.1])
    4. -
    5. MUST support $select ([section ##11.2.5.1])
    6. -
    7. MUST support casting to a derived type according to OData‑URL if derived types are present in the model
    8. -
    9. MUST support $top ([section ##11.2.6.3])
    10. -
    11. MUST support /$value on media entities (section 11.2.3) and individual properties ([section ##11.2.4.1])
    12. -
    13. MUST support $filter ([section ##11.2.6.1]) +
    14. MUST successfully parse the OData-ABNF and either follow the specification or return 501 Not Implemented for any unsupported functionality ([section 2501NotImplemented])
    15. +
    16. MUST support $select (section 11.2.5.1)`
    17. +
    18. MUST support casting to a derived type according to OData URL if derived types are present in the model
    19. +
    20. MUST support $top (section 11.2.6.3)
    21. +
    22. MUST support /$value on media entities (section 11.1.2) and individual properties (section 11.2.4.1)
    23. +
    24. MUST support $filter (section 11.2.6.1)
        -
      1. MUST support eq, ne filter operations on properties of entities in the requested entity set ([section ##11.2.6.1.1])
      2. -
      3. MUST support aliases in $filter expressions ([section ##11.2.6.1.3])
      4. -
      5. SHOULD support additional filter operations ([section ##11.2.6.1.1]) and MUST return 501 Not Implemented for any unsupported filter operations ([section ##9.3.1])
      6. -
      7. SHOULD support the canonical functions ([section ##11.2.6.1.2]) and MUST return 501 Not Implemented for any unsupported canonical functions ([section ##9.3.1])
      8. -
      9. SHOULD support $filter on expanded entities ([section ##11.2.5.2.1])
      10. +
      11. MUST support eq, ne filter operations on properties of entities in the requested entity set (section 11.2.6.1)
      12. +
      13. MUST support aliases in $filter expressions (section 11.2.6.1.2)
      14. +
      15. SHOULD support additional filter operations (section 11.2.6.1.1) and MUST return 501 Not Implemented for any unsupported filter operations ([section 3501NotImplemented])
      16. +
      17. SHOULD support the canonical functions (section 11.2.6.1.1) and MUST return 501 Not Implemented for any unsupported canonical functions ([section 4501NotImplemented])
      18. +
      19. SHOULD support $filter on expanded entities (section 11.2.5.2.1)
    25. -
    26. SHOULD publish metadata at $metadata according to OData-CSDLXML ([section ##11.1.2])
    27. +
    28. SHOULD publish metadata at $metadata according to OData-CSDLXML (section 11.1.2)
    29. SHOULD support the OData-JSON format
    30. SHOULD consider supporting basic authentication as defined in RFC7617 over HTTPS for the highest level of interoperability with generic clients
    31. -
    32. SHOULD support the $search system query option ([section ##11.2.6.6])
    33. -
    34. SHOULD support the $skip system query option ([section ##11.2.6.4])
    35. -
    36. SHOULD support the $count system query option ([section ##11.2.6.5])
    37. -
    38. SHOULD support $expand ([section ##11.2.5.2])
    39. -
    40. SHOULD support the lambda operators any and all on navigation- and collection-valued properties (section 5.1.1.10 in OData‑URL)
    41. -
    42. SHOULD support the /$count segment on navigation and collection properties ([section ##11.2.10])
    43. -
    44. SHOULD support $orderby asc and desc on individual properties ([section ##11.2.6.2])
    45. +
    46. SHOULD support the $search system query option (section 11.2.6.6)
    47. +
    48. SHOULD support the $skip system query option (section 11.2.6.4)
    49. +
    50. SHOULD support the $count system query option (section 11.2.6.5)
    51. +
    52. SHOULD support $expand (section 11.2.5.2)
    53. +
    54. SHOULD support the lambda operators any and all on navigation- and collection-valued properties (section 5.1.1.10 in OData URL)
    55. +
    56. SHOULD support the /$count segment on navigation and collection properties (section 11.2.10)
    57. +
    58. SHOULD support $orderby asc and desc on individual properties (section 11.2.6.2)

    12.1.3 OData 4.0 Advanced Conformance Level

    In order to conform to the OData Advanced Conformance Level, a service:

    1. MUST conform to at least the OData 4.0 Intermediate Conformance Level
    2. -
    3. MUST publish metadata at $metadata according to OData-CSDLXML ([section ##11.1.2])
    4. +
    5. MUST publish metadata at $metadata according to OData-CSDLXML (section 11.1.2)
    6. MUST support the OData-JSON format
    7. -
    8. MUST support the /$count segment on navigation and collection properties ([section ##11.2.10])
    9. -
    10. MUST support the lambda operators any and all on navigation- and collection-valued properties (section 5.1.1.10 in OData‑URL)
    11. -
    12. MUST support the $skip system query option ([section ##11.2.6.4])
    13. -
    14. MUST support the $count system query option ([section ##11.2.6.5])
    15. -
    16. MUST support $orderby asc and desc on individual properties ([section ##11.2.6.2])
    17. -
    18. MUST support $expand ([section ##11.2.5.2]) +
    19. MUST support the /$count segment on navigation and collection properties (section 11.2.10)
    20. +
    21. MUST support the lambda operators any and all on navigation- and collection-valued properties (section 5.1.1.10 in OData URL)
    22. +
    23. MUST support the $skip system query option (section 11.2.6.4)
    24. +
    25. MUST support the $count system query option (section 11.2.6.5)
    26. +
    27. MUST support $orderby asc and desc on individual properties (section 11.2.6.2)
    28. +
    29. MUST support $expand (section 11.2.5.2)
      1. MUST support returning references for expanded properties
      2. MUST support $filter on expanded collection-valued properties
      3. @@ -2665,16 +2665,16 @@

        section 11.2.5.2.1.1)
      4. MAY support $compute on expanded properties
    30. -
    31. MUST support the $search system query option ([section ##11.2.6.6])
    32. -
    33. MUST support batch requests according to the multipart format ([section ##11.7] and all subsections) and MAY support batch requests according to the JSON Batch format defined in OData-JSON
    34. -
    35. MUST support the resource path conventions defined in OData‑URL
    36. -
    37. SHOULD support asynchronous requests ([section ##11.6])
    38. -
    39. SHOULD support Delta change tracking (section 11.3)
    40. -
    41. SHOULD support cross-join queries defined in OData‑URL
    42. -
    43. MAY support the $compute system query option ([section ##11.2.5.3])
    44. +
    45. MUST support the $search system query option (section 11.2.6.6)
    46. +
    47. MUST support batch requests according to the multipart format (section 11.7 and all subsections) and MAY support batch requests according to the JSON Batch format defined in OData-JSON
    48. +
    49. MUST support the resource path conventions defined in OData URL
    50. +
    51. SHOULD support asynchronous requests (section 11.6)
    52. +
    53. SHOULD support Delta change tracking (section 11.3)
    54. +
    55. SHOULD support cross-join queries defined in OData URL
    56. +
    57. MAY support the $compute system query option (section 11.2.5.3)

    12.2 OData 4.01 Service Conformance Levels

    OData services can report conformance to the OData 4.01 specification by including 4.01 in the list of supported protocol versions in the Core.ODataVersions annotation, as defined in OData-VocCore. As all OData 4.01 compliant services must also be fully OData 4.0 compliant, OData 4.01 services do not need to separately list 4.0 as a supported version.

    @@ -2682,7 +2682,7 @@

  • MUST conform to the OData 4.0 Minimal Conformance Level
  • -
  • MUST be compliant with version 4.01 of the OData-JSON format
  • +
  • MUST be compliant with version 4.01 of the OData-JSON format
  • MUST return the AsyncResult result header in the final response to an asynchronous request if asynchronous operations are supported.
  • MUST support both prefixed and non-prefixed variants of supported headers and preference values
  • MUST reject a request with an incompatible $schemaversion system query option if a Core.SchemaVersion annotation is returned in $metadata
  • @@ -2704,12 +2704,12 @@

    -
  • MUST also support canonical URL conventions (described in OData‑URL) or include URLs in payload
  • +
  • MUST also support canonical URL conventions (described in OData URL) or include URLs in payload
  • MAY support the count of a filtered collection in a common expression
  • MAY support equal and non-equal structural comparison
  • -
  • SHOULD publish metadata at $metadata according to both OData-CSDLXML and OData-CSDLJSON (section 11.1.2)
  • +
  • SHOULD publish metadata at $metadata according to both OData-CSDLXML and OData-CSDLJSON (section 11.1.2)
  • SHOULD NOT have identifiers within a uniqueness scope (e.g. a schema, a structural type, or an entity container) that differ only by case
  • SHOULD return the Core.ODataVersions annotation
  • SHOULD report capabilities through the Capabilities vocabulary
  • @@ -2718,12 +2718,12 @@

  • MUST conform to the OData 4.0 Minimal Conformance Level for an Updateable service.
  • -
  • MUST support DELETE to the reference of a collection member to be removed, identified by key ([section ##11.4.6.2])
  • +
  • MUST support DELETE to the reference of a collection member to be removed, identified by key (section 11.4.6.2)
  • SHOULD support PUT against single entity with nested content
  • -
  • SHOULD support deep updates ([section ##11.4.3.1]) and deep inserts ([section ##11.4.2.2])
  • +
  • SHOULD support deep updates (section 11.4.3.1) and deep inserts (section 11.4.2.2)
  • SHOULD support PUT or DELETE to $ref of a collection-valued nav prop
  • MAY support POST to collections of complex/primitive types
  • MAY support PATCH and DELETE to a collection
  • @@ -2761,29 +2761,29 @@

    OData-CSDLJSON ([section ##11.1.2]) -
  • MUST support batch requests according both to the multipart format ([section ##11.7] and all subsections) and the JSON Batch format defined in OData-JSON
  • +
  • MUST publish metadata at $metadata according to OData-CSDLJSON (section 11.1.2)
  • +
  • MUST support batch requests according both to the multipart format (section 11.7 and all subsections) and the JSON Batch format defined in OData-JSON
  • SHOULD support filtering a collection using a /$filter path segment
  • SHOULD support nested parameter alias assignments in $select and $expand
  • -
  • 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 with a case-insensitive comparison 
  • +
  • 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 with a case-insensitive comparison
  • 12.3 Interoperable OData Clients

    Interoperable OData clients can expect to work with OData Services that comply with at least the OData 4.0 Minimal Conformance Level and implement the OData-JSON 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)
    2. -
    3. MUST specify OData-Version ([section ##8.1.5]) and Content-Type ([section ##8.1.1]) in any request with a payload
    4. +
    5. MUST specify the OData-MaxVersion header in requests (section 8.2.7)
    6. +
    7. MUST specify OData-Version (section 8.1.5) and Content-Type (section 8.1.1) in any request with a payload
    8. MUST be a conforming consumer of OData as defined in OData-JSON
    9. -
    10. MUST follow redirects ([section ##9.1.5])
    11. -
    12. MUST correctly handle next links ([section ##11.2.6.7])
    13. -
    14. MUST support instances returning properties and navigation properties not specified in metadata ([section ##11.2])
    15. -
    16. MUST generate PATCH requests for updates, if the client supports updates ([section ##11.4.3])
    17. +
    18. MUST follow redirects ([section 53xxRedirection])
    19. +
    20. MUST correctly handle next links (section 11.2.6.7)
    21. +
    22. MUST support instances returning properties and navigation properties not specified in metadata (section 11.2)
    23. +
    24. MUST generate PATCH requests for updates, if the client supports updates (section 11.4.3)
    25. MUST include the $ prefix when specifying OData-defined system query options
    26. MUST use case-sensitive query options, operators, and canonical functions
    27. SHOULD support basic authentication as defined in RFC7617 over HTTPS
    28. -
    29. MAY request entity references in place of entities previously returned in the response ([section ##11.2.8])
    30. -
    31. MAY support deleted entities, link entities, deleted link entities in a delta response ([section ##11.3])
    32. -
    33. MAY support asynchronous responses ([section ##11.6])
    34. +
    35. MAY request entity references in place of entities previously returned in the response (section 11.2.8)
    36. +
    37. MAY support deleted entities, link entities, deleted link entities in a delta response (section 11.3)
    38. +
    39. MAY support asynchronous responses (section 11.6)
    40. MAY support metadata=minimal in a JSON response (see OData-JSON)
    41. MAY support streaming in a JSON response (see OData-JSON)
    diff --git a/docs/odata-protocol/odata-protocol.md b/docs/odata-protocol/odata-protocol.md index f1c4ac424..66e365496 100644 --- a/docs/odata-protocol/odata-protocol.md +++ b/docs/odata-protocol/odata-protocol.md @@ -6292,33 +6292,33 @@ To be considered an *Updatable OData Service*, the service additionally: 18. MUST include edit links (explicitly or implicitly) for all updatable or deletable resources according to [OData-JSON](#ODataJSON) 19. MUST support `POST` of new entities to insertable entity sets -([section ##11.4.1.5] and [section ##11.4.2.1]) +([section 11.4.1.5](#ReturningResultsfromDataModificationRequests)) 20. MUST support `POST` of new related entities to updatable navigation -properties ([section ##11.4.2]) +properties ([section 11.4.2](#CreateanEntity)) 21. MUST support `POST` to `$ref` to add an existing entity to an -updatable related collection ([section ##11.4.6.1]) +updatable related collection ([section 11.4.6.1](#AddaReferencetoaCollectionValuedNavigationProperty)) 22. MUST support `PUT` to `$ref` to set an existing single updatable -related entity ([section ##11.4.6.3]) +related entity ([section 11.4.6.3](#ChangetheReferenceinaSingleValuedNavigationProperty)) 23. MUST support `PATCH` to all edit URLs for updatable resources -([section ##11.4.3]) +([section 11.4.3](#UpdateanEntity)) 24. MUST support `DELETE` to all edit URLs for deletable resources -([section ##11.4.5]) +([section 11.4.5](#DeleteanEntity)) 25. MUST support `DELETE` to `$ref` to remove a reference to an entity -from an updatable navigation property ([section ##11.4.6.2]) +from an updatable navigation property ([section 11.4.6.2](#RemoveaReferencetoanEntity)) 26. MUST support `If-Match` header in update/delete of any resources -returned with an ETag ([section ##11.4.1.1]) +returned with an ETag ([section 11.4.1.1](#UseofETagsforAvoidingUpdateConflicts)) 27. MUST return a `Location` header with the edit URL or read URL of a -created resource ([section ##11.4.2]) +created resource ([section 11.4.2](#CreateanEntity)) 28. MUST include the `OData-EntityId` header in response to any create -or upsert operation that returns `204 No Content` ([section ##8.3.4]) -29. MUST support Upserts ([section ##11.4.4]) +or upsert operation that returns `204 No Content` ([section 8.3.4](#HeaderODataEntityId)) +29. MUST support Upserts ([section 11.4.4](#UpsertanEntity)) 30. SHOULD support `PUT` and `PATCH` to an individual primitive -([section ##11.4.9.1]) or complex ([section ##11.4.9.3]) property (respectively) +([section 11.4.9.1](#UpdateaPrimitiveProperty)) or complex ([section 11.4.9.3](#UpdateaComplexProperty)) property (respectively) 31. SHOULD support `DELETE` to set an individual property to null -([section ##11.4.9.2]) -32. SHOULD support deep inserts ([section ##11.4.2.2]) -33. MAY support set-based updates ([section ##11.4.13]) or deletes (section -11.4.14) to members of a collection +([section 11.4.9.2](#SetaValuetoNull)) +32. SHOULD support deep inserts ([section 11.4.2.2](#CreateRelatedEntitiesWhenCreatinganEntity)) +33. MAY support set-based updates ([section 11.4.13](#UpdateMembersofaCollection)) or deletes +([section 11.4.14](#DeleteMembersofaCollection)) to members of a collection ### 12.1.2 OData 4.0 Intermediate Conformance Level @@ -6329,39 +6329,40 @@ 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 ##9.3.1]) -3. MUST support `$select ([section ##11.2.5.1])` +unsupported functionality ([section 2501NotImplemented]) +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])` -6. MUST support `/$value` on media entities ([section 11.2.3](#RequestingtheMediaStreamofaMediaEntityusingvalue)) and individual properties ([section ##11.2.4.1]) -7. MUST support `$filter ([section ##11.2.6.1])` +[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 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.1]) - 2. MUST support aliases in `$filter` expressions ([section ##11.2.6.1.3]) - 3. SHOULD support additional filter operations ([section ##11.2.6.1.1]) +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 ##9.3.1]) - 4. SHOULD support the canonical functions ([section ##11.2.6.1.2]) and +operations ([section 3501NotImplemented]) + 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 ##9.3.1]) - 5. SHOULD support `$filter` on expanded entities ([section ##11.2.5.2.1]) +functions ([section 4501NotImplemented]) + 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]) +[OData-CSDLXML](#ODataCSDL) ([section 11.1.2](#MetadataDocumentRequest)) 9. SHOULD support the [OData-JSON](#ODataJSON) format 10. SHOULD consider supporting basic authentication as defined in [RFC7617](#rfc7617) over HTTPS for the highest level of interoperability with generic clients -11. SHOULD support the `$search system query option ([section ##11.2.6.6])` -12. SHOULD support the `$skip system query option ([section ##11.2.6.4])` -13. SHOULD support the `$count system query option ([section ##11.2.6.5])` -14. SHOULD support `$expand` ([section ##11.2.5.2]) +11. SHOULD support the `$search` system query option ([section 11.2.6.6](#SystemQueryOptionsearch)) +12. SHOULD support the `$skip` system query option ([section 11.2.6.4](#SystemQueryOptionskip)) +13. SHOULD support the `$count` system query option ([section 11.2.6.5](#SystemQueryOptioncount)) +14. SHOULD support `$expand` ([section 11.2.5.2](#SystemQueryOptionexpand)) 15. SHOULD support the lambda operators `any` and `all` on navigation- -and collection-valued properties (section 5.1.1.10 in [OData‑URL](#ODataURL)) +and collection-valued properties (section 5.1.1.10 in +[OData URL](#ODataURL)) 16. SHOULD support the `/$count` segment on navigation and collection -properties ([section ##11.2.10]) +properties ([section 11.2.10](#RequestingtheNumberofItemsinaCollection)) 17. SHOULD support `$orderby asc` and `desc` on individual properties -([section ##11.2.6.2]) +([section 11.2.6.2](#SystemQueryOptionorderby)) ### 12.1.3 OData 4.0 Advanced Conformance Level @@ -6370,17 +6371,18 @@ In order to conform to the OData Advanced Conformance Level, a service: 1. MUST conform to at least the [OData 4.0 Intermediate Conformance Level](#OData40IntermediateConformanceLevel) 2. MUST publish metadata at `$metadata` according to -[OData-CSDLXML](#ODataCSDL) ([section ##11.1.2]) +[OData-CSDLXML](#ODataCSDL) ([section 11.1.2](#MetadataDocumentRequest)) 3. MUST support the [OData-JSON](#ODataJSON) format 4. MUST support the `/$count` segment on navigation and collection -properties ([section ##11.2.10]) +properties ([section 11.2.10](#RequestingtheNumberofItemsinaCollection)) 5. MUST support the lambda operators `any` and `all` on navigation- and -collection-valued properties (section 5.1.1.10 in [OData‑URL](#ODataURL)) -6. MUST support the `$skip` system query option ([section ##11.2.6.4]) -7. MUST support the `$count` system query option ([section ##11.2.6.5]) +collection-valued properties (section 5.1.1.10 in +[OData URL](#ODataURL)) +6. MUST support the `$skip` system query option ([section 11.2.6.4](#SystemQueryOptionskip)) +7. MUST support the `$count` system query option ([section 11.2.6.5](#SystemQueryOptioncount)) 8. MUST support `$orderby` `asc` and `desc` on individual properties -([section ##11.2.6.2]) -9. MUST support `$expand` ([section ##11.2.5.2]) +([section 11.2.6.2](#SystemQueryOptionorderby)) +9. MUST support `$expand` ([section 11.2.5.2](#SystemQueryOptionexpand)) 1. MUST support returning references for expanded properties 2. MUST support `$filter` on expanded collection-valued properties 3. MUST support cast segment in expand with derived types @@ -6390,21 +6392,19 @@ collection-valued properties 6. SHOULD support `$top` and `$skip` on expanded collection-valued properties 7. SHOULD support `$search` on expanded collection-valued properties - 8. SHOULD support `$levels` for recursive expand (section -11.2.5.2.1.1) + 8. SHOULD support `$levels` for recursive expand ([section 11.2.5.2.1.1](#ExpandOptionlevels)) 9. MAY support `$compute` on expanded properties -10. MUST support the `$search` system query option ([section ##11.2.6.6]) +10. MUST support the `$search` system query option ([section 11.2.6.6](#SystemQueryOptionsearch)) 11. MUST support batch requests according to the multipart format -([section ##11.7] and all subsections) and MAY support batch requests +([section 11.7](#BatchRequests) and all subsections) and MAY support batch requests according to the JSON Batch format defined in [OData-JSON](#ODataJSON) 12. MUST support the resource path conventions defined in -[OData‑URL](#ODataURL) +[OData URL](#ODataURL) 13. SHOULD support [asynchronous requests](#AsynchronousRequests) -([section ##11.6]) -14. SHOULD support [Delta change tracking](#RequestingChanges) (section -11.3) -15. SHOULD support cross-join queries defined in [OData‑URL](#ODataURL) -16. MAY support the `$compute` system query option ([section ##11.2.5.3]) +([section 11.6](#AsynchronousRequests)) +14. SHOULD support [Delta change tracking](#RequestingChanges) ([section 11.3](#RequestingChanges)) +15. SHOULD support cross-join queries defined in [OData URL](#ODataURL) +16. MAY support the `$compute` system query option ([section 11.2.5.3](#SystemQueryOptioncompute)) ## 12.2 OData 4.01 Service Conformance Levels @@ -6423,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. @@ -6463,13 +6463,13 @@ with a maximum cardinality of one 11. SHOULD support negative indexes for the substring function 12. MAY support Key-As-Segment URL convention 1. MUST also support canonical URL conventions (described in -[OData‑URL](#ODataURL)) or include URLs in payload +[OData URL](#ODataURL)) or include URLs in payload 13. MAY support the count of a filtered collection in a common 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 @@ -6484,16 +6484,16 @@ 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 Level](#OData40MinimalConformanceLevel) for an Updateable service. 19. MUST support `DELETE` to the reference of a collection member to be -removed, identified by key ([section ##11.4.6.2]) +removed, identified by key ([section 11.4.6.2](#RemoveaReferencetoanEntity)) 20. SHOULD support `PUT` against single entity with nested content -21. SHOULD support deep updates ([section ##11.4.3.1]) and deep inserts -([section ##11.4.2.2]) +21. SHOULD support deep updates ([section 11.4.3.1](#UpdateRelatedEntitiesWhenUpdatinganEntity)) and deep inserts +([section 11.4.2.2](#CreateRelatedEntitiesWhenCreatinganEntity)) 22. SHOULD support `PUT` or `DELETE` to `$ref` of a collection-valued nav prop 23. MAY support `POST` to collections of complex/primitive types @@ -6548,9 +6548,9 @@ properties properties 5. SHOULD support `$search` on selected collection-valued properties 6. MUST publish metadata at `$metadata` according to -[OData-CSDLJSON](#ODataCSDL) ([section ##11.1.2]) +[OData-CSDLJSON](#ODataCSDL) ([section 11.1.2](#MetadataDocumentRequest)) 7. MUST support batch requests according both to the multipart format -([section ##11.7] and all subsections) and the JSON Batch format defined in +([section 11.7](#BatchRequests) and all subsections) and the JSON Batch format defined in [OData-JSON](#ODataJSON) 8. SHOULD support filtering a collection using a `/$filter` path segment @@ -6559,7 +6559,7 @@ 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 ## 12.3 Interoperable OData Clients Interoperable OData clients can expect to work with OData Services that @@ -6567,20 +6567,19 @@ 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) -2. MUST specify `OData-Version` ([section ##8.1.5]) and `Content-Type` -([section ##8.1.1]) in any request with a payload +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 ##9.1.5]) -5. MUST correctly handle next links ([section ##11.2.6.7]) +4. MUST follow redirects ([section 53xxRedirection]) +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]) +properties not specified in metadata ([section 11.2](#RequestingData)) 7. MUST generate `PATCH` requests for updates, if the client supports -updates ([section ##11.4.3]) +updates ([section 11.4.3](#UpdateanEntity)) 8. MUST include the `$` prefix when specifying OData-defined system query options 9. MUST use case-sensitive query options, operators, and canonical @@ -6588,10 +6587,10 @@ functions 10. SHOULD support basic authentication as defined in [RFC7617](#rfc7617) over HTTPS 11. MAY request entity references in place of entities previously -returned in the response ([section ##11.2.8]) +returned in the response ([section 11.2.8](#RequestingEntityReferences)) 12. MAY support deleted entities, link entities, deleted link entities -in a delta response ([section ##11.3]) -13. MAY support asynchronous responses ([section ##11.6]) +in a delta response ([section 11.3](#RequestingChanges)) +13. MAY support asynchronous responses ([section 11.6](#AsynchronousRequests)) 14. MAY support `metadata=minimal` in a JSON response (see [OData-JSON](#ODataJSON)) 15. MAY support `streaming `in a JSON response (see diff --git a/odata-protocol/12 Conformance.md b/odata-protocol/12 Conformance.md index de633aaa3..ac514c6f1 100644 --- a/odata-protocol/12 Conformance.md +++ b/odata-protocol/12 Conformance.md @@ -133,8 +133,7 @@ unsupported functionality ([section ##ResponseCode501NotImplemented]) 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 ##SystemQueryOptiontop]) -6. MUST support `/$value` on media entities (section 4.12 in -[OData URL](#ODataURL)) and individual properties ([section ##RequestingaPropertysRawValueusingvalue]) +6. MUST support `/$value` on media entities ([section ##MetadataDocumentRequest]) and individual properties ([section ##RequestingaPropertysRawValueusingvalue]) 7. MUST support `$filter` ([section ##SystemQueryOptionfilter]) 1. MUST support `eq`, `ne` filter operations on properties of entities in the requested entity set ([section ##SystemQueryOptionfilter]) @@ -269,8 +268,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 +##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 @@ -371,8 +370,7 @@ Level](#OData40MinimalConformanceLevel) and implement the 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 ##HeaderODataMaxVersion]) 2. MUST specify `OData-Version` ([section ##HeaderODataVersion]) and `Content-Type` ([section ##HeaderContentType]) in any request with a payload 3. MUST be a conforming consumer of OData as defined in