Re: [core] draft-ietf-core-multipart-ct

Jim Schaad <> Wed, 20 February 2019 05:48 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id DBBFB129619; Tue, 19 Feb 2019 21:48:26 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.9
X-Spam-Status: No, score=-1.9 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id lgf5LnjD_yhQ; Tue, 19 Feb 2019 21:48:24 -0800 (PST)
Received: from ( []) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 8689912D84D; Tue, 19 Feb 2019 21:48:23 -0800 (PST)
Received: from Jude ( by ( with Microsoft SMTP Server (TLS) id 15.0.1395.4; Tue, 19 Feb 2019 21:48:17 -0800
From: Jim Schaad <>
To: 'Thomas Fossati' <>
CC: 'Klaus Hartke' <>, <>, <>
References: <000901d4c2f8$4b69a640$e23cf2c0$> <> <00f901d4c624$f313cb30$d93b6190$> <>
In-Reply-To: <>
Date: Tue, 19 Feb 2019 21:48:16 -0800
Message-ID: <026901d4c8df$e2251410$a66f3c30$>
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="----=_NextPart_000_026A_01D4C89C.D4029760"
X-Mailer: Microsoft Outlook 16.0
Thread-Index: AQHZeLzgd60hRSXGqZKN3jc6SJcBfgFxWGrPAht6VX8BZPQLtqW3PYig
Content-Language: en-us
X-Originating-IP: []
Archived-At: <>
Subject: Re: [core] draft-ietf-core-multipart-ct
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Wed, 20 Feb 2019 05:48:27 -0000

I did think about some of this when I put up the proposal.


For case (A), unless it is going to have options while doing a rigidly structured response, there is no need to have a value different than Accept 62.  In fact if there is really only one structured response, then there is not a need to have any accept option in the request at all.


For case (B), I thought about the recursive case and that is why I put the SHOULD and talked about options between multiple things while building the response.  I don’t think that there are going to be enough cases of a tree structure being returned that anything needs to be said about it one way or the other.  If that type of detail is really needed then I would expect that a GET would be replaced by a POST with the details of the response needed in the content of the POST.


In the semantics, I wanted to provide a minimal amount of information.  Thus the language about using it to provide guidance for specific pairs of content types that can go into a specific location.  The other place that I was thinking it might be useful would be in the case of a PUB-SUB server returning multiple content types where the set of equivalents might be restricted to the requested values rather than returning all possibilities.





From: Thomas Fossati <> 
Sent: Tuesday, February 19, 2019 1:58 AM
To: Jim Schaad <>
Cc: Klaus Hartke <>de>;;
Subject: Re: [core] draft-ietf-core-multipart-ct


It has surfaced in the mailing list as well as in private exchanges that there are two ways of looking at multipart-ct:
(A) as a mechanism to wrap multiple related things in a rigidly structured way;
(B) as a mechanism to aggregate related thingsin flexible ways (e.g., the EST-coaps credentials).

One approach to content negotiation for multiparts of kind (A) is to assign the aggregate a separate type altogether (overriding C-F 62 with something allocated on purpose from the FCFS portion of the codepoint space).  This fits Accept’s semantics well.

Content negotiation with multiparts of kind (B) needs something like Jim’s proposal.  The slight complication that potentially breaks Jim’s approach is recursion.

To support this, I think the draft could say:
- multiparts of kind (A) SHOULD override the multipart C-F with their own; and
- multiparts of kind (B) MUST not include other multiparts of the same “kind”.

The above would make a recursive multipart (i.e., a 62 embedded in another 62) illegal and give Jim’s new content negotiation a well-defined semantics.


On Sat, Feb 16, 2019 at 6:25 PM Jim Schaad < <> > wrote:
> Looking at this, it does seem to be a strange way to deal with things.  Of course the problem is made even more of a pain if you think about the possibility of having nested multipart contents.
> While the following does may not be the greatest solution, I think that it might be a better answer:
> 1.  Define a new target attribute:  "mt-subtypes" which contains the list of any content type which can be returned in a multipart content.  This could be at the top level or anyplace in a tree.
> 2.  Define a new option: "mt-accept" which contains the list of sub-content types that the client can deal with.  This option would be defined as advisory on the part of the server, that is it can return content types which are not in the list, but where options exist in the possible returned content tree the requested types, in order, SHOULD be the ones chosen by the server.   I would propose the option be "Non-Critical, Safe, CacheKey, Repeatable".
> I am not sure if I believe that the new option is part of the cache key or not.  I can see arguments on both sides, but I think I come down to yes.
> Carsten,   I think that this issue (but maybe not this solution) needs to be put onto the agenda for the interim meeting next Wed.
> Jim
> > -----Original Message-----
> > From: Klaus Hartke < <> >
> > Sent: Tuesday, February 12, 2019 9:50 AM
> > To: Jim Schaad < <> >
> > Cc: <> ; <>  WG < <> >
> > Subject: Re: [core] draft-ietf-core-multipart-ct
> >
> > For context: [1] [2]
> >
> > Jim Schaad wrote:
> > > If you say ACCEPT 62, do you accept any combination of nested content
> > types?
> >
> > Yes. A CoAP request can include at most one Accept option and any response
> > must exactly that value as Content-Format or be an error response. CoAP
> > doesn't have a mechanism for negotiating the content formats of
> > representations embedded in other representations. I stumbled upon the
> > same problem with CoRAL.
> >
> > > Should something about this be placed into the draft?
> >
> > Yes. Proposed text: "CoAP doesn't have a mechanism for negotiating the
> > content formats of representations embedded in application/multipart-core
> > representations."
> >
> > > Also I note that this draft is currently expired and needs to be reposted.
> >
> > Yes. Soon™.
> >
> > Klaus
> >
> > [1]
> >
> > I
> > [2]
> _______________________________________________
> core mailing list
> <>