[要約] RFC 9425 は、JMAPを使用してサーバー上のアカウントのクォータを処理するためのデータモデルを定義しています。その目的は、クォータ管理を効率的かつ一貫した方法で行うことです。

Internet Engineering Task Force (IETF)                   R. Cordier, Ed.
Request for Comments: 9425                              Linagora Vietnam
Category: Standards Track                                      June 2023
ISSN: 2070-1721
        
JSON Meta Application Protocol (JMAP) for Quotas
クォータ用のJSONメタアプリケーションプロトコル(JMAP)
Abstract
概要

This document specifies a data model for handling quotas on accounts with a server using the JSON Meta Application Protocol (JMAP).

このドキュメントは、JSON Metaアプリケーションプロトコル(JMAP)を使用してサーバーを使用してアカウントのクォータを処理するためのデータモデルを指定します。

Status of This Memo
本文書の位置付け

This is an Internet Standards Track document.

これは、インターネット標準トラックドキュメントです。

This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 7841.

このドキュメントは、インターネットエンジニアリングタスクフォース(IETF)の製品です。IETFコミュニティのコンセンサスを表しています。公開レビューを受けており、インターネットエンジニアリングステアリンググループ(IESG)からの出版が承認されています。インターネット標準の詳細については、RFC 7841のセクション2で入手できます。

Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at https://www.rfc-editor.org/info/rfc9425.

このドキュメントの現在のステータス、任意のERRATA、およびそのフィードバックを提供する方法に関する情報は、https://www.rfc-editor.org/info/rfc9425で取得できます。

著作権表示

Copyright (c) 2023 IETF Trust and the persons identified as the document authors. All rights reserved.

著作権(c)2023 IETF Trustおよび文書著者として特定された人。無断転載を禁じます。

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.

