Re: [Jmap] JMAP for Migration and Data Portability

Joris Baum <joris@audriga.com> Wed, 22 March 2023 09:53 UTC

Return-Path: <joris@audriga.com>
X-Original-To: jmap@ietfa.amsl.com
Delivered-To: jmap@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id E4E66C14CE4C for <jmap@ietfa.amsl.com>; Wed, 22 Mar 2023 02:53:34 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.897
X-Spam-Level:
X-Spam-Status: No, score=-1.897 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, NICE_REPLY_A=-0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 9LiZGk8QVXIV for <jmap@ietfa.amsl.com>; Wed, 22 Mar 2023 02:53:31 -0700 (PDT)
Received: from mail.audriga.com (mail.audriga.com [176.221.42.35]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 93842C14CE38 for <jmap@ietf.org>; Wed, 22 Mar 2023 02:53:08 -0700 (PDT)
Received: from localhost (localhost.localdomain [127.0.0.1]) by mail.audriga.com (Postfix) with ESMTP id 0B102A217 for <jmap@ietf.org>; Wed, 22 Mar 2023 10:53:07 +0100 (CET)
X-Virus-Scanned: Debian amavisd-new at mail.audriga.com
Received: from mail.audriga.com ([127.0.0.1]) by localhost (mail.audriga.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id F_epsrlaZ_A0 for <jmap@ietf.org>; Wed, 22 Mar 2023 10:53:04 +0100 (CET)
Received: from [192.168.2.106] (dslb-094-223-169-210.094.223.pools.vodafone-ip.de [94.223.169.210]) (Authenticated sender: joris@audriga.com) by mail.audriga.com (Postfix) with ESMTPSA id B54FFA1ED for <jmap@ietf.org>; Wed, 22 Mar 2023 10:53:04 +0100 (CET)
Content-Type: multipart/alternative; boundary="------------04VL0hhLZ7F6Z5ibUrDXNkWn"
Message-ID: <99918979-5f16-bd7d-baf0-d1caf3f9b297@audriga.com>
Date: Wed, 22 Mar 2023 10:53:04 +0100
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.9.0
To: jmap@ietf.org
References: <79005001-f72d-26b2-53b7-7832d1758af0@audriga.com> <d3e58e51-0055-4fa3-930e-ae3f079257dc@dogfoodapp.fastmail.com> <1741b4e1-9226-dccf-6f28-602127bc7e65@audriga.com> <3b9e5db5-8bb7-e52e-6c34-084f8008d434@audriga.com> <34cf8f05-f3ac-4b4e-9657-b54c5ad943e3@dogfoodapp.fastmail.com>
Content-Language: en-US
From: Joris Baum <joris@audriga.com>
In-Reply-To: <34cf8f05-f3ac-4b4e-9657-b54c5ad943e3@dogfoodapp.fastmail.com>
Archived-At: <https://mailarchive.ietf.org/arch/msg/jmap/YBF3GJwQdRtkzL8dn5hbIgJMwRY>
Subject: Re: [Jmap] JMAP for Migration and Data Portability
X-BeenThere: jmap@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: JSON Message Access Protocol <jmap.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/jmap>, <mailto:jmap-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/jmap/>
List-Post: <mailto:jmap@ietf.org>
List-Help: <mailto:jmap-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/jmap>, <mailto:jmap-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 22 Mar 2023 09:53:35 -0000

Hi Neil,


Yes. You are correct. If the goal is to signal that the whole /set 
method is not supported, then using the accountReadOnly error for that 
is a good solution. Thank you for that hint. My first thought was to set 
maxObjectsInSet to 0 and then return a "tooLarge" error. I guess both 
approaches could work here.

However, I came from a different direction. My thought was that some 
JMAP methods are quite powerful on their own. For example, /set features 
create, update and destroy which other API often have as separate calls. 
It also features ifInState, which is typically not interesting for the 
data portability use case.

It would be nice to have a way to signal in a more fine-grained way that 
a server does not support things like create, update or destroy for 
/set. As far as I can see, SetError could be used for that for these 
three properties. In case a client tries to do /set with an ID and an 
object in "update", a server could place the ID in the "notUpdated" 
property along with a SetError explaining that it does not support 
update. This would not be machine-readable, however.

For /query, the errors unsupportedSort and unsupportedFilter already 
exist, which seem to be intended exactly for such a case: to signal that 
a server does not support certain aspects of the /query method.

Regards,


Joris


On 22.03.23 00:39, Neil Jenkins wrote:
> On Wed, 22 Mar 2023, at 01:43, Joris Baum wrote:
>>
>> /set
>>
>> * "maxObjectsInSet" - no support for /set
>>
>> * stateMismatch - no support for ifInState (dirty, because it signals 
>> an issue on the client side)
>>
>> * SetError - no support for create, update, destory (via description. 
>> Not machine readable)
>>
>
> Do you need to implement |/set| at all? If the only requirement is for 
> access, then you can mark the account |isReadOnly: true 
> <https://www.rfc-editor.org/rfc/rfc8620#page-11>|, and then your 
> implemenation of |/set| is just "return an |accountReadOnly| error".
>
> Cheers,
> Neil.
>
> _______________________________________________
> Jmap mailing list
> Jmap@ietf.org
> https://www.ietf.org/mailman/listinfo/jmap

-- 
Joris Baum
Tel: +49 721 170293 16
Fax: +49 721 170293 179

http://www.audriga.com  |http://www.twitter.com/audriga

--------------------------------------------------------------------------
audriga GmbH | Alter Schlachthof 57 | 76137 Karlsruhe
Sitz der Gesellschaft: Karlsruhe - Amtsgericht Mannheim - HRB 713034
Geschäftsführer: Dr. Frank Dengler, Dr.-Ing. Hans-Jörg Happel
--------------------------------------------------------------------------