OData TC meeting #123 Thursday Mar 10, 2016

Acting chair: Ralf

Chat transcript from room: odatatc
2016-03-10 0800-1000 PT

1. Roll call

1.1 Members present

        Gerald Krause (SAP SE)
        Hubert Heijkers (IBM)
        Ken Baclawski (Northeastern University)
        Mark Biamonte (Progress Software)
        Martin Zurmuehl (SAP SE)
        Michael Pizzo (Microsoft) a.k.a. Mike
        Ralf Handl (SAP SE)
        Stefan Hagen (Individual)
        Susan Malaika (IBM)
        Ted Jones (Red Hat)

Quorum achieved. Details cf. normative attendance sheet for this meeting (event_id=41453).

Notes taken by all and subsequently edited for readability by Stefan.

2. Approve agenda

The agenda is approved with addition of discussion of spec organization topic right after action.

3. Approve minutes from previous meeting(s)

3.1 Minutes from March 02 - March 03, 2016 TC meeting #122

https://www.oasis-open.org/apps/org/workgroup/odata/download.php/57676/latest/odata-meeting-122_on-20160302_03-F2F_minutes.html

Minutes approved unchanged as published

4. Review action items

4.1 Action items due March 10, 2016

None.

5. Errata 3 Issues

Review applications of Errata 3 issue resolutions (This is a carryover from previous meeting)

5.1 Review application of ODATA-803 and ODATA-912 and any other pending issues

Mike: I move we close ODATA-803 and ODATA-912 as applied. Stefan seconds.

No objections. ODATA-803 and ODATA-912 are CLOSED as applied.

List of the 2 issues closed above as applied:

  1. ODATA-803 - Collection-valued property: Define default value for nullable facet
  2. ODATA-912 - Clarify what clients should do if they see an unknown/invalid expression for a known annotation term.

6. Approve Errata 03 docs for public review

Mike: I move that the TC approve OData version 4.0 Errata 03 Working Draft 01 and all associated artifacts packaged together in https://www.oasis-open.org/apps/org/workgroup/odata/download.php/57717/odata-v4.0-errata03-wd01-2016-03-10.zip as Errata Draft 03 to OData v4.0 OASIS Standard approved on 24 February 2014 and confirm that the errata corrections do not constitute Substantive Changes to the Standard. Further, I move that the TC approve submitting OData version 4.0 Errata 03 contained in https://www.oasis-open.org/apps/org/workgroup/odata/download.php/57717/odata-v4.0-errata03-wd01-2016-03-10.zip for 15 days of public review. Mark seconds.

No objections. The motion carries

Mike: I move that the TC approve OData JSON Format version 4.0 Errata 03 Working Draft 01 and all associated artifacts packaged together in https://www.oasis-open.org/apps/org/workgroup/odata/download.php/57718/odata-json-format-v4.0-errata03-wd01-2016-03-03.zip as Errata Draft 03 to OData JSON Format v4.0 OASIS Standard approved on 24 February 2014 and confirm that the errata corrections do not constitute Substantive Changes to the Standard. Further, I move that the TC approve submitting OData JSON Format version 4.0 Errata 03 contained in in https://www.oasis-open.org/apps/org/workgroup/odata/download.php/57718/odata-json-format-v4.0-errata03-wd01-2016-03-03.zip for 15 days of public reviewStefan seconds.

No objections. The motion carries

7. V4.01 Issues - Issues for V4.01_WD01 in New or Open state

7.1 Set Operations

7.1.1 ODATA-820 - Allow indexing into collections

Ralf: Collecting discussion items:

Allow negative indexes in requests
Require non-negative indexes in responses/context URLs
Index -1 would be the last instance in the collection
This means GET Something/-1 returns the last instance
POST Something?$index=-1 would insert just before the last one because it identifies the last one and the insert always happens before the identified instance

Mike: Updated proposal reflecting the live discussion during the meeting:

  1. Introduce array collections [ODATA-820]
    1. Define new term, "Ordered", to advertise that a collection has a stable order. If it is a collection of primitive or complex types it can be indexed by ordinal:
      < Term Name="Ordered" Type="Core.Tag" DefaultValue="true" AppliesTo="Property,NavigationProperty,EntitySet,ReturnType"> 
          < Annotation Term="Core.Description" String="Collection has a stable order. Ordered collections of primitive or complex types can be indexed by ordinal."/> 
      < /Term> 
      
    2. GET/PUT/PATCH/DELETE to the /{index} of an ordered collection of primitive or complex types retrieves/replaces/modifies/deletes just that item
      1. /index cannot be appended to collections of entities or non-ordered collections
      2. Index is zero-based ordinal and follows JSONPointer syntax: collection/index
      3. Clients can specify a negative index to say "from the end" with -1 being the last entry. services must not specify a negative value for an index.
    3. Update section 7.1.5 of the CSDL spec to note that it is possible to have an ordered collection of complex types with navigation properties.
  2. Define a new "PositionalInsert" term to advertise that a collection supports inserting at a given ordinal [ODATA-820]
    <Term Name="PositionalInsert" Type="Core.Tag" Default="true" AppliesTo="Property, NavigationProperty, EntitySet">
        <Annotation Term="Core.Description" String="Items can be inserted at a given ordinal index."/>
    </Term> 
    
  3. For collections of entity, complex, or primitive types annotated with PositionalInsert, client may specify new ?$index= query parameter in POST request to collection to specify the non-negative, zero-based ordinal position where the item is inserted [ODATA-820]
    1. Clients can specify a negative index to say "from the end" with -1 being "insert before the last entry".

Gerald: I move we resolve ODATA-820 as proposed. Mike seconds.

No objections. ODATA-820 is RESOLVED with the amended proposal.

7.1.2 ODATA-616 - Allow POST to collections of complex and primitive types, and DELETE with $filter

Mike: Revised proposal resulting from live discussion:

  1. POST of a single item to a collection of complex or primitive types adds that item to the collection (as it does today with entity types.). POST to an ordered collection adds to the end. ?$index can be used to insert other locations in an ordered collection
  2. DELETE to any collection without a $filter clears the collection [ODATA-616]

Mike: I move we resolve ODATA-616 as proposed. Gerald seconds.

No objections. ODATA-616 is RESOLVED as proposed.

7.1.3 ODATA-615 - Allow PATCH and DELETE with $filter on collections to modify or delete all (and only) the matching entities

Mike: Revised proposal resulting from live discussion:

  1. DELETE to any collection with a $filter clause removes any element matching that filter. [ODATA-616], [ODATA-615]
    1. $expand can be used to delete related entities (deep delete)
    2. $select, $orderby, $top, $skip are NOT expected to be supported
  2. PUT against a collection of primitive/complex types takes a collection (format is same as for a GET on the collection) in the payload and replaces the entire collection. [ODATA-615] (all or nothing)
    1. PUT does not support $filter.
    2. This is the existing 4.0 behavior
  3. PUT is not supported against an entity collection [ODATA-615]
  4. PATCH to any collection with a payload containing a single instance updates each element in the collection [ODATA-615]
    1. If $filter is present, applies patch to those items matching the $filter [ODATA-615]
  5. PATCH to a collection of primitive or complex types with a collection payload is not supported [ODATA-615]

Mike: I move we approve ODATA-615 as proposed. Gerald seconds.

No objections. ODATA-615 is RESOLVED as proposed.

7.1.3.1 End fo Issue Processing

8. Next meeting

8.1 Next Meeting Thursday March 17, 2016 0800-1000 PT

Ralf: Europeans: note that next meeting starts at 16:00 CET as USA has already switched to daylight saving time

9. AOB and wrap up

None.

Meeting adjourned by chair.