このドキュメントは、BCP 78およびIETFドキュメント(https://trustee.ietf.org/license-info)に関連するIETF Trustの法的規定の対象となります。この文書に関するあなたの権利と制限を説明するので、これらの文書を注意深く確認してください。このドキュメントから抽出されたコードコンポーネントには、セクション4.Eで説明されている法的規定のセクション4.Eで説明されており、改訂されたBSDライセンスで説明されている保証なしで提供されるように、改訂されたBSDライセンステキストを含める必要があります。

Table of Contents
目次
   1.  Introduction
     1.1.  Notational Conventions
     1.2.  Terminology
   2.  Addition to the Capabilities Object
     2.1.  urn:ietf:params:jmap:quota
   3.  Sub-types of the Quota Data Type
     3.1.  Scope
     3.2.  ResourceType
   4.  Quota
     4.1.  Properties of the Quota Object
     4.2.  Quota/get
     4.3.  Quota/changes
     4.4.  Quota/query
     4.5.  Quota/queryChanges
   5.  Examples
     5.1.  Fetching Quotas
     5.2.  Requesting Latest Quota Changes
   6.  Push
   7.  IANA Considerations
     7.1.  JMAP Capability Registration for "quota"
     7.2.  JMAP Data Type Registration for "Quota"
   8.  Security Considerations
   9.  Normative References
   Acknowledgements
   Author's Address
        
1. Introduction
1. はじめに

The JSON Meta Application Protocol (JMAP) [RFC8620] is a generic protocol for synchronizing data, such as mails, calendars, or contacts between a client and a server. It is optimized for mobile and web environments and aims to provide a consistent interface to different data types.

JSON Metaアプリケーションプロトコル(JMAP)[RFC8620]は、クライアントとサーバー間のメール、カレンダー、または連絡先などのデータを同期するための一般的なプロトコルです。モバイルおよびWeb環境向けに最適化されており、さまざまなデータ型に一貫したインターフェイスを提供することを目的としています。

This specification defines a data model for handling quotas over JMAP, allowing a user to obtain details about a certain quota.

この仕様では、JMAPを介したクォータを処理するためのデータモデルを定義し、ユーザーが特定のクォータの詳細を取得できるようにします。

This specification does not address quota administration, which should be handled by other means.

この仕様は、他の手段で処理する必要があるクォータ管理には対応していません。

1.1. Notational Conventions
1.1. 表記規則

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.

この文書のキーワード "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", および "OPTIONAL" はBCP 14 [RFC2119] [RFC8174]で説明されているように、すべて大文字の場合にのみ解釈されます。

Type signatures, examples, and property descriptions in this document follow the conventions established in Section 1.1 of [RFC8620]. Data types defined in the core specification are also used in this document.

このドキュメントのタイプシグネチャ、例、およびプロパティの説明は、[RFC8620]のセクション1.1で確立された規則に従っています。コア仕様で定義されているデータ型は、このドキュメントでも使用されています。

1.2. Terminology
1.2. 用語

This document reuses the terminology from the core JMAP specification established in Section 1.6 of [RFC8620].

この文書は、[RFC8620]のセクション1.6で確立されたコアJMAP仕様から用語を再利用します。

The term "Quota" (when capitalized) is used to refer to the data type defined in Section 4 and instance of that data type.

「クォータ」という用語(大文字)は、セクション4で定義されているデータ型とそのデータ型のインスタンスを参照するために使用されます。

2. Addition to the Capabilities Object
2. 機能オブジェクトに加えます

The capabilities object is returned as part of the JMAP Session object; see [RFC8620], Section 2.

機能オブジェクトは、JMAPセッションオブジェクトの一部として返されます。[RFC8620]、セクション2を参照してください。

This document defines one additional capability URI.

このドキュメントでは、1つの追加の機能URIを定義します。

2.1. urn:ietf:params:jmap:quota
2.1. urn:ietf:params:jmap:quota

This represents support for the Quota data type and associated API methods. Servers supporting this specification MUST add a property called "urn:ietf:params:jmap:quota" to the capabilities object.

これは、クォータデータ型と関連するAPIメソッドのサポートを表します。この仕様をサポートするサーバーは、「urn:ietf:params:jmap:quota」というプロパティを機能オブジェクトに追加する必要があります。

The value of this property is an empty object in both the JMAP Session capabilities property and an account's accountCapabilities property.

このプロパティの値は、JMAPセッション機能プロパティとアカウントのアカウントキャビリティプロパティの両方の空のオブジェクトです。

3. Sub-types of the Quota Data Type
3. クォータデータ型のサブタイプ

There are two fields within the Quota data type, which have an enumerated set of possible values. These are:

クォータデータ型には、可能な値のセットが列挙されている2つのフィールドがあります。これらは:

3.1. Scope
3.1. 範囲

The Scope data type is used to represent the entities the quota applies to. It is defined as a "String" with values from the following set:

スコープデータ型は、割り当てが適用されるエンティティを表すために使用されます。これは、次のセットの値を持つ「文字列」として定義されます。

* account: The quota information applies to just the client's account.

* アカウント:クォータ情報は、クライアントのアカウントのみに適用されます。

* domain: The quota information applies to all accounts sharing this domain.

* ドメイン:クォータ情報は、このドメインを共有するすべてのアカウントに適用されます。

* global: The quota information applies to all accounts belonging to the server.

* グローバル:クォータ情報は、サーバーに属するすべてのアカウントに適用されます。

3.2. ResourceType
3.2. ResourceType

The ResourceType data type is used to act as a unit of measure for the quota usage. It is defined as a "String" with values from the following set:

ResourceTypeデータ型は、クォータ使用の測定単位として機能するために使用されます。これは、次のセットの値を持つ「文字列」として定義されます。

* count: The quota is measured in a number of data type objects. For example, a quota can have a limit of 50 "Mail" objects.

* カウント:クォータは、多くのデータ型オブジェクトで測定されます。たとえば、クォータには50の「メール」オブジェクトの制限があります。

* octets: The quota is measured in size (in octets). For example, a quota can have a limit of 25000 octets.

* オクテット:クォータはサイズ(オクテット)で測定されます。たとえば、クォータには25000オクテットの制限があります。

4. Quota
4. クォータ

The Quota is an object that displays the limit set to an account usage. It then shows as well the current usage in regard to that limit.

クォータは、アカウントの使用に設定された制限を表示するオブジェクトです。次に、その制限に関する現在の使用も表示されます。

4.1. Properties of the Quota Object
4.1. クォータオブジェクトのプロパティ

The Quota object MUST contain the following fields:

クォータオブジェクトには、次のフィールドを含める必要があります。

* id: Id

* やった

* The unique identifier for this object.

* このオブジェクトの一意の識別子。

* resourceType: String

* ResourceType:文字列

* The resource type of the quota as defined in Section 3.2.

* セクション3.2で定義されているクォータのリソースタイプ。

* used: UnsignedInt

* 使用:unsignedint

* The current usage of the defined quota, using the "resourceType" defined as unit of measure. Computation of this value is handled by the server.

* 定義されたクォータの現在の使用は、測定単位として定義された「ResourceType」を使用しています。この値の計算は、サーバーによって処理されます。

* hardLimit: UnsignedInt

* Hardlimit:unsignedint

* The hard limit set by this quota, using the "resourceType" defined as unit of measure. Objects in scope may not be created or updated if this limit is reached.

* この割り当てによって設定されたハード制限は、測定単位として定義された「ResourceType」を使用しています。この制限に到達した場合、スコープ内のオブジェクトは作成または更新されない場合があります。

* scope: String

* スコープ:文字列

* The "Scope" of this quota as defined in Section 3.1.

* セクション3.1で定義されているこの割り当ての「スコープ」。

* name: String

* 名前:文字列

* The name of the quota. Useful for managing quotas and using queries for searching.

* クォータの名前。クォータの管理や検索のクエリを使用するのに役立ちます。

* types: String[]

* タイプ:文字列[]

* A list of all the type names as defined in the "JMAP Types Names" registry (e.g., Email, Calendar, etc.) to which this quota applies. This allows the quotas to be assigned to distinct or shared data types.

* このクォータが適用される「JMAPタイプ名」レジストリ(電子メール、カレンダーなど)で定義されているすべてのタイプ名のリスト。これにより、クォータを異なるデータ型または共有データ型に割り当てることができます。

* The server MUST filter out any types for which the client did not request the associated capability in the "using" section of the request. Further, the server MUST NOT return Quota objects for which there are no types recognized by the client.

* サーバーは、クライアントがリクエストの「使用」セクションで関連する機能を要求しなかったタイプを除外する必要があります。さらに、サーバーは、クライアントによって認識されたタイプがないクォータオブジェクトを返してはなりません。

The Quota object MAY contain the following fields:

クォータオブジェクトには、次のフィールドが含まれる場合があります。

* warnLimit: UnsignedInt|null

* Warnlimit:unsignedint | null

* The warn limit set by this quota, using the "resourceType" defined as unit of measure. It can be used to send a warning to an entity about to reach the hard limit soon, but with no action taken yet. If set, it SHOULD be lower than the "softLimit" (if present and different from null) and the "hardLimit".

* この割り当てによって設定された警告制限は、測定単位として定義された「ResourceType」を使用しています。すぐに厳しい制限に到達しようとしている事業体に警告を送信するために使用できますが、アクションはまだ行われていません。設定されている場合、「softlimit」(存在し、nullとは異なる場合)および「硬質微小」よりも低くする必要があります。

* softLimit: UnsignedInt|null

* softlimit:unsignedint | null

* The soft limit set by this quota, using the "resourceType" defined as unit of measure. It can be used to still allow some operations but refuse some others. What is allowed or not is up to the server. For example, it could be used for blocking outgoing events of an entity (sending emails, creating calendar events, etc.) while still receiving incoming events (receiving emails, receiving calendars events, etc.). If set, it SHOULD be higher than the "warnLimit" (if present and different from null) but lower than the "hardLimit".

* この割り当てによって設定されたソフト制限は、測定単位として定義された「ResourceType」を使用しています。一部の操作を許可するために使用できますが、他の操作を拒否します。許可されているかどうかはサーバー次第です。たとえば、エンティティの発信イベントをブロックするために使用できます(電子メールの送信、カレンダーイベントの作成など)。設定されている場合、「Warnlimit」(存在し、nullとは異なる場合)よりも高く、「Hardlimit」よりも低くする必要があります。

* description: String|null

* 説明:文字列| null

* Arbitrary, free, human-readable description of this quota. It might be used to explain where the different limits come from and explain the entities and data types this quota applies to. The description MUST be encoded in UTF-8 [RFC3629] as described in [RFC8620], Section 1.5, and selected based on an Accept-Language header in the request (as defined in [RFC9110], Section 12.5.4) or out-of-band information about the user's language or locale.

* このクォータの任意の無料の人間が読みやすい説明。さまざまな制限がどこから来たのかを説明し、このクォータが適用されるエンティティとデータ型を説明するために使用される場合があります。説明は、[RFC8620]、セクション1.5で説明されているように、UTF-8 [RFC3629]でエンコードし、要求の受け入れ言語ヘッダー([RFC9110]、セクション12.5.4で定義されています)または廃止に基づいて選択する必要があります。ユーザーの言語またはロケールに関するバンド情報。

The following JMAP methods are supported.

次のJMAPメソッドがサポートされています。

4.2. Quota/get
4.2. クォータ/ゲット

Standard "/get" method as described in [RFC8620], Section 5.1. The _id_'s argument may be "null" to fetch all quotas of the account at once, as demonstrated in Section 5.1.

[RFC8620]、セクション5.1で説明されている標準「/get」メソッド。セクション5.1で示されているように、_ID_の引数は、アカウントのすべての割り当てを一度に取得する「null」である可能性があります。

4.3. Quota/changes
4.3. クォータ/変更

Standard "/changes" method as described in [RFC8620], Section 5.2, but with one extra argument in the response:

[RFC8620]、セクション5.2で説明されている標準「/変更」メソッドですが、応答に1つの追加の引数があります。

* updatedProperties: String[]|null

* 更新されたProperties:string [] | null

* If only the "used" Quota property has changed since the old state, this will be a list containing only that property. If the server is unable to tell if only "used" has changed, it MUST be null.

* 「使用されている」クォータプロパティのみが古い州以来変更されている場合、これはそのプロパティのみを含むリストになります。サーバーが「使用」のみが変更されているかどうかを判断できない場合、nullでなければなりません。

Since "used" frequently changes, but other properties are generally only changed rarely, the server can help the client optimize data transfer by keeping track of changes to quota usage separate from other state changes. The updatedProperties array may be used directly via a back-reference in a subsequent Quota/get call in the same request, so only these properties are returned if nothing else has changed.

「使用」は頻繁に変更されますが、他のプロパティは一般にめったに変更されるだけであるため、サーバーは、他の状態の変更とは別にクォータ使用の変更を追跡することにより、クライアントがデータ転送を最適化するのに役立ちます。更新されたプロパリティアレイは、後続のクォータ/同じリクエストでの後方参照/Get Callを介して直接使用できます。そのため、他に何も変更されていない場合、これらのプロパティのみが返されます。

Servers MAY decide to add other properties to the list that they judge to be changing frequently.

サーバーは、頻繁に変化していると判断する他のプロパティをリストに追加することを決定する場合があります。

This method's usage is demonstrated in Section 5.2.

この方法の使用法は、セクション5.2で実証されています。

4.4. Quota/query
4.4. クォータ/クエリ

This is a standard "/query" method as described in [RFC8620], Section 5.5.

これは、[RFC8620]、セクション5.5で説明されている標準「/クエリ」メソッドです。

A FilterCondition object has the following properties, any of which may be included or omitted:

フィルターコンディションオブジェクトには、次のプロパティがあり、そのいずれかを含めるか省略できます。

* name: String

* 名前:文字列

* The Quota _name_ property contains the given string.

* クォータ_name_プロパティには、指定された文字列が含まれています。

* scope: String

* スコープ:文字列

* The Quota _scope_ property must match the given value exactly.

* クォータ_scope_プロパティは、指定された値と正確に一致する必要があります。

* resourceType: String

* ResourceType:文字列

* The Quota _resourceType_ property must match the given value exactly.

* クォータ_resourcetype_プロパティは、指定された値と正確に一致する必要があります。

* type: String

* タイプ:文字列

* The Quota _types_ property contains the given value.

* クォータ_types_プロパティには、指定された値が含まれています。

A Quota object matches the FilterCondition if, and only if, all the given conditions match. If zero properties are specified, it is automatically true for all objects.

割り当てオブジェクトは、指定されたすべての条件が一致する場合にのみ、フィルターコンディションと一致します。ゼロプロパティが指定されている場合、すべてのオブジェクトに自動的に真です。

The following Quota properties MUST be supported for sorting:

ソートのために、次のクォータプロパティをサポートする必要があります。

* name

* 名前名名称ネーム指名名付ける称号指す二字

* used

* 使用済み中古古

4.5. Quota/queryChanges
4.5. クォータ/QueryChanges

This is a standard "/queryChanges" method as described in [RFC8620], Section 5.6.

これは、[RFC8620]、セクション5.6で説明されている標準「/QueryChanges」メソッドです。

5. Examples
5. 例
5.1. Fetching Quotas
5.1. クォータを取得します

Request fetching all quotas related to an account:

アカウントに関連するすべての割り当ての取得をリクエストします。

   [[ "Quota/get", {
     "accountId": "u33084183",
     "ids": null
   }, "0" ]]
        

With response:

応答がある:

   [[ "Quota/get", {
     "accountId": "u33084183",
     "state": "78540",
     "list": [{
       "id": "2a06df0d-9865-4e74-a92f-74dcc814270e",
       "resourceType": "count",
       "used": 1056,
       "warnLimit": 1600,
       "softLimit": 1800,
       "hardLimit": 2000,
       "scope": "account",
       "name": "bob@example.com",
       "description": "Personal account usage. When the soft limit is
                       reached, the user is not allowed to send mails or
                       create contacts and calendar events anymore.",
       "types" : [ "Mail", "Calendar", "Contact" ]
     }, {
       "id": "3b06df0e-3761-4s74-a92f-74dcc963501x",
       "resourceType": "octets",
       ...
     }, ...],
     "notFound": []
   }, "0" ]]
        
5.2. Requesting Latest Quota Changes
5.2. 最新のクォータの変更を要求します

Request fetching the changes for a specific quota:

特定のクォータの変更を取得するリクエスト:

   [[ "Quota/changes", {
     "accountId": "u33084183",
     "sinceState": "78540",
     "maxChanges": 20
   }, "0" ],
   [ "Quota/get", {
     "accountId": "u33084183",
     "#ids": {
       "resultOf": "0",
       "name": "Quota/changes",
       "path": "/updated"
     },
     "#properties": {
       "resultOf": "0",
       "name": "Quota/changes",
       "path": "/updatedProperties"
     }
   }, "1" ]]
        

With response:

応答がある:

   [[ "Quota/changes", {
     "accountId": "u33084183",
     "oldState": "78540",
     "newState": "78542",
     "hasMoreChanges": false,
     "updatedProperties": ["used"],
     "created": [],
     "updated": ["2a06df0d-9865-4e74-a92f-74dcc814270e"],
     "destroyed": []
   }, "0" ],
   [ "Quota/get", {
     "accountId": "u33084183",
     "state": "10826",
     "list": [{
       "id": "2a06df0d-9865-4e74-a92f-74dcc814270e",
       "used": 1246
     }],
     "notFound": []
   }, "1" ]]
        
6. Push
6. 押す

Servers MUST support the JMAP push mechanisms, as specified in [RFC8620], Section 7, to allow clients to receive notifications when the state changes for the Quota type defined in this specification.

サーバーは、[RFC8620]で指定されているように、セクション7で指定されているJMAPプッシュメカニズムをサポートして、この仕様で定義されているクォータタイプの状態が変更されたときにクライアントが通知を受信できるようにする必要があります。

7. IANA Considerations
7. IANAの考慮事項
7.1. JMAP Capability Registration for "quota"
7.1. 「クォータ」のJMAP機能登録

IANA has registered the "quota" JMAP Capability as follows:

IANAは、次のように「クォータ」JMAP機能を登録しています。

Capability Name:

機能名:

urn:ietf:params:jmap:quota

urn:ietf:params:jmap:quota

Reference:

参照:

RFC 9425

RFC 9425

Intended Use:

使用目的:

common

一般コモン通常同じ慣用頻出平凡卑近並並み尋常通俗一介月並み凡常尋常一様唯直よくあるありふれた一般的在り来たり庶民的当たり前の有りがち

Change Controller:

Change Controller:

IETF

IETF

Security and Privacy Considerations:

セキュリティとプライバシーの考慮事項:

RFC 9425, Section 8

RFC 9425、セクション8

7.2. JMAP Data Type Registration for "Quota"
7.2. JMAPデータ型「クォータ」の登録

IANA has registered the "Quota" Data Type as follows:

IANAは次のように「クォータ」データ型を登録しています。

Type Name:

タイプ名:

Quota

クォータ

Can Reference Blobs:

塊を参照できます:

No

いいえノー能

Can Use for State Change:

状態の変更に使用できます:

Yes

はい

Capability:

能力:

urn:ietf:params:jmap:quota

urn:ietf:params:jmap:quota

Reference:

参照:

RFC 9425

RFC 9425

8. Security Considerations
8. セキュリティに関する考慮事項

All security considerations of JMAP [RFC8620] apply to this specification.

JMAP [RFC8620]のすべてのセキュリティ上の考慮事項は、この仕様に適用されます。

Implementors should be careful to make sure the implementation of the extension specified in this document does not violate the site's security policy. The resource usage of other users is likely to be considered confidential information and should not be divulged to unauthorized persons.

実装者は、このドキュメントで指定された拡張機能の実装がサイトのセキュリティポリシーに違反しないことを確認するように注意する必要があります。他のユーザーのリソースの使用は、機密情報と見なされる可能性が高く、不正な人に明かされるべきではありません。

As for any resource shared across users (for example, a quota with the "domain" or "global" scope), a user that can consume the resource can affect the resources available to the other users. For example, a user could spam themselves with events and make the shared resource hit the limit and unusable for others (implementors could mitigate that with some rate-limiting implementation on the server).

ユーザー間で共有されるリソース(たとえば、「ドメイン」または「グローバル」範囲のクォータ)については、リソースを消費できるユーザーは、他のユーザーが利用できるリソースに影響を与える可能性があります。たとえば、ユーザーはイベントで自分自身をスパムして、共有リソースを他の人にとって使用できないようにすることができます(実装者は、サーバー上のレート制限実装でそれを軽減できます)。

Also, revealing domain and global quota counts to all users may cause privacy leakage of other sensitive data, or at least the existence of other sensitive data. For example, some users are part of a private list belonging to the server, so they shouldn't know how many users are in there. However, by comparing the quota count before and after sending a message to the list, it could reveal the number of people of the list, as the domain or global quota count would go up by the number of people subscribed. In order to limit those attacks, quotas with "domain" or "global" scope SHOULD only be visible to server administrators and not to general users.

また、すべてのユーザーにドメインとグローバルクォータカウントを明らかにすると、他の機密データ、または少なくとも他の機密データの存在がプライバシーの漏れを引き起こす可能性があります。たとえば、一部のユーザーはサーバーに属するプライベートリストの一部であるため、そこに何人のユーザーがいるのかわからないはずです。ただし、リストにメッセージを送信する前後にクォータカウントを比較することにより、ドメインまたはグローバルクォータカウントが購読されている人の数によって増加するため、リストの人の数を明らかにする可能性があります。これらの攻撃を制限するために、「ドメイン」または「グローバル」スコープを使用したクォータは、一般ユーザーではなくサーバー管理者にのみ表示される必要があります。

9. Normative References
9. 引用文献
   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119,
              DOI 10.17487/RFC2119, March 1997,
              <https://www.rfc-editor.org/info/rfc2119>.
        
   [RFC3629]  Yergeau, F., "UTF-8, a transformation format of ISO
              10646", STD 63, RFC 3629, DOI 10.17487/RFC3629, November
              2003, <https://www.rfc-editor.org/info/rfc3629>.
        
   [RFC8174]  Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
              2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
              May 2017, <https://www.rfc-editor.org/info/rfc8174>.
        
   [RFC8620]  Jenkins, N. and C. Newman, "The JSON Meta Application
              Protocol (JMAP)", RFC 8620, DOI 10.17487/RFC8620, July
              2019, <https://www.rfc-editor.org/info/rfc8620>.
        
   [RFC9007]  Ouazana, R., Ed., "Handling Message Disposition
              Notification with the JSON Meta Application Protocol
              (JMAP)", RFC 9007, DOI 10.17487/RFC9007, March 2021,
              <https://www.rfc-editor.org/info/rfc9007>.
        
   [RFC9110]  Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke,
              Ed., "HTTP Semantics", STD 97, RFC 9110,
              DOI 10.17487/RFC9110, June 2022,
              <https://www.rfc-editor.org/info/rfc9110>.
        
Acknowledgements
謝辞

Thank you to Michael Bailly, who co-wrote the first draft version of this document, before deciding to turn to other matters.

他の問題に頼ることを決定する前に、このドキュメントの最初のドラフトバージョンを共同執筆したMichael Baillyに感謝します。

Thank you to Benoit Tellier for his constant help and support on writing this document.

このドキュメントを書くことに関する彼の絶え間ない助けとサポートをしてくれたBenoit Tellierに感謝します。

Thank you to Raphael Ouazana for sharing his own experience on how to write an RFC after finalizing his own document: [RFC9007].

Raphael Ouazanaに、彼自身のドキュメントを完成させた後、RFCを書く方法に関する彼自身の経験を共有してくれてありがとう:[RFC9007]。

Thank you to Bron Gondwana, Neil Jenkins, Alexey Melnikov, Joris Baum, and the people from the IETF JMAP working group in general, who helped with extensive discussions, reviews, and feedback.

ブロン・ゴンドワナ、ニール・ジェンキンス、アレクセイ・メルニコフ、ジョリス・バウム、そして一般的なIETF JMAPワーキンググループの人々に感謝します。

Thank you to the people in the IETF organization, who took the time to read, understand, comment, and give great feedback in the last rounds.

IETF組織の人々に感謝します。IETF組織は、最後のラウンドで読み、理解し、コメントし、素晴らしいフィードバックを提供するのに時間をかけました。

Author's Address
著者の連絡先
   René Cordier (editor)
   Linagora Vietnam
   5 Dien Bien Phu
   Hanoi
   10000
   Vietnam
   Email: rcordier@linagora.com
   URI:   https://linagora.vn