From f70934bc083e03d00cbbb5d522646764fc5d80c2 Mon Sep 17 00:00:00 2001 From: Alex Collins Date: Thu, 1 Jun 2023 08:29:38 -0700 Subject: [PATCH 1/5] Avro Turbo Signed-off-by: Alex Collins ok Signed-off-by: Alex Collins Update cloudevents-turbo.avsc Signed-off-by: Alex Collins Update avro-format.md Signed-off-by: Alex Collins turbo -> compact Signed-off-by: Alex Collins turbo -> compact Signed-off-by: Alex Collins turbo -> compact Signed-off-by: Alex Collins --- README.md | 1 + cloudevents/SDK.md | 5 +- cloudevents/formats/avro-compact-format.md | 109 ++++++++++++++++++ cloudevents/formats/avro-format.md | 45 ++++---- cloudevents/formats/cloudevents-compact.avsc | 79 +++++++++++++ .../he/formats/avro-compact-format.md | 2 + .../zh-CN/formats/avro-compact-format.md | 6 + cloudevents/languages/zh-CN/primer.md | 2 +- cloudevents/primer.md | 2 +- 9 files changed, 227 insertions(+), 24 deletions(-) create mode 100644 cloudevents/formats/avro-compact-format.md create mode 100644 cloudevents/formats/cloudevents-compact.avsc create mode 100644 cloudevents/languages/he/formats/avro-compact-format.md create mode 100644 cloudevents/languages/zh-CN/formats/avro-compact-format.md diff --git a/README.md b/README.md index aec7d819b..528243a2e 100644 --- a/README.md +++ b/README.md @@ -36,6 +36,7 @@ incubator project on [Oct 24, 2019](https://github.com/cncf/toc/pull/297). | **Optional Specifications:** | | AMQP Protocol Binding | [v1.0.2](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/bindings/amqp-protocol-binding.md) | [WIP](cloudevents/bindings/amqp-protocol-binding.md) | | AVRO Event Format | [v1.0.2](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/formats/avro-format.md) | [WIP](cloudevents/formats/avro-format.md) | +| AVRO Compact Event Format | | [WIP](cloudevents/formats/avro-compact-format.md) | | HTTP Protocol Binding | [v1.0.2](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/bindings/http-protocol-binding.md) | [WIP](cloudevents/bindings/http-protocol-binding.md) | | JSON Event Format | [v1.0.2](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/formats/json-format.md) | [WIP](cloudevents/formats/json-format.md) | | Kafka Protocol Binding | [v1.0.2](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/bindings/kafka-protocol-binding.md) | [WIP](cloudevents/bindings/kafka-protocol-binding.md) | diff --git a/cloudevents/SDK.md b/cloudevents/SDK.md index b6e1af154..dfb2653fc 100644 --- a/cloudevents/SDK.md +++ b/cloudevents/SDK.md @@ -13,7 +13,7 @@ following SDKs: - [Java SDK](https://github.com/cloudevents/sdk-java) - [JavaScript SDK](https://github.com/cloudevents/sdk-javascript) - [PHP SDK](https://github.com/cloudevents/sdk-php) -- [PowerShell](https://github.com/cloudevents/sdk-powershell) +- [PowerShell SDK](https://github.com/cloudevents/sdk-powershell) - [Python SDK](https://github.com/cloudevents/sdk-python) - [Ruby SDK](https://github.com/cloudevents/sdk-ruby) - [Rust SDK](https://github.com/cloudevents/sdk-rust) @@ -168,11 +168,12 @@ Undo it when done: --> | Feature | C# | Go | Java | JS | PHP | PS | Python | Ruby | Rust | -| :------ | :-: | :-: | :--: | :-: | :-: | :-: | :----: | :--: | :--: | +| :------ | :-: | :-: | :--: | :-: | :-: | :-: | :----: | :--: | :--: | | **[v1.0](https://github.com/cloudevents/spec/tree/v1.0)** | | [CloudEvents Core](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | Event Formats | | [Avro](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/formats/avro-format.md) | :heavy_check_mark: | | :x: | :x: | | | | :x: | :x: | +| [Avro Compact](https://github.com/cloudevents/spec/blob/main/cloudevents/formats/avro-compact-format.md) | :heavy_check_mark: | | :x: | :x: | | | | | :x: | | [JSON](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/formats/json-format.md) | :heavy_check_mark: | | :heavy_check_mark: | :heavy_check_mark: | | | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | [Protobuf ](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/formats/protobuf-format.md) | :heavy_check_mark: | | :heavy_check_mark: | :x: | | | | :x: | :x: | | Bindings / Content Modes | diff --git a/cloudevents/formats/avro-compact-format.md b/cloudevents/formats/avro-compact-format.md new file mode 100644 index 000000000..4ce5ef917 --- /dev/null +++ b/cloudevents/formats/avro-compact-format.md @@ -0,0 +1,109 @@ +# Avro Compact Event Format for CloudEvents - Version 1.0.3-wip + +## Abstract + +The Avro Compact Format for CloudEvents defines how events are expressed in +the [Avro 1.9.0 Specification][avro-spec]. + +This differs from the [Avro format](avro-format.md) in that: + +- It is optimized for performance, preferring a more compact representation. +- It only supports spec version 1.0 (any changes to spec version requires changes to the Avro schema, + which changes the fingerprint, breaking compatibility). +- It does not natively support JSON (JSON can be straight-forwardly serialized + to bytes and this was therefore not considered necessary). + +## Table of Contents + +1. [Introduction](#1-introduction) +2. [Attributes](#2-attributes) +3. [Transport](#3-transport) +4. [Examples](#4-examples) + +## 1. Introduction + +[CloudEvents][ce] is a standardized and protocol-agnostic definition of the +structure and metadata description of events. This specification defines how the +CloudEvents are to be represented as [Avro 1.9.0][avro-primitives]. + +The [Attributes](#2-attributes) section describes the naming conventions and +data type mappings for CloudEvents attributes for use as Avro message +properties. + +This specification does not define an envelope format. The Avro type system's +intent is primarily to provide a consistent type system for Avro itself and not +for message payloads. + +The Avro event format does not currently define a batch mode format. + +### 1.1. Conformance + +The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", +"SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be +interpreted as described in [RFC2119][rfc2119]. + +## 2. Attributes + +This section defines how CloudEvents attributes are mapped to the Avro +type-system. This specification explicitly maps each attribute. + +### 2.1 Type System Mapping + +The CloudEvents type system MUST be mapped to Avro types as follows. + +| CloudEvents | Avro | +|---------------|------------------------------------------------------------------------| +| Boolean | [boolean][avro-primitives] | +| Integer | [int][avro-primitives] | +| String | [string][avro-primitives] | +| Binary | [bytes][avro-primitives] | +| URI | [string][avro-primitives] following [RFC 3986 §4.3][rfc3986-section43] | +| URI-reference | [string][avro-primitives] following [RFC 3986 §4.1][rfc3986-section41] | +| Timestamp | [long][avro-primitives] using `timestamp-micros` logical type | + +Extension specifications MAY define secondary mapping rules for the values of +attributes they define, but MUST also include the previously defined primary +mapping. + +### 2.2 Definition + +Users of Avro MUST use a message whose binary encoding is identical to the one +described by the [CloudEvent Avro Compact Schema](cloudevents-compact.avsc). + +## 3 Transport + +Transports that support content identification MUST use the following designation: + +```text +application/cloudevents+avro-compact +``` + +## 4 Examples + +The following table shows exemplary mappings: + +| CloudEvents | Type | Exemplary Avro Value | +|-----------------|--------|-------------------------------------------| +| id | string | `7a0dc520-c870-4193c8` | +| source | string | `https://github.com/cloudevents` | +| specversion | N/A | Spec version is always `1.0`. | +| type | string | `com.example.object.deleted.v2` | +| datacontenttype | string | `application/octet-stream` | +| dataschema | string | `http://registry.com/schema/v1/much.json` | +| subject | string | `mynewfile.jpg` | +| time | long | `1685121689691000` | +| data | bytes | `[bytes]` | + +## References + +- [Avro 1.9.0][avro-spec] Apache Avro™ 1.9.0 Specification + +[avro-spec]: http://avro.apache.org/docs/1.9.0/spec.html +[avro-primitives]: http://avro.apache.org/docs/1.9.0/spec.html#schema_primitive +[avro-logical-types]: http://avro.apache.org/docs/1.9.0/spec.html#Logical+Types +[avro-unions]: http://avro.apache.org/docs/1.9.0/spec.html#Unions +[ce]: ../spec.md +[rfc2119]: https://tools.ietf.org/html/rfc2119 +[rfc3986-section41]: https://tools.ietf.org/html/rfc3986#section-4.1 +[rfc3986-section43]: https://tools.ietf.org/html/rfc3986#section-4.3 +[rfc3339]: https://tools.ietf.org/html/rfc3339 diff --git a/cloudevents/formats/avro-format.md b/cloudevents/formats/avro-format.md index ef4d8fe50..cc61c047a 100644 --- a/cloudevents/formats/avro-format.md +++ b/cloudevents/formats/avro-format.md @@ -2,7 +2,7 @@ ## Abstract -The Avro Format for CloudEvents defines how events attributes are expressed in +The Avro Format for CloudEvents defines how events are expressed in the [Avro 1.9.0 Specification][avro-spec]. ## Table of Contents @@ -10,14 +10,14 @@ the [Avro 1.9.0 Specification][avro-spec]. 1. [Introduction](#1-introduction) 2. [Attributes](#2-attributes) 3. [Data](#3-data) -4. [Examples](#4-examples) +4. [Transport](#4-transport) +4. [Examples](#5-examples) ## 1. Introduction [CloudEvents][ce] is a standardized and protocol-agnostic definition of the structure and metadata description of events. This specification defines how the -elements defined in the CloudEvents specification are to be represented in the -[Avro 1.9.0][avro-primitives]. +CloudEvents are to be represented as [Avro 1.9.0][avro-primitives]. The [Attributes](#2-attributes) section describes the naming conventions and data type mappings for CloudEvents attributes for use as Avro message @@ -45,7 +45,7 @@ type-system. This specification explicitly maps each attribute. The CloudEvents type system MUST be mapped to Avro types as follows. | CloudEvents | Avro | -| ------------- | ---------------------------------------------------------------------- | +|---------------|------------------------------------------------------------------------| | Boolean | [boolean][avro-primitives] | | Integer | [int][avro-primitives] | | String | [string][avro-primitives] | @@ -148,24 +148,29 @@ For other types (non-binary data without a `datacontenttype` attribute), the implementation MUST translate the data value into a representation of the JSON value using the union types described for the `data` record. -## 4 Examples +## 4 Transport + +Transports that support content identification MUST use the following designation: + +```text +application/cloudevents+avro +``` + +## 5 Examples The following table shows exemplary mappings: -| CloudEvents | Type | Exemplary Avro Value | -| ----------- | ------ | ---------------------------------------------- | -| type | string | `"com.example.someevent"` | -| specversion | string | `"1.0"` | -| source | string | `"/mycontext"` | -| id | string | `"7a0dc520-c870-4193c8"` | -| time | string | `"2019-06-05T23:45:00Z"` | -| dataschema | string | `"http://registry.com/schema/v1/much.json"` | -| contenttype | string | `"application/json"` | -| data | bytes | `"{"much":{"wow":"json"}}"` | -| | | | -| dataschema | string | `"http://registry.com/subjects/ce/versions/1"` | -| contenttype | string | `"application/avro"` | -| data | bytes | `[avro-serialized-bytes]` | +| CloudEvents | Type | Exemplary Avro Value | +|-----------------|--------|-------------------------------------------| +| id | string | `7a0dc520-c870-4193c8` | +| source | string | `https://github.com/cloudevents` | +| specversion | string | `1.0` | +| type | string | `com.example.object.deleted.v2` | +| datacontenttype | string | `application/octet-stream` | +| dataschema | string | `http://registry.com/schema/v1/much.json` | +| subject | string | `mynewfile.jpg` | +| time | long | `2019-06-05T23:45:00Z` | +| data | bytes | `[bytes]` | ## References diff --git a/cloudevents/formats/cloudevents-compact.avsc b/cloudevents/formats/cloudevents-compact.avsc new file mode 100644 index 000000000..9154b04a4 --- /dev/null +++ b/cloudevents/formats/cloudevents-compact.avsc @@ -0,0 +1,79 @@ +{ + "namespace": "io.cloudevents.v1.avro.compact", + "type": "record", + "name": "CloudEvent", + "version": "1.0", + "doc": "Avro Compact Event Format for CloudEvents", + "fields": [ + { + "name": "id", + "type": "string" + }, + { + "name": "source", + "type": "string" + }, + { + "name": "type", + "type": "string" + }, + { + "name": "datacontenttype", + "type": [ + "null", + "string" + ], + "default": null + }, + { + "name": "dataschema", + "type": [ + "null", + "string" + ], + "default": null + }, + { + "name": "subject", + "type": [ + "null", + "string" + ], + "default": null + }, + { + "name": "time", + "type": [ + "null", + { + "type": "long", + "logicalType": "timestamp-micros" + } + ], + "default": null + }, + { + "name": "attributes", + "type": { + "type": "map", + "values": [ + "null", + "boolean", + "int", + "long", + "string", + "bytes" + ] + }, + "default": {} + }, + { + "name": "data", + "type": [ + "bytes", + "null" + ], + "default": "null" + } + ] +} diff --git a/cloudevents/languages/he/formats/avro-compact-format.md b/cloudevents/languages/he/formats/avro-compact-format.md new file mode 100644 index 000000000..5de839bac --- /dev/null +++ b/cloudevents/languages/he/formats/avro-compact-format.md @@ -0,0 +1,2 @@ +# Avro Compact Event Format for CloudEvents - Version 1.0.3-wip +מסמך זה טרם תורגם. בבקשה תשתמשו [בגרסה האנגלית של המסמך](../../../formats/avro-compact-format.md) לבינתיים. diff --git a/cloudevents/languages/zh-CN/formats/avro-compact-format.md b/cloudevents/languages/zh-CN/formats/avro-compact-format.md new file mode 100644 index 000000000..41da72758 --- /dev/null +++ b/cloudevents/languages/zh-CN/formats/avro-compact-format.md @@ -0,0 +1,6 @@ +# Avro Compact Event Format for CloudEvents - Version 1.0.3-wip + +本文档尚未被翻译,请先阅读英文[原版文档](../../../formats/avro-compact-format.md) 。 + +如果您迫切地需要此文档的中文翻译,请[提交一个issue](https://github.com/cloudevents/spec/issues) , +我们会尽快安排专人进行翻译。 diff --git a/cloudevents/languages/zh-CN/primer.md b/cloudevents/languages/zh-CN/primer.md index ef5db74e5..d349360bb 100644 --- a/cloudevents/languages/zh-CN/primer.md +++ b/cloudevents/languages/zh-CN/primer.md @@ -781,4 +781,4 @@ AWS 上的很大一部分事件处理系统都在使用这种格式。 } ``` -[Documentation](https://www.adobe.io/apis/cloudplatform/events/documentation.html) +[Documentation](https://developer.adobe.com/events/docs/) diff --git a/cloudevents/primer.md b/cloudevents/primer.md index b9f666818..3712ae0b7 100644 --- a/cloudevents/primer.md +++ b/cloudevents/primer.md @@ -1033,4 +1033,4 @@ of this format. } ``` -[Documentation](https://www.adobe.io/apis/cloudplatform/events/documentation.html) +[Documentation](https://developer.adobe.com/events/docs/) From 4c63a68060194c27a359eecabeb1c59fa43a2408 Mon Sep 17 00:00:00 2001 From: Alex Collins Date: Fri, 23 Jun 2023 15:44:32 -0700 Subject: [PATCH 2/5] Update cloudevents/formats/cloudevents-compact.avsc Signed-off-by: Alex Collins --- cloudevents/formats/cloudevents-compact.avsc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cloudevents/formats/cloudevents-compact.avsc b/cloudevents/formats/cloudevents-compact.avsc index 9154b04a4..49d1f21b3 100644 --- a/cloudevents/formats/cloudevents-compact.avsc +++ b/cloudevents/formats/cloudevents-compact.avsc @@ -60,7 +60,10 @@ "null", "boolean", "int", - "long", + { + "type": "long", + "logicalType" : "timestamp-micros" + }, "string", "bytes" ] From b61f5d8d5141da96b3d3cf14ecbfd7fae87ef6d8 Mon Sep 17 00:00:00 2001 From: Alex Collins Date: Tue, 27 Jun 2023 07:20:33 -0700 Subject: [PATCH 3/5] Update cloudevents-compact.avsc Signed-off-by: Alex Collins --- cloudevents/formats/cloudevents-compact.avsc | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/cloudevents/formats/cloudevents-compact.avsc b/cloudevents/formats/cloudevents-compact.avsc index 49d1f21b3..15bf74e43 100644 --- a/cloudevents/formats/cloudevents-compact.avsc +++ b/cloudevents/formats/cloudevents-compact.avsc @@ -53,11 +53,10 @@ "default": null }, { - "name": "attributes", + "name": "extensions", "type": { "type": "map", "values": [ - "null", "boolean", "int", { From 4eabe43e1dacc865309fc368b5b75bf12ecb96a5 Mon Sep 17 00:00:00 2001 From: Alex Collins Date: Thu, 29 Jun 2023 08:30:59 -0700 Subject: [PATCH 4/5] move into working-drafts folder Signed-off-by: Alex Collins --- README.md | 2 +- cloudevents/languages/he/formats/avro-compact-format.md | 2 +- cloudevents/languages/zh-CN/formats/avro-compact-format.md | 2 +- cloudevents/{formats => working-drafts}/avro-compact-format.md | 2 +- .../{formats => working-drafts}/cloudevents-compact.avsc | 0 5 files changed, 4 insertions(+), 4 deletions(-) rename cloudevents/{formats => working-drafts}/avro-compact-format.md (98%) rename cloudevents/{formats => working-drafts}/cloudevents-compact.avsc (100%) diff --git a/README.md b/README.md index 528243a2e..2de8c9e24 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,7 @@ incubator project on [Oct 24, 2019](https://github.com/cncf/toc/pull/297). | **Optional Specifications:** | | AMQP Protocol Binding | [v1.0.2](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/bindings/amqp-protocol-binding.md) | [WIP](cloudevents/bindings/amqp-protocol-binding.md) | | AVRO Event Format | [v1.0.2](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/formats/avro-format.md) | [WIP](cloudevents/formats/avro-format.md) | -| AVRO Compact Event Format | | [WIP](cloudevents/formats/avro-compact-format.md) | +| AVRO Compact Event Format | | [WIP](cloudevents/working-drafts/avro-compact-format.md) | | HTTP Protocol Binding | [v1.0.2](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/bindings/http-protocol-binding.md) | [WIP](cloudevents/bindings/http-protocol-binding.md) | | JSON Event Format | [v1.0.2](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/formats/json-format.md) | [WIP](cloudevents/formats/json-format.md) | | Kafka Protocol Binding | [v1.0.2](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/bindings/kafka-protocol-binding.md) | [WIP](cloudevents/bindings/kafka-protocol-binding.md) | diff --git a/cloudevents/languages/he/formats/avro-compact-format.md b/cloudevents/languages/he/formats/avro-compact-format.md index 5de839bac..9410f66a3 100644 --- a/cloudevents/languages/he/formats/avro-compact-format.md +++ b/cloudevents/languages/he/formats/avro-compact-format.md @@ -1,2 +1,2 @@ # Avro Compact Event Format for CloudEvents - Version 1.0.3-wip -מסמך זה טרם תורגם. בבקשה תשתמשו [בגרסה האנגלית של המסמך](../../../formats/avro-compact-format.md) לבינתיים. +מסמך זה טרם תורגם. בבקשה תשתמשו [בגרסה האנגלית של המסמך](../../../working-drafts/avro-compact-format.md) לבינתיים. diff --git a/cloudevents/languages/zh-CN/formats/avro-compact-format.md b/cloudevents/languages/zh-CN/formats/avro-compact-format.md index 41da72758..3e90b8875 100644 --- a/cloudevents/languages/zh-CN/formats/avro-compact-format.md +++ b/cloudevents/languages/zh-CN/formats/avro-compact-format.md @@ -1,6 +1,6 @@ # Avro Compact Event Format for CloudEvents - Version 1.0.3-wip -本文档尚未被翻译,请先阅读英文[原版文档](../../../formats/avro-compact-format.md) 。 +本文档尚未被翻译,请先阅读英文[原版文档](../../../working-drafts/avro-compact-format.md) 。 如果您迫切地需要此文档的中文翻译,请[提交一个issue](https://github.com/cloudevents/spec/issues) , 我们会尽快安排专人进行翻译。 diff --git a/cloudevents/formats/avro-compact-format.md b/cloudevents/working-drafts/avro-compact-format.md similarity index 98% rename from cloudevents/formats/avro-compact-format.md rename to cloudevents/working-drafts/avro-compact-format.md index 4ce5ef917..fde8a9035 100644 --- a/cloudevents/formats/avro-compact-format.md +++ b/cloudevents/working-drafts/avro-compact-format.md @@ -5,7 +5,7 @@ The Avro Compact Format for CloudEvents defines how events are expressed in the [Avro 1.9.0 Specification][avro-spec]. -This differs from the [Avro format](avro-format.md) in that: +This differs from the [Avro format](../formats/avro-format.md) in that: - It is optimized for performance, preferring a more compact representation. - It only supports spec version 1.0 (any changes to spec version requires changes to the Avro schema, diff --git a/cloudevents/formats/cloudevents-compact.avsc b/cloudevents/working-drafts/cloudevents-compact.avsc similarity index 100% rename from cloudevents/formats/cloudevents-compact.avsc rename to cloudevents/working-drafts/cloudevents-compact.avsc From ff1a37d8732d1a5224d117b6a8ca670432668662 Mon Sep 17 00:00:00 2001 From: Alex Collins Date: Mon, 3 Jul 2023 13:42:58 -0700 Subject: [PATCH 5/5] ok Signed-off-by: Alex Collins --- cloudevents/SDK.md | 22 +++++++++---------- .../avro-compact-format.md | 0 .../avro-compact-format.md | 0 3 files changed, 11 insertions(+), 11 deletions(-) rename cloudevents/languages/he/{formats => working-drafts}/avro-compact-format.md (100%) rename cloudevents/languages/zh-CN/{formats => working-drafts}/avro-compact-format.md (100%) diff --git a/cloudevents/SDK.md b/cloudevents/SDK.md index dfb2653fc..4e0a62b46 100644 --- a/cloudevents/SDK.md +++ b/cloudevents/SDK.md @@ -168,15 +168,15 @@ Undo it when done: --> | Feature | C# | Go | Java | JS | PHP | PS | Python | Ruby | Rust | -| :------ | :-: | :-: | :--: | :-: | :-: | :-: | :----: | :--: | :--: | -| **[v1.0](https://github.com/cloudevents/spec/tree/v1.0)** | +|:----------------------------------------------------------------------------------------------------------------------------------------------| :-: | :-: | :--: | :-: | :-: | :-: | :----: | :--: | :--: | +| **[v1.0](https://github.com/cloudevents/spec/tree/v1.0)** | | [CloudEvents Core](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | -| Event Formats | +| Event Formats | | [Avro](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/formats/avro-format.md) | :heavy_check_mark: | | :x: | :x: | | | | :x: | :x: | -| [Avro Compact](https://github.com/cloudevents/spec/blob/main/cloudevents/formats/avro-compact-format.md) | :heavy_check_mark: | | :x: | :x: | | | | | :x: | +| [Avro Compact](https://github.com/cloudevents/spec/blob/main/cloudevents/formats/working-drafts/avro-compact-format.md) | :heavy_check_mark: | | :x: | :x: | | | | | :x: | | [JSON](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/formats/json-format.md) | :heavy_check_mark: | | :heavy_check_mark: | :heavy_check_mark: | | | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | [Protobuf ](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/formats/protobuf-format.md) | :heavy_check_mark: | | :heavy_check_mark: | :x: | | | | :x: | :x: | -| Bindings / Content Modes | +| Bindings / Content Modes | | [AMQP Binary](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/bindings/amqp-protocol-binding.md#31-binary-content-mode) | :heavy_check_mark: | | :heavy_check_mark: | :x: | | | | :x: | :x: | | [AMQP Structured](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/bindings/amqp-protocol-binding.md#32-structured-content-mode) | :heavy_check_mark: | | :heavy_check_mark: | :x: | | | | :x: | :x: | | [HTTP Binary](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/bindings/http-protocol-binding.md#31-binary-content-mode) | :heavy_check_mark: | | :heavy_check_mark: | :heavy_check_mark: | | | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | @@ -190,16 +190,16 @@ Undo it when done: | [NATS Structured](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/bindings/nats-protocol-binding.md) | :x: | | :x: | :x: | | | | :x: | :heavy_check_mark: | | [WebSockets Binary](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/bindings/websockets-protocol-binding.md) | :x: | | :x: | :heavy_check_mark: | | | | :x: | :x: | | [WebSockets Structured](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/bindings/websockets-protocol-binding.md) | :x: | | :x: | :heavy_check_mark: | | | | :x: | :x: | -| Proprietary Bindings | +| Proprietary Bindings | | [RocketMQ](https://github.com/apache/rocketmq-externals/blob/master/rocketmq-cloudevents-binding/rocketmq-transport-binding.md) | :x: | | :heavy_check_mark: | :x: | | | | :x: | :x: | -|| -| **[v0.3](https://github.com/cloudevents/spec/tree/v0.3)** | +| | +| **[v0.3](https://github.com/cloudevents/spec/tree/v0.3)** | | [CloudEvents Core](https://github.com/cloudevents/spec/blob/v0.3/spec.md) | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | -| Event Formats | +| Event Formats | | [AMQP](https://github.com/cloudevents/spec/blob/v0.3/amqp-format.md) | :x: | | :x: | :x: | | | | :x: | :x: | | [JSON](https://github.com/cloudevents/spec/blob/v0.3/json-format.md) | :x: | | :heavy_check_mark: | :heavy_check_mark: | | | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | [Protobuf](https://github.com/cloudevents/spec/blob/v0.3/protobuf-format.md) | :x: | | :heavy_check_mark: | :x: | | | | :x: | :x: | -| Bindings / Content Modes | +| Bindings / Content Modes | | [AMQP Binary](https://github.com/cloudevents/spec/blob/v0.3/amqp-transport-binding.md#31-binary-content-mode) | :x: | | :heavy_check_mark: | :x: | | | | :x: | :x: | | [AMQP Structured](https://github.com/cloudevents/spec/blob/v0.3/amqp-transport-binding.md#32-structured-content-mode) | :x: | | :heavy_check_mark: | :x: | | | | :x: | :x: | | [HTTP Binary](https://github.com/cloudevents/spec/blob/v0.3/http-transport-binding.md) | :x: | | :heavy_check_mark: | :heavy_check_mark: | | | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | @@ -213,6 +213,6 @@ Undo it when done: | [NATS Structured](https://github.com/cloudevents/spec/blob/v0.3/nats-transport-binding.md) | :x: | | :x: | :x: | | | | :x: | :heavy_check_mark: | | [WebSockets Binary](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/bindings/websockets-protocol-binding.md) | :x: | | :x: | :heavy_check_mark: | | | | :x: | :x: | | [WebSockets Structured](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/bindings/websockets-protocol-binding.md) | :x: | | :x: | :heavy_check_mark: | | | | :x: | :x: | -| Proprietary Bindings | +| Proprietary Bindings | | [RocketMQ](https://github.com/apache/rocketmq-externals/blob/master/rocketmq-cloudevents-binding/rocketmq-transport-binding.md) | :x: | | :heavy_check_mark: | :x: | | | | :x: | :x: | diff --git a/cloudevents/languages/he/formats/avro-compact-format.md b/cloudevents/languages/he/working-drafts/avro-compact-format.md similarity index 100% rename from cloudevents/languages/he/formats/avro-compact-format.md rename to cloudevents/languages/he/working-drafts/avro-compact-format.md diff --git a/cloudevents/languages/zh-CN/formats/avro-compact-format.md b/cloudevents/languages/zh-CN/working-drafts/avro-compact-format.md similarity index 100% rename from cloudevents/languages/zh-CN/formats/avro-compact-format.md rename to cloudevents/languages/zh-CN/working-drafts/avro-compact-format.